久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

juno版OpenStack部署中如何添加認證服務

200次閱讀
沒有評論

共計 10288 個字符,預計需要花費 26 分鐘才能閱讀完成。

這篇文章給大家介紹 juno 版 OpenStack 部署中如何添加認證服務,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

keystone 簡介

keystone 主要為了實現以下關鍵功能:

追蹤用戶和管理其權限;

提供可訪問服務的目錄,并提供服務的 API 端點(API endpoints)。

keystone 中的一些基本概念簡介

用戶(User)可使用 OpenStack 云服務的個人、系統或服務的數字化形象。(Digital representation of a person, system, or service who uses OpenStack cloud services.)

證書(Credentials)用于確認用戶身份的數據。

認證(Authentication)確認一個用戶身份的認證過程。

令牌(Token)一段字母和數字組成的文本,用于訪問 OpenStack 的 API 和資源。

租戶(Tenant)一個用來分組或隔離資源的集合。租戶還可以用來分組或隔離認證對象。根據不同的服務操作者,一個租戶可以對應一個顧客、一個賬戶、一個組織或一個項目。(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)一個可以通過網絡來訪問服務的地址,通常是一個 URL 地址。

角色(Role)一種定義好的擁有施行特定操作的權限的個人特征。

keystone 客戶端(Keystone Client)一種用于 OpenStack 認證 API 的命令行交互界面。

安裝和配置

keystone 服務安裝在 controller 節點上。

## 配置 keystone 所使用的數據庫 使用 root 身份進入數據庫(密碼為安裝數據庫步驟時設立的):

$ mysql -u root -p```
進入數據庫界面后創建屬于 keystone 的數據庫:

CREATE DATABASE keystone;“`

把 keystone 數據庫的訪問權限賦予名為 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 變更為合適的密碼。退出數據庫客戶端。##  安裝配置組件
1.  安裝 keystone 包:

apt-get install keystone python-keystoneclient“`

編輯 “`

vi /etc/keystone/keystone.conf“` 文件:

在 [DEFAULT] 部分,定義 initial administration token:

[DEFAULT]
 ...
 admin_token = ADMIN_TOKEN```
  其中替換 ADMIN_TOKEN 為合適的值,可以通過 ```
# openssl rand -hex 10``` 來生成。  繼續在 ```
[DEFAULT]``` 部分開啟“輸出詳細記錄日志”的選項:

[DEFAULT] … verbose = True“`

在 [database] 部分,設定數據庫訪問選項:

[database]
 ...
 connection = mysql://keystone:KEYSTONE_DBPASS@controller/keystone```
  把 KEYSTONE_DBPASS 替換為創建 keystone 數據庫時所授權的密碼。配置默認使用 SQL 的數據庫連接,需要注釋掉或刪除。  在 ```
[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```
  同步認證服務數據庫:

keystone-manage db_sync“` 完成最后的安裝

重啟認證服務:

# service keystone restart```
默認 Ubuntu 會產生 SQLite 數據庫,可以將其刪除:

rm -f /var/lib/keystone/keystone.db“`

默認情況下,認證服務會無限量地存儲過期的 token,這將導致數據庫占用空間大幅度增加而且會降低認證服務的性能,用以下命令可以定期清除過期的 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```
#  創建租戶,用戶和角色
##  配置所需的環境變量
在使用 keystone 命令操作前,需要先使用臨時的 administration token(即在 ```
/etc/keystone/keystone.conf``` 文件中設定的 ADMIN_TOKEN),并手動配置認證服務的地址(endpoint)。將 administration token 寫入環境變量:

$ export OS_SERVICE_TOKEN=ADMIN_TOKEN“` 將 endpoint 寫入環境變量:

$ export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0```
##  創建租戶,用戶和角色
1.  創建擁有管理操作職能的管理租戶,管理用戶和管理角色。  創建 ```
admin``` 租戶:

$ keystone tenant-create –name admin –description Admin Tenant +————-+———————————-+ | Property | Value | +————-+———————————-+ | description | Admin Tenant | | enabled | True | | id | e8cda8def37b4d32b765759f1faa5ed2 | | name | admin | +————-+———————————-+

  創建 ```
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。

創建 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“` 這條命令不會產生輸出顯示。

創建擁有特定權限的 demo 租戶,demo 用戶

創建 demo 租戶:

$ keystone tenant-create --name demo --description  Demo Tenant 
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Demo Tenant |
| enabled | True |
| id | ef5783a270d84bb880a2c6fb85eac651 |
| name | demo |
+-------------+----------------------------------+```
  創建屬于 ```
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 服務的配置方案

OpenStack 的服務都需要被賦予租戶,用戶和角色的性質來與其他服務進行交互。每個服務都需要創建一個或多個獨立的用戶,這個用戶被賦予 admin 角色,并且屬于 service 租戶下。

創建 service 租戶:

$ keystone tenant-create --name service --description  Service Tenant 
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Service Tenant |
| enabled | True |
| id | e4288b01bc084a29ad6133f882a58732 |
| name | service |
+-------------+----------------------------------+```
#  創建服務實體和 API 端點(service entity and API endpoint)##  配置所需的環境變量
具體操作如上一步驟所述。##  創建服務實體和 API 端點
1.  創建服務實體
  認證服務會將 OpenStack 環境中的所有服務登記在目錄中,所有服務都通過這個目錄來定位環境中的其他服務。  創建認證服務的服務實體:

$ keystone service-create –name keystone –type identity
–description OpenStack Identity +————-+———————————-+ | Property | Value | +————-+———————————-+ | description | OpenStack Identity | | enabled | True | | id | d7bbd538857b4caa9f7f9730a74b98ca | | name | keystone | | type | identity | +————-+———————————-+“`

創建服務 API 端點 認證服務會將 OpenStack 環境中每個服務對應的 API 端點登記在目錄中,這個目錄將用來支持各個服務之間的通信。

創建認證服務的 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.  復位環境變量:

$ 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_的來歷如下,在創建用戶時: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.(創建時使用的命令為 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``` 租戶和用戶的身份,驗證無法執行 ```
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)“`

創建 OpenStack 客戶端環境腳本創建腳本

創建文件 admin-openrc.sh,并輸入以下內容:

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.  創建文件 ```
demo-openrc.sh```,并輸入以下內容:

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 是為普通用戶操作準備的。

啟動客戶端環境腳本

根據不同租戶和用戶,執行 $ source admin-openrc.sh 或 $ source demo-openrc.sh。

安裝時出現的問題及解決方法

安裝完 keystone 后,創建 Admin Tenant 時出現“Unable to establish connection to http://controller:35357/v2.0/tenants”的錯誤,可能是安裝 keystone 時未完整安裝,重新安裝并更新。在驗證步驟時出現(HTTP 401),有可能是密碼等配置錯誤,導致訪問權限受限,重新檢查配置文件和各個用戶的密碼情況。

關于 juno 版 OpenStack 部署中如何添加認證服務就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計10288字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 民权县| 玉溪市| 博湖县| 库伦旗| 阿拉善盟| 泽库县| 湘潭县| 吴忠市| 涪陵区| 德钦县| 麻江县| 宁南县| 宿迁市| 深泽县| 资源县| 平遥县| 遵义县| 津南区| 阳江市| 石嘴山市| 定远县| 嘉祥县| 开平市| 南宫市| 准格尔旗| 内黄县| 昆明市| 灵武市| 玉树县| 米泉市| 呈贡县| 巫山县| 福建省| 阳信县| 砀山县| 洮南市| 鄯善县| 临武县| 海城市| 中卫市| 固镇县|