3.2. ポリシーについて

barbican はポリシーを使用して、キーの追加または削除など、シークレットに対してアクションを実行できるユーザーを決定します。これらのコントロールを実装するには、keystone プロジェクトロール(以前に作成した creatorなど)は barbican 内部パーミッションにマッピングされます。その結果、これらのプロジェクトロールに割り当てられるユーザーは、対応する barbican パーミッションを受信します。

3.2.1. デフォルトポリシーの表示

デフォルトのポリシーはコードで定義されるため、通常は修正は必要ありません。デフォルトのポリシーは、barbican ソースコードから生成することで表示できます。

  1. 追加のコンポーネントをダウンロードし、インストールできるため、実稼働以外のシステムで以下の手順を実行します。この例では、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 ディレクトリーではなく、リポジトリー内のサブディレクトリーを参照します。このファイルのコンテンツは、以下の手順で説明します。

  2. 生成した policy.yaml.sample ファイルは、barbican で使用されるポリシーを記述します。ポリシーは、ユーザーがシークレットおよびシークレットメタデータと対話する方法を定義する 4 つの異なるロールによって実装されます。ユーザーは、特定のロールに割り当てられているパーミッションを受け取ります。

    • Admin: シークレットの削除、作成/編集、および読み取りを行うことができます。
    • creator: シークレットの作成/編集および読み取りが可能です。シークレットを削除できません。
    • observer: データの読み取りのみが可能です。
    • audit: メタデータのみを読み取ることができます。シークレットを読み取りできません。

      たとえば、以下のエントリーは、各プロジェクトの adminobserver、およびcreatorのkeystone ロールを一覧表示します。右側には、role:adminrole:observer、および role:creator パーミッションが割り当てられていることを確認します。

      #
      #"admin": "role:admin"
      
      #
      #"observer": "role:observer"
      
      #
      #"creator": "role:creator"

      これらのロールは barbican でグループ化することもできます。たとえば、admin_or_creator を指定するルールは、rule:admin または rule:creator のメンバーに適用できます。

  3. ファイル内では、secret:put および secret:delete のアクションがあります。右側には、これらのアクションを実行するパーミッションがあるロールについて確認してください。以下の例では、secret:delete は、admin および creator ロールメンバーのみがシークレットエントリーを削除できることを意味します。さらに、ルールは、そのプロジェクトの admin または creator ロールのユーザーがそのプロジェクトのシークレットを削除できることを示しています。プロジェクトのマッチは、ポリシーにも定義される secret_project_match ルールで定義されます。

    secret:delete": "rule:admin_or_creator and rule:secret_project_match"