可以添加 policy 部分,用于控制特定服务的 RBAC 策略。
每个 OpenStack 服务(例如,身份、计算、网络等)都有自己的基于角色的访问策略。这些策略确定了您可以访问的对象,它们在服务策略配置文件中进行定义。对于
VMware Integrated OpenStack 部署,必须使用
viocli update 命令编辑相应的服务策略配置。
注: 对于 VIO 7.x,Keystone 具有默认的读者和成员角色。默认情况下,该角色不起作用。必须编辑相应的服务策略,明确使用该角色满足权限控制要求。有关用户和角色管理的详细信息,请参见
Keystone 用户和角色管理。
语法:
使用 viocli update <service> 命令为指定的服务添加 RBAC 策略。
可以使用
project_id、
user_id、
domain_id 或
role 创建用户范围条件。对于常规范围组合,请使用以下运算符:
- ! :任何用户都无法执行该操作。
- @ 或 "":任何用户都可以执行该操作。
- not、and、or:用于组合多个范围的运算符。
以下示例代码显示了常规范围组合所用的不同运算符:
conf:
policy:
"alias_1": "is_admin:True or project_id:%(project_id)s"
"alias_2": "role:reader"
"alias_3": "other user scope definition"
"operation_1": "!"
"operation_2": "@"
"operation_3": "rule:alias_1 or (rule:alias_2 and rule:alias_3)"
示例:
可以在策略配置文件中定义某些规则,如
power_user 和
read_user。例如,在以下代码中,
read_user 调用用于服务器索引、显示和详细信息的 API,但无法创建、删除、启动和停止 Nova 实例。
conf:
nova:
vmware:
#some configurations for VIO
policy:
power_user: (role:member) and project_id:%(project_id)s
read_user: (role:reader) and project_id:%(project_id)s
os_compute_api:servers:detail: rule:read_user
os_compute_api:servers:index: rule:read_user
os_compute_api:servers:show: rule:read_user
os_compute_api:servers:start: rule:power_user
os_compute_api:servers:stop: rule:power_user
os_compute_api:servers:create: rule:power_user
os_compute_api:servers:delete: rule:power_user
查看完整策略:
必须找到服务容器,然后才能查看策略文件内容。使用以下命令查看完整的 Nova 策略:
# osctl get pod | grep nova-api-osapi nova-api-osapi-7d7978fb44-b24rl 2/2 Running 0 3d23h # osctl exec -it nova-api-osapi-7d7978fb44-b24rl /bin/bash Defaulting container name to nova-osapi. Use 'kubectl describe pod/nova-api-osapi-7d7978fb44-b24rl -n openstack' to see all of the containers in this pod. [root@nova-api-osapi-7d7978fb44-b24rl /]# cat /etc/nova/policy.yaml os_compute_api:os-simple-tenant-usage:discoverable: '@' ......
有关不同服务的策略的详细信息,请参见以下 OpenStack 社区文档:
Keystone:Keystone 策略
Nova:Nova 策略
Cinder:Cinder 策略
Glance:Glance 策略
Neutron:Neutron 策略