(一)
Keystone端的操作
(二)
如何在OpenStack服務上部署Keystone中間件
(三)
詳細配置keystonemiddleware
?
前文我們介紹了如何部署Keystone中間件以及中間件的配置點. 這里給出所有Keystone中間件的配置項. 概括起來, Keystone中間件的配置項具有以下特點,
1. 以 "auth_" 開頭的配置項需要指向Keystone的Admin服務, Keystone中間件使用這些配置信息從Keystone服務處獲取令牌的有效信息.
2. 提供管理員身份憑證(admin_user, admin_tenant_name, admin_password)的目的是獲取一個具有管理權限的令牌, 該令牌用于給普通用戶的令牌授權.
3. "cache" 的值可以設置為swift.cache, 也可以不設置. 表示中間件緩存令牌的位置, 既可以是Swift的memcache, 也可以是與其他服務統一的基于memcached的緩存池. 下文將會詳細介紹該配置項.
4. "include_service_catalog" 缺省為True, 意味著在驗證普通用戶令牌的時候, 中間件會從Keystone那里取回服務目錄并存儲在HTTP頭的"X-Service-Catalog"字段. Swift并不適用"X-Service-Catalog"字段, 因此Swift的"include_service_catalog"推薦設置為False.
5. 若使用Keystone的第三版身份API, 需要將配置項"auth_version"設置為 "v3.0".
?
一. 與Keystone服務相關的配置
identity_uri
完整的Keystone管理API端點, 這里不應該在路徑中指明身份API版本(如http://localhost:35357/).?該選項給keystone中間件一個keystone服務端的終端,keystone中間件在向該終端認證后才可以執行驗證用戶令牌、獲取令牌撤銷列表等API。
?
auth_uri
完整的Keystone公共API端點(如 http://localhost:5000/). 配置該選項的目的是一旦用戶的請求中沒有攜帶令牌或者攜帶的令牌已經失效,那么將這個地址通過HTTP響應頭“www-Authenticate”返回給用戶,告訴他這里可以獲取一個新的令牌。
?
admin_user,?admin_password,?admin_tenant_name
如果沒有提供"admin_token", 那么這三個選項應是已經在Keystone中配置好的服務賬戶.
?
?
auth_version
要使用的Keystone管理API版本.
?
delay_auth_decision
(默認False). 如果是True, 中間將將不會拒絕無效的認證請求,而是將決策的權利委托給下游的WSGI組件.
?
http_connect_timeout
(默認None). 向Keystone服務端請求的超時秒數.
?
http_request_max_retries
(默認3). 向Keystone服務端請求的最大重試次數.
?
certfile
keystone中間件的公鑰證書。如果Keystone服務端要求客戶端提供證書,那么該項必須設置.
?
keyfile
keystone中間件的私鑰,用于簽名。
如果Keystone服務端要求客戶端提供證書, 那么該項必須設置.
?
cafile
(默認None). 給keystone中間件公鑰證書簽名的CA證書。用來驗證https連接的PEM編碼的CA 文件路徑.
insecure
(默認False). 是否驗證https連接. True代表允許不安全的連接; False代表不允許不安全的連接。
signing_dir
儲存與PKI令牌相關文件的目錄. 用來存放keystone的公鑰證書、CA證書和從keystone那里獲取的令牌撤銷列表。
include_service_catalog
(可選, 默認True). 指示是否設置 "X-Service-Catalog" 字段. 如果為False, 中間件在驗證令牌的過程中將不獲取服務目錄, 也不會設置 "X-Service-Catalog" 字段.
enforce_token_bind
? ? ?(默認?permissive). 用來控制令牌綁定的使用和類型. 設置為 "disabled" ?將不會檢查令牌綁定, 設為"permissive" 將會驗證系統已知的綁定類型,忽略那些系統中沒有定義的綁定類型; 設為 "strict" 驗證系統已知的綁定類型, 拒絕系統未知類型的令牌綁定; 設為 "required" 允許任何類型的令牌綁定. 最后, 令牌綁定的方法必須出現在令牌中.
二. 與memcached服務端相關的配置
memcached_servers
(舊名: memcache_servers). 如果設置, 指定用于緩存令牌的 memcached?server(s); 如果沒有設置, 中間件會將令牌緩存在進程中(cached in-process).
cache
(默認None). Swift緩存的環境鍵, 可以設置成 "swift.cache", 表示在Swift中使用其自帶的緩存機制.
memcache_security_strategy
(可選, 默認None). 如果設置, 指示令牌數據是否需要認證或認證加密。可接受的值包括MAC、ENCRYPT和空值(或None). MAC選項將會在緩存中采用HMAC算法認證令牌, ENCRYPT選項將會在緩存中加密和認證. 任何不是這兩個值或空值中的一個, 那么中間件將會在初始化階段報錯.
memcache_secret_key
(如果設置了"memcache_security_strategy", 則必須設置該選項). 該選項用來導出存儲令牌的鍵
memcache_pool_dead_retry
(可選, 默認5*60). ?重試memcached服務端前等待的秒數.
memcache_pool_maxsize
(可選, 默認10). 每個memcached服務端最大開放連接數.
memcache_pool_socket_timeout
(可選). 套接字連接memcache服務端的超時上限(秒).
memcache_pool_unused_timeout
(可選). 不使用的memcached連接多久會被關閉(秒).
memcache_pool_conn_get_timeout
(可選, 默認10). 從連接池中獲得一個memcache客戶端連接的超時上限(秒).
memcache_use_advanced_pool
(可選, 默認False). 是否采用高級(eventlet安全的)memcache客戶池, 當前該高級連接池僅適用于Python 2.x.
token_cache_time
(默認300). 令牌緩存時間(秒). 為了避免過度請求和驗證, 中間件會緩存每一個自己見到額令牌. 該選項僅在設置了 "memcached_servers" 選項后才生效,設為-1將會完全關閉緩存.
hash_algorithms
(默認md5). ?中間件存儲PKI令牌時用來哈希PKI令牌的算法. 可以設為一個或多個值, 只要是Python的hashlib.new()方法支持的算法即可. 中間件會按照該選項給出的順序對PKI令牌進行哈希, 所以將偏好的算法靠前設置. 當從一個較不安全的哈希算法向一個較安全的哈希算法過渡時, 該選選項通常設置為多個值, 一旦所有舊令牌都過期, 該項應該被設置成單一的值從而提升性能.
check_revocations_for_cached
(默認False). 是否檢查已緩存令牌是否被撤銷. 如果設為True, 則會檢查已被緩存令牌的撤銷列表, 要求Keystone服務端使用的是PKI令牌.
revocation_cache_time
(默認10).?多少秒從Keystone服務端獲取一次令牌撤銷列表,撤銷行為發生得越頻繁, 撤銷列表緩存的時間越短, 那么性能越差.
(原創)OpenStack服務如何使用Keystone(三)---詳細配置Keystone中間件