すべてのプロダクト
Search
ドキュメントセンター

Key Management Service:NIST FIPS 検証済み GVSM クラスタの使用

最終更新日:May 16, 2025

このトピックでは、クラウドハードウェアセキュリティモジュールの使用方法について説明します。

注意事項

前提条件

  • HSM が購入済みであること。詳細については、「HSM を購入する」をご参照ください。

  • CentOS 8 または Alibaba Cloud Linux オペレーティングシステムを実行する ECS インスタンスが購入済みであること。ECS インスタンスと HSM は同じ VPC 内にある必要があります。詳細については、「Linux インスタンスのクイックスタート」をご参照ください。

    説明

    ECS インスタンスは、HSM 管理ツールのインストールに使用され、ビジネスサーバーとしては機能しません。

ステップ 1:HSM をマスター HSM として有効にする

HSM クラスタには、1 つのマスター HSM と複数の非マスター HSM が含まれます。HSM クラスタを作成する前に、HSM をマスター HSM として有効にする必要があります。

  1. クラウドハードウェアセキュリティモジュールコンソールの [仮想 HSM インスタンス] ページにアクセスし、上部のナビゲーションバーでデスティネーションリージョンを選択します。

  2. VSMs ページで、作成した HSM を見つけ、Enable 列の 操作 をクリックします。

  3. Configure HSM Instance ダイアログボックスで、HSM を構成し、Ok をクリックします。構成が完了すると、HSM の ステータス有効 に変わります。

    設定項目

    説明

    Vpcネットワークのid。

    HSM にバインドする VPC です。

    重要

    VPC は ECS インスタンスの VPC と同じである必要があります。

    Vpcサブネット

    VPC 内で HSM に割り当てるサブネットです。

    プライベートipアドレスの割り当て

    HSM に割り当てるプライベート IP アドレスです。

    重要
    • プライベート IP アドレスは、HSM に割り当てられたサブネットに属している必要があります。そうでない場合、構成は失敗します。

    • システムは、最後のオクテットが 253、254、または 255 の IP アドレスを予約しています。予約済みの IP アドレスは使用しないでください。

    Configure HSM Whitelist

    HSM へのアクセスを許可する IP アドレスのホワイトリストです。IP アドレスと CIDR ブロックがサポートされています。各行に 1 つの IP アドレスまたは 1 つの CIDR ブロックを指定できます。最大 10 行まで指定できます。

    • ホワイトリストを構成しない場合、すべての IP アドレスが HSM にアクセスできます。

    • ホワイトリストを構成した場合、ホワイトリストに含まれる IP アドレスのみが HSM にアクセスできます。

    重要
    • クラスタを作成し、HSM をクラスタに追加し、クラスタのホワイトリストを構成した場合、クラスタのホワイトリストが HSM のホワイトリストよりも優先されます。

      たとえば、HSM のホワイトリストに 10.10.10.10 を追加し、HSM を含むクラスタのホワイトリストに 172.16.0.1 を追加した場合、172.16.0.1 のみを使用して HSM にアクセスできます。

    • 0.0.0.0/0 は入力できません。 0.0.0.0/0 を入力すると、すべての IP アドレスからのリクエストが許可されます。

      セキュリティ上の理由から、すべての IP アドレスからのリクエストを許可しないことをお勧めします。すべての IP アドレスからのリクエストを許可する必要がある場合は、ホワイトリストを構成しないでください。

ステップ 2:HSM クラスタを作成してアクティブ化する

クラスタでは、同じゾーンにある HSM は同じ Virtual Private Cloud(VPC)サブネットを使用します。

  1. VSM ページで、マスター HSM を見つけ、アクション 列の [クラスタの作成] をクリックします。

  2. Create and Activate Cluster パネルで、[クラスタの作成] ステップを完了し、次へ をクリックします。

    設定項目

    説明

    クラスター名

    クラスタのカスタム名です。名前は一意である必要があり、長さは 24 文字以下にする必要があります。

    Configure Whitelist

    クラスタへのアクセスを許可する IP アドレスのホワイトリストです。ホワイトリストを構成しない場合、すべての IP アドレスがクラスタにアクセスできます。ホワイトリストを構成した場合、ホワイトリストに含まれる IP アドレスのみがクラスタにアクセスできます。

    IP アドレスと CIDR ブロックがサポートされています。各行に 1 つの IP アドレスまたは 1 つの CIDR ブロックを指定できます。合計で最大 10 行まで指定できます。

    重要
    • クラスタのホワイトリストは、クラスタ内の HSM のホワイトリストよりも優先されます。たとえば、HSM のホワイトリストに 10.10.10.10 を追加し、HSM を含むクラスタのホワイトリストに 172.16.0.1 を追加した場合、172.16.0.1 のみから HSM にアクセスできます。

    • 0.0.0.0/0 のホワイトリスト構成はサポートされていません。 0.0.0.0/0 を入力すると、すべての IP アドレスからのリクエストが許可されます。

      セキュリティ上の理由から、すべての IP アドレスからのリクエストを許可しないことをお勧めします。すべての IP アドレスからのリクエストを許可する必要がある場合は、ホワイトリストを構成しないでください。

    Specify vSwitches

    ビジネス要件に基づいて選択する必要がある vSwitch です。

    HSM クラスタでは、クラスタを作成してアクティブ化するには、少なくとも 2 つの vSwitch を構成する必要があります。

  3. Create and Activate Cluster パネルで、[クラスタのアクティブ化] ステップを実行します。

    1. クラスタ証明書をインポートします。

      1. Upload Cluster Certificate セクションで、Cluster CSR Certificate をクリックして、証明書署名要求(CSR)ファイルをダウンロードします。次に、CSR ファイルを ECS インスタンスにアップロードします。この例では、CSR ファイルの名前は cluster.csr です。

      2. プロンプトに従って秘密鍵を作成し、秘密鍵のパスワードを構成します。この例では、秘密鍵とパスワードは issuerCA.key ファイルに保存されます。

        openssl genrsa -aes256 -out issuerCA.key 2048 // 秘密鍵の生成
      3. 自己署名証明書を作成します。この例では、自己署名証明書は issuerCA.crt ファイルに保存されます。

        openssl req -new -x509 -days 3652 -key issuerCA.key -out issuerCA.crt // 自己署名証明書の生成
      4. CSR に署名し、発行された証明書を cluster.crt ファイルに保存します。

        説明

        このステップでは、cluster.csr、issuerCA.key、および issuerCA.crt ファイルが使用されます。

        openssl x509 -req -in cluster.csr -days 3652 -CA issuerCA.crt -CAkey issuerCA.key -set_serial 01 -out cluster.crt // CSR への署名
      5. クラウドハードウェアセキュリティモジュールコンソールの [クラスタのアクティブ化] ステップに移動し、クラスタ証明書をインポートして、送信 をクリックします。

        • [発行者証明書を PEM 形式で入力します] セクションで、issuerCA.crt ファイルの内容を入力します。

        • 発行されたクラスター証明書を PEM 形式で入力します セクションに、cluster.crt ファイルの内容を入力します。

    2. マスター HSM を初期化します。

      重要

      マスター HSM は、HSM 管理ツールを使用してのみ初期化できます。 HSM 管理ツールは、Linux オペレーティングシステムにのみインストールできます。

      ステップ

      説明

      ステップ 1:HSM 管理ツールをダウンロードします。

      HSM が配置されているリージョンによって、ツールのバージョンが異なります。

      • インドネシア(ジャカルタ)リージョン

        • CentOS

          • 方法 1:HSM インスタンス管理ツール(hsm-client-v2.09.07.02-1.202411041707.x86_64.rpm)をダウンロードします。

          • 方法 2:セキュリティ:image仕様 ページで、必要な HSM を見つけ、 列の アイコンをクリックします。

          • 方法 3: [アクティブ化されたクラスタ] ページで、[HSM 管理ツールをダウンロード] をクリックします。

        • Debian:HSM インスタンス管理ツール(hsm-client-v2.09.07.02-1.202411041707.x86_64.deb)をダウンロードします。

      • インドネシア(ジャカルタ)以外のすべてのリージョン

        • CentOS

          • 方法 1:HSM 管理ツール(hsm-client-v2.03.15.10-1.x86_64.rpm)をダウンロードします。

          • 方法 2:次のコマンドを実行して、HSM 管理ツールをダウンロードします。この操作には、ECS インスタンスがインターネットに接続されている必要があります。

            wget -O hsm-client-v2.03.15.10-1.x86_64.rpm 'https://yundun-hsm4.oss-ap-southeast-1.aliyuncs.com/hsm-client-v2.03.15.10-1.x86_64.rpm' // HSM 管理ツールのダウンロード
          • 方法 3:変更を保存image[保存] ページで、必要な HSM を見つけ、 列の アイコンをクリックします。

          • 方法 4: [クラスタのアクティブ化] ページで、[HSM 管理ツールのダウンロード] をクリックします。

        • Debian:HSM 管理ツール(hsm-client-2.03.15.10-20240710_1.x86_64.deb)をダウンロードします。

      ステップ 2:HSM 管理ツールをインストールします。

      次のコマンドを実行して、プログラムとクライアント構成ファイルを /opt/hsm ディレクトリにインストールします。

      • CentOS

        例の <TOOL_NAME> を、hsm-client-v2.09.07.02-1.202411041707.x86_64.rpm などの実際のツール名に置き換えます。

        sudo yum install -y <TOOL_NAME> // HSM 管理ツールのインストール
      • Debian

        例の <TOOL_NAME> を、hsm-client-2.03.15.10-20240710_1.x86_64.deb などの実際のツール名に置き換えます。

        sudo dpkg -i <TOOL_NAME> // HSM 管理ツールのインストール

      ステップ 3:クライアント構成ファイルを変更します。

      /opt/hsm/etc/hsm_mgmt_tool.cfg ファイルの servers 内の構成項目を変更します。

      • namehostname を、VSM ページにあるマスター HSM のプライベート IP アドレスに置き換えます。

      • owner_cert_path を issuerCA.crt ファイルへのパスに置き換えます。

      hsm_mgmt_tool.cfg ファイルの例

      {
       "servers": [
       {
       "name" : "172.16.XX.XX", // マスター HSM のプライベート IP アドレス
       "hostname" : "172.16.XX.XX", // マスター HSM のプライベート IP アドレス
       "port" : 2225,
       "certificate": "/opt/hsm/etc/client.crt",
       "pkey": "/opt/hsm/etc/client.key",
       "CAfile": "",
       "CApath": "/opt/hsm/etc/certs",
       "ssl_ciphers": "",
       "server_ssl" : "yes",
       "enable" : "yes",
       "owner_cert_path":"<issuerCA.crt_FILE_PATH>" // issuerCA.crt ファイルのパス
       }],
       "scard": {
       "enable": "no",
       "port": 2225,
       "ssl": "no",
       "ssl_ciphers": "",
       "certificate": "cert-sc",
       "pkey": "pkey-sc"
       }
      }

      ステップ 4:マスター HSM にログインして、ユーザーのリストをクエリします。

      1. 次のコマンドを実行して、マスター HSM にログインします。

        /opt/hsm/bin/hsm_mgmt_tool /opt/hsm/etc/hsm_mgmt_tool.cfg // マスター HSM へのログイン
      2. listUsers コマンドを実行して、ユーザーをクエリします。

        cloudmgmt>listUsers // ユーザーのクエリ
        Users on server 0(172.16.XX.XX):
        Number of users found:2
        
            User Id            User Type          User Name                     MofnPubKey       LoginFailureCnt            2FA
                 1             PRECO          admin                                       NO               0                     NO
                 2             AU             app_user                                    NO               0                     NO

      ステップ 5:プリクリプトオフィサー(PRECO)をクリプトオフィサー(CO)に変更します。

      1. loginHSM コマンドを実行して、PRECO としてマスター HSM にログインします。

        server0>loginHSM PRECO admin password // PRECO としてログイン
        loginHSM success
      2. changePswd コマンドを実行して、PRECO のパスワードを変更します。パスワードを変更すると、PRECO は CO に変更されます。

        cloudmgmt>changePswd PRECO admin <NewPassword> // PRECO のパスワード変更
        
        *************************CAUTION********************************
        This is a CRITICAL operation, should be done on all nodes in the
        cluster. Cav server does NOT synchronize these changes with the
        nodes on which this operation is not executed or failed, please
        ensure this operation is executed on all nodes in the cluster.
        ****************************************************************
        
        Do you want to continue(y/n)?y
        Changing password for admin(PRECO) on 1 nodes
      3. listUsers コマンドを実行して、ユーザーをクエリし、PRECO が CO に変更されたかどうかを確認します。

        cloudmgmt>listUsers // ユーザーのクエリ
        Users on server 0(172.16.XX.XX):
        Number of users found:2
        
            User Id            User Type          User Name                     MofnPubKey       LoginFailureCnt            2FA
                 1             CO             admin                                       NO               0                     NO
                 2             AU             app_user                                    NO               0                     NO

      ステップ 6:クリプトユーザー(CU)を作成します。

      警告

      非マスター HSM をクラスタに追加する前に、CU を作成する必要があります。そうでない場合、CU 情報は非マスター HSM に同期されません。

      1. createUser コマンドを実行して、CU を作成します。

        CU のユーザー名とパスワードには、ASCII 文字を含めることができます。ユーザー名は最大 20 文字までです。パスワードは 8 ~ 32 文字にすることができます。

        この例では、ユーザー名は crypto_user です。ビジネス要件に基いてユーザー名を指定できます。

        重要

        ハードウェアキー管理タイプのインスタンスの HSM クラスタを構成する場合は、ユーザー名として kmsuser を指定できます。

        createUser CU crypto_user <enter password> // CU の作成
      2. listUsers コマンドを実行して、CU が作成されたかどうかを確認します。

        期待される出力:

        cloudmgmt>listUsers // ユーザーのクエリ
        Users on server 0(172.16.XX.XX):
        Number of users found:3
        
            User Id         User Type       User Name                  MofnPubKey    LoginFailureCnt         2FA
                 1          CO          admin                                    NO               0               NO
                 2          AU          app_user                                 NO               0               NO
                 3          CU          crypto_user                              NO               0               NO

      ステップ 7:マスター HSM のステータスを確認します。

      Activate Cluster ステップで、update アイコンをクリックしてマスター HSM のステータスを更新します。次に、次へ をクリックします。

  4. HSM を追加Complete ステップで、プロンプトに従って非マスター HSM をクラスタに追加し、 をクリックします。

    ビジネス要件に基づいて追加の HSM を購入し、HSM をクラスタに追加できます。

ステップ 3: hsm_proxy HSM クライアントを起動する

  1. HSM クライアントの構成ファイルを変更します。

    HSM 管理ツールのインストールディレクトリで、/opt/hsm/etc/hsm_proxy.cfg ファイルを見つけます。 server.hostname を現在のインスタンスが属する VPC の IP アドレスに変更し、client.e2e_owner_crt_path を issuerCA.crt のファイルパスに変更します。

    説明

    issuerCA.crt は、クラスタをアクティブ化するときに作成される自己署名証明書です。詳細については、「ステップ 2:クラスタを作成してアクティブ化する」をご参照ください。

    {
    
        "ssl": {
            "certificate": "/opt/hsm/etc/client.crt",
            "pkey": "/opt/hsm/etc/client.key",
            "CApath": "/opt/hsm/etc/certs",
            "server_ssl": "yes",
            "server_ch_ssl_ciphers": "default"
        },
    
        "client": {
            "socket_type" : "UNIXSOCKET",
            "tcp_port" : 1111,
            "zoneid" : 0,
            "workers" : 1,
            "daemon_id" : 1,
            "reconnect_attempts": -1,
            "reconnect_interval": 1,
            "log_level": "INFO",
            "sslreneg": 0,
            "CriticalAlertScript": "",
            "e2e_owner_crt_path" : "<issuerCA.crt file path>", // issuerCA.crt ファイルのパス
            "create_object_minimum_nodes" : 1,
            "logfiles_location" : ""
        },
    
        "loadbalance" : {
            "enable" : "yes",
            "prefer_same_zone": "no",
            "success_rate_weight" : 1,
            "relative_idleness_weight" : 1
        },
    
        "dualfactor": {
            "enable" : "no",
            "port" : 2225,
            "certificate" : "certificate.crt",
            "pkey" : "pkey.pem",
            "dualfactor_ssl": "yes",
            "dualfactor_ch_ssl_ciphers": "default"
        },
    
        "server": {
            "hostname": "<instance ip>", // インスタンスの IP アドレス
            "port": 2224
        }
    }
  2. HSM クライアント(hsm_proxy)を起動し、ログファイルのパスを設定します。

    この例では、ログは liquidSecurity.1.WKCrty.log ファイルに保存されます。

    /opt/hsm/bin/hsm_proxy /opt/hsm/etc/hsm_proxy.cfg // HSM クライアントの起動
    
    logfiles_location is not specified, logs will be available in current directory // ログファイルのパスが指定されていないため、ログは現在のディレクトリに出力されます。
    
    Logs will be available in liquidSecurity.1.WKCrty.log file // ログは liquidSecurity.1.WKCrty.log ファイルに出力されます。
  3. HSM クライアントが接続されているかどうかを確認します。

    tail コマンドを使用して hsm_proxy のログファイルを取得し、hsm_proxy が接続されているかどうかを確認します。たとえば、tail liquidSecurity.1.WKCrty.log コマンドを実行します。結果に e2e_handle_client_request:HSM FIPS STATE 2 が表示されている場合、接続は成功です。

    tail liquidSecurity.1.WKCrty.log // ログの確認
    2023-10-28T13:33:05Z liquidSecurity INF: check_preferred_srv_status_noclock: New preferred server node id:0
    2023-10-28T13:33:05Z liquidSecurity INF: do_e2e_encryption_handshake: Trying to login to server as new server connection is established
    2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request:  Got Authorize session response
    2023-10-28T13:33:05Z liquidSecurity INF: get_partition_info: Get pHSM Info using e2e mgmtch
    2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: Authorize session SUCCESS
    2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: Got Partition Info
    2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: GetPartitionInfo success 0 : HSM Return: SUCCESS
    2023-10-28T13:33:05Z liquidSecurity INF: e2e_handle_client_request: HSM FIPS STATE 2
    2023-10-28T13:33:06Z liquidSecurity INF: libevmulti_init: Initializing events
    2023-10-28T13:33:06Z liquidSecurity INF: libevmulti_init: Ready !

ステップ 4:キーを作成する

説明

KMS のハードウェアキー管理インスタンスの暗号マシン クラスタを構成している場合は、このステップをスキップします。詳細については、「KMS のハードウェアキー管理インスタンスの暗号マシン クラスタを構成する」をご参照ください。

  1. key_mgmt_tool コマンドライン ユーティリティを起動します。

    /opt/hsm/bin/key_mgmt_tool // key_mgmt_tool の起動
  2. loginHSM コマンドを実行して、CU ユーザーとして HSM にログインします。

    Command:  loginHSM -u CU -s crypto_user -p <enter password> // CU ユーザーとしてログイン
    
            Cfm3LoginHSM returned: 0x00 : HSM Return: SUCCESS // ログイン成功
    
            Cluster Status: // クラスタステータス
            Node id 0 status: 0x00000000 : HSM Return: SUCCESS // ノード 0 のステータス:成功
  3. genSymKey コマンドを実行して、対称キーを生成します。

    Command:  genSymKey -l testkey -t 31 -s 32 // 対称キーの生成
    
            Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS // 対称キーの生成成功
    
            Symmetric Key Created.  Key Handle: 6 // 対称キーが作成されました。キーハンドル:6
    
            Cluster Status: // クラスタステータス
            Node id 0 status: 0x00000000 : HSM Return: SUCCESS // ノード 0 のステータス:成功
  4. findKey コマンドを実行して、作成したキーをクエリします。

    Command:  findKey // キーのクエリ
    
            Total number of keys present: 1 // 存在するキーの総数:1
    
            Number of matching keys from start index 0::0 // 開始インデックス 0::0 からの一致するキーの数
    
            Handles of matching keys: // 一致するキーのハンドル
            6 // キーハンドル:6
    
            Cluster Status: // クラスタステータス
            Node id 0 status: 0x00000000 : HSM Return: SUCCESS // ノード 0 のステータス:成功
    
            Cfm3FindKey returned: 0x00 : HSM Return: SUCCESS // キーの検索成功
                            
  5. exit コマンドを実行して、key_mgmt_tool コマンドライン ユーティリティを終了します。

    Command:  exit // ユーティリティの終了

ステップ 5: HSM クラスタを使用してデータを暗号化および復号化する

説明

KMS のハードウェアキー管理インスタンスの HSM クラスタを構成している場合は、このステップをスキップします。詳細については、「KMS のハードウェアキー管理インスタンスの HSM クラスタを構成する」をご参照ください。

HSM クラスタを使用するには、OpenSSL Dynamic Engine、JCE プロバイダー、または PKCS#11 ライブラリを使用できます。詳細については、「OpenSSL Dynamic Engine」、「JCE」、または「PKCS #11 ライブラリ」をご参照ください。

関連情報

HSM をクラスタに追加またはクラスタから削除する方法、クラスタの名前を変更する方法、およびアクセスホワイトリストを変更する方法の詳細については、「NIST FIPS 検証済み HSM クラスタを作成してアクティブ化する」をご参照ください。