

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CloudHSM CLI を使用して AWS CloudHSM crypto-users のクォーラム認証を設定する
<a name="key-quorum-auth-chsm-cli-first-time"></a>

これらのトピックでは、[Crypto User](understanding-users.md#crypto-user-chsm-cli) によるクォーラム認証を CloudHSM に設定する方法について説明します。これらの手順は初期セットアップ時に一度だけ実行します。その後のキー管理およびキー使用については、[CloudHSM CLI AWS CloudHSM を使用するためのクォーラム認証を有効にしたキー管理と使用状況](key-quorum-auth-chsm-cli-crypto-user.md) を参照してください。

**Topics**
+ [前提条件](#key-quorum-crypto-user-prerequisites)
+ [ステップ 1. 署名のためのキーの作成と登録](#key-quorum-crypto-user-create-and-register-key)
+ [ステップ 2. キー生成時にキークォーラム値を設定する](#key-quorum-admin-set-quorum-minimum-value-chsm-cli)

## 前提条件
<a name="key-quorum-crypto-user-prerequisites"></a>
+ [CloudHSM CLI](cloudhsm_cli.md) に精通していること

## ステップ 1. 署名のためのキーの作成と登録
<a name="key-quorum-crypto-user-create-and-register-key"></a>

クォーラム認証を使用する場合、各 Crypto User が以下のすべて**のステップを実行する必要があります。

**Topics**
+ [RSA キーペアの作成](#key-mofn-key-pair-create-chsm-cli)
+ [登録トークンの作成](#key-mofn-registration-token-chsm-cli)
+ [署名なし登録トークンへ署名する](#key-mofn-sign-registration-token-chsm-cli)
+ [HSM でパブリックキーを登録する](#key-mofn-register-key-chsm-cli)

### RSA キーペアの作成
<a name="key-mofn-key-pair-create-chsm-cli"></a>

様々なキーペアを作成、保護する方法があります。次の例では、[OpenSSL](https://www.openssl.org/) 使用方法を説明しています。

**Example — OpenSSL でプライベートキーを作成する**  
次の例は、OpenSSL を使用して 2,048 ビットの RSA キーを作成する方法を示しています。この例を使用するには、*<crypto\$1user1.key>* を、キーの保存先のファイル名に置き換えてください。  

```
$ openssl genrsa -out <crypto_user1.key>
Generating RSA private key, 2048 bit long modulus
.....................................+++
.+++
e is 65537 (0x10001)
```

次に、作成したプライベートキーを使用してパブリックキーを生成します。

**Example — OpenSSL でパブリックキーを作成する**  
以下の例は、OpenSSL を使用して先ほど作成したプライベートキーからパブリックキーを作成する方法を示しています。  

```
$ openssl rsa -in crypto_user1.key -outform PEM -pubout -out crypto_user1.pub
writing RSA key
```

### 登録トークンの作成
<a name="key-mofn-registration-token-chsm-cli"></a>

トークンを作成し、前のステップで生成したプライベートキーを使用して署名します。

**登録トークンの作成**

1. CloudHSM CLI を起動するには、次のコマンドを使用します。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. [quorum token-sign generate](cloudhsm_cli-qm-token-gen.md) コマンドを実行して登録トークンを作成します。

   ```
   aws-cloudhsm > quorum token-sign generate --service registration --token /path/tokenfile
   {
     "error_code": 0,
     "data": {
       "path": "/path/tokenfile"
     }
   }
   ```

1. [quorum token-sign generate](cloudhsm_cli-qm-token-gen.md) コマンドは、指定されたファイルパスに登録トークンを生成します。トークンファイルを調査します。

   ```
   $ cat /path/tokenfile
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": ""
       }
     ]
   }
   ```

   トークンファイルは、次のもので構成されます。
   + **approval\$1data**: base64 でエンコードされランダム化されたデータトークン。raw データが最大 245 バイトを超えないもの。
   + **unsigned**: base64 でエンコードされ、SHA256 ハッシュされた approval\$1data のトークン。
   + **signed**: OpenSSL で以前に生成された RSA 2,048 ビットのプライベートキーを使用した、署名されていないトークンの base64 でエンコードされた署名付きトークン (署名)。

   プライベートキーを使用して署名なしトークンに署名し、プライベートキーへのアクセス権があることを示します。Crypto-user をクォーラムユーザーとして AWS CloudHSM クラスターに登録するには、登録トークンファイルに署名とパブリックキーが完全に入力されている必要があります。

### 署名なし登録トークンへ署名する
<a name="key-mofn-sign-registration-token-chsm-cli"></a>

1. base64 でエンコードされた署名なしトークンをデコードし、バイナリファイルに入れます。

   ```
   $ echo -n '6BMUj6mUjjko6ZLCEdzGlWpR5sILhFJfqhW1ej3Oq1g=' | base64 -d > crypto_user.bin
   ```

1. OpenSSL とプライベートキーを使用して現在の署名なしバイナリ登録トークンに署名し、バイナリ署名ファイルを作成します。

   ```
   $ openssl pkeyutl -sign \
   -inkey crypto_user1.key \
   -pkeyopt digest:sha256 \
   -keyform PEM \
   -in crypto_user.bin \
   -out crypto_user.sig.bin
   ```

1. バイナリ署名を base64 にエンコードします。

   ```
   $ base64 -w0 crypto_user.sig.bin > crypto_user.sig.b64
   ```

1. base64 でエンコードされた署名をコピーしてトークンファイルに貼り付けます。

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "approval_data": <approval data in base64 encoding>,
         "unsigned": <unsigned token in base64 encoding>,
         "signed": <signed token in base64 encoding>
       }
     ]
   }
   ```

### HSM でパブリックキーを登録する
<a name="key-mofn-register-key-chsm-cli"></a>

キーを作成した後、crypto-user はパブリックキーを AWS CloudHSM クラスターに登録する必要があります。

1. CloudHSM CLI を起動します。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. パブリックキーを登録する Crypto User としてサインインします。

   ```
   aws-cloudhsm > login --username crypto_user1 --role crypto-user
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```

1. **[CloudHSM CLI を使用してユーザーのトークン署名クォーラム戦略を登録する](cloudhsm_cli-user-chqm-token-reg.md)** を使用してパブリックキーを登録します。詳細については、次の例を参照するか、または **help user change-quorum token-sign register** コマンドを使用してください。  
**Example – AWS CloudHSM クラスターにパブリックキーを登録する**  

   以下の例では、CloudHSM CLI で **user change-quorum token-sign register** コマンドを使用して、Crypto User のパブリックキーを HSM に登録する方法を示しています。このコマンドを使用するには、Crypto User が HSM にログインしている必要があります。以下の値を自分の値に置き換えてください。

   ```
   aws-cloudhsm > user change-quorum token-sign register --public-key </path/crypto_user.pub> --signed-token </path/tokenfile>
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```
**注記**  
**/path/crypto\$1user.pub**: パブリックキー PEM ファイルへのファイルパス  
**必須:** はい  
**/path/token\$1file**: ユーザーのプライベートキーによって署名されたトークンを含むファイルパス  
**必須:** はい

1. すべての Crypto User がパブリックキーを登録すると、**user list** コマンドの出力にあるクォーラムフィールドに、有効になっているクォーラム戦略が表示されます。

    この例では、 **user list** コマンドからの次の出力に示すように、 AWS CloudHSM クラスターには 2 つの HSMs があり、それぞれに同じ crypto-users があります。ユーザー作成の詳細については、[CloudHSM CLI によるユーザー管理](manage-hsm-users-chsm-cli.md) を参照してください。

   ```
   aws-cloudhsm > user list
   {
     "error_code": 0,
     "data": {
       "users": [
         {
           "username": "admin",
           "role": "admin",
           "locked": "false",
           "mfa": [],
           "quorum": [],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user1",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user2",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "crypto_user3",
           "role": "crypto-user",
           "locked": "false",
           "mfa": [],
           "quorum": [
             {
               "strategy": "token-sign",
               "status": "enabled"
             }
           ],
           "cluster-coverage": "full"
         },
         {
           "username": "app_user",
           "role": "internal(APPLIANCE_USER)",
           "locked": "false",
           "mfa": [],
           "quorum": [],
           "cluster-coverage": "full"
         }
       ]
     }
   }
   ```

## ステップ 2. キー生成時にキークォーラム値を設定する
<a name="key-quorum-admin-set-quorum-minimum-value-chsm-cli"></a>

クォーラム認証を使用するには、Crypto User が HSM にログインし、関連付けられたキークォーラム値を設定する必要があります。**これは、HSM ユーザー管理/使用オペレーションを実行するために必要な Crypto User 承認の最小数です。キー管理またはキーの使用に関連するキーコマンドの詳細については、[サポートされているサービスとタイプ](key-quorum-auth-chsm-cli-service-names.md) を参照してください。

**キークォーラム値が設定されたキーペアを生成する**

1. CloudHSM CLI を起動するには、次のコマンドを使用します。

------
#### [ Linux ]

   ```
   $ /opt/cloudhsm/bin/cloudhsm-cli interactive
   ```

------
#### [ Windows ]

   ```
   PS C:\> & "C:\Program Files\Amazon\CloudHSM\bin\cloudhsm-cli.exe" interactive
   ```

------

1. CloudHSM CLI を使用して、Crypto User としてログインします。

   ```
   aws-cloudhsm > login --username crypto_user1 --role crypto-user
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "crypto_user1",
       "role": "crypto-user"
     }
   }
   ```

この例では、キー管理オペレーションとキー使用オペレーションの両方に対してクォーラム値 2 が設定された RSA キーペアを生成します。クォーラム値として設定できるのは、0 ～ 8 の範囲で、HSM 上の Crypto User の総数まで選択できます。この例では、HSM には 3 名の Crypto User が存在するため、設定可能な最大値は 3 になります。この例ではキー生成時に *<crypto\$1user2>* とキーを共有している点に注意してください。さらに、パブリックキーにはクォーラム値は存在しないことにも注意が必要です。

```
aws-cloudhsm > key generate-asymmetric-pair rsa \
--public-exponent 65537 \
--modulus-size-bits 2048 \
--public-label rsa-public-key-example \
--private-label rsa-private-key-example \
--public-attributes verify=true \
--private-attributes sign=true
--share-crypto-users crypto_user2 \
--manage-private-key-quorum-value 2 \
--use-private-key-quorum-value 2
{
  "error_code": 0,
  "data": {
    "public_key": {
      "key-reference": "0x0000000000640006",
      "key-info": {
        "key-owners": [
          {
            "username": "crypto_user",
            "key-coverage": "full"
          }
        ],
        "shared-users": [],
        "key-quorum-values": {
          "manage-key-quorum-value": 0,
          "use-key-quorum-value": 0
        },
        "cluster-coverage": "full"
      },
      "attributes": {
        "key-type": "rsa",
        "label": "rsa-public-key-example",
        "id": "0x",
        "check-value": "0x218f50",
        "class": "public-key",
        "encrypt": false,
        "decrypt": false,
        "token": true,
        "always-sensitive": false,
        "derive": false,
        "destroyable": true,
        "extractable": true,
        "local": true,
        "modifiable": true,
        "never-extractable": false,
        "private": true,
        "sensitive": false,
        "sign": false,
        "trusted": false,
        "unwrap": false,
        "verify": true,
        "wrap": false,
        "wrap-with-trusted": false,
        "key-length-bytes": 512,
        "public-exponent": "0x010001",
        "modulus": "0xbdf471a3d2a869492f51c767bece8780730ae6479a9a75efffe7cea3594fb28ca518630e7b1d988b45d2fedc830b7ab848448c24c476cacb73d1523278aed289551e07af0fbfabe4811cc4601678bd097b5c0a578249ed1eb0e4878a80ba1ed85ac46eb1fee60d2a8bdd322075196dec4b57fa2cd82af44ad068115ac219bc073ec65c19c97bd883cf26931408d7bc51e237626b8b9b8f2485425907a0eb42f2f4c40018c8dac7ceeb1b646305a2e537ab904346883e41d568264abee0137048e4657d2cf72801810f3212f662b7a7ae134848b922771f6a30aa76718008d9cc74ff8ddcd8d867b05c3d40020d1514999af96889911467191b9f390d8de07f83",
        "modulus-size-bits": 2048
      }
    },
    "private_key": {
      "key-reference": "0x0000000000640007",
      "key-info": {
        "key-owners": [
          {
            "username": "crypto_user",
            "key-coverage": "full"
          }
        ],
        "shared-users": [
          {
            "username": "crypto_user2",
            "key-coverage": "full"
          }
        ],
        "key-quorum-values": {
          "manage-key-quorum-value": 2,
          "use-key-quorum-value": 2
        },
        "cluster-coverage": "full"
      },
      "attributes": {
        "key-type": "rsa",
        "label": "rsa-private-key-example",
        "id": "0x",
        "check-value": "0x218f50",
        "class": "private-key",
        "encrypt": false,
        "decrypt": false,
        "token": true,
        "always-sensitive": true,
        "derive": false,
        "destroyable": true,
        "extractable": true,
        "local": true,
        "modifiable": true,
        "never-extractable": false,
        "private": true,
        "sensitive": true,
        "sign": true,
        "trusted": false,
        "unwrap": false,
        "verify": false,
        "wrap": false,
        "wrap-with-trusted": false,
        "key-length-bytes": 1216,
        "public-exponent": "0x010001",
        "modulus": "0xbdf471a3d2a869492f51c767bece8780730ae6479a9a75efffe7cea3594fb28ca518630e7b1d988b45d2fedc830b7ab848448c24c476cacb73d1523278aed289551e07af0fbfabe4811cc4601678bd097b5c0a578249ed1eb0e4878a80ba1ed85ac46eb1fee60d2a8bdd322075196dec4b57fa2cd82af44ad068115ac219bc073ec65c19c97bd883cf26931408d7bc51e237626b8b9b8f2485425907a0eb42f2f4c40018c8dac7ceeb1b646305a2e537ab904346883e41d568264abee0137048e4657d2cf72801810f3212f662b7a7ae134848b922771f6a30aa76718008d9cc74ff8ddcd8d867b05c3d40020d1514999af96889911467191b9f390d8de07f83",
        "modulus-size-bits": 2048
      }
    }
  }
}
```

クォーラム制御を使用してキーを生成する場合、キーには、キーの最大クォーラム値と同じ数以上のユーザーを関連付ける必要があります。関連付けられるユーザーには、キー所有者と、そのキーが共有されている Crypto User が含まれます。キーを共有すべき最小ユーザー数を決定するには、キー使用クォーラム値とキー管理クォーラム値のうち大きい方のクォーラム値を取得し、デフォルトでキーに関連付けられているキー所有者を考慮して 1 を差し引きます。キーをさらに多くのユーザーと共有するには、**[CloudHSM CLI を使用してキーを共有する](cloudhsm_cli-key-share.md)** コマンドを使用します。

キー生成時に、必要な人数のユーザーとキーを共有しないと、以下に示すように失敗します。

```
aws-cloudhsm > key generate-asymmetric-pair rsa \
--public-exponent 65537 \
--modulus-size-bits 2048 \
--public-label rsa-public-key-example \
--private-label rsa-private-key-example \
--public-attributes verify=true \
--private-attributes sign=true
--share-crypto-users crypto_user2 crypto_user3 \
--manage-private-key-quorum-value 3 \
--use-private-key-quorum-value 4
{
  "error_code": 1,
  "data": "Invalid quorum value provided."
}
```