第3章 OpenStack Key Manager (barbican) と Hardware Security Module (HSM) アプライアンスのインテグレーション
ハードウェアセキュリティーモジュール (HSM) アプライアンスと Red Hat OpenStack Platform デプロイメントを統合し、ハードウェアベースの暗号化処理を使用してセキュリティーオポストシャーを向上させます。OpenStack Key Manager と HSM アプライアンスとのインテグレーションを計画する場合には、サポートされている暗号化種別および HSM アプライアンスを選択し、通常のバックアップを設定し、デプロイメントに影響する可能性のある他の情報や制限を確認する必要があります。
3.1. OpenStack Key Manager (barbican) と Atos HSM のインテグレーション
PKCS#11 バックエンドを Trustway Proteccio Net HSM アプライアンスと統合するには、barbican を HSM に接続するパラメーターで設定ファイルを作成します。atos_hsms
パラメーターの下に 2 つ以上の HSM をリスト表示して、HA を有効にすることができます。
プランニング
デフォルトでは、HSM の同時接続の最大数は 32 個あります。この数値を超えると、PKCS#11 クライアントからのメモリーエラーが発生することがあります。以下に示すように、接続数を計算することができます。
-
各コントローラーには 1 つの
barbican-api
と 1 つのbarbican-worker
プロセスがあります。 -
各 Barbican API プロセスは
N
個の Apache ワーカーで実行されます (N
はデフォルトで CPU の数に設定されます)。 - 各ワーカーには HSM への 1 つの接続があります。
各 barbican-worker
プロセスには、データベースに 1 つのコネクションがあります。BarbicanWorkers
heat パラメーターを使用して、各 API プロセスの Apache ワーカー数を定義することができます。デフォルトでは、Apache ワーカーの数は CPU 数と一致します。
たとえば、32 コアを持つ 3 つのコントローラーがある場合は、各コントローラー上の Barbican API は 32 Apache ワーカーを使用します。これにより、1 つのコントローラーは、利用可能な 32 HSM 接続をすべて消費します。この競合を回避するには、各ノードに設定された Barbican Apache ワーカーの数を制限します。この例では、BarbicanWorkers
を 10
に設定します。これにより、これら 3 つのコントローラーすべてが HSM に対して同時接続 10 個となるようにします。
前提条件
- Atos HSM にベンダーソフトウェアを提供するパスワードで保護された HTTPS サーバー
表3.1 HTTPS サーバーが提供するファイル
ファイル | 例 | 提供元 |
---|---|---|
Proteccio Client Software ISO イメージファイル | Proteccio1.09.05.iso | HSM ベンダー |
SSL サーバー証明書 | proteccio.CRT | HSM 管理者 |
SSL クライアント証明書 | client.CRT | HSM 管理者 |
SSL クライアントキー | client.KEY | HSM 管理者 |
手順
Barbican 用の
configure-barbican.yaml
環境ファイルを作成し、以下のパラメーターを追加します。parameter_defaults BarbicanSimpleCryptoGlobalDefault: false BarbicanPkcs11CryptoGlobalDefault: true BarbicanPkcs11CryptoLogin: ******** BarbicanPkcs11CryptoSlotId: 1 ATOSVars: atos_client_iso_name: Proteccio1.09.05.iso atos_client_iso_location: https://user@PASSWORD:example.com/Proteccio1.09.05.iso atos_client_cert_location: https://user@PASSWORD:example.com/client.CRT atos_client_key_location: https://user@PASSWORD:example.com/client.KEY atos_hsms: - name: myHsm1 server_cert_location: https://user@PASSWORD:example.com/myHsm1.CRT ip: 192.168.1.101 - name: myHsm2 server_cert_location: https://user@PASSWORD:example.com/myHsm2.CRT ip: ip: 192.168.1.102
注記atos_hsms
パラメーターは、非推奨となったパラメーターatos_hsm_ip_address
およびatos_server_cert_location
に置き換わるもので、今後のリリースで削除される予定です。表3.2 heat パラメーター
パラメーター 値 BarbicanSimpleCryptoGlobalDefault
これは、
simplecrypto
がグローバルデフォルトであるかどうかを決定するブール値です。BarbicanPkcs11GlobalDefault
これは、
PKCS#11
がグローバルデフォルトであるかどうかを決定するブール値です。BarbicanPkcs11CryptoSlotId
Barbican によって使用される仮想 HSM のスロット ID。
ATOSVars
atos_client_iso_name
Atos クライアントソフトウェア ISO のファイル名。この値は、
atos_client_iso_location
パラメーターの URL のファイル名と一致する必要があります。atos_client_iso_location
Proteccio Client Software ISO イメージの HTTPS サーバーの場所を指定するユーザー名とパスワードを含む URL。
atos_client_cert_location
SSL クライアント証明書の HTTPS サーバーの場所を指定するユーザー名とパスワードを含む URL。
atos_client_key_location
SSL クライアントキーの HTTPS サーバーの場所を指定するユーザー名とパスワードを含む URL。これは、上記のクライアント証明書に一致するキーである必要があります。
atos_hsms
HSM の名前、証明書の場所、および IP アドレスを指定する 1 つ以上の HSM のリスト。このリストに複数の HSM を含めると、Barbican は負荷分散と高可用性向けに HSM を設定します。
デプロイメントコマンドおよびご自分のデプロイメントに該当するその他の環境ファイルと共に、カスタムの
configure-barbican.yaml
、barbican.yaml
、および ATOS 固有のbarbican-backend-pkcs11-atos.yaml
環境ファイルを追加します。$ 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/containers-prepare-parameter.yaml \ -e /home/stack/templates/config_lvm.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network/network-environment.yaml \ -e /home/stack/templates/hostnames.yml \ -e /home/stack/templates/nodes_data.yaml \ -e /home/stack/templates/extra_templates.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/barbican.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/barbican-backend-pkcs11-atos.yaml \ -e /home/stack/templates/configure-barbican.yaml \ --log-file overcloud_deployment_with_atos.log
検証
テストシークレットを作成します。
$ 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 | +---------+-------------+