Keystone认证服务详细操作流程
第3章 全局服務(wù)類部署(上)
3.1 認(rèn)證服務(wù)
3.1.1 服務(wù)簡(jiǎn)介
做為云操作系統(tǒng)的Keystone認(rèn)證服務(wù),主要提供兩個(gè)功能:
①用戶身份認(rèn)證:為系統(tǒng)提供是否為合法用戶的判斷功能。對(duì)user的管理和保存,管理user的tenant、role、group、domain等,保存user的存放、驗(yàn)證、令牌管理等。
②服務(wù)目錄列表:顯示系統(tǒng)提供的服務(wù)列表。其他服務(wù)通過keystone來注冊(cè)其服務(wù)的Endpoint(服務(wù)訪問的URL),任何服務(wù)之間的相互調(diào)用,需要經(jīng)過keystone的身份驗(yàn)證來獲得目標(biāo)服務(wù)的Endpoint來找到目標(biāo)服務(wù)。
認(rèn)證服務(wù)中出現(xiàn)的名詞介紹及運(yùn)行方式:
User用戶:一個(gè)使用OpenStack云服務(wù)的人、系統(tǒng)或者服務(wù)的數(shù)字表示。用戶需要登錄,然后被分配token去訪問資源。用戶可以被分配到一個(gè)tenant。
Credential用戶證據(jù):用來證明用戶身份的證據(jù),可以是用戶名和密碼、用戶名和API key,或者一個(gè)Keystone分配的身份token。
Authentication身份驗(yàn)證:驗(yàn)證用戶身份的過程。Keystone服務(wù)通過檢查用戶的Credential來確定用戶的身份。最開始,使用用戶名/密碼或者用戶名/API key作為credential。當(dāng)用戶的credential被驗(yàn)證后,Keystone會(huì)給用戶分配一個(gè)authentication token供該用戶后續(xù)的請(qǐng)求使用。
Token令牌:一個(gè)用于訪問OpenStack API和資源的alpha數(shù)字字符串。一個(gè)token可能在任何時(shí)間被撤銷(revoke),因此其有效期是有限的。OpenStack中,token是和特定的tenant綁定的,因此如果user如果訪問多個(gè)tenant的話他就需要多個(gè)token。
Tenant租戶:一個(gè)用于分組或者隔離資源的容器。一個(gè)tenant可能對(duì)應(yīng)一個(gè)客戶、賬號(hào)、組織或者項(xiàng)目。在OpenStack中,用戶至少必須在一個(gè)tenant中。tenant容器的可使用資源的限制成為Tenant Quota,它包括tenant內(nèi)各子資源的quota。
Service服務(wù):一個(gè)OpenStack服務(wù),比如Nova、Swift或者Glance等。每個(gè)服務(wù)提供一個(gè)或者多個(gè)endpoint供用戶訪問資源以及進(jìn)行操作。
Endpoint端點(diǎn):一個(gè)網(wǎng)絡(luò)可訪問的服務(wù)地址,通過它你可以訪問一個(gè)服務(wù),通常是個(gè)URL地址。不同region有不同的service endpoint。endpoint告訴也可告訴OpenStack service去哪里訪問特定的service。比如,當(dāng)Nova需要訪問 Glance服務(wù)去獲取image時(shí),Nova通過訪問Keystone拿到Glance的endpoint,然后通過訪問該endpoint去獲取Glance服務(wù)。我們可以通過Endpoint的region屬性去定義多個(gè)region。Endpoint該使用對(duì)象分為三類:①admin url給admin用戶使用。②internal url給OpenStack內(nèi)部服務(wù)使用來跟別的服務(wù)通信。③public url其它用戶可以訪問的地址。
3.1.2 服務(wù)配置信息
創(chuàng)建keystone數(shù)據(jù)庫(kù)
進(jìn)入數(shù)據(jù)庫(kù),運(yùn)行如下命令。
[root@ljl-controller ~]# mysql -uroot -p000000MariaDB [(none)]> CREATE DATABASE keystone;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \-> IDENTIFIED BY '000000';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \-> IDENTIFIED BY '000000';Query OK, 0 rows affected (0.00 sec)認(rèn)證服務(wù)安裝和配置
從yum中安裝認(rèn)證服務(wù)包。
[root@ljl-controller ~]# yum install openstack-keystone httpd mod_wsgi隨機(jī)數(shù)生成10位數(shù)。
[root@ljl-controller ~]# openssl rand -hex 104104bb0055496edc5650配置認(rèn)證令牌、端點(diǎn)URL、認(rèn)證API版本。
[root@ljl-controller ~]# export OS_TOKEN=4104bb0055496edc5650[root@ljl-controller ~]# export OS_URL=http://ljl-controller:35357/v3[root@ljl-controller ~]# export OS_IDENTITY_API_VERSION=3配置keystone.conf文件。
[root@ljl-controller ~]# vi /etc/keystone/keystone.conf[DEFAULT]admin_token = 4104bb0055496edc5650…[database]connection = mysql+pymysql://keystone:000000@ljl-controller/keystone…[token]provider = fernet初始化身份認(rèn)證服務(wù)的數(shù)據(jù)庫(kù),初始化Fernet keys。
[root@ljl-controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone[root@ljl-controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone進(jìn)入數(shù)據(jù)庫(kù)查看同步是否成功。
[root@ljl-controller ~]# mysql -uroot -p000000MariaDB [(none)]> use keystone;MariaDB [keystone]> show tables;??????????????????????????????????????????????? ? ?? ? 圖3-1 keystone數(shù)據(jù)庫(kù)部分信息
配置Apache HTTP服務(wù)器
配置httpd.conf文件,添加如下。
[root@ljl-controller ~]# vi /etc/httpd/conf/httpd.confServerName ljl-controller因?yàn)閙itaka鏡像中本身帶有wsgi-keystone.conf文件,所以只需要移動(dòng)到/etc/httpd/conf.d/目錄下,重啟HTTP服務(wù)即可。
[root@ljl-controller ~]# cp /LJL/mitaka/wsgi-keystone.conf /etc/httpd/conf.d/[root@ljl-controller ~]# systemctl enable httpd.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.[root@ljl-controller ~]# systemctl restart httpd.service創(chuàng)建服務(wù)實(shí)體和API端點(diǎn)變種
創(chuàng)建服務(wù)實(shí)體和身份認(rèn)證服務(wù),每個(gè)添加到OpenStack環(huán)境中的服務(wù)要求一個(gè)或多個(gè)服務(wù)實(shí)體和三個(gè)認(rèn)證服務(wù)中的API端點(diǎn)變種。
[root@ljl-controller ~]# openstack service create --name krystone --description "OpenStck Identity" identity創(chuàng)建認(rèn)證服務(wù)的三個(gè)API端點(diǎn)變種。
[root@ljl-controller ~]# openstack endpoint create --region RegionOne identity public http://ljl-controller:5000/v3 [root@ljl-controller ~]# openstack endpoint create --region RegionOne identity internal http://ljl-controller:5000/v3 [root@ljl-controller ~]# openstack endpoint create --region RegionOne identity admin http://ljl-controller:35357/v3創(chuàng)建認(rèn)證服務(wù)依賴組合
通過如下命令,創(chuàng)建域。
[root@ljl-controller ~]# openstack domain create --description "liujianlin Domain" default為了進(jìn)行管理的操作,創(chuàng)建admin的項(xiàng)目、用戶和角色,命令如下。
[root@ljl-controller ~]# openstack project create --domain default --description "Admin Project" admin[root@ljl-controller ~]# openstack user create --domain default --password-prompt admin[root@ljl-controller ~]# openstack role create admin添加admin角色到admin用戶上。
[root@ljl-controller ~]# openstack role add --project admin --user admin admin創(chuàng)建service項(xiàng)目,使環(huán)境中所有服務(wù)都含有用戶自己的服務(wù)項(xiàng)目。
[root@ljl-controller ~]# openstack project create --domain default --description "Service Project" service常規(guī)(非管理)任務(wù)應(yīng)該使用無特權(quán)的項(xiàng)目和用戶。創(chuàng)建一個(gè)演示demo項(xiàng)目和用戶。
[root@ljl-controller ~]# openstack project create --domain default --description "Demo Project" demo[root@ljl-controller ~]# openstack user create --domain default --password-prompt demo創(chuàng)建user角色。
[root@ljl-controller ~]# openstack role create user添加user角色到demo用戶上。
[root@ljl-controller ~]# openstack role add --project demo --user demo user3.1.3 驗(yàn)證功能狀態(tài)
用戶請(qǐng)求認(rèn)證令牌
重置環(huán)境變量。
[root@ljl-controller ~]# unset OS_TOKEN OS_URL作為admin用戶,請(qǐng)求認(rèn)證令牌。
[root@ljl-controller ~]# openstack --os-auth-url http://ljl-controller:35357/v3 \> --os-project-domain-name default --os-user-domain-name default \> --os-project-name admin --os-username admin token issue作為demo用戶,請(qǐng)求認(rèn)證令牌,這個(gè)命令使用demo用戶的密碼和API端口5000,這樣只會(huì)允許對(duì)身份認(rèn)證服務(wù)API的常規(guī)(非管理)訪問。
[root@ljl-controller ~]# openstack --os-auth-url http://ljl-controller:5000/v3 \> --os-project-domain-name default --os-user-domain-name default \> --os-project-name demo --os-username demo token issue創(chuàng)建優(yōu)化環(huán)境變量腳本
前一節(jié)中使用環(huán)境變量和命令選項(xiàng)的組合通過open stack客戶端與身份認(rèn)證服務(wù)交互。為了提升客戶端操作的效率,OpenStack支持簡(jiǎn)單的客戶端環(huán)境變量腳本即openrc文件。
創(chuàng)建open stack客戶端環(huán)境變量腳本,創(chuàng)建文件admin-openrc、demo-openrc。
[root@ljl-controller ~]# vi /root/admin-openrcexport OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=000000export OS_AUTH_URL=http://ljl-controller:35357/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2[root@ljl-controller ~]# vi /root/demo-openrcexport OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=000000export OS_AUTH_URL=http://ljl-controller:5000/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2生效腳本并認(rèn)證令牌
生效腳本文件,請(qǐng)求認(rèn)證令牌。
[root@ljl-controller ~]# . admin-openrc[root@ljl-controller ~]# openstack token issue?
本文由阿里云-掩日編輯,有阿里云服務(wù)器、數(shù)據(jù)庫(kù)、直播等需求可私信我,官網(wǎng)折上折,阿里更優(yōu)惠!
————阿里云優(yōu)惠返現(xiàn)————
????? 1:官網(wǎng)優(yōu)惠+返現(xiàn)優(yōu)惠雙享優(yōu)惠
????? 2:新老賬號(hào)都可以,招代理
???? 咨詢:18580699993??(vx同號(hào))
以下為操作流程每步的返回結(jié)果圖。
?
本文由阿里云-掩日編輯,有阿里云服務(wù)器、數(shù)據(jù)庫(kù)、直播等需求可私信我,官網(wǎng)折上折,阿里更優(yōu)惠!
————阿里云優(yōu)惠返現(xiàn)————
1:官網(wǎng)優(yōu)惠+返現(xiàn)優(yōu)惠雙享優(yōu)惠
2:新老賬號(hào)都可以,招代理
咨詢:18580699993??(vx同號(hào))
總結(jié)
以上是生活随笔為你收集整理的Keystone认证服务详细操作流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis-查询处理一对一和一对多
- 下一篇: 互联网金融风控面试算法知识(一)