OpenStack之keystone(身份认证服务)
keystone概述
- 概念
Keystone (OpenStack ldentity Service)是OpenStack中的一個(gè)獨(dú)立的提供安全認(rèn)證的模塊,主要負(fù)責(zé)openstack用戶(hù)的身份認(rèn)證、令牌管理、提供訪問(wèn)資源的服務(wù)目錄、以及基于用戶(hù)角色的訪問(wèn)控制。
Keystone類(lèi)似一個(gè)服務(wù)總線,或者說(shuō)是整個(gè)Openstack框架的注冊(cè)表,其他服務(wù)通過(guò)keystone來(lái)注冊(cè)其服務(wù)的Endpoint(服務(wù)訪問(wèn)的URL),任何服務(wù)之間相互的調(diào)用,需要經(jīng)過(guò)Keystone的身份驗(yàn)證,來(lái)獲得目標(biāo)服務(wù)的Endpoint來(lái)找到目標(biāo)服務(wù)。
keystone
1、用戶(hù)身份認(rèn)證、令牌管理、提供服務(wù)對(duì)應(yīng)的地址(URL)
2、所有服務(wù)的交互/調(diào)用,均需要keystone進(jìn)行認(rèn)證、令牌管理
相關(guān)概念:
User:指使用Openstack service的用戶(hù)。
Project(Tenant):可以理解為一個(gè)人、或服務(wù)所擁有的資源集合。
Role:用于劃分權(quán)限。通過(guò)給User指定Role,使User獲得Role對(duì)應(yīng)操作權(quán)限
Authentication:確定用戶(hù)身份的過(guò)程。
Token:是一個(gè)字符串表示,作為訪問(wèn)資源的令牌。Token包含了在指定范圍和有效時(shí)間內(nèi),可以被訪問(wèn)的資源。
Credentials:用于確認(rèn)用戶(hù)身份的憑證。用戶(hù)的用戶(hù)名和密碼,或者是用戶(hù)名和API密鑰,或者身份管理服務(wù)提供的認(rèn)證令牌。
Service: Openstack service,即Openstack中運(yùn)行的組件服務(wù)。如nova、swift、glance、neutron、cinder等。
Endpoint:一個(gè)可以通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)和定位某個(gè)Openstack service的地址,通常是一個(gè)URL。
- keystone認(rèn)證流程
OpenStack(T版)-Keystone組件部署
- 注意事項(xiàng)
OpenStack組件安裝的順序
1、Keystone (apache)
2、glance
3、nova
4、neutron
5、cinder
部署openstack組件時(shí),需先行安裝認(rèn)證服務(wù)(keystone),而認(rèn)證服務(wù)是使用Apache運(yùn)行的,安裝完成后才可以創(chuàng)建、管理賬號(hào),然后安裝鏡像服務(wù)(glance)、計(jì)算服務(wù)(nova)、網(wǎng)絡(luò)服務(wù)(neutron)
其中計(jì)算服務(wù)和網(wǎng)絡(luò)服務(wù)分為管理端和客戶(hù)端,所以需要在openstack的管理端安裝計(jì)算服務(wù)和網(wǎng)絡(luò)服務(wù)的管理端,在創(chuàng)建虛擬機(jī)的node節(jié)點(diǎn)上安裝計(jì)算服務(wù)和網(wǎng)絡(luò)服務(wù)的客戶(hù)端,最后安裝dashboard服務(wù),openstack各種組件的API都是通過(guò)apache運(yùn)行的;
openstack的管理端負(fù)責(zé)創(chuàng)建、管理虛擬機(jī)過(guò)程的調(diào)度
通過(guò)openstack管理端創(chuàng)建虛擬機(jī)的相關(guān)數(shù)據(jù)最終都會(huì)記錄到mysql(mariadb)中;node節(jié)點(diǎn)沒(méi)有權(quán)限往數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù),只有控制端有權(quán)限,并且node節(jié)點(diǎn)與控制端通訊是通過(guò)rabbitmq間接通訊,node節(jié)點(diǎn)會(huì)監(jiān)聽(tīng)rabbitmq,控制端也會(huì)監(jiān)聽(tīng)rabbitmq,控制端把創(chuàng)建虛擬機(jī)的指令發(fā)送到rabbitmq,由監(jiān)聽(tīng)rabbitmq指定隊(duì)列的node節(jié)點(diǎn)接收消息并創(chuàng)建虛擬機(jī); - 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例和數(shù)據(jù)庫(kù)用戶(hù)
- 安裝、配置keystone、數(shù)據(jù)庫(kù)、Apache
安裝keystone、httpd、mod_wsgi
通過(guò)pymysql模塊訪問(wèn)mysql,指定用戶(hù)名密碼、數(shù)據(jù)庫(kù)的域名、數(shù)據(jù)庫(kù)名
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
指定token的提供者;提供者就是keystone自己本身
- 初始化認(rèn)證服務(wù)數(shù)據(jù)庫(kù)
- 初始化fernet 密鑰存儲(chǔ)庫(kù)(以下命令會(huì)生成兩個(gè)密鑰,生成的密鑰放于/etc/keystone/目錄下,用于加密數(shù)據(jù))
- 配置Apache HTTP服務(wù)器.
- 創(chuàng)建配置文件
安裝完mod_wsgi包后,會(huì)生成 wsgi-keystone.conf 這個(gè)文件,文件中配置了虛擬主機(jī)及監(jiān)聽(tīng)了5000端口,mod_wsgi就是python的網(wǎng)關(guān)
- 開(kāi)啟服務(wù)
- 配置管理員賬戶(hù)的環(huán)境變量
#這些環(huán)境變量用于創(chuàng)建角色和項(xiàng)目使用,但是創(chuàng)建角色和項(xiàng)目需要有認(rèn)證信息,所以通過(guò)環(huán)境變量聲明用戶(hù)名和密碼等認(rèn)證信息,欺騙openstack已經(jīng)登錄且通過(guò)認(rèn)證,這樣就可以創(chuàng)建項(xiàng)目和角色;也就是把a(bǔ)dmin用戶(hù)的驗(yàn)證信息通過(guò)聲明環(huán)境變量的方式傳遞給openstack進(jìn)行驗(yàn)證,實(shí)現(xiàn)針對(duì)openstack的非交互式操作
- 通過(guò)配置環(huán)境變量,可以使用openstack命令進(jìn)行一些操作,示例:
創(chuàng)建OpenStack 域、項(xiàng)目、用戶(hù)和角色
- 創(chuàng)建一個(gè)項(xiàng)目(project),創(chuàng)建在指定的domain(域)中,指定描述信息,project名稱(chēng)為service(可使用openstack domain list 查詢(xún))
- 創(chuàng)建角色(可使用openstack role list查看)
- 查看openstack 角色列表
- 查看是否可以不指定密碼就可以獲取到token信息(驗(yàn)證認(rèn)證服務(wù))
總結(jié)
以上是生活随笔為你收集整理的OpenStack之keystone(身份认证服务)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python对压缩包简单加密_简单文件压
- 下一篇: 荣耀X10微信无法连接到服务器,Hica