可以新增 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 原則