可以添加 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 策略