第3章 Barbican のインストール
Red Hat OpenStack Platform では、barbican はデフォルトで有効になっていません。以下の手順では、既存の OpenStack デプロイメントに barbican をデプロイする方法について説明します。barbican はコンテナー化されたサービスとして実行されるため、この手順では新しいコンテナーイメージの準備およびアップロード方法についても説明します。
この手順では、barbican が simple_crypto
バックエンドを使用するように設定します。PKCS11
や DogTag 等の追加バックエンドが利用できますが、本リリースでは対応していません。
アンダークラウドノードで、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 によって生成されます。
-
-
このステップでは、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
新しいコンテナーイメージをアンダークラウドレジストリーにアップロードします。
$ openstack overcloud container image upload --debug --config-file container-images-with-barbican.yaml
新たな環境ファイルを準備します。
$ 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
これらの変更をデプロイメントに適用するには、オーバークラウドを更新し、以前の 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 に保管する暗号化されたボリュームを作成するために必要になります。
creator
という名前の新規ロールを作成します。$ openstack role create creator +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | 4e9c560c6f104608948450fbf316f9d7 | | name | creator | +-----------+----------------------------------+
creator
ロールの
id
を取得します。openstack role show creator +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | 4e9c560c6f104608948450fbf316f9d7 | | name | creator | +-----------+----------------------------------+
ユーザーを
creator
ロールに割り当て、関連するプロジェクトを指定します。この例では、project_a
プロジェクトのuser1
という名前のユーザーがcreator
ロールに追加されます。openstack role add --user user1 --project project_a 4e9c560c6f104608948450fbf316f9d7
3.1.1. barbican 機能のテスト
本セクションでは、barbican が正常に動作していることをテストする方法を説明します。
テストシークレットを作成します。以下に例を示します。
$ 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 | +---------------+------------------------------------------------------------------------------------+
作成したシークレットのペイロードを取得します。
openstack secret get https://192.168.123.163/key-manager/v1/secrets/4cc5ffe0-eea2-449d-9e64-b664d574be53 --payload +---------+-------------+ | Field | Value | +---------+-------------+ | Payload | TestPayload | +---------+-------------+