雲計算OpenStack:keystone身份認證服務(二)--技術流ken
阿新 • • 發佈:2019-03-26
pre 查看 keys sym com col 分享圖片 lis 查詢
Authentication
Authentication 是 Keystone 驗證 User 身份的過程。User 訪問 OpenStack 時向 Keystone 提交用戶名和密碼形式的 Credentials,Keystone 驗證通過後會給 User 簽發一個 Token 作為後續訪問的 Credential。
Token
Token 是由數字和字母組成的字符串,User 成功 Authentication 後 Keystone 生成 Token 並分配給 User。
Keystone介紹
keystone 是OpenStack的組件之一,用於為OpenStack家族中的其它組件成員提供統一的認證服務,包括身份驗證、令牌的發放和校驗、服務列表、用戶權限的定義等等。雲環境中所有的服務之間的授權和認證都需要經過 keystone. 因此 keystone 是雲平臺中第一個即需要安裝的服務。 作為 OpenStack 的基礎支持服務,Keystone 做下面這幾件事情:- 管理用戶及其權限
- 維護 OpenStack Services 的 Endpoint
- Authentication(認證)和 Authorization(鑒權)
- Token 用做訪問 Service 的 Credential
- Service 會通過 Keystone 驗證 Token 的有效性
- Token 的有效期默認是 24 小時
- 資源的所有權是屬於 Project 的,而不是 User。
- 在 OpenStack 的界面和文檔中,Tenant / Project / Account 這幾個術語是通用的,但長期看會傾向使用 Project
- 每個 User(包括 admin)必須掛在 Project 裏才能訪問該 Project 的資源。 一個User可以屬於多個 Project。
- admin 相當於 root 用戶,具有最高權限
# source devstack/openrc admin admin # openstack catalog listRole 安全包含兩部分:Authentication(認證)和 Authorization(鑒權) Authentication 解決的是“你是誰?”的問題 Authorization 解決的是“你能幹什麽?”的問題 Keystone 借助 Role 實現 Authorization:
- Keystone定義Role
- 可以為 User 分配一個或多個 Role,Horizon 的菜單為: Identity->Project->ManageMembers
- Service 決定每個 Role 能做什麽事情 Service 通過各自的 policy.json 文件對 Role 進行訪問控制。 下面是 Nova 服務 /etc/nova/policy.json 中的示例:
Keystone基本架構
•Token: 用來生成和管理token •Catalog:用來存儲和管理service/endpoint •Identity:用來管理tenant/user/role和驗證 •Policy:用來管理訪問權限
通過例子認識Keystone
我們通過“查詢可用 image”這個實際操作讓大家對這些概念建立更加感性的認識。User admin 要查看 Project 中的 image
第 1 步 登錄 當點擊時,OpenStack 內部發生了哪些事情?請看下面 Token 中包含了 User 的 Role 信息 第 2 步 顯示操作界面 請註意,頂部顯示 admin 可訪問的 Project 為 “admin” 和 “demo”。 其實在此之前發生了一些事情: 同時,admin 可以訪問 Intance, Volume, Image 等服務 這是因為 admin 已經從 Keystone 拿到了各 Service 的 Endpoints 第 3 步 顯示 image 列表 點擊 “Images”,會顯示 image 列表 背後發生了這些事: 首先 admin 將請求發送到 Glance 的 Endpoint Glance 向 Keystone 詢問 admin 身份是否有效 接下來 Glance 會查看 /etc/glance/policy.json 判斷 admin 是否有查看 image 的權限 權限判定通過,Glance 將 image 列表發給 admin。OpenStack問題排查
OpenStack 排查問題的方法主要是通過日誌。 每個 Service 都有自己的日誌文件。 Keystone 主要有兩個日誌: keystone.log 和 keystone_access.log,保存在 /var/log/apache2/ 目錄裏。 devstack 的 screen 窗口已經幫我們打開了這兩個日誌。 可以直接查看: 如果需要得到最詳細的日誌信息,可以在 /etc/keystone/keystone.conf 中打開 debug 選項 在非 devstack 安裝中,日誌可能在 /var/log/keystone/ 目錄裏。安裝和配置keystone
第一步:數據庫創建keystone用戶
MariaDB [(none)]> CREATE DATABASE keystone;
第二步:對``keystone``數據庫授予恰當的權限
密碼設置為keystone
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘localhost‘ -> IDENTIFIED BY ‘keystone‘; MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘keystone‘;
第三步:安裝keystone
[root@ken-node1 ~]# yum install openstack-keystone httpd mod_wsgi -y
第四步:編輯配置文件/etc/keystone/keystone.conf
在[database]下面添加下面的內容
在713行處
[root@ken-node1 etc]# vim /etc/keystone/keystone.conf ... 713 connection = mysql+pymysql://keystone:[email protected]/keystone
第四步:在``[token]``部分,配置Fernet UUID令牌的提供者
2832行處
[root@ken-node1 etc]# vim /etc/keystone/keystone.conf
...
2832 provider = fernet
第五步:初始化身份認證服務的數據庫
[root@ken-node1 etc]# su -s /bin/sh -c "keystone-manage db_sync" keystone
第六步:初始化Fernet keys
[root@ken-node1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@ken-node1 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
第七步:引導身份認證服務
[root@ken-node1 ~]# keystone-manage bootstrap --bootstrap-password admin \ #密碼設置為admin > --bootstrap-admin-url http://192.168.64.7:35357/v3/ \ > --bootstrap-internal-url http://192.168.64.7:5000/v3/ \ > --bootstrap-public-url http://192.168.64.7:5000/v3/ \ > --bootstrap-region-id RegionOne
第八步:編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項為控制節點
ServerName 192.168.64.7
第九步:創建軟連接/usr/share/keystone/wsgi-keystone.conf
[root@ken-node1 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
第十步:啟動
[root@ken-node1 ~]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. [root@ken-node1 ~]# systemctl start httpd
第十一步:配置管理賬號
新建一個文件寫入如下的內容
[root@ken-node1 ~]# cat admin export OS_USERNAME=admin export OS_PASSWORD=admin #keystone-manage bootstrap的密碼 export OS_PROJECT_NAME=admin export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_DOMAIN_NAME=Default export OS_AUTH_URL=http://192.168.64.7:35357/v3 export OS_IDENTITY_API_VERSION=3
至此,keystone身份認證部署完畢,下一節開始部署glance鏡像服務!
雲計算OpenStack:keystone身份認證服務(二)--技術流ken