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