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