3.2. ポリシーについて
barbican はポリシーを使用して、キーの追加または削除など、シークレットに対してアクションを実行できるユーザーを決定します。これらのコントロールを実装するには、keystone プロジェクトロール(以前に作成した creator
など)は barbican 内部パーミッションにマッピングされます。その結果、これらのプロジェクトロールに割り当てられるユーザーは、対応する barbican パーミッションを受信します。
3.2.1. デフォルトポリシーの表示
デフォルトのポリシーはコードで定義されるため、通常は修正は必要ありません。デフォルトのポリシーは、barbican
ソースコードから生成することで表示できます。
追加のコンポーネントをダウンロードし、インストールできるため、実稼働以外のシステムで以下の手順を実行します。この例では、
queens
ブランチに切り替わっているので、別のバージョンを使用する場合は、これを調整する必要があります。git clone https://github.com/openstack/barbican cd /home/stack/barbican git checkout origin/stable/queens tox -e genpolicy
このコマンドにより、デフォルト設定が含まれるサブディレクトリーにポリシーファイル(
etc/barbican/policy.yaml.sample
)が生成されます。このパスは、システムの/etc
ディレクトリーではなく、リポジトリー内のサブディレクトリーを参照します。このファイルのコンテンツは、以下の手順で説明します。生成した
policy.yaml.sample
ファイルは、barbican で使用されるポリシーを記述します。ポリシーは、ユーザーがシークレットおよびシークレットメタデータと対話する方法を定義する 4 つの異なるロールによって実装されます。ユーザーは、特定のロールに割り当てられているパーミッションを受け取ります。-
Admin
: シークレットの削除、作成/編集、および読み取りを行うことができます。 -
creator
: シークレットの作成/編集および読み取りが可能です。シークレットを削除できません。 -
observer
: データの読み取りのみが可能です。 audit
: メタデータのみを読み取ることができます。シークレットを読み取りできません。たとえば、以下のエントリーは、各プロジェクトの
admin
、observer
、およびcreator
のkeystone ロールを一覧表示します。右側には、role:admin
、role:observer
、およびrole:creator
パーミッションが割り当てられていることを確認します。# #"admin": "role:admin" # #"observer": "role:observer" # #"creator": "role:creator"
これらのロールは barbican でグループ化することもできます。たとえば、
admin_or_creator
を指定するルールは、rule:admin
またはrule:creator
のメンバーに適用できます。
-
ファイル内では、
secret:put
およびsecret:delete
のアクションがあります。右側には、これらのアクションを実行するパーミッションがあるロールについて確認してください。以下の例では、secret:delete
は、admin
およびcreator
ロールメンバーのみがシークレットエントリーを削除できることを意味します。さらに、ルールは、そのプロジェクトのadmin
またはcreator
ロールのユーザーがそのプロジェクトのシークレットを削除できることを示しています。プロジェクトのマッチは、ポリシーにも定義されるsecret_project_match
ルールで定義されます。secret:delete": "rule:admin_or_creator and rule:secret_project_match"