這篇文章給大家介紹juno版OpenStack部署中如何添加認證服務,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供吉首企業(yè)網(wǎng)站建設,專注與成都做網(wǎng)站、網(wǎng)站制作、H5建站、小程序制作等業(yè)務。10年已為吉首眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
keystone主要為了實現(xiàn)以下關鍵功能:
追蹤用戶和管理其權限;
提供可訪問服務的目錄,并提供服務的API端點(API endpoints)。
keystone中的一些基本概念簡介
用戶(User) 可使用OpenStack云服務的個人、系統(tǒng)或服務的數(shù)字化形象。(Digital representation of a person, system, or service who uses OpenStack cloud services. )
證書(Credentials) 用于確認用戶身份的數(shù)據(jù)。
認證(Authentication) 確認一個用戶身份的認證過程。
令牌(Token) 一段字母和數(shù)字組成的文本,用于訪問OpenStack 的API和資源。
租戶(Tenant) 一個用來分組或隔離資源的集合。租戶還可以用來分組或隔離認證對象。根據(jù)不同的服務操作者,一個租戶可以對應一個顧客、一個賬戶、一個組織或一個項目。(A container used to group or isolate resources. Tenants also group or isolate identity objects. Depending on the service operator, a tenant may map to a customer, account, organization, or project.)
服務(Service) OpenStack的服務,用于Compute(nova),Object Storage(swift)或Image Service(glance)等。它為用戶訪問資源,實施運作提供了一個或多個端點(endpoint)。
端點(Endpoint) 一個可以通過網(wǎng)絡來訪問服務的地址,通常是一個URL地址。
角色 (Role) 一種定義好的擁有施行特定操作的權限的個人特征。
keystone客戶端(Keystone Client) 一種用于OpenStack認證API的命令行交互界面。
keystone服務安裝在controller節(jié)點上。
##配置keystone所使用的數(shù)據(jù)庫 使用root身份進入數(shù)據(jù)庫(密碼為安裝數(shù)據(jù)庫步驟時設立的):
$ MySQL -u root -p``` 進入數(shù)據(jù)庫界面后創(chuàng)建屬于keystone的數(shù)據(jù)庫:
CREATE DATABASE keystone;```
把keystone數(shù)據(jù)庫的訪問權限賦予名為keystone,來自任何主機地址的用戶,并設定訪問密碼為KEYSTONE_DBPASS(替換為合適的密碼):
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';``` 可以把KEYSTONE_DBPASS變更為合適的密碼。 退出數(shù)據(jù)庫客戶端。 ## 安裝配置組件 1. 安裝keystone包:
編輯```
在 [DEFAULT]
部分,定義initial administration token:
[DEFAULT] ... admin_token = ADMIN_TOKEN``` 其中替換ADMIN_TOKEN為合適的值,可以通過``` # openssl rand -hex 10```來生成。 繼續(xù)在``` [DEFAULT]```部分開啟“輸出詳細記錄日志”的選項:
[DEFAULT] ... verbose = True```
在 [database]
部分,設定數(shù)據(jù)庫訪問選項:
[database] ... connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone``` 把KEYSTONE_DBPASS替換為創(chuàng)建keystone數(shù)據(jù)庫時所授權的密碼。配置默認使用SQL的數(shù)據(jù)庫連接,需要注釋掉或刪除。 在``` [token]```部分,配置UUID token provider和SQL driver:
[token] ... provider = keystone.token.providers.uuid.Provider driver = keystone.token.persistence.backends.sql.Token```
在 [revoke]
部分,配置SQL revocation driver:
[revoke] ... driver = keystone.contrib.revoke.backends.sql.Revoke``` 同步認證服務數(shù)據(jù)庫:
重啟認證服務:
# service keystone restart``` 默認Ubuntu會產(chǎn)生SQLite數(shù)據(jù)庫,可以將其刪除:
默認情況下,認證服務會無限量地存儲過期的token,這將導致數(shù)據(jù)庫占用空間大幅度增加而且會降低認證服務的性能,用以下命令可以定期清除過期的token:
# (crontab -l -u keystone 2>&1 | grep -q token_flush) || \ echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2>&1' \ >> /var/spool/cron/crontabs/keystone``` # 創(chuàng)建租戶,用戶和角色 ## 配置所需的環(huán)境變量 在使用keystone命令操作前,需要先使用臨時的administration token(即在``` /etc/keystone/keystone.conf```文件中設定的ADMIN_TOKEN),并手動配置認證服務的地址(endpoint)。 將administration token寫入環(huán)境變量:
$ export OS_SERVICE_TOKEN=ADMIN_TOKEN``` 將endpoint寫入環(huán)境變量:
$ export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0``` ## 創(chuàng)建租戶,用戶和角色 1. 創(chuàng)建擁有管理操作職能的管理租戶,管理用戶和管理角色。 創(chuàng)建``` admin```租戶:
$ keystone tenant-create --name admin --description "Admin Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Admin Tenant | | enabled | True | | id | e8cda8def37b4d32b765759f1faa5ed2 | | name | admin | +-------------+----------------------------------+
創(chuàng)建``` admin```用戶:
$ keystone user-create --name admin --pass ADMIN_PASS --email EMAIL_ADDRESS +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | admin@example.com | | enabled | True | | id | 13b460ca8d9e4aa094e8f4f4fff6f087 | | name | admin | | username | admin | +----------+----------------------------------+``` 用合適的密碼代替ADMIN_PASS。
創(chuàng)建 admin
角色:
$ keystone role-create --name admin +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | id | 2bf07853b40b420eb9e9e2aa23ff3e9e | | name | admin | +----------+----------------------------------+``` 將``` admin```角色賦予給``` admin```租戶和``` admin```用戶。
$ keystone user-role-add --user admin --tenant admin --role admin``` 這條命令不會產(chǎn)生輸出顯示。
創(chuàng)建擁有特定權限的demo租戶,demo用戶
創(chuàng)建demo租戶:
$ keystone tenant-create --name demo --description "Demo Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Demo Tenant | | enabled | True | | id | ef5783a270d84bb880a2c6fb85eac651 | | name | demo | +-------------+----------------------------------+``` 創(chuàng)建屬于``` demo```租戶的``` demo```用戶
keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS +----------+----------------------------------+ | Property | Value | +----------+----------------------------------+ | email | demo@example.com | | enabled | True | | id | 2a6e8190e26c4f27ba98171235a8b219 | | name | demo | | tenantId | ef5783a270d84bb880a2c6fb85eac651 | | username | demo | +----------+----------------------------------+``` 用合適的密碼代替DEMO_PASS
OpenStack的服務都需要被賦予租戶,用戶和角色的性質(zhì)來與其他服務進行交互。每個服務都需要創(chuàng)建一個或多個獨立的用戶,這個用戶被賦予 admin
角色,并且屬于 service
租戶下。
創(chuàng)建 service
租戶:
$ keystone tenant-create --name service --description "Service Tenant" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | Service Tenant | | enabled | True | | id | e4288b01bc084a29ad6133f882a58732 | | name | service | +-------------+----------------------------------+``` # 創(chuàng)建服務實體和API端點(service entity and API endpoint) ## 配置所需的環(huán)境變量 具體操作如上一步驟所述。 ## 創(chuàng)建服務實體和API端點 1. 創(chuàng)建服務實體 認證服務會將OpenStack環(huán)境中的所有服務登記在目錄中,所有服務都通過這個目錄來定位環(huán)境中的其他服務。 創(chuàng)建認證服務的服務實體:
$ keystone service-create --name keystone --type identity
--description "OpenStack Identity" +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | description | OpenStack Identity | | enabled | True | | id | d7bbd538857b4caa9f7f9730a74b98ca | | name | keystone | | type | identity | +-------------+----------------------------------+```
創(chuàng)建服務API端點 認證服務會將OpenStack環(huán)境中每個服務對應的API端點登記在目錄中,這個目錄將用來支持各個服務之間的通信。
創(chuàng)建認證服務的API端點:
$ keystone endpoint-create \ --service-id $(keystone service-list | awk '/ identity / {print $2}') \ --publicurl http://controller:5000/v2.0 \ --internalurl http://controller:5000/v2.0 \ --adminurl http://controller:35357/v2.0 \ --region regionOne +-------------+----------------------------------+ | Property | Value | +-------------+----------------------------------+ | adminurl | http://controller:35357/v2.0 | | id | 32fb8b8934024c30bd1f0b7795a51220 | | internalurl | http://controller:5000/v2.0 | | publicurl | http://controller:5000/v2.0 | | region | regionOne | | service_id | d7bbd538857b4caa9f7f9730a74b98ca | +-------------+----------------------------------+``` # 驗證操作 1. 復位環(huán)境變量:
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT```
以 admin
租戶和用戶的身份,請求一條authentication token:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \ --os-auth-url http://controller:35357/v2.0 token-get +-----------+----------------------------------+ | Property | Value | +-----------+----------------------------------+ | expires | 2015-11-24T12:37:45Z | | id | 1d5ebdf4e60a4f648240a20a65cbf96e | | tenant_id | 4f7806287c9a437e9cd912504ff71727 | | user_id | fd151acb7cc34bba8d4d9cf391ad0d06 | +-----------+----------------------------------+``` ADMIN_PASS為之前設定的``` admin```用戶密碼。 3. 以``` admin```租戶和用戶的身份,列出租戶清單:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS
--os-auth-url http://controller:35357/v2.0 tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | 4f7806287c9a437e9cd912504ff71727 | admin | True | | d1f7caccc65840b68258997a759da07f | demo | True | | 5ab4d5c513f543cfbf8e3be97f5df5fb | service | True | +----------------------------------+---------+---------+ ADMIN_PASS為之前設定的
admin```用戶密碼。
以 admin
租戶和用戶的身份,列出用戶清單:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS \ --os-auth-url http://controller:35357/v2.0 user-list +----------------------------------+-------+---------+-------------------+ | id | name | enabled | email | +----------------------------------+-------+---------+-------------------+ | fd151acb7cc34bba8d4d9cf391ad0d06 | admin | True | admin@example.com | | 812116bcca5b4a01981669fcef09ee11 | demo | True | demo@example.com | +----------------------------------+-------+---------+-------------------+``` ADMIN_PASS為之前設定的``` admin```用戶密碼。 5. 以``` admin```租戶和用戶的身份,列出角色清單:
$ keystone --os-tenant-name admin --os-username admin --os-password ADMIN_PASS
--os-auth-url http://controller:35357/v2.0 role-list +----------------------------------+----------+ | id | name | +----------------------------------+----------+ | 9fe2ff9ee4384b1894a90878d3e92bab | member | | 61286483662e40ba8f0a48b05fc8a451 | admin | +----------------------------------+----------+ ADMIN_PASS為之前設定的
admin```用戶密碼。其中_member_的來歷如下,在創(chuàng)建用戶時:Using the --tenant option automatically assigns the member role to a user. This option will also create the member role if it does not exist.(創(chuàng)建時使用的命令為keystone user-create --name demo --tenant demo --pass DEMO_PASS --email EMAIL_ADDRESS)
以 demo
租戶和用戶的身份,請求一條authentication token:
$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS \ --os-auth-url http://controller:35357/v2.0 token-get +-----------+----------------------------------+ | Property | Value | +-----------+----------------------------------+ | expires | 2015-11-24T13:06:04Z | | id | 9eca8d1dff374c2da6f358e85f0b60af | | tenant_id | d1f7caccc65840b68258997a759da07f | | user_id | 812116bcca5b4a01981669fcef09ee11 | +-----------+----------------------------------+``` DEMO_PASS為之前設定的``` demo```用戶密碼。 7. 以``` demo```租戶和用戶的身份,驗證無法執(zhí)行``` admin```專屬命令:
$ keystone --os-tenant-name demo --os-username demo --os-password DEMO_PASS
--os-auth-url http://controller:35357/v2.0 user-list You are not authorized to perform the requested action: admin_required (HTTP 403)```
創(chuàng)建文件 admin-openrc.sh
,并輸入以下內(nèi)容:
export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://controller:35357/v2.0``` ADMIN_PASS為之前設定的``` admin```用戶密碼。 2. 創(chuàng)建文件``` demo-openrc.sh```,并輸入以下內(nèi)容:
export OS_TENANT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v2.0 DEMO_PASS為之前設定的
demo```用戶密碼。
**注:**端口35357是為擁有管理權限的操作準備的,端口5000是為普通用戶操作準備的。
根據(jù)不同租戶和用戶,執(zhí)行 $ source admin-openrc.sh
或 $ source demo-openrc.sh
。
安裝完keystone后,創(chuàng)建"Admin Tenant"時出現(xiàn)“Unable to establish connection to http://controller:35357/v2.0/tenants”的錯誤,可能是安裝keystone時未完整安裝,重新安裝并更新。在驗證步驟時出現(xiàn)(HTTP 401),有可能是密碼等配置錯誤,導致訪問權限受限,重新檢查配置文件和各個用戶的密碼情況。
關于juno版OpenStack部署中如何添加認證服務就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
當前名稱:juno版OpenStack部署中如何添加認證服務
文章鏈接:http://aaarwkj.com/article4/gjjoie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、靜態(tài)網(wǎng)站、網(wǎng)站設計、網(wǎng)站營銷、網(wǎng)站制作、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)