

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

# 管理ユーティリティでクォーラム認証を有効にしたユーザー AWS CloudHSM 管理
<a name="quorum-authentication-crypto-officers"></a>

ハードウェアセキュリティモジュール AWS CloudHSM [(HSM) の Ancrypto Officer (CO](understanding-users-cmu.md#crypto-officer)) は、HSM で次のオペレーションのクォーラム認証を設定できます。
+ HSM ユーザーの作成
+ HSM ユーザーの削除
+ 別の HSM ユーザーのパスワードの変更

HSM をクォーラム認証用に設定した後では、CO が単独で HSM ユーザー管理オペレーションを実行することはできません。次の例は、CO が HSM で新しいユーザーを作成しようとしたときの出力を示しています。コマンドは `RET_MXN_AUTH_FAILED` エラーとなり、クォーラム認証が失敗したことを示しています。

```
aws-cloudhsm > createUser CU user1 password
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically 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
Creating User user1(CU) on 2 nodes
createUser failed: RET_MXN_AUTH_FAILED
creating user on server 0(10.0.2.14) failed

Retry/Ignore/Abort?(R/I/A): A
```

HSM ユーザー管理オペレーションを実行するには、CO は以下のタスクを完了する必要があります。

1. [*クォーラムトークン* の取得](#quorum-crypto-officers-get-token)

1. [他の CO からの承認 (署名) の取得](#quorum-crypto-officers-get-approval-signatures)

1. [HSM でのトークンの承認](#quorum-crypto-officers-approve-token)

1. [HSM ユーザー管理オペレーションの実行](#quorum-crypto-officers-use-token)

HSM をクォーラム認証用にまだ設定していない場合は、今すぐに設定してください。詳細については、「[初回の設定](quorum-authentication-crypto-officers-first-time-setup.md)」を参照してください。

## ステップ 1. クォーラムトークンの取得
<a name="quorum-crypto-officers-get-token"></a>

まず、CO は cloudhsm\$1mgmt\$1util コマンドラインツールを使用して *クォーラムトークン* をリクエストする必要があります。

**クォーラムトークンを取得するには**

1. 次のコマンドを使用して、cloudhsm\$1mgmt\$1util コマンドラインツールをスタートします。

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** コマンドを使用して、CO ユーザーとして HSM にログインします。詳細については、「[CloudHSM 管理ユーティリティ (CMU) による HSM ユーザー管理](manage-hsm-users-cmu.md)」を参照してください。

1. **getToken** コマンドを使用してクォーラムトークンを取得します。詳細については、次の例を参照するか、または **help getToken** コマンドを使用してください。

**Example クォーラムトークンを取得する**  
この例では、ユーザー名を officer1 とする CO のクォーラムトークンを取得し、そのトークンを `officer1.token` というファイルに保存します。この例のコマンドを使用するには、以下の値を独自のものに置き換えてください。  
+ *officer1* トークンを取得する CO の名前。HSM にログインし、このコマンドを実行している CO と同じであることが必要です。
+ *officer1.token* クォーラムトークンを保存するファイルの名前。
次のコマンドで、`3` は取得するトークンを使用できる *サービス* を識別します。この例のトークンは、HSM ユーザー管理オペレーション (サービス 3) で使用できます。詳細については、「[ステップ 2. HSM のクォーラム最小値を設定する](quorum-authentication-crypto-officers-first-time-setup.md#quorum-crypto-officers-set-quorum-minimum-value)」を参照してください。  

```
aws-cloudhsm > getToken 3 officer1 officer1.token
getToken success on server 0(10.0.2.14)
Token:
Id:1
Service:3
Node:1
Key Handle:0
User:officer1
getToken success on server 1(10.0.1.4)
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1
```

## ステップ 2. 承認 CO からの署名の取得
<a name="quorum-crypto-officers-get-approval-signatures"></a>

クォーラムトークンを持つ CO は、そのトークンを他の CO に承認してもらう必要があります。他の CO は、承認を与えるために、署名キーを使用してトークンを暗号で署名します。この署名は HSM 外で行われます。

トークンの署名にはさまざまな方法が使用されます。次の例では、[OpenSSL](https://www.openssl.org/) を使用しています。別の署名ツールを使用する場合は、そのツールで必ず CO のプライベートキー (署名キー) を使用してトークンの SHA-256 ダイジェストに署名します。

**Example 承認 CO からの署名を取得する**  
この例では、トークン (officer1) を持つ CO に少なくとも 2 つの承認が必要です。以下のコマンド例では、2 つの CO が OpenSSL を使用してトークンに暗号で署名する方法を示します。  
最初のコマンドでは、officer1 が自分のトークンに署名します。以下のコマンド例を使用するには、以下の値を独自のものに置き換えてください。  
+ *officer1.key* および *officer2.key* CO の署名キーが含まれているファイルの名前。
+ *officer1.token.sig1* および *officer1.token.sig2* 署名を保存するファイルの名前。署名ごとに別のファイルに保存します。
+ *officer1.token* CO が署名するトークンが格納されるファイルの名前。

```
$ openssl dgst -sha256 -sign officer1.key -out officer1.token.sig1 officer1.token
Enter pass phrase for officer1.key:
```
次のコマンドでは、officer2 が同じトークンに署名します。  

```
$ openssl dgst -sha256 -sign officer2.key -out officer1.token.sig2 officer1.token
Enter pass phrase for officer2.key:
```

## ステップ 3. HSM での署名済みトークンの承認
<a name="quorum-crypto-officers-approve-token"></a>

CO は、他の CO から最小限の数の承認 (署名) を取得したら、署名済みトークンを HSM で承認する必要があります。

**HSM で署名済みトークンの承認**

1. トークン承認ファイルを作成します。詳細については、次の例を参照してください。

1. 次のコマンドを使用して、cloudhsm\$1mgmt\$1util コマンドラインツールをスタートします。

   ```
   $ /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
   ```

1. **loginHSM** コマンドを使用して、CO ユーザーとして HSM にログインします。詳細については、「[CloudHSM 管理ユーティリティ (CMU) による HSM ユーザー管理](manage-hsm-users-cmu.md)」を参照してください。

1. **approveToken** コマンドを使用して署名済みトークンを承認し、トークン承認ファイルを渡します。詳細については、次の例を参照してください。

**Example トークン承認ファイルを作成し、署名済みトークンを HSM で承認する**  
トークン承認ファイルは、HSM で必要とされる特別な形式のテキストファイルです。このファイルには、トークン、その承認者、および承認者の署名が含まれます。トークン承認ファイルの例は次のとおりです。  

```
# For "Multi Token File Path", type the path to the file that contains
# the token. You can type the same value for "Token File Path", but
# that's not required. The "Token File Path" line is required in any
# case, regardless of whether you type a value.
Multi Token File Path = officer1.token;
Token File Path = ;

# Total number of approvals
Number of Approvals = 2;

# Approver 1
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer1;
Approval File = officer1.token.sig1;

# Approver 2
# Type the approver's type, name, and the path to the file that
# contains the approver's signature.
Approver Type = 2; # 2 for CO, 1 for CU
Approver Name = officer2;
Approval File = officer1.token.sig2;
```
トークン承認ファイルの作成後、CO は cloudhsm\$1mgmt\$1util コマンドラインツールを使用して HSM にログインします。次に CO は **approveToken** コマンドを使用し、以下の例に示すように、トークンを承認します。*approval.txt* は、トークン承認ファイルの名前に置き換えてください。  

```
aws-cloudhsm > approveToken approval.txt
approveToken success on server 0(10.0.2.14)
approveToken success on server 1(10.0.1.4)
```
このコマンドが成功すると、HSM でのクォーラムトークンの承認が完了します。トークンのステータスを確認するには、次の例に示すように、**listTokens** コマンドを使用します。コマンドの出力は、トークンに必要な数の承認があることを示しています。  
トークンの有効期間は、トークンが HSM に保持される保証期間を示します。トークンの有効期間が過ぎた (ゼロ秒) 後でも、トークンを使用できます。  

```
aws-cloudhsm > listTokens
=====================
    Server 0(10.0.2.14)
=====================
-------- Token - 0 ----------
Token:
Id:1
Service:3
Node:1
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

=====================
    Server 1(10.0.1.4)
=====================
-------- Token - 0 ----------
Token:
Id:1
Service:3
Node:0
Key Handle:0
User:officer1
Token Validity: 506 sec
Required num of approvers : 2
Current num of approvals : 2
Approver-0: officer1
Approver-1: officer2
Num of tokens = 1

listTokens success
```

## ステップ 4. ユーザー管理オペレーションでのトークンの使用
<a name="quorum-crypto-officers-use-token"></a>

前のセクションで示したように、トークンに必要な数の承認を取得すると、CO は以下のいずれかの HSM ユーザー管理オペレーションを実行できます。
+ [createUser](cloudhsm_mgmt_util-createUser.md) コマンドを使用して HSM ユーザーを作成する
+ **deleteUser** コマンドを使用して HSM ユーザーを削除する
+ **changePswd** コマンドを使用して別の HSM ユーザーのパスワードを変更する

これらのコマンドの詳しい使用方法については、[HSM ユーザー](manage-hsm-users.md) を参照してください。

CO は、トークンを 1 つのオペレーションにのみ使用できます。そのオペレーションが成功すると、トークンは無効になります。別の HSM ユーザー管理オペレーションを行うには、新しいクォーラムトークンを取得し、承認者から新しい署名を取得して、その新しいトークンを HSM で承認する必要があります。

**注記**  
MofN トークンは、現在のログインセッションが開いている間だけ有効です。cloudhsm\$1mgmt\$1util からログアウトするか、ネットワーク接続が切断された場合、トークンは無効になります。同様に、承認されたトークンは cloudhsm\$1mgmt\$1util 内でのみ使用でき、他のアプリケーションでの認証には使用できません。

次のコマンド例で、CO は HSM で新しいユーザーを作成しています。

```
aws-cloudhsm > createUser CU user1 <password>
*************************CAUTION********************************
This is a CRITICAL operation, should be done on all nodes in the
cluster. AWS does NOT synchronize these changes automatically 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
Creating User user1(CU) on 2 nodes
```

前のコマンドが成功すると、後続の **listUsers** コマンドに新しいユーザーが表示されます。

```
aws-cloudhsm > listUsers
Users on server 0(10.0.2.14):
Number of users found:8

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PCO             admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
         8              CU              user1                                    NO               0               NO
Users on server 1(10.0.1.4):
Number of users found:8

    User Id             User Type       User Name                          MofnPubKey    LoginFailureCnt         2FA
         1              PCO             admin                                    NO               0               NO
         2              AU              app_user                                 NO               0               NO
         3              CO              officer1                                YES               0               NO
         4              CO              officer2                                YES               0               NO
         5              CO              officer3                                YES               0               NO
         6              CO              officer4                                YES               0               NO
         7              CO              officer5                                YES               0               NO
         8              CU              user1                                    NO               0               NO
```

CO が別の HSM ユーザー管理オペレーションを実行しようとすると、次の例に示すように、クォーラム認証エラーが発生して失敗します。

```
aws-cloudhsm > deleteUser CU user1
Deleting user user1(CU) on 2 nodes
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 0(10.0.2.14)

Retry/rollBack/Ignore?(R/B/I): I
deleteUser failed: RET_MXN_AUTH_FAILED
deleteUser failed on server 1(10.0.1.4)

Retry/rollBack/Ignore?(R/B/I): I
```

**listTokens** コマンドは、つぎの例のように、CO に承認済みトークンがないことを示しています。別の HSM ユーザー管理オペレーションを実行するには、新しいクォーラムトークンを取得し、承認者から新しい署名を取得して、その新しいトークンを HSM で承認する必要があります。

```
aws-cloudhsm > listTokens
=====================
    Server 0(10.0.2.14)
=====================
Num of tokens = 0

=====================
    Server 1(10.0.1.4)
=====================
Num of tokens = 0

listTokens success
```