

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 CloudHSM CLI 進行 HSM 使用者管理
使用 CloudHSM CLI 進行使用者管理

 若要在 中管理硬體安全模組 (HSM) 使用者 AWS CloudHSM，您必須使用 [管理員](understanding-users.md#admin)的使用者名稱和密碼登入 HSM。只有管理員可以管理使用者。HSM 包含名為 admin 的預設管理員。您可以在[啟用叢集](activate-cluster.md)時設定 admin 管理員的密碼。

本主題提供使用 CloudHSM CLI 管理 HSM 使用者的step-by-step說明和詳細資訊。

**Topics**
+ [先決條件](manage-hsm-users-chsm-cli-prereq.md)
+ [使用者類型](understanding-users.md)
+ [許可表](user-permissions-table-chsm-cli.md)
+ [建立管理員](create-admin-cloudhsm-cli.md)
+ [建立 CU](create-user-cloudhsm-cli.md)
+ [列出所有使用者](list-users-cloudhsm-cli.md)
+ [變更密碼](change-user-password-cloudhsm-cli.md)
+ [刪除使用者](delete-user-cloudhsm-cli.md)
+ [管理使用者 MFA](login-mfa-token-sign.md)
+ [管理規定人數身分驗證 (M 為 N)](quorum-auth-chsm-cli.md)

# CloudHSM CLI 中使用者管理的先決條件
先決條件

在使用 CloudHSM CLI 管理硬體安全模組 (HSM) 使用者之前 AWS CloudHSM，您必須先完成這些先決條件。下列主題說明 CloudHSM CLI 入門。

**Topics**
+ [取得 HSM IP 地址](#manage-chsm-cli-users-ip)
+ [

## 下載 CloudHSM CLI
](#get-cli-users-cloudhsm-cli)

## 在 中取得 HSM 的 IP 地址 AWS CloudHSM
取得 HSM IP 地址

 如要使用 CloudHSM CLI，您必須使用設定工具來更新本機組態。如需使用 CloudHSM CLI 執行設定工具的說明，請參閱 [開始使用 AWS CloudHSM 命令列界面 (CLI)](cloudhsm_cli-getting-started.md)。`-a` 參數需要在叢集中新增 HSM 的 IP 地址。如果您有多個 HSM，則可以使用任何 IP 地址。這可確保 CloudHSM CLI 可在整個叢集中傳播您所做的任何變更。請記住，CloudHSM CLI 會使用其本機檔案來追蹤叢集資訊。如果自上次從特定主機使用 CloudHSM CLI 後叢集已發生變更，則必須將這些變更新增至儲存在該主機上的本機組態檔案中。使用 CloudHSM CLI 時，請勿移除 HSM。

**取得 HSM 的 IP 地址 （主控台）**

1. 在 https：//[https://console.aws.amazon.com/cloudhsm/home](https://console.aws.amazon.com/cloudhsm/home) 開啟 AWS CloudHSM 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 若要開啟叢集詳細資訊頁面，請在叢集表格中選擇叢集 ID。

1. 若要取得 IP 地址，請前往 HSMs索引標籤。對於 IPv4 叢集，請選擇 **ENI IPv4 地址下列出的地址**。對於雙堆疊叢集，請使用 ENI IPv4 或 **ENI IPv6 地址**。

**取得 HSM 的 IP 地址 (AWS CLI)**
+ 使用 AWS CLI中的 **[describe-clusters](https://docs.aws.amazon.com/cli/latest/reference/cloudhsmv2/describe-clusters.html)** 命令取得 HSM 的 IP 地址。在 命令的輸出中，HSMs 的 IP 地址是 `EniIp`和 的值 `EniIpV6`（如果是雙堆疊叢集）。

  ```
  $ aws cloudhsmv2 describe-clusters
  {
      "Clusters": [
          { ... }
              "Hsms": [
                  {
  ...
                      "EniIp": "10.0.0.9",
  ...
                  },
                  {
  ...
                      "EniIp": "10.0.1.6",
                      "EniIpV6": "2600:113f:404:be09:310e:ed34:3412:f733",
  ...
  ```

## 下載 CloudHSM CLI


最新版本的 CloudHSM CLI 適用於用戶端 SDK 5 的 HSM 使用者管理任務。若要下載並安裝 CloudHSM CLI，請按照[安裝和設定 CloudHSM CLI](gs_cloudhsm_cli-install.md) 中的說明進行操作。

# CloudHSM CLI 的 HSM 使用者類型
使用者類型

 您在硬體安全模組 (HSM) 上執行的大多數操作都需要 AWS CloudHSM *anHSM 使用者的*登入資料。HSM 會驗證每個 HSM 使用者，且每個 HSM 使用者都有一種*類型*，決定您可以該使用者身分在 HSM 上執行哪些操作。

**注意**  
HSM 使用者與 IAM 使用者不同。擁有正確憑證的 IAM 使用者可利用 AWS API 與資源進行互動來建立 HSM。HSM 建立後，您必須使用 HSM 使用者憑證來驗證 HSM 上的操作。

**Topics**
+ [

## 未激活的管理員
](#unactivated-admin)
+ [

## 管理員
](#admin)
+ [

## 加密使用者 (CU)
](#crypto-user-chsm-cli)
+ [

## 設備使用者 (AU)
](#appliance-user-chsm-cli)

## 未激活的管理員


在 CloudHSM CLI 中，未激活的管理員是暫時使用者，僅存在於尚未激活的 AWS CloudHSM 叢集中的第一個 HSM 上。如要[啟動叢集](activate-cluster.md)，請執行 CloudHSM CLI 中的 **cluster activate** 命令。運行此命令後，系統將提示未激活的管理員更改密碼。更改密碼後，未激活的管理員將成為管理員。

## 管理員


在 CloudHSM CLI 中，管理員可以執行使用者管理操作。例如，管理員可以建立和刪除使用者，也可以變更使用者密碼。如需管理員的詳細資訊，請參閱 [CloudHSM CLI 的 HSM 使用者許可表](user-permissions-table-chsm-cli.md)。

## 加密使用者 (CU)


加密使用者 (CU) 可以執行以下的金鑰管理和密碼編譯操作。
+ **金錀管理**：建立、刪除、共用、匯入和匯出密碼編譯金鑰。
+ **密碼編譯操作**：使用密碼編譯金鑰進行加密、解密、簽署、驗證及其他操作。

如需更多資訊，請參閱[CloudHSM CLI 的 HSM 使用者許可表](user-permissions-table-chsm-cli.md)。

## 設備使用者 (AU)


設備使用者 (AU) 可以在叢集的 HSMs 上執行複製和同步操作。 AWS CloudHSM 會使用 AU 來同步 AWS CloudHSM 叢集中的 HSMs。AU 存在於 提供的所有 HSMs上 AWS CloudHSM，並且具有有限的許可。如需更多資訊，請參閱[CloudHSM CLI 的 HSM 使用者許可表](user-permissions-table-chsm-cli.md)。

AWS 無法在 HSMs 上執行任何操作。 AWS 無法檢視或修改您的使用者或金鑰，也無法使用這些金鑰執行任何密碼編譯操作。

# CloudHSM CLI 的 HSM 使用者許可表
許可表

下表列出硬體安全模組 (HSM) 操作，依可在其中執行操作的 HSM 使用者或工作階段類型排序 AWS CloudHSM。


|  | 管理員 | 加密使用者 (CU) | 設備使用者 (AU) | 已驗證的工作階段 | 
| --- | --- | --- | --- | --- | 
| 取得基本叢集資訊¹ | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | 
| 變更自己的密碼 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | 不適用 | 
| 變更任何使用者的密碼 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 新增、移除使用者 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 取得同步狀態² | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 擷取、插入遮罩物件³ | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 金鑰管理功能⁴ | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 加密、解密 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 簽署、驗證 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
| 產生摘要和 HMAC | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-yes.png) 是 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | ![\[No\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/images/icon-no.png) 否 | 
+  [1] 基本叢集資訊包括叢集的 HSM 數目，以及每個 HSM 的 IP 地址、型號、序號、裝置 ID、韌體 ID 等。
+  [2] 使用者可以取得一組摘要 (雜湊)，這組摘要會對應到 HSM 上的金鑰。應用程式可以比較這幾組摘要，以了解叢集中的 HSM 的同步狀態。
+  [3] 遮罩物件就是在離開 HSM 之前加密的金鑰。這些金錀無法在 HSM 外部解密。將金鑰插入 HSM，而且此 HSM 與先前從中擷取金鑰的 HSM 必須在同一個叢集，金鑰才會解密。應用程式可以擷取和插入遮罩物件，以同步叢集的 HSM。
+  [4] 金鑰管理功能包括建立、刪除、包裝、取消包裝及修改金鑰的屬性。

# 使用 CloudHSM CLI 建立 HSM 使用者管理員
建立管理員

請依照下列步驟，使用 CloudHSM CLI 建立硬體安全模組 (HSM) 管理員使用者。

1. 使用下列命令啟動 CloudHSM CLI 互動式模式。

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

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

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

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

------

1. 使用 **login** 命令並以管理員身分登入叢集。

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 系統會提示您輸入密碼。輸入密碼，然後輸出會顯示命令已成功執行。

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

1. 輸入下列命令建立管理員。

   ```
   aws-cloudhsm > user create --username <username> --role admin
   ```

1. 輸入新使用者的密碼。

1. 重新輸入密碼以確認您輸入的密碼正確無誤。

# 使用 CloudHSM CLI 建立 HSM 加密使用者
建立 CU

請依照下列步驟，使用 CloudHSM CLI 建立硬體安全模組 (HSM) 加密使用者 (CU)。

1. 使用下列命令啟動 CloudHSM CLI 互動式模式。

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

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

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

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

------

1. 使用 **login** 命令並以管理員身分登入叢集。

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 系統會提示您輸入密碼。輸入密碼，然後輸出會顯示命令已成功執行。

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<USERNAME>",
       "role": "admin"
     }
   }
   ```

1. 輸入以下命令來建立加密使用者：

   ```
   aws-cloudhsm > user create --username <username> --role crypto-user
   ```

1. 輸入新加密使用者的密碼。

1. 重新輸入密碼以確認您輸入的密碼正確無誤。

# 使用 CloudHSM CLI 列出叢集中的所有 HSM 使用者
列出所有使用者

 在 CloudHSM CLI 中使用 **user list**命令來列出 AWS CloudHSM 叢集中的所有使用者。您無需登入即可執行 **user list**。所有使用者類型均可列出使用者。

**請依照下列步驟列出叢集中的所有使用者**

1. 使用下列命令啟動 CloudHSM CLI 互動式模式。

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

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

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

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

------

1. 輸入下列命令列出叢集中的所有使用者：

   ```
   aws-cloudhsm > user list
   ```

如需 **user list** 的詳細資訊，請參閱[使用者清單](cloudhsm_cli-user-list.md)。

# 使用 CloudHSM CLI 變更 HSM 使用者密碼
變更密碼

 使用 CloudHSM CLI 中的 **user change-password**命令來變更硬體安全模組 (HSM) 使用者的密碼。

 使用者類型和密碼需區分大小寫，但使用者名稱不區分大小寫。

 管理員、加密使用者 (CU) 和設備使用者 (AU) 只能變更自己的密碼。如要變更其他使用者的密碼，您必須以管理員身分登入。您無法變更目前已登入使用者的密碼。

**如要變更您自己的密碼**

1. 使用下列命令啟動 CloudHSM CLI 互動式模式。

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

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

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

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

------

1. 使用 **login** 命令並以要變更密碼的使用者身份登入。

   ```
   aws-cloudhsm > login --username <username> --role <role>
   ```

1. 輸入使用者的密碼。

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "<role>"
     }
   }
   ```

1. 輸入 **user change-password** 命令。

   ```
   aws-cloudhsm > user change-password --username <username> --role <role>
   ```

1. 輸入新密碼。

1. 再次輸入新密碼。

**如要變更其他使用者的密碼**

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，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 輸入 **user change-password** 命令以及要變更密碼的使用者的使用者名稱。

   ```
   aws-cloudhsm > user change-password --username <username> --role <role>
   ```

1. 輸入新密碼。

1. 再次輸入新密碼。

如需 **user change-password** 的詳細資訊，請參閱 [user change-password](cloudhsm_cli-user-change-password.md)。

# 使用 CloudHSM CLI 刪除 HSM 使用者
刪除使用者

在 CloudHSM CLI **user delete**中使用 刪除硬體安全模組 (HSM) 使用者。您必須以管理員身分登入才能刪除其他使用者。

**提示**  
 您無法刪除擁有金鑰的加密使用者 (CU)。

**如要刪除使用者**

1. 使用下列命令啟動 CloudHSM CLI 互動式模式。

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

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

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

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

------

1. 使用 **login** 命令並以管理員身分登入叢集。

   ```
   aws-cloudhsm > login --username <username> --role admin
   ```

1. 系統會提示您輸入密碼。輸入密碼，然後輸出會顯示命令已成功執行。

   ```
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

1. 使用 **user delete** 命令來刪除使用者。

   ```
   aws-cloudhsm > user delete --username <username> --role <role>
   ```

如需 **user delete** 的詳細資訊，請參閱 [deleteUser](cloudhsm_cli-user-delete.md)。

# 使用 CloudHSM CLI 管理 HSM 使用者的 MFA
管理使用者 MFA

為了提高安全性，您可以為使用者設定多重驗證 (MFA)，以協助保護 AWS CloudHSM 叢集。

當您使用啟用 MFA 的硬體安全模組 (HSM) 使用者帳戶登入叢集時，您會向 CloudHSM CLI 提供密碼，這是您所知的第一個因素，而 CloudHSM CLI 會為您提供權杖，並提示您簽署權杖。

如要提供第二個要素 (您擁有的)，請使用您已經建立並與 HSM 使用者相關聯的金錀對中的私有金鑰來簽署權杖。如要訪問叢集，請將已簽署的權杖提供給 CloudHSM CLI。

如需為使用者設定 MFA 的詳細資訊，請參閱 [為 CloudHSM CLI 設定 MFA](set-up-mfa-for-cloudhsm-cli.md)

下列主題提供在 中使用規定人數身分驗證的詳細資訊 AWS CloudHSM。

**Topics**
+ [配額身分驗證](quorum-mfa-cloudhsm-cli.md)
+ [金鑰對要求](mfa-key-pair-cloudhsm-cli.md)
+ [設定 MFA](set-up-mfa-for-cloudhsm-cli.md)
+ [建立使用者](create-mfa-users-cloudhsm-cli.md)
+ [登入使用者](login-mfa-cloudhsm-cli.md)
+ [輪換金鑰](rotate-mfa-cloudhsm-cli.md)
+ [取消註冊 MFA 公有金鑰](deregister-mfa-cloudhsm-cli.md)
+ [權杖檔案參考](reference-mfa-cloudhsm-cli.md)

# 使用 CloudHSM CLI 的 AWS CloudHSM 叢集中的配額身分驗證和 MFA
配額身分驗證

 AWS CloudHSM 叢集使用相同的金鑰進行規定人數身分驗證和多重要素驗證 (MFA)。這表示已啟用 MFA 的使用者已有效註冊 MofN 或規定人數存取控制。如要為同一 HSM 使用者成功使用 MFA 和規定人數驗證，請考慮下列幾點：
+ 如果您今天要為使用者使用規定人數驗證，則應使用您為規定人數使用者建立的同一個金錀對來為該使用者啟用 MFA。
+ 如果您為非規定人數身分驗證使用者的非 MFA 使用者新增 MFA 要求，則會將該使用者註冊為使用 MFA 身分驗證的規定人數 (MofN) 註冊使用者。
+ 如果您要為兼具規定人數驗證使用者身分的 MFA 使用者移除 MFA 要求或變更其密碼，您也會同時移除規定人數使用者作為規定人數 (MofN) 使用者的註冊。
+ 如果您要為兼具規定人數驗證使用者身分的 MFA 使用者移除 MFA 要求或變更其密碼，但*仍想保留該使用者的規定人數驗證*，則您須將該使用者註冊為規定人數 (MofN) 使用者。

如需規定人數驗證的詳細資訊，請參閱 [管理規定人數身分驗證 (M 為 N)](quorum-auth-chsm-cli.md)。

# AWS CloudHSM 使用 CloudHSM CLI 的 MFA 金鑰對需求
金鑰對要求

若要在 中為硬體安全模組 (HSM) 使用者啟用多重要素驗證 (MFA) AWS CloudHSM，您可以建立新的金鑰對，或使用符合下列要求的現有金鑰：
+ **金鑰類型：**非對稱金錀
+ **金鑰用途：**簽署和驗證
+ **金鑰規格：**RSA\$12048
+ **簽名算法包括：**sha256WithRSAEncryption

**注意**  
如果您正在使用規定人數驗證或計劃使用法定驗證，請參閱 [使用 CloudHSM CLI 的 AWS CloudHSM 叢集中的配額身分驗證和 MFA](quorum-mfa-cloudhsm-cli.md)

您可以使用 CloudHSM CLI 和金錀對來建立已啟用 MFA 的新管理員使用者。

# 為 CloudHSM CLI 設定 MFA
設定 MFA

請依照下列步驟設定 CloudHSM CLI 的多重要素驗證 (MFA)。

1. 如要使用字符簽署策略設定 MFA，您必須先產生 2048 位元的 RSA 私有錦綸和關聯的公有金錀。

   ```
   $ openssl genrsa -out officer1.key 2048
   Generating RSA private key, 2048 bit long modulus (2 primes)
   ...........................................................+++++
   ....................................................................+++++
   e is 65537 (0x010001)
   
   $ openssl rsa -in officer1.key -outform PEM -pubout -out officer1.pub
   writing RSA key
   ```

1. 在互動式模式中輸入下列命令啟動 CLI。

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

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

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

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

------

1. 使用 CloudHSM CLI 登入您的使用者帳戶。

   ```
   aws-cloudhsm > login --username <admin> --role <admin> --cluster-id <cluster ID>
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "<admin>"
     }
   }
   ```

1. 接下來，執行命令以變更 MFA 策略。您必須提供參數 `--token`。此參數指定將寫入未簽署權杖的檔案。

   ```
   aws-cloudhsm > user change-mfa token-sign --token unsigned-tokens.json --username <username> --role crypto-user --change-quorum
   Enter password:
   Confirm password:
   ```

1. 您現在有一個包含需要簽署但還未簽署權杖的檔案：`unsigned-tokens.json`。此檔案中的權杖數量取決於叢集中的 HSM 數目。每個權杖代表一個 HSM。這個檔案是 JSON 格式，包含需要簽署以證明您擁有私有金錀的權杖。

   ```
   $ cat unsigned-tokens.json
   {
     "version": "2.0",
     "tokens": [
   {
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 接下來，使用步驟 1 中建立的私有金錀來簽署這些權杖。將簽署的權杖放回檔案中。首先，您必須擷取和解碼 base64 編碼的權杖。

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 現在，您擁有了可以使用步驟 1 中建立的 RSA 私有金錀進行簽署的二進位權杖。

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 現在，您有字符的二進位簽章。您必須使用 base64 進行編碼，然後將它們放回權杖檔案中。

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64 
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 最後，您可以將 base64 值複製並粘貼回權杖檔案中：

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 現在，您的權杖文件已全部簽署，您可以繼續操作。輸入包含已簽署權杖的檔案名稱，然後按 Enter 鍵。最後，輸入您公有金錀的路徑。

   ```
   Enter signed token file path (press enter if same as the unsigned token file):
   Enter public key PEM file path:officer1.pub
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "crypto-user"
     }
   }
   ```

   現在，您已經使用 MFA 設定了您的使用者。

   ```
   {
       "username": "<username>",
       "role": "crypto-user",
       "locked": "false",
       "mfa": [
         {
           "strategy": "token-sign",
           "status": "enabled"
         }
       ],
       "cluster-coverage": "full"
   },
   ```

# 為 CloudHSM CLI 建立已啟用 MFA 的使用者
建立使用者

請依照下列步驟建立已啟用多重要素驗證 (MFA) AWS CloudHSM 的使用者。

1. 使用 CloudHSM CLI 以管理員身分登入 HSM。

1. 使用 [**user create**](cloudhsm_cli-user-create.md) 命令建立您選擇的使用者。然後依照 [為 CloudHSM CLI 設定 MFA](set-up-mfa-for-cloudhsm-cli.md) 的步驟為使用者設定 MFA。

# 為 CloudHSM CLI 啟用 MFA 的登入使用者
登入使用者

請依照下列步驟，在啟用多重要素驗證 (MFA) 的情況下登入 AWS CloudHSM 使用者。

1. 使用 CloudHSM CLI 中的 [**login mfa-token-sign**](cloudhsm_cli-login-mfa-token-sign.md) 命令，針對已啟用 MFA 的使用者啟動登入程序。

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   ```

1. 輸入您的密碼。然後，系統將提示您輸入包含未簽署/已簽署權杖對的權杖檔案路徑，其中已簽署權杖是使用您私有金錀產生的權杖。

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   Enter signed token file path (press enter if same as the unsigned token file):
   ```

1. 當提示輸入已簽署權杖文件路徑時，您可以在單獨的終端中檢查未簽署的權杖檔案。識別具有需要簽署但尚未權杖的檔案：`<unsigned-tokens.json>`。此檔案中的權杖數量取決於叢集中的 HSM 數目。每個權杖代表一個 HSM。這個檔案是 JSON 格式，包含需要簽署以證明您擁有私有金錀的權杖。

   ```
   $ cat <unsigned-tokens.json>
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 使用在步驟 2 中建立的私有金鑰簽署尚未簽署的權杖。首先，您必須擷取和解碼 base64 編碼的權杖。

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin 
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 您現在有二進制權杖。使用您先前在 [MFA 設定步驟 1](set-up-mfa-for-cloudhsm-cli.md) 中建立的 RSA 私有金鑰來簽署這些權杖。

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 現在，您有了已簽署的二進位權杖。使用 base64 對這些權杖進行編碼，然後將它們放回權杖檔案中。

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 最後，將 base64 值複製並粘貼回權杖檔案中：

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 現在，您的權杖文件已全部簽署，您可以繼續操作。輸入包含已簽署權杖的檔案名稱，然後按 Enter 鍵。您現在應該成功登錄。

   ```
   aws-cloudhsm > login --username <username> --role <role> mfa-token-sign --token <unsigned-tokens.json>
   Enter password:
   Enter signed token file path (press enter if same as the unsigned token file):
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "<role>"
     }
   }
   ```

# 針對 CloudHSM CLI 啟用 MFA 的使用者輪換金鑰
輪換金鑰

請依照下列步驟，為啟用多重要素驗證 (MFA) AWS CloudHSM 的使用者輪換金鑰。

1. 使用 CloudHSM CLI 以任何管理員或已啟用 MFA 的特定使用者身分登入 HSM (如需詳細資訊，請參閱[已啟用 MFA的登入使用者]())。

1. 接下來，執行命令以變更 MFA 策略。您必須提供參數 **--token**。此參數指定將寫入未簽署權杖的檔案。

   ```
   aws-cloudhsm > user change-mfa token-sign --token unsigned-tokens.json --username <username> --role crypto-user --change-quorum
   Enter password:
   Confirm password:
   ```

1. 識別具有需要簽署但尚未權杖的檔案：`unsigned-tokens.json`。此檔案中的權杖數量取決於叢集中的 HSM 數目。每個權杖代表一個 HSM。這個檔案是 JSON 格式，包含需要簽署以證明您擁有私有金錀的權杖。這將是新 RSA 公有/私有金錀對中的新私有金錀 (您想要用其輪換目前已註冊公有金錀)。

   ```
   $ cat unsigned-tokens.json
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=",
         "signed": ""
       },
       {
         "unsigned": "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=",
         "signed": ""
       },
       {
         "unsigned": "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=",
         "signed": ""
       }
     ]
   }
   ```

1. 使用您先前在設置過程中建立的私有金錀來簽署這些權杖。首先，必須擷取和解碼 base64 編碼的權杖。

   ```
   $ echo "Vtf/9QOFY45v/E1osvpEMr59JsnP/hLDm4ItOO2vqL8=" > token1.b64
   $ echo "wVbC0/5IKwjyZK2NBpdFLyI7BiayZ24YcdUdlcxLwZ4=" > token2.b64
   $ echo "z6aW9RzErJBL5KqFG5h8lhTVt9oLbxppjod0Ebysydw=" > token3.b64
   $ base64 -d token1.b64 > token1.bin
   $ base64 -d token2.b64 > token2.bin
   $ base64 -d token3.b64 > token3.bin
   ```

1. 您現在有二進制權杖。使用您先前在設定過程中建立的 RSA 私有金鑰來簽署這些權杖。

   ```
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token1.bin \
         -out token1.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token2.bin \
         -out token2.sig.bin
   $ openssl pkeyutl -sign \
         -inkey officer1.key \
         -pkeyopt digest:sha256 \
         -keyform PEM \
         -in token3.bin \
         -out token3.sig.bin
   ```

1. 現在，您有了已簽署的二進位權杖。使用 base64 對這些權杖進行編碼，然後將它們放回權杖檔案中。

   ```
   $ base64 -w0 token1.sig.bin > token1.sig.b64
   $ base64 -w0 token2.sig.bin > token2.sig.b64 
   $ base64 -w0 token3.sig.bin > token3.sig.b64
   ```

1. 最後，將 base64 值複製並粘貼回權杖檔案中：

   ```
   {
     "version": "2.0",
     "tokens": [
       {
         "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
         "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
       },
       {
         "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
         "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
       },
       {
         "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
         "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
       }
     ]
   }
   ```

1. 現在，您的權杖文件已全部簽署，您可以繼續操作。輸入包含已簽署權杖的檔案名稱，然後按 Enter 鍵。最後，輸入您新公有金錀的路徑。現在，您會看到以下[用戶列表]()部分輸出的內容。

   ```
   Enter signed token file path (press enter if same as the unsigned token file):
   Enter public key PEM file path:officer1.pub
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "crypto-user"
     }
   }
   ```

   現在，您已經使用 MFA 設定了您的使用者。

   ```
   {
       "username": "<username>",
       "role": "crypto-user",
       "locked": "false",
       "mfa": [
         {
           "strategy": "token-sign",
           "status": "enabled"
         }
       ],
       "cluster-coverage": "full"
   },
   ```

您已使用私有金錀簽署了產生的 JSON 格式的權杖文件檔案，並註冊了新的 MFA 公有金錀。

# 使用 CloudHSM CLI 取消註冊 MFA 公有金鑰
取消註冊 MFA 公有金鑰

請依照下列步驟，在註冊 MFA 公有金鑰時取消 AWS CloudHSM 註冊管理使用者的多重要素驗證 (MFA) 公有金鑰。

1. 使用 CloudHSM CLI 以啟用 MFA 的管理員身分登入 HSM。

1. 使用 **user change-mfa token-sign** 命令為使用者移除 MFA。

   ```
   aws-cloudhsm > user change-mfa token-sign --username <username> --role admin --deregister --change-quorum
   Enter password:
   Confirm password:
   {
     "error_code": 0,
     "data": {
       "username": "<username>",
       "role": "admin"
     }
   }
   ```

# 使用 CloudHSM CLI 的 MFA 權杖檔案參考
權杖檔案參考

註冊多重要素驗證 (MFA) 公有金鑰或嘗試使用 MFA 登入 CloudHSM CLI 時產生的字符檔案包含下列項目：
+ **權杖：**一組以 JSON 物件文字形式表示的 base64 編碼的未簽署/已簽署權杖對。
+ **未簽署：**一個 base64 編碼和 SHA256 雜湊的權杖。
+ **已簽署：**使用 RSA 2048 位元私有金錀對未簽署權杖進行 base64 編碼的已簽署權杖 (簽章)。

```
{
  "version": "2.0",
  "tokens": [
    {
      "unsigned": "1jqwxb9bJOUUQLiNb7mxXS1uBJsEXh0B9nj05BqnPsE=",
      "signed": "eiw3fZeCKIY50C4zPeg9Rt90M1Qlq3WlJh6Yw7xXm4nF6e9ETLE39+9M+rUqDWMRZjaBfaMbg5d9yDkz5p13U7ch2tlF9LoYabsWutkT014KRq/rcYMvFsU9n/Ey/TK0PVaxLN42X+pebV4juwMhN4mK4CzdFAJgM+UGBOj4yB9recpOBB9K8QFSpJZALSEdDgUc/mS1eDq3rU0int6+4NKuLQjpR+LSEIWRZ6g6+MND2vXGskxHjadCQ09L7Tz8VcWjKDbxJcBiGKvkqyozl9zrGo8fA3WHBmwiAgS61Merx77ZGY4PFR37+j/YMSC14prCN15DtMRv2xA1SGSb4w=="
    },
    {
      "unsigned": "LMMFc34ASPnvNPFzBbMbr9FProS/Zu2P8zF/xzk5hVQ=",
      "signed": "HBImKnHmw+6R2TpFEpfiAg4+hu2pFNwn43ClhKPkn2higbEhUD0JVi+4MerSyvU/NN79iWVxDvJ9Ito+jpiRQjTfTGEoIteyuAr1v/Bzh+HjmrO53OQpZaJ/VXGIgApD0myuu/ZGNKQTCSkkL7+V81FG7yR1Nm22jUeGa735zvm/E+cenvZdy0VVx6A7WeWrl3JEKKBweHbi+7BwbaW+PTdCuIRd4Ug76Sy+cFhsvcG1k7cMwDh8MgXzIZ2m1f/hdy2j8qAxORTLlmwyUOYvPYOvUhc+s83hx36QpGwGcD7RA0bPT5OrTx7PHd0N1CL+Wwy91We8yIOFBS6nxo1R7w=="
    },
    {
      "unsigned": "dzeHbwhiVXQqcUGj563z51/7sLUdxjL93SbOUyZRjH8=",
      "signed": "VgQPvrTsvGljVBFxHnswduq16x8ZrnxfcYVYGf/N7gEzI4At3GDs2EVZWTRdvS0uGHdkFYp1apHgJZ7PDVmGcTkIXVD2lFYppcgNlSzkYlftr5EOjqS9ZjYEqgGuB4g//MxaBaRbJai/6BlcE92NIdBusTtreIm3yTpjIXNAVoeRSnkfuw7wZcL96QoklNb1WUuSHw+psUyeIVtIwFMHEfFoRC0t+VhmnlnFnkjGPb9W3Aprw2dRRvFM3R2ZTDvMCiOYDzUCd43GftGq2LfxH3qSD51oFHglHQVOY0jyVzzlAvub5HQdtOQdErIeO0/9dGx5yot07o3xaGl5yQRhwA=="
    }
  ]
}
```

# 使用 CloudHSM CLI 管理規定人數身分驗證 (M of N 存取控制）
管理規定人數身分驗證 (M 為 N)

AWS CloudHSM 叢集支援規定人數身分驗證，也稱為 M of N 存取控制。此功能需要 HSM 使用者配合某些操作，新增額外的保護層。

使用規定人數身分驗證時，HSM 上的單一使用者都無法在 HSM 上執行規定人數控制的操作。相對地，必須有最低數量的 HSM 使用者 (至少 2 個) 合作來執行這些操作。

規定人數身分驗證可以控制以下操作：
+ [管理員](understanding-users.md#admin)的 HSM 使用者管理：建立和刪除 HSM 使用者或變更不同的 HSM 使用者密碼。如需詳細資訊，請參閱[AWS CloudHSM 使用 CloudHSM CLI 啟用規定人數身分驗證的使用者管理](quorum-auth-chsm-cli-admin.md)。

有關規定人數身分驗證的要點 AWS CloudHSM。
+ HSM 使用者可以簽署自己的規定人數字符，也就是提供規定人數身分驗證所需的核准之一。
+ 您可以選擇規定人數核准者的最小數量，範圍從兩 (2) 到八 (8)。
+ HSMs 最多可存放 1024 個規定人數字符。達到此限制時，HSM 會清除過期的權杖，以建立新的權杖。
+ 根據預設，權杖會在建立後 10 分鐘過期。
+ 對於啟用 MFA 的叢集，相同的金鑰用於規定人數驗證和多重要素驗證 (MFA)。如需詳細資訊[，請參閱使用 CloudHSM CLI 管理 MFA](login-mfa-token-sign.md)。
+ 每個 HSM 每個 Admin 服務可以包含一個字符，每個 Crypto 使用者服務可以包含多個字符。

下列主題提供 AWS CloudHSM中的規定人數身分驗證的詳細資訊。

**Topics**
+ [

# CloudHSM CLI 的配額身分驗證程序
](quorum-auth-chsm-cli-overview.md)
+ [

# 支援使用 CloudHSM CLI 進行規定人數身分驗證 AWS CloudHSM 的服務名稱和類型
](quorum-auth-chsm-cli-service-names.md)
+ [

# 使用 CloudHSM CLI AWS CloudHSM 為管理員設定規定人數身分驗證
](quorum-auth-chsm-cli-first-time.md)
+ [

# AWS CloudHSM 使用 CloudHSM CLI 啟用規定人數身分驗證的使用者管理
](quorum-auth-chsm-cli-admin.md)
+ [

# 變更 AWS CloudHSM 使用 CloudHSM CLI 的規定人數最小值
](quorum-auth-chsm-cli-min-value.md)

# CloudHSM CLI 的配額身分驗證程序
配額身分驗證程序

下列步驟摘要說明 CloudHSM CLI 的規定人數身分驗證程序。如需特定步驟和工具，請參閱 [AWS CloudHSM 使用 CloudHSM CLI 啟用規定人數身分驗證的使用者管理](quorum-auth-chsm-cli-admin.md)。

1. 每個硬體安全模組 (HSM) 使用者都會建立非對稱金鑰以進行簽署。使用者會在 HSM 外部執行此動作，以適當方式保護金鑰。

1. 每個 HSM 使用者會登入 HSM，並向 HSM 註冊使用者的簽署金鑰 (公有金錀) 的公有部分。

1. HSM 使用者想要執行由規定人數控制的操作時，使用者會登入 HSM，並取得*規定人數權杖*。

1. HSM 使用者會將規定人數字符提供給一或多個其他 HSM 使用者，並要求其核准。

1. 其他 HSM 使用者透過使用自己的金鑰以密碼編譯方式簽署規定人數字符來進行核准。這是在 HSM 外部進行。

1. 當 HSM 使用者具有所需的核准數目時，相同的使用者會登入 HSM 並使用 **--approval** 引數執行規定人數控制的操作，並提供已簽署的規定人數權杖檔案，其中包含所有必要的核准 (簽章)。

1. HSM 會使用每個簽署者註冊的公有金鑰來驗證簽章。如果簽章有效，HSM 會核准權杖，並執行規定人數控制的操作。

# 支援使用 CloudHSM CLI 進行規定人數身分驗證 AWS CloudHSM 的服務名稱和類型
支援的服務和類型

**管理員服務**：規定人數身分驗證用於管理員特殊權限服務，例如建立使用者、刪除使用者、變更使用者密碼、設定規定人數值，以及停用規定人數和 MFA 功能。

**加密使用者服務**：配額身分驗證用於與特定金鑰相關聯的加密使用者權限服務，例如使用金鑰簽署、共用/取消共用金鑰、包裝/取消包裝金鑰，以及設定金鑰的屬性。產生、匯入或取消包裝金鑰時，會設定關聯金鑰的仲裁值。規定人數值必須等於或小於與金鑰相關聯的使用者數量，其中包括與金鑰共用的使用者和金鑰擁有者。

每種服務類型都會進一步細分為合格的服務名稱，這包含一組特定的可執行法定人數支援的服務操作。


****  

| 服務名稱 | 服務類型 | 服務操作 | 
| --- | --- | --- | 
| user | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| 規定人數 | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| cluster1 | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| 金鑰管理 | 加密使用者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 
| key-usage | 加密使用者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-service-names.html)  | 

【1】 叢集服務僅在 hsm2m.medium 上提供

# 使用 CloudHSM CLI AWS CloudHSM 為管理員設定規定人數身分驗證
首次設定

下列主題說明設定硬體安全模組 (HSM) 時必須完成的步驟，以便 AWS CloudHSM [管理員](understanding-users.md#admin)可以使用規定人數身分驗證。第一次針對管理員設定規定人數身分驗證時，您只需要執行一次下列步驟。完成這些步驟之後，請參閱 [AWS CloudHSM 使用 CloudHSM CLI 啟用規定人數身分驗證的使用者管理](quorum-auth-chsm-cli-admin.md)。

**Topics**
+ [

## 先決條件
](#quorum-admin-prerequisites)
+ [

## 步驟 1. 建立和註冊用於簽署的金鑰
](#quorum-admin-create-and-register-key)
+ [

## 步驟 2. 設定 HSM 上的規定人數最小值
](#quorum-admin-set-quorum-minimum-value-chsm-cli)
+ [

## 配額最小值
](#cloudhsm_cli-qm-list-minimum)

## 先決條件


若要了解此範例，您應該熟悉 [CloudHSM CLI](cloudhsm_cli.md)。

## 步驟 1. 建立和註冊用於簽署的金鑰


若要使用規定人數身分驗證，每個管理員都必須完成下列*所有*步驟：

**Topics**
+ [

### 建立 RSA 金鑰對
](#mofn-key-pair-create-chsm-cli)
+ [

### 建立並簽署註冊權杖
](#mofn-registration-token-chsm-cli)
+ [

### 用 HSM 註冊公有金鑰
](#mofn-register-key-chsm-cli)

### 建立 RSA 金鑰對


建立和保護金鑰對有許多不同的方式。下列範例示範使用 [OpenSSL](https://www.openssl.org/) 的做法。

**Example – 使用 OpenSSL 建立私有金鑰**  
下列範例示範如何使用 OpenSSL 來建立 2048 位元 RSA 金鑰。若要使用這個範例，請將 *<admin.key>* 以您要存放金鑰的檔案名稱來加以取代。  

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

接下來，使用您剛建立的私有金鑰來產生公有金鑰。

**Example – 使用 OpenSSL 建立一個公有金鑰**  
下列範例會示範如何使用 OpenSSL 根據您剛建立的私有金鑰建立公有金鑰。  

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

### 建立並簽署註冊權杖


您可以建立一個權杖並使用在上一步中剛產生的私有金鑰簽署該權杖。

**Example – 建立一個註冊權杖**  

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-qm-token-gen.md)命令建立註冊權杖：

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

1. [產生規定人數權杖簽署](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 編碼的隨機資料權杖，其原始資料不超過 245 個位元組的最大值。
   + **unsigned**：核准資料的 base64 編碼和 SHA256 雜湊權杖。
   + **signed**：未簽署的權杖的 base64 編碼簽名權杖 (簽名)，使用先前使用 OpenSSL 產生的 RSA 2048 位元私有金鑰。

   您可以使用私有金鑰簽署未簽署的權杖，以證明您可以訪問私有金鑰。您需要完整填入簽章和公有金鑰的註冊字符檔案，才能向 AWS CloudHSM 叢集將管理員註冊為規定人數使用者。

**Example — 簽署未簽署的註冊權杖**  

1. 解碼 base64 編碼的未簽署權杖並將其放入二進位檔案中：

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

1. 使用 OpenSSL 和私有金鑰來簽署現在的二進位未簽署註冊權杖，並建立一個二進位簽署檔案：

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

1. 將二進位簽章編碼為 base64：

   ```
   $ base64 -w0 admin.sig.bin > admin.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 註冊公有金鑰


建立金鑰後，管理員必須向 AWS CloudHSM 叢集註冊公有金鑰。

**向 HSM 註冊公有金鑰**

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，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

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** 命令，以向 HSM 註冊管理員的公有金鑰。若要使用此命令，管理員必須登入 HSM。以您自己的值取代這些值：  

```
aws-cloudhsm > user change-quorum token-sign register --public-key </path/admin.pub> --signed-token </path/tokenfile>
{
  "error_code": 0,
  "data": {
    "username": "admin",
    "role": "admin"
  }
}
```
**/path/admin.pub**：公有金鑰 PEM 檔案的檔案路徑  
**必要**：是  
**/path/tokenfile**：帶有權杖由用戶私有金鑰簽名的檔案路徑  
**必要**：是
在所有管理員註冊其公有金鑰之後，**user list** 命令的輸出會在規定人數欄位中顯示此資訊，說明使用中已啟用的規定人數策略，如下所示：  

```
aws-cloudhsm > user list
{
  "error_code": 0,
  "data": {
    "users": [
      {
        "username": "admin",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin2",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin3",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin4",
        "role": "admin",
        "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"
      }
    ]
  }
}
```
 在此範例中， AWS CloudHSM 叢集有兩個 HSMs，每個 HSM 都有相同的管理員，如 **user list**命令的下列輸出所示。如需建立使用者的詳細資訊，請參閱 [使用 CloudHSM CLI 進行使用者管理](manage-hsm-users-chsm-cli.md)

## 步驟 2. 設定 HSM 上的規定人數最小值


若要使用規定人數身分驗證，管理員必須登入 HSM，然後設定*規定人數最小值*。這是執行 HSM 使用者管理操作所需的管理員核准數下限。HSM 上的任何管理員 (包括尚未註冊用於簽署的金鑰的管理員) 可以設定規定人數最小值。您可以隨時變更規定人數最小值。如需詳細資訊，請參閱[變更最小值](quorum-auth-chsm-cli-min-value.md)。

**設定 HSM 上的規定人數最小值**

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，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 使用 **[使用 CloudHSM CLI 更新規定人數值](cloudhsm_cli-qm-token-set-qm.md)** 命令來設定規定人數最小值。`--service` 旗標可識別您要為其設定值的 HSM 服務。如需詳細資訊，請參閱下列範例或使用 **help quorum token-sign set-quorum-value**命令。

**Example – 設定 HSM 上的規定人數最小值**  
此範例使用值為 2 的規定人數最小值。您可以選擇二 (2) 到八 (8) 之間的任何值，最多可到 HSM 上的管理員總數。在此範例中，HSM 有四 (4) 個管理員，因此最大可能值為四 (4) 個。  
若要使用以下範例命令，請將最終數字 (*<2>*) 以您偏好的規定人數最小值加以取代。  

```
aws-cloudhsm > quorum token-sign set-quorum-value --service user --value <2>
{
  "error_code": 0,
  "data": "Set quorum value successful"
}
```
在此範例中， **[使用 CloudHSM CLI 顯示規定人數值](cloudhsm_cli-qm-token-list-qm.md)**命令會列出包含在服務中的 HSM 服務類型、名稱和描述。

## 配額最小值


使用 **quorum token-sign list-quorum-values** 命令取得服務的規定人數最小值。

```
aws-cloudhsm > quorum token-sign list-quorum-values
{
  "error_code": 0,
  "data": {
    "user": 2,
    "quorum": 1
  }
}
```

上述 **quorum token-sign list-quorum-values** 命令的輸出顯示 HSM 使用者服務 (負責使用者管理操作) 的規定人數最小值現在是 2。完成這些步驟之後，請參閱 [使用規定人數進行使用者管理 (M 為 N)](quorum-auth-chsm-cli-admin.md)。

**管理員服務**：規定人數身分驗證用於管理員特殊權限服務，例如建立使用者、刪除使用者、變更使用者密碼、設定規定人數值，以及停用規定人數和 MFA 功能。

**加密使用者服務**：配額身分驗證用於與特定金鑰相關聯的加密使用者特殊權限服務，例如使用金鑰簽署、共用/取消共用金鑰、包裝/取消包裝金鑰，以及設定金鑰的屬性。產生、匯入或取消包裝金鑰時，會設定關聯金鑰的仲裁值。規定人數值必須等於或小於與金鑰相關聯的使用者數量，其中包括與金鑰共用的使用者和金鑰擁有者。

每種服務類型都會進一步細分為合格的服務名稱，這包含一組特定的可執行法定人數支援的服務操作。


****  

| 服務名稱 | 服務類型 | 服務操作 | 
| --- | --- | --- | 
| user | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| 規定人數 | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| cluster1 | 管理員 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| 金鑰管理 | 加密使用者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 
| key-usage | 加密使用者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/cloudhsm/latest/userguide/quorum-auth-chsm-cli-first-time.html)  | 

【1】 叢集服務僅在 hsm2m.medium 上提供

# AWS CloudHSM 使用 CloudHSM CLI 啟用規定人數身分驗證的使用者管理
使用規定人數進行使用者管理 (M 為 N)

硬體安全模組 (HSM) 上的 AWS CloudHSM [管理員](understanding-users.md#admin)可以為 AWS CloudHSM 叢集中的下列操作設定規定人數身分驗證：
+ **[使用 CloudHSM CLI 建立 AWS CloudHSM 使用者](cloudhsm_cli-user-create.md)**
+ **[使用 CloudHSM CLI 刪除 AWS CloudHSM 使用者](cloudhsm_cli-user-delete.md)**
+ **[使用 CloudHSM CLI 變更使用者的密碼](cloudhsm_cli-user-change-password.md)**
+ **[CloudHSM CLI 中的使用者 change-mfa 類別](cloudhsm_cli-user-change-mfa.md)**

 AWS CloudHSM 叢集設定為規定人數身分驗證之後，管理員就無法自行執行 HSM 使用者管理操作。以下範例示範當管理員嘗試在 HSM 上建立新使用者時的輸出。命令失敗並顯示錯誤，指出需要進行規定人數身分驗證。

```
aws-cloudhsm > user create --username user1 --role crypto-user
Enter password:
Confirm password:
{
  "error_code": 1,
  "data": "Quorum approval is required for this operation"
}
```

若要執行 HSM 使用者管理操作，管理員必須完成下列工作：

**Topics**
+ [

## 步驟 1. 取得規定人數字符
](#quorum-admin-gen-token-chsm-cli)
+ [

## 步驟 2. 取得核准管理員的簽章
](#quorum-admin-get-approval-signatures-chsm-cli)
+ [

## 步驟 3。在 AWS CloudHSM 叢集上核准字符並執行使用者管理操作
](#quorum-admin-approve-token-chsm-cli)

## 步驟 1. 取得規定人數字符


首先，管理員必須使用 CloudHSM CLI 來請求*規定人數權杖*。

**取得規定人數權杖**

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，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 使用 **quorum token-sign generate** 命令來產生規定人數權杖。如需詳細資訊，請參閱下列範例或使用 **help quorum token-sign generate** 命令。

**Example – 產生規定人數權杖**  
此範例會取得使用者名稱為 `admin` 的管理員的規定人數權杖並將權杖儲存至名為 `admin.token` 的檔案中。若要使用範例命令，請將這些值取代為您自己的值：  
+ *<admin>*：取得權杖的管理員名稱。此使用者必須是登入 HSM 的相同管理員並正在執行此命令。
+ *<admin.token>*：用於存放規定人數權杖的檔案名稱。
在以下命令中，`user` 會識別您可以對其使用要生成權杖的*服務名稱*。在此情況下，此權杖可用於 HSM 使用者管理操作 (`user` 服務)。  

```
aws-cloudhsm > login --username <admin> --role admin --password <password>
{
  "error_code": 0,
  "data": {
    "username": "<admin>",
    "role": "admin"
  }
}
```

```
aws-cloudhsm > quorum token-sign generate --service user --token </path/admin.token>
{
  "error_code": 0,
  "data": {
    "path": "/home/tfile"
  }
}
```
**quorum token-sign generate** 命令會在指定的檔案路徑產生使用者服務規定人數權杖。可以檢查權杖文件：  

```
$ cat </path/admin.token>
{
  "version": "2.0",
  "service": "user-management",
  "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA",
  "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=",
  "signatures": []
}
```
權杖檔案由以下項目組成：  
+ **服務**：權杖相關聯的規定人數服務識別符。
+ **approval\$1data**：由 HSM 產生的 base64 編碼原始資料權杖。
+ **token**：approval\$1data 的 base64 編碼和 SHA-256 雜湊權杖
+ **signatures**：base64 編碼的簽名權杖 (簽名) 陣列，其中核准者的每個簽名均採用 JSON 物件常值的形式：

  ```
  {
        "username": "<APPROVER_USERNAME>",
        "role": "<APPROVER_ROLE>",
        "signature": "<APPROVER_RSA2048_BIT_SIGNATURE>"
  }
  ```

  每個簽章都是從核准者的結果使用其對應的 RSA 2048 位元私有金鑰建立，其公有金鑰已向 HSM 註冊。
執行 **quorum token-sign list** 命令，可確認產生的使用者服務規定人數權杖在於 CloudHSM 叢集中是否存在：  

```
aws-cloudhsm > quorum token-sign list
{
  "error_code": 0,
  "data": {
    "tokens": [
      {
        "username": "admin",
        "service": "user",
        "approvals-required": {
          "value": 2
        },
        "number-of-approvals": {
          "value": 0
        },
        "token-timeout-seconds": {
          "value": 597
        },
        "cluster-coverage": "full"
      }
    ]
  }
}
```
`token-timeout-seconds` 時間表示過期前需核准的所產生權杖的超時期 (以秒為單位)。

## 步驟 2. 取得核准管理員的簽章


具有規定人數權杖的管理員必須取得其他管理員核准的權杖。為了提供核准，其他管理員會使用其簽署金鑰來以密碼編譯形式簽署權杖。他們會在 HSM 外部執行此操作。

簽署權杖的方式有很多。下列範例示範使用 [OpenSSL](https://www.openssl.org/) 的做法。若要使用不同的簽署工具，請確認工具使用管理員的私有金鑰 (簽署金鑰) 來簽署權杖的 SHA-256 摘要。

**Example 取得核准管理員的簽章**  
在這個範例中，具有權杖 (`admin`) 的管理員需要至少兩 (2) 個核准。以下範例命令示範兩 (2) 個管理員如何使用 OpenSSL 來以密碼編譯方式簽署權杖。  

1. 解碼 base64 編碼的未簽署權杖並將其放入二進位檔案中：

   ```
   $ echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
   ```

1. 使用 OpenSSL 和核准者 `(admin3)` 各自的私有金鑰來簽署使用者服務的現在二進位規定人數未簽署的權杖，並建立二進位簽章檔案：

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

1. 將二進位簽章編碼為 base64：

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

1. 最後，將 base64 編碼的簽名複製並粘貼到權杖檔案中，遵循先前為核准者簽名指定的 JSON 物件常值格式：

   ```
   {
     "version": "2.0",
     "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA",
     "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=",
     "signatures": [
       {
         "username": "admin2",
         "role": "admin",
         "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw=="
       },
       {
         "username": "admin3",
         "role": "admin",
         "signature": "O6qx7/mUaVkYYVr1PW7l8JJko+Kh3e8zBIqdk3tAiNy+1rW+OsDtvYujhEU4aOFVLcrUFmyB/CX9OQmgJLgx/pyK+ZPEH+GoJGqk9YZ7X1nOXwZRP9g7hKV+7XCtg9TuDFtHYWDpBfz2jWiu2fXfX4/jTs4f2xIfFPIDKcSP8fhxjQ63xEcCf1jzGha6rDQMu4xUWWdtDgfT7um7EJ9dXNoHqLB7cTzphaubNaEFbFPXQ1siGmYKmvETlqe/ssktwyruGFLpXs1n0tJOEglGhx2qbYTs+omKWZdORl5WIWEXW3IXw/Dg5vVObrNpvG0eZKO8nSMc27+cyPySc+ZbNw=="
       }
     ]
   }
   ```

## 步驟 3。在 AWS CloudHSM 叢集上核准字符並執行使用者管理操作


管理員擁有必要的核准/簽名後 (詳見上一節)，管理員可以將該權杖提供給 AWS CloudHSM 叢集，以及下列其中一項使用者管理操作：
+ **[建立](cloudhsm_cli-user-create.md)**
+ **[delete](cloudhsm_cli-user-delete.md)**
+ **[變更密碼](cloudhsm_cli-user-change-password.md)**
+ **[user change-mfa](cloudhsm_cli-user-change-mfa.md)**

如需使用這些命令的詳細資訊，請參閱[使用 CloudHSM CLI 進行使用者管理](manage-hsm-users-chsm-cli.md)。

在交易期間，字符將在 AWS CloudHSM 叢集中核准，並執行請求的使用者管理操作。使用者管理操作的成功取決於有效的已核准規定人數權杖和有效的使用者管理操作。

管理員僅可以使用該權杖來進行一個操作。當該操作成功，該字符即不再有效。若要執行其他 HSM 使用者管理操作，管理員必須重複上述程序。即：管理員必須產生新的規定人數權杖、向核准者取得新簽章，在 HSM 上核准新權杖並執行要求的使用者管理操作。

**注意**  
規定人數權杖僅在您目前的登入工作階段開啟時才有效。如果您登出 CloudHSM CLI 或網路中斷連線，則該權杖將不再有效。同樣地，授權的權杖只能在 CloudHSM CLI 中使用。其不能用於其他應用程式中進行身分驗證。

**Example 以管理員身分建立新使用者**  
在下列範例命令中，登入的管理員會在 HSM 上建立新使用者。  

```
aws-cloudhsm > user create --username user1 --role crypto-user --approval /path/admin.token
Enter password:
Confirm password:
{
  "error_code": 0,
  "data": {
    "username": "user1",
    "role": "crypto-user"
  }
}
```
然後，管理員輸入 **user list** 命令以確認新使用者的建立：  

```
aws-cloudhsm > user list
{
  "error_code": 0,
  "data": {
    "users": [
      {
        "username": "admin",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin2",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin3",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "admin4",
        "role": "admin",
        "locked": "false",
        "mfa": [],
        "quorum": [
          {
            "strategy": "token-sign",
            "status": "enabled"
          }
        ],
        "cluster-coverage": "full"
      },
      {
        "username": "user1",
        "role": "crypto-user",
        "locked": "false",
        "mfa": [],
        "quorum": [],
        "cluster-coverage": "full"
      },
      {
        "username": "app_user",
        "role": "internal(APPLIANCE_USER)",
        "locked": "false",
        "mfa": [],
        "quorum": [],
        "cluster-coverage": "full"
      }
    ]
  }
}
```
如果管理員嘗試執行另一個 HSM 使用者管理操作，會因規定人數身分驗證錯誤而失敗，如以下範例所示。  

```
aws-cloudhsm > user delete --username user1 --role crypto-user
{
  "error_code": 1,
  "data": "Quorum approval is required for this operation"
}
```
如下所示，**quorum token-sign list** 命令顯示管理員沒有核准的權杖。若要執行另一個 HSM 使用者管理操作，管理員必須產生新的規定人數權杖、向核准者取得新簽章，並使用核准引數執行所需的使用者管理操作，以提供要在執行使用者管理操作期間核准和使用的規定人數權杖。  

```
aws-cloudhsm > quorum token-sign list
{
  "error_code": 0,
  "data": {
    "tokens": []
  }
}
```

# 變更 AWS CloudHSM 使用 CloudHSM CLI 的規定人數最小值
變更最小值

設定 CloudHSM [管理員](understanding-users.md#admin)的[規定人數最小值](quorum-auth-chsm-cli-first-time.md#quorum-admin-set-quorum-minimum-value-chsm-cli)之後，您可能需要調整規定人數最小值。HSM 只有在核准者數目符合或超過目前值時，才允許變更規定人數最小值。例如，如果規定人數最小值為兩 (2)，則至少兩 (2) 個管理員必須核准任何變更。

**注意**  
使用者服務的規定人數值必須一律小於或等於規定人數服務的規定人數值。如需服務名稱的資訊，請參閱 [支援使用 CloudHSM CLI 進行規定人數身分驗證 AWS CloudHSM 的服務名稱和類型](quorum-auth-chsm-cli-service-names.md)。

若要取得規定人數核准來變更規定人數最小值，您需要*規定人數權杖*來用於使用 **quorum token-sign set-quorum-value** 命令的 **quorum service**。若要為使用 **quorum token-sign set-quorum-value** 命令的 **quorum service** 產生規定人數權杖，規定人數服務必須大於一 (1)。這表示您可能需要變更*規定人數服務* 的規定人數最小值才能變更*使用者服務*的規定人數最小值。

**變更管理員規定人數最小值的步驟**

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，以管理員身分登入。

   ```
   aws-cloudhsm > login --username <admin> --role admin
   Enter password:
   {
     "error_code": 0,
     "data": {
       "username": "<admin>",
       "role": "admin"
     }
   }
   ```

1. 檢查目前的規定人數最小值：

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   ```

1. 如果規定人數服務的規定人數最小值低於使用者服務的值，請變更*規定人數服務*值：

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value --service quorum --value <3>
   ```

1. [產生規定人數服務的規定人數字符](quorum-auth-chsm-cli-admin.md#quorum-admin-gen-token-chsm-cli)。

1. [向其他管理員取得核准 (簽章)](quorum-auth-chsm-cli-admin.md#quorum-admin-get-approval-signatures-chsm-cli)。

1. 在[ CloudHSM 叢集上核准權杖，並執行使用者管理操作。](quorum-auth-chsm-cli-admin.md#quorum-admin-approve-token-chsm-cli)

1. 變更*使用者服務*的規定人數最小值：

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value
   ```

**Example 調整*規定人數服務*最小值**  

1. **檢查目前的值**。此範例顯示*使用者服務*的規定人數最小值目前為兩 (2) 個。

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   {
     "error_code": 0,
     "data": {
       "user": 2,
       "quorum": 1
     }
   }
   ```

1. **變更規定人數服務值**。將規定人數*服務的規定人數*最小值設定為等於或高於*使用者服務*值的值。此範例將規定人數*服務的規定人數*最小值設定為兩個 (2)，與先前範例中為*使用者服務*設定的值相同。

   ```
   aws-cloudhsm > quorum token-sign set-quorum-value --service quorum --value 2
   {
     "error_code": 0,
     "data": "Set quorum value successful"
   }
   ```

1. **驗證變更**。此範例顯示使用者*服務和*規定人數*服務的規定人數*最小值現在為兩 (2)。

   ```
   aws-cloudhsm > quorum token-sign list-quorum-values
   {
     "error_code": 0,
     "data": {
       "user": 2,
       "quorum": 2
     }
   }
   ```