您好,登錄后才能下訂單哦!
??Openstack身份驗證服務提供一個單點集成的管理認證,授權和服務目錄,當用戶交互時身份驗證服務通常的是第一個服務, 一旦通過認證,同樣,其它openstack服務利用身份驗證服務確保用戶是誰并發現部署中其它服務的位置,身份識別服務同樣也可以使用外部的用戶管理系統(如LDAP).
??使用服務目錄,身份認證服務管理的用戶和服務可以定位其它的服務,顧名思義,服務目錄是OpenStack部署中可用服務的集合。每個服務可以有一個或多個端點,每個端點可以是三種類型之一: admin、internal或public。在生產環境中,由于安全原因,不同的端點類型可能位于暴露給不同類型用戶的不同網絡上。例如,public API網絡可以從Internet上看到,這樣客戶就可以管理他們的云。Admin API網絡可能僅限于管理云基礎設施的組織中的操作人員。Internal API網絡可能僅限于包含OpenStack服務的主機。
??同時為了實現可擴展性openstack同樣支持多區域,為簡單起見,本列中對所有端點類型和默認的RegionOne區域使用管理網絡。在標識服務中創建的區域、服務和端點組成了部署的服務目錄。部署中的每個OpenStack服務都需要一個服務入口和一個相應的的端點存儲在標識服務中。這都可以在安裝和配置身份認證服務之后完成。
??身份認證服務包含下列組件:
$ mysql -u root -proot123
MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone123';
# yum install openstack-keystone httpd mod_wsgi
# vi /etc/keystone/keystone.conf
[database]
# ...
connection = mysql+pymysql://keystone:keystone123@dbs.flex.net/keystone
In the [token] section, configure the Fernet token provider:
[token]
# ...
provider = fernet
# su -s /bin/sh -c "keystone-manage db_sync" keystone
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
# keystone-manage bootstrap --bootstrap-password admin123 \
--bootstrap-admin-url http://stack.flex.net:5000/v3/ \
--bootstrap-internal-url http://stack.flex.net:5000/v3/ \
--bootstrap-public-url http://stack.flex.net:5000/v3/ \
--bootstrap-region-id RegionOne
○ 在mysql中刪除endpoint配置,重新配置:
MariaDB [keystone]> select * from endpoint;
+-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
| id | legacy_endpoint_id | interface |service_id| url | extra | enabled | region_id |
+-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
| 0b6dd3a784… | NULL | internal | ad298… | http://192.168.137.5:35357/v3/ | {} | 1 | RegionOne |
| 4f7fdb8fc6… | NULL | public | ad298… | http://192.168.137.5:5000/v3/ | {} | 1 | RegionOne |
| 8451f154c7… | NULL | admin | ad298… | http://192.168.137.5:35357/v3/ | {} | 1 | RegionOne |
+-------------+--------------------+-----------+----------+--------------------------------+-------+---------+-----------+
3 rows in set (0.15 sec)
MariaDB [keystone]> delete from endpoint where url like '%137.5%'; #配錯的url或主機
Query OK, 3 rows affected (0.02 sec)
MariaDB [keystone]> commit;
○ 處理完成后,重新配置上面的步驟
ServerName controller1
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
# systemctl enable httpd.service
# systemctl start httpd.service
配置管理帳號admin,可以將這個文件寫成一個腳本的方式,并source腳本
# cat admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://stack.flex.net:5000/v3
export OS_IDENTITY_API_VERSION=3
# source admin-openrc
身份驗證服務為每個OpenStack服務提供用戶的授權服務, 身份驗證服務使用域、項目、用戶和角色的組合,
#openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | An Example Domain |
| enabled | True |
| id | f2a3ddcdc32c411ba5d9e480c25ce8b9 |
| name | example |
| tags | [] |
+-------------+----------------------------------+
○ 先要禁用寫錯的域名
#openstack domain set --disable exampl
○ 然后刪除錯誤的域名
#openstack domain delete exampl
# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 3e33e6c8e1d14b7b9bbf64edcafb1023 |
| is_domain | False |
| name | service |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
常規(非管理員)的任務應該使用非特權的項目和用戶,這個列子中,我們建立一個myproject項目和myuser用戶
○ 建立項目名為myproject
#openstack project create --domain default --description "Demo Project" myproject
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | c9fc9f23c899402aa10eaabf0c71fff5 |
| is_domain | False |
| name | myproject |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+?
注意:不要重復此步驟在建立這項目的用戶時
○ 建立myuser用戶
#openstack user create --domain default --password-prompt myuser
User Password:myuser123
Repeat User Password:myuser123
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 81949d6833a04e61b79fe3a8a49cd5a5 |
| name | myuser |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
○ 建立一個myrole角色
#openstack role create myrole
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| domain_id | None |
| id | b49d96c43eaa43cfa9519614f0b84942 |
| name | myrole |
+-------------+----------------------------------+
○ 添加myrole角色到myproject項目和myuser用戶
# openstack role add --project myproject --user myuser myrole
注意:你可以重復上面的步驟建立更多的項目和用戶。
在安裝其它服務之前校驗身份驗證服務是否正常安裝,執行下列命令在controller節點上。
$ unset OS_AUTH_URL OS_PASSWORD
# openstack --os-auth-url http://stack.flex.net:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
Password: admin123
+------------+--------------------------------------------------------------+
| Field | Value | +------------+--------------------------------------------------------------+
| expires | 2019-08-22T05:32:10+0000 |
| id | gAAAAABdXhrKNMqos25-DjAmaD5yu1dy_-PPtmch7YOgObHg25d2V0pEO… …|
| project_id | 67139b2bd6c64e1c88136955dbef56a0 | | user_id | 681e9f941cb249e4a5058414057c7866 | +------------+--------------------------------------------------------------+
# openstack --os-auth-url http://stack.flex.net:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name myproject --os-username myuser token issue
Password: myuser123
+------------+-------------------------------------------------------------+
| Field | Value |
+------------+-------------------------------------------------------------+
| expires | 2019-08-22T05:34:30+0000 |
| id | gAAAAABdXhtWYuSN8TlpDjFkNFtr_eElchimIc2YUHBWmImjX5ZpZm3……. |
| project_id | c9fc9f23c899402aa10eaabf0c71fff5 |
| user_id | 81949d6833a04e61b79fe3a8a49cd5a5 |
+------------+-------------------------------------------------------------+
建立腳本
為管理和演示項目以及用戶創建客戶機環境腳本。本指南的后續部分將引用這些腳本,以便為客戶機操作加載適當的憑據。
1. 建立和編輯文件admin-openrc添加如下內容:
# cat admin-openrc
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://stack.flex.net:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2. 建立和編輯文件demo-openrc添加如下內容:
# cat demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser123
export OS_AUTH_URL=http://stack.flex.net:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
要將客戶機作為特定的項目和用戶運行, 只需在運行它們之前加載相關的客戶機環境腳本。例如:
1. 加域admin-openrc文件構建身份驗證服務,admin項目和用戶憑據的環境變量:
$ . admin-openrc
2. 請求授權的token:
$ openstack token issue
+------------+--------------------------------------------------------------------------------+
| Field | Value |
+------------+--------------------------------------------------------------------------------+
| expires | 2019-08-22T05:41:10+0000 |
| id | gAAAAABdXhzmr94abDAnVgAtAlHIOqK_1OTs2nckP98hTfWLCSdliXvE13OGERiAlPy2SbATpj-39… |
| project_id | 67139b2bd6c64e1c88136955dbef56a0 |
| user_id | 681e9f941cb249e4a5058414057c7866 |
+------------+--------------------------------------------------------------------------------+
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。