第3章 Barbican のインストール

Red Hat OpenStack Platform では、barbican はデフォルトで有効になっていません。以下の手順では、既存の OpenStack デプロイメントに barbican をデプロイする方法について説明します。barbican はコンテナー化されたサービスとして実行されるため、この手順では新しいコンテナーイメージの準備およびアップロード方法についても説明します。

注記

この手順では、barbican が simple_crypto バックエンドを使用するように設定します。PKCS11 や DogTag 等の追加バックエンドが利用できますが、本リリースでは対応していません。

  1. アンダークラウドノードで、barbican の環境ファイルを作成します。これにより、director が barbican をインストールするように指示します( openstack overcloud deploy […​]に含まれる場合)。

    $ cat /home/stack/configure-barbican.yaml
    	parameter_defaults:
    	  BarbicanSimpleCryptoGlobalDefault: true
    • BarbicanSimpleCryptoGlobalDefault - このプラグインをグローバルのデフォルトプラグインとして設定します。
    • その他のオプションも設定可能です。

      • BarbicanPassword: barbican サービスアカウントのパスワードを設定します。
      • BarbicanWorkers: barbican::wsgi::apache のワーカー数を設定します。デフォルトで '%{::processorcount}' を使用します。
      • BarbicanDebug: デバッグを有効にします。
      • BarbicanPolicies: barbican 向けに設定するポリシーを定義します。ハッシュ値を使用します(例: { barbican-context_is_admin: { key: context_is_admin, value: 'role:admin' } })。このエントリーは /etc/barbican/policy.json に追加されます。ポリシーの詳細は、後のセクションで説明します。
      • BarbicanSimpleCryptoKek: キー暗号化キー(KEK)は、指定がない場合は director によって生成されます。
  2. このステップでは、barbican 用の新規コンテナーイメージを準備します。configure-barbican.yaml と関連するすべてのテンプレートファイルを含める必要があります。実際のデプロイメントに合わせて、以下の例を変更します。

    $ openstack overcloud container image prepare \
    	--namespace example.lab.local:5000/rhosp-rhel8 \
    	--tag latest \
    	--push-destination 192.168.100.1:8787 \
    	--output-images-file ~/container-images-with-barbican.yaml \
    	-e /home/stack/virt/config_lvm.yaml \
    	-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    	-e /home/stack/virt/network/network-environment.yaml \
    	-e /home/stack/virt/hostnames.yml \
    	-e /home/stack/virt/nodes_data.yaml \
    	-e /home/stack/virt/extra_templates.yaml \
    	-e /home/stack/virt/docker-images.yaml \
    	-e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican.yaml \
    	-e /usr/share/openstack-tripleo-heat-templates/environments/barbican-backend-simple-crypto.yaml \
    	-e /home/stack/configure-barbican.yaml
  3. 新しいコンテナーイメージをアンダークラウドレジストリーにアップロードします。

    $ openstack overcloud container image upload --debug --config-file container-images-with-barbican.yaml
  4. 新たな環境ファイルを準備します。

    $ openstack overcloud container image prepare \
      --tag latest \
      --namespace 192.168.100.1:8787/rhosp-rhel8 \
      --output-env-file ~/container-parameters-with-barbican.yaml \
      -e /home/stack/virt/config_lvm.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /home/stack/virt/network/network-environment.yaml \
      -e /home/stack/virt/hostnames.yml \
      -e /home/stack/virt/nodes_data.yaml \
      -e /home/stack/virt/extra_templates.yaml \
      -e /home/stack/virt/docker-images.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/barbican-backend-simple-crypto.yaml \
      -e /home/stack/configure-barbican.yaml
  5. これらの変更をデプロイメントに適用するには、オーバークラウドを更新し、以前の openstack overcloud deploy […​] で使用したすべての heat テンプレートファイルを指定します。以下に例を示します。

    $ openstack overcloud deploy \
        --timeout 100 \
        --templates /usr/share/openstack-tripleo-heat-templates \
        --stack overcloud \
        --libvirt-type kvm \
        --ntp-server clock.redhat.com \
        -e /home/stack/virt/config_lvm.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
        -e /home/stack/virt/network/network-environment.yaml \
        -e /home/stack/virt/hostnames.yml \
        -e /home/stack/virt/nodes_data.yaml \
        -e /home/stack/virt/extra_templates.yaml \
        -e /home/stack/container-parameters-with-barbican.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/barbican-backend-simple-crypto.yaml \
        -e /home/stack/configure-barbican.yaml \
        --log-file overcloud_deployment_38.log

3.1. オーバークラウドの作成者ロールへのユーザーの追加

ユーザーは、barbican シークレットの作成および編集を 実行するために作成者 ロールのメンバーである必要があります。たとえば、このロールは、それらのシークレットを barbican に保管する暗号化されたボリュームを作成するために必要になります。

  1. creator という名前の新規ロールを作成します。

    $ openstack role create creator
    +-----------+----------------------------------+
    | Field     | Value                            |
    +-----------+----------------------------------+
    | domain_id | None                             |
    | id        | 4e9c560c6f104608948450fbf316f9d7 |
    | name      | creator                          |
    +-----------+----------------------------------+
  2. creator ロールの id を取得します。

    openstack role show creator
    +-----------+----------------------------------+
    | Field     | Value                            |
    +-----------+----------------------------------+
    | domain_id | None                             |
    | id        | 4e9c560c6f104608948450fbf316f9d7 |
    | name      | creator                          |
    +-----------+----------------------------------+
  3. ユーザーを creator ロールに割り当て、関連するプロジェクトを指定します。この例では、project_a プロジェクトの user1 という名前のユーザーが creator ロールに追加されます。

    openstack role add --user user1 --project project_a 4e9c560c6f104608948450fbf316f9d7

3.1.1. barbican 機能のテスト

本セクションでは、barbican が正常に動作していることをテストする方法を説明します。

  1. テストシークレットを作成します。以下に例を示します。

    $ openstack secret store --name testSecret --payload 'TestPayload'
    +---------------+------------------------------------------------------------------------------------+
    | Field         | Value                                                                              |
    +---------------+------------------------------------------------------------------------------------+
    | Secret href   | https://192.168.123.163/key-manager/v1/secrets/4cc5ffe0-eea2-449d-9e64-b664d574be53 |
    | Name          | testSecret                                                                         |
    | Created       | None                                                                               |
    | Status        | None                                                                               |
    | Content types | None                                                                               |
    | Algorithm     | aes                                                                                |
    | Bit length    | 256                                                                                |
    | Secret type   | opaque                                                                             |
    | Mode          | cbc                                                                                |
    | Expiration    | None                                                                               |
    +---------------+------------------------------------------------------------------------------------+
  2. 作成したシークレットのペイロードを取得します。

    openstack secret get https://192.168.123.163/key-manager/v1/secrets/4cc5ffe0-eea2-449d-9e64-b664d574be53 --payload
    +---------+-------------+
    | Field   | Value       |
    +---------+-------------+
    | Payload | TestPayload |
    +---------+-------------+