policy セクションを追加して、特定サービスの RBAC ポリシーを管理できます。

ID、コンピューティング、ネットワークなどの各 OpenStack サービスには、独自のロールベースのアクセス ポリシーがあります。これらのポリシーはアクセス可能なオブジェクトを決定し、サービス ポリシー構成ファイルで定義されます。 VMware Integrated OpenStack デプロイでは、対応するサービス ポリシー構成を編集するために viocli update コマンドを使用する必要があります。
注: VIO 7.x の場合、Keystone にはデフォルトの閲覧者およびメンバー ロールがあります。デフォルトでは機能しません。権限制御の要件を満たすには、ロールを明示的に使用するための対応するサービス ポリシーを編集する必要があります。ユーザーとロールの管理の詳細については、 Keystone のユーザーとロールの管理を参照してください。

[構文:]

指定したサービスの RBAC ポリシーを追加するには、viocli update <service> コマンドを使用します。

ユーザー範囲条件の作成には、 project_iduser_iddomain_idrole のいずれかを使用できます。一般的な範囲の組み合わせには、次の演算子を使用します。
  • [! ]:ユーザーは操作を実行できません。
  • [@] または [""]:どのユーザーも操作を実行できます。
  • [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_userread_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 ポリシー