11.4. アクセス制御でのポリシーファイルの使用
Red Hat では、カスタマイズされたロールまたはポリシーはサポートしていません。構文エラーや、承認が誤って適用されると、セキュリティーやユーザービリティーに悪影響を及ぼす可能性があります。実稼働環境でカスタマイズされたロールまたはポリシーが必要な場合は、サポート例外について Red Hat サポートにお問い合わせください。
デフォルトのルールを上書きするには、適切な OpenStack サービスの policy.json ファイルを編集します。たとえば、Compute サービスには nova ディレクトリーに policy.json があります。これは、コンテナーから表示する際にコンテナー化されたサービスの正しい場所となります。
- ステージング環境でポリシーファイルへの変更をよくテストしてから、それらを実稼働環境で実装する必要があります。
-
アクセス制御ポリシーへの変更が、リソースのセキュリティーを意図せずに脆弱化しないことを確認する必要があります。また、
policy.jsonファイルへの変更はすぐに有効であり、サービスの再起動は必要ありません。
例: パワーユーザーロールの作成
keystone ロールのパーミッションをカスタマイズするには、サービスの policy.json ファイルを更新します。これは、ユーザーのクラスに割り当てるパーミッションをより詳細に定義できることを意味します。以下の例では、以下の特権を使用してデプロイメントの power user ロールを作成します。
- インスタンスを起動するには、以下のコマンドを実行します。
- インスタンスを停止します。
- インスタンスに割り当てられているボリュームを管理します。
このロールの意図は、admin アクセスを付与せずに、特定のユーザーに追加のパーミッションを付与することです。これらの特権を使用するには、以下のパーミッションをカスタムロールに付与する必要があります。
-
インスタンスを起動する:
"os_compute_api:servers:start": "role:PowerUsers" -
インスタンスを停止する:
"os_compute_api:servers:stop": "role:PowerUsers" -
特定のボリュームを使用するようにインスタンスを設定する:
"os_compute_api:servers:create:attach_volume": "role:PowerUsers" -
インスタンスに割り当てられているボリュームをリスト表示する:
"os_compute_api:os-volumes-attachments:index": "role:PowerUsers" -
ボリュームを割り当てる:
"os_compute_api:os-volumes-attachments:create": "role:PowerUsers" -
割り当てられたボリュームの詳細を表示する:
"os_compute_api:os-volumes-attachments:show": "role:PowerUsers" -
インスタンスに割り当てられているボリュームを変更する:
"os_compute_api:os-volumes-attachments:update": "role:PowerUsers" -
インスタンスに割り当てられているボリュームを削除する:
"os_compute_api:os-volumes-attachments:delete": "role:PowerUsers"
policy.json ファイルを変更すると、デフォルトのポリシーを上書きします。その結果、PowerUsers のメンバーは、これらのアクションを実行できる唯一のユーザーになります。admin ユーザーがこれらのパーミッションを保持できるようにするには、admin_or_power_user. のルールを作成できます。また、基本的な条件ロジックを使用して role:PowerUsers or role:Admin を定義することもできます。
手順
カスタム keystone ロールを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のユーザーをロールに追加し、ロールをプロジェクトに割り当てます。
openstack role add --project [PROJECT_NAME] --user [USER_ID] [PowerUsers-ROLE_ID]
$ openstack role add --project [PROJECT_NAME] --user [USER_ID] [PowerUsers-ROLE_ID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ロールの割り当ては、1 つのプロジェクトのみとペアになります。つまり、ロールをユーザーに割り当てると、ターゲットプロジェクトも同時に定義します。ユーザーが同じロールを受信し、別のプロジェクトを対象にする場合は、ロールを別々に割り当てる必要がありますが、別のプロジェクトが対象となります。
-
tripleo-adminユーザーとしてコントローラーノードにログインします。 オプション:コントローラー上で、デフォルトの nova ポリシー設定を表示します。
sudo podman exec -i nova_compute oslopolicy-policy-generator --namespace nova
$ sudo podman exec -i nova_compute oslopolicy-policy-generator --namespace novaCopy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーの変更をテストします。各コントローラーノードで、以下の手順を実施します。
Compute サービス
policy.jsonファイルを展開します。sudo podman exec -it nova_compute oslopolicy-policy-generator --namespace nova > /tmp/nova-policy.json
sudo podman exec -it nova_compute oslopolicy-policy-generator --namespace nova > /tmp/nova-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のエントリーを
/tmp/policy.jsonに追加して、新しいPowerUsersロールのカスタムパーミッションを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルを nova コンテナーに保存して、変更を実装します。PowerUsers keystone ロールに追加したユーザーは、これらの権限を受け取ります。
podman cp /tmp/nova-policy.json nova_compute:etc/nova/policy.json
podman cp /tmp/nova-policy.json nova_compute:etc/nova/policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- heat ポリシーファイルの更新により、変更を永続的に行います。詳細は、Mixate policies with heat を 参照してください。