(一) Keystone端的操作
(二) 如何在OpenStack服務上部署Keystone中間件
OpenStack項目如果要使用Keystone作為統一的身份與權限管理系統, 需要做一定的設置工作, 我們將這些設置劃分為在Keystone端進行的操作和在其他OpenStack服務端進行的操作, 本文介紹在Keystone端如何為其他服務建立對應的"服務用戶"和維護整個系統的服務目錄.
OenStack中用戶使用身份憑證登錄系統, 獲得Keystone簽發的令牌, 其后在整個OpenStack系統中使用該令牌訪問其他的服務(如Nova等)直至令牌失效或被撤銷. 令牌在OpenStack系統內提供了單點登錄的支持, 簡化了系統對用戶的認證, 成為用戶身份和權限管理的重要對象.
用戶在使用已經獲得的令牌請求OpenStack的其他服務時, 這些服務必須驗證令牌的有效性--即這個令牌確實是Keystone已經簽發的,且沒有過期和被撤銷. 這個驗證工作由項目名稱為"keystonemiddleware"的Keystone中間件完成.?Keystone中間件部署在OpenStack其他服務上, 調用項目(或庫)"python-keystoneclient"提供的接口, 驗證用戶令牌的有效性.?Keystone中間件進行的驗證工作需要訪問Keystone的身份API, 這個操作需要一定的權限才能完成.?因此需要在Keystone端先為Keystone中間件創建用戶, 再為這個用戶指派具有相應權限的角色.由于部署和配置Keystone中間件的工作在其他OpenStack服務端完成, 因此將創建用戶和授予角色等操作針對服務進行,?Keystone中間件直接使用自己部署在的服務具有的賬戶信息即可. (當然, 也可以直接繞過身份認證, 將Keystone中間件的令牌設置成引導Keystone時設置的"admin_token", 這樣Keystone中間件默認具有最高權限).
Keystone端的工作主要包括以下兩個方面:
1. 創建"服務用戶"并指派角色.
2. 維護整個OpenStack系統的服務目錄.
下文就圍繞這兩方面工作詳細展開.
?
一. 創建"服務用戶"并指派角色
1. 創建"服務項目"
從上文可以看出, OpenStack服務或部署在其上的Keystone中間件實質上也是Keystone的用戶. 通常我們為所有的OpenStack服務創建一個統一的項目, 如"service". 這里使用openstackclient完成命令行操作, 所有的操作都是基于第三版的身份API完成.
首先與系統建立一個會話,
$ openstack --os-token
admin_token
--os-url
keystone_url
--os-identity-api-version
3
#Press Enter
一旦認證成功, 系統顯示如下的提示符, 表示進入到openstackclient提供的腳本界面.
(openstack) YOUR_COMMAND_HERE
接著創建一個包含所有將要部署的OpenStack服務的"服務項目", 這里將其命名為"service".
(openstack) project create service
為具體類型的OpenStack服務(這里以Nova為例)創建屬于他們的用戶(當然也可以多個服務使用一個用戶名).
(openstack) user create --password PassWord --project service nova
在已經配置好Keystone, 創建和定義了具體的管理員角色后, 為剛剛新建的"服務用戶"授予項目內的管理員角色, 確保其能夠調用驗證令牌的身份API. 這里以授予系統默認的"admin"角色為例.
(openstack) role add admin --project service --user nova
這樣用戶"nova"就具有了在項目"service"上的"admin"角色.
?
二. 維護整個OpenStack系統的服務目錄
Keystone在OpenStack系統中提供的一項重要支持就是維護著整個系統中所有服務的目錄. 包括服務的類型, 名稱, 具體的端點URL等. 其他服務如Dashboard非常依賴這些信息. Keystone自帶兩種服務目錄存儲驅動, 既可以將服務目錄存儲在文件中, 也可以存儲在SQL后端中. 當然, 前端的用戶接口都是一樣的.
在向OpenStack系統中添加服務時, 應將其注冊到Keystone的服務目錄下, 這樣其他服務才能通過服務目錄找到它.
(openstack) service create nova -- type compute \ --description " Nova Compute Service " (openstack) service create glance -- type image \ --description " Glance Image Service " (openstack) service create keystone -- type identity \ --description " Keystone Identity Service "
(openstack) service create swift --type object - store \ --description " Swift Service "
OpenStack系統中服務只是一個抽象的概念, 具體的功能是通過訪問服務對應的端點(URL)完成的, 因此必須在成功部署某個服務端點后其添加到系統的服務目錄.
(openstack) endpoint create keystone public http: // 201.111.129.48:5000/
上面的指令將一個端點添加到了服務“keystone”的公共界面. 端點可以屬于特定的地理域, 具體操作可以查閱這里.
這里就完成了部署OpenStack服務時在Keystone端進行的操作. 前文已經說過, 其他服務與Keystone的交互通常是由Keystone中間件完成的, 下一篇隨筆將介紹 如何在OpenStack服務上部署Keystone中間件 .
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
