3.3. OpenStack Key Manager (barbican) と Entrust nShield Connect XC のインテグレーション

PKCS#11 バックエンドを Entrust nShield Connect XC HSM と統合するには、Ansible ロールを使用して、コントローラーに Entrust クライアントソフトウェアをダウンロードしてインストールします。また、Barbican 設定ファイルを作成し、事前に定義された HSM IP および認証情報を追加します。

前提条件

  • Entrust nShield Connect XC にベンダーソフトウェアを提供する、パスワードで保護される HTTPS サーバー。

手順

  1. Barbican 用の configure-barbican.yaml 環境ファイルを作成し、お使いの環境に固有のパラメーターを追加します。以下のスニペットを例として使用します。

        parameter_defaults:
            VerifyGlanceSignatures: true
            SwiftEncryptionEnabled: true
            BarbicanPkcs11CryptoLogin: 'sample string'
            BarbicanPkcs11CryptoSlotId: '492971158'
            BarbicanPkcs11CryptoGlobalDefault: true
            BarbicanPkcs11CryptoLibraryPath: '/opt/nfast/toolkits/pkcs11/libcknfast.so'
            BarbicanPkcs11CryptoEncryptionMechanism: 'CKM_AES_CBC'
            BarbicanPkcs11CryptoHMACKeyType: 'CKK_SHA256_HMAC'
            BarbicanPkcs11CryptoHMACKeygenMechanism: 'CKM_NC_SHA256_HMAC_KEY_GEN'
            BarbicanPkcs11CryptoMKEKLabel: 'barbican_mkek_10'
            BarbicanPkcs11CryptoMKEKLength: '32'
            BarbicanPkcs11CryptoHMACLabel: 'barbican_hmac_10'
            BarbicanPkcs11CryptoThalesEnabled: true
            BarbicanPkcs11CryptoEnabled: true
            ThalesVars:
                thales_client_working_dir: /tmp/thales_client_install
                thales_client_tarball_location: https://your server/CipherTools-linux64-dev-12.40.2.tgz
                thales_client_tarball_name: CipherTools-linux64-dev-12.40.2.tgz
                thales_client_path: linux/libc6_11/amd64/nfast
                thales_client_uid: 42481
                thales_client_gid: 42481
                thales_km_data_location: https://your server/kmdata_post_card_creation.tar.gz
                thales_km_data_tarball_name: kmdata_post_card_creation.tar.gz
                thales_rfs_server_ip_address: 192.168.10.12
                thales_hsm_config_location: hsm-C90E-02E0-D947
                nShield_hsms:
                  - name: hsm-name.example.com
                    ip: 192.168.10.10
                thales_rfs_user: root
                thales_rfs_key: |
                    -----BEGIN RSA PRIVATE KEY-----
    Sample private key
    -----END RSA PRIVATE KEY-----
    
    resource_registry:
        OS::TripleO::Services::BarbicanBackendPkcs11Crypto: /home/stack/tripleo-heat-templates/puppet/services/barbican-backend-pkcs11-crypto.yaml

    表3.4 heat パラメーター

    パラメーター

    BarbicanSimpleCryptoGlobalDefault

    これは、simplecrypto がグローバルデフォルトであるかどうかを決定するブール値です。

    BarbicanPkcs11GlobalDefault

    これは、PKCS#11 がグローバルデフォルトであるかどうかを決定するブール値です。

    BarbicanPkcs11CryptoSlotId

    Barbican によって使用される仮想 HSM のスロット ID。

    BarbicanPkcs11CryptoMKEKLabel

    このパラメーターは、HSM で生成された mKEK の名前を定義します。director はこのキーを使用して HSM にこのキーを作成します。

    BarbicanPkcs11CryptoHMACLabel

    このパラメーターは、HSM で生成された HMAC の名前を定義します。director はこのキーを使用して HSM にこのキーを作成します。

    ThalesVars

    thales_client_working_dir

    ユーザー定義の一時作業ディレクトリー。

    thales_client_tarball_location

    Entrust ソフトウェアの HTTPS サーバーの場所を指定する URL。

    thales_km_data_tarball_name

    Entrust ソフトウェア tarball の名前。

    thales_rfs_key

    RFS サーバーへの SSH 接続の取得に使用されるプライベートキー。これを承認されたキーとして RFS サーバーに追加する必要があります。

  2. barbican.yaml および Thales 固有の barbican-backend-pkcs11-thales.yaml 環境ファイル、ならびに openstack overcloud deploy コマンドを実行する際にデプロイメントに必要なその他すべてのテンプレートに加えて、カスタムの configure-barbican.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-thales.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 |
    +---------+-------------+

3.3.1. Entrust nShield Connect を使用した負荷分散

有効な HSM のアレイを指定することにより、Entrust nShield Connect HSM で負荷分散を有効にできるようになりました。複数の HSM がリストされている場合は、負荷分散が有効になります。

この機能は、本リリースではテクノロジープレビューとして提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト用途にのみご利用いただく機能です。実稼働環境にはデプロイしないでください。

テクノロジープレビュー機能の詳しい情報は、対象範囲の詳細 を参照してください。

手順

  • Entrust nShield Connect HSM の nameip パラメーターを設定するときに、複数を指定すると、負荷分散が有効になります。

      parameter_defaults:
        ....
        ThalesVars:
          ....
          nshield_hsms:
            - name: hsm-name1.example.com
              ip: 192.168.10.10
            - name: hsm-nam2.example.com
              ip: 192.168.10.11
          ....