任务一 理解身份服务
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策略