日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenStack之keystone(身份认证服务)

發布時間:2023/12/20 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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認證流程

1、user 登陸(keystone 認證) 2、user 進入控制臺/命令行界面(位置點) 3、user 發起創建虛擬的請求(向keystone認證 指引位置點) 4、請求到達nova組件(向keystone認證 ) 5、nova會開始執行請求,并且調用創建實例 所需要的glance、neutron等資源(向keystone 認證,指引對應服務的位置點) 6、glance和neutron 服務收到請求后(向keystone 認證)才會給與nova對應的資源 7、nova 拿到資源后,調用對應資源,創建實例,最后 將創建結果返回給用戶(成功? 失敗? 原因)①nova 在keystone認證后登陸openstack ②登陸后執行創建指令 ③指定—>nova-api ④ nova會調用創建實例所需要的鏡像資源、網絡資源 ⑤nova將資源整合后,創建虛擬機 創建完成(成功/不成功),均會返回結果給用戶,給與一段報告信息

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節點接收消息并創建虛擬機;
  • 創建數據庫實例和數據庫用戶
[root@ct ~]# mysql -u root -p MariaDB [(none)]> create database keystone; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> exit
  • 安裝、配置keystone、數據庫、Apache
    安裝keystone、httpd、mod_wsgi
mod_wsgi包的作用是讓apache能夠代理python程序的組件;openstack的各個組件,包括API都是用python寫的,但訪問的是apache,apache會把請求轉發給python去處理,這些包只安裝在controler節點 [root@ct ~]# yum -y install openstack-keystone httpd mod_wsgi [root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak} [root@ct keystone]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf

通過pymysql模塊訪問mysql,指定用戶名密碼、數據庫的域名、數據庫名

openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone


指定token的提供者;提供者就是keystone自己本身

openstack-config --set /etc/keystone/keystone.conf token provider fernet #Fernet:一種安全的消息傳遞格式
  • 初始化認證服務數據庫
su -s /bin/sh -c "keystone-manage db_sync" keystone

  • 初始化fernet 密鑰存儲庫(以下命令會生成兩個密鑰,生成的密鑰放于/etc/keystone/目錄下,用于加密數據)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

  • 配置Apache HTTP服務器.
echo "ServerName controller" >> /etc/httpd/conf/httpd.conf
  • 創建配置文件
    安裝完mod_wsgi包后,會生成 wsgi-keystone.conf 這個文件,文件中配置了虛擬主機及監聽了5000端口,mod_wsgi就是python的網關
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  • 開啟服務
[root@ct conf.d]# systemctl enable httpd [root@ct conf.d]# systemctl start httpd
  • 配置管理員賬戶的環境變量
    #這些環境變量用于創建角色和項目使用,但是創建角色和項目需要有認證信息,所以通過環境變量聲明用戶名和密碼等認證信息,欺騙openstack已經登錄且通過認證,這樣就可以創建項目和角色;也就是把admin用戶的驗證信息通過聲明環境變量的方式傳遞給openstack進行驗證,實現針對openstack的非交互式操作
[root@ct ~]# cat >> ~/.bashrc << EOF export OS_USERNAME=admin #控制臺登陸用戶名 export OS_PASSWORD=ADMIN_PASS #控制臺登陸密碼 export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://ct:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 EOF [root@ct ~]# source ~/.bashrc
  • 通過配置環境變量,可以使用openstack命令進行一些操作,示例:
openstack user list

創建OpenStack 域、項目、用戶和角色
  • 創建一個項目(project),創建在指定的domain(域)中,指定描述信息,project名稱為service(可使用openstack domain list 查詢)
openstack project create --domain default --description "Service Project" service


  • 創建角色(可使用openstack role list查看)
openstack role create user

  • 查看openstack 角色列表
openstack role list

# admin為管理員 # member為 租戶 # user:用戶
  • 查看是否可以不指定密碼就可以獲取到token信息(驗證認證服務)
openstack token issue

總結

以上是生活随笔為你收集整理的OpenStack之keystone(身份认证服务)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。