第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 ワーカーの数を制限します。この例では、BarbicanWorkers10 に設定します。これにより、これら 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 管理者

手順

  1. 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 を設定します。

  2. デプロイメントコマンドおよびご自分のデプロイメントに該当するその他の環境ファイルと共に、カスタムの configure-barbican.yamlbarbican.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

検証

  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 |
    +---------+-------------+