任務一? 理解身份服務
1.1??Keystone的基本概念
1.2??Keystone的主要功能
1.3???Keystone的管理層次結構
1.4??Keystone的認證流程
1.5?查看當前的Identity API版本
1.6??通過API請求認證令牌
1.7??通過API請求認證令牌
[root@node-a ~]# curl -i?? -H "Content-Type: application/json"?? -d '
{ "auth": {
??? "identity": {????????? #指定身份
????? "methods": ["password"],
????? "password": {????? #密碼認證
??????? "user": {
????????? "name": "admin",
????????? "domain": { "id": "default" },
????????? "password": "ABC123456"
??????? }
????? }
??? },
??? "scope": {???????????????????? #指定作用域
????? "project": {????????????????? #作用域的項目
??????? "name": "admin",
??????? "domain": { "id": "default" }
????? }
??? }
? }
}'?? "http://localhost:5000/v3/auth/tokens" ;
(1)導出環境變量OS_TOKEN,將其值設置為上述操作獲取的令牌ID。
[root@node-a ~]# export OS_TOKEN="gAAAAABfUY7KPLJNvQqZp……64_R_a0IqxYw"
(2)以令牌認證方式請求一個認證令牌。
[root@node-a ~]# curl -i \
? -H "Content-Type: application/json" \
? -d '
{ "auth": {
??? "identity": {
????? "methods": ["token"],??????????? #令牌認證
????? "token": {
??????? "id": "'$OS_TOKEN'"
????? }
??? }
? }
}' \
? "http://localhost:5000/v3/auth/tokens"
1.8??使用認證令牌通過API進行身份管理操作
curl -s \
? -H "X-Auth-Token: $OS_TOKEN" \
? "http://localhost:5000/v3/domains" | python -mjson.tool
curl -s \
?-H "X-Auth-Token: $OS_TOKEN" \
?"http://localhost:5000/v3/projects" | python -mjson.tool
curl -s \
?-H "X-Auth-Token: $OS_TOKEN" \
?-H "Content-Type: application/json" \
?-d '{"user": {"name": "newuser", "password": "changeme"}}' \
?"http://localhost:5000/v3/users" | python -mjson.tool
任務二? 管理項目、用戶和角色
2.1??進一步了解項目、用戶和角色
2.2??進一步了解項目、用戶和角色
2.3??命令行的身份管理用法
(1)項目管理
openstack project list
openstack project show 項目名稱或ID
openstack project create --description 項目描述信息 項目名稱 --domain 域名
openstack project set 項目名稱或ID --name 新的項目名稱
openstack project set 項目名稱或ID --disable
openstack project set 項目名稱或ID --enable
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?openstack project delete 項目名稱或ID
(2)用戶管理
openstack user list
openstack user create --project 項目 --password 密碼 用戶名
openstack user set 用戶名或ID --name 新的用戶名 --email 郵件地址
openstack user set 用戶名或ID --disable
openstack user set 用戶名或ID --enable
openstack user delete 用戶名或ID
(3)角色管理
openstack role list
openstack role create 角色名
openstack role show 角色名或ID
openstack role add --user? 用戶名或ID? --project? 項目名或ID? 角色名或ID
openstack role assignment list --user 用戶名? --project 項目名 --names
openstack role remove --user 用戶名或ID --project 用戶名或ID? 角色名或ID
2.3??專用的服務用戶
2.4??使用命令行進行身份管理操作
(1)加載demo用戶的客戶端環境腳本。
[root@node-a ~]# source keystonerc_demo
(2)查看當前的項目列表,該用戶可以訪問兩個項目。
[root@node-a ~(keystone_demo)]# openstack project list
(3)查看用戶列表,可以發現demo用戶沒有被授權此項操作。
[root@node-a ~(keystone_demo)]# openstack user list
(4)加載admin用戶的客戶端環境腳本。
[root@node-a ~(keystone_demo)]# source keystonerc_admin
(5)查看當前的項目列表,云管理員可以查看所有的項目。
[root@node-a ~(keystone_admin)]# openstack project list
(6)查看云平臺上所有的角色分配。
[root@node-a ~(keystone_admin)]# openstack role assignment list --name
(7)進一步篩選出系統管理員的角色分配。
[root@node-a ~(keystone_admin)]# openstack role assignment list --names --system all
任務三? 通過oslo.policy庫實現權限管理
3.1??OpenStack的oslo.policy庫
3.2??policy.json文件的語法
"目標" : "規則"
"值1: 值2"
"別名名稱" : "<別名定義>"
{
?????? "別名1" : "定義1",
?????? "別名2" : "定義2",
?????? ...
?????? "目標1" : "規則1",
?????? "目標2" : "規則2",
?????? ....
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
3.3??編寫簡單的policy.json策略
"compute:get_all" : ""
"compute:shelve": "!"
"identity:create_user" : "role:admin"
"stacks:create": "not role:heat_stack_user"
"os_compute_api:servers:start" : "project_id:%(project_id)s"
3.4??解讀policy.json策略