使用 CloudHSM 管理公用程式 (CMU) 管理加密管理員的雙重要素身分驗證 (2FA) - AWS CloudHSM

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

使用 CloudHSM 管理公用程式 (CMU) 管理加密管理員的雙重要素身分驗證 (2FA)

為提高安全性,您可設定雙重要素驗證 (2FA) 以協助保護叢集。您只能為加密管理員 (CO) 啟用 2FA。

注意

您無法為加密使用者 (CU) 或應用程式啟用 2FA。雙重要素驗證 (2FA) 僅適用於 CO 使用者。

了解 HSM 使用者的 2FA

當您以啟用 2FA 的硬體服務模組 (HSM) 帳戶登入叢集時,您需向 cloudhsm_mgmt_util (CMU) 提供您的密碼 (第一個要素,這是您已知的內容),然後 CMU 會提供給您一個權杖並提示您簽署該權杖。如要提供第二個要素 (您擁有的),請使用您已經建立並與 HSM 使用者相關聯的金錀對中的私有金鑰來簽署權杖。如要訪問叢集,請將已簽署的權杖提供給 CMU。

規定人數驗證和 2FA

叢集使用同一金鑰進行規定人數驗證和雙重要素驗證 (2FA)。這意味著啟用了 2FA 的使用者可以有效地註冊了 M-of-N-access-control (MofN)。如要為同一 HSM 使用者成功使用 2FA 和規定人數驗證,請考慮下列幾點:

  • 如果您今天要為使用者使用規定人數驗證,則應使用您為規定人數使用者建立的同一個金錀對來為該使用者啟用 2FA。

  • 如果您為非規定人數驗證使用者身分的非 2FA 使用者新增 2FA 要求,則您應將該使用者註冊為具有 2FA 驗證的 MofN 使用者。

  • 如果您要為兼具規定人數驗證使用者身分的 2FA 使用者移除 2FA 要求或變更其密碼,您也會同時移除規定人數使用者作為 MofN 使用者的註冊。

  • 如果您要為兼具規定人數驗證使用者身分的 2FA 使用者移除 2FA 要求或變更其密碼,但仍想保留該使用者的規定人數驗證,則您須將該使用者註冊為 MofN 使用者。

如需規定人數驗證的詳細資訊,請參閱 使用 CMU 管理規定人數身分驗證

使用適用於 HSM 使用者的 2FA

本節說明如何為 HSM 使用者使用 2FA,包括建立 2FA HSM 使用者、輪換金鑰,以及以啟用 2FA 使用者身分登入 HSM。如需使用 HSM 使用者的詳細資訊,請參閱 管理 HSM 使用者 AWS CloudHSM使用 CloudHSM 管理公用程式 (CMU) 來管理使用者。createUserloginHSM 和 logoutHSMchangePswd

建立 2FA 使用者

如要為 HSM 使用者啟用 2FA,請使用符合下列要求的金鑰。

您可建立新的金錀對,或使用符合下列要求的現有金鑰。

  • 金鑰類型:非對稱金錀

  • 金鑰用途:簽署和驗證

  • 金鑰規格:RSA_2048

  • 簽署演算法包括:

    • sha256WithRSAEncryption

注意

如果您正在使用規定人數驗證或計劃使用法定驗證,請參閱 規定人數驗證和 2FA

使用 CMU 和金錀對來建立啟用 2FA 的新 CO 使用者。

如建立已啟用 2FA 的 CO 使用者
  1. 如在一個終端中,請執行下列步驟:

    1. 訪問您的 HSM 並登入 CloudHSM 管理公用程式:

      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
    2. 以 CO 身分登入,並使用下列命令建立含有 2FA 的新使用者 MFA:

      aws-cloudhsm>createUser CO MFA <CO USER NAME> -2fa /home/ec2-user/authdata *************************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)? yCreating User exampleuser3(CO) on 1 nodesAuthentication data written to: "/home/ec2-user/authdata"Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below.Leave this field blank to use the path initially provided.Enter filename:
    3. 將上述終端保留在此狀態。請勿按回車鍵或輸入任何檔案名稱。

  2. 如在其他終端中,請執行下列步驟:

    1. 訪問您的 HSM 並登入 CloudHSM 管理公用程式:

      /opt/cloudhsm/bin/cloudhsm_mgmt_util /opt/cloudhsm/etc/cloudhsm_mgmt_util.cfg
    2. 使用下列指令產生公有/私有金鑰對:

      openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
      openssl rsa -pubout -in private_key.pem -out public_key.pem
    3. 執行下列命令以安裝 Json 查詢功能,以便從 AuthData 檔案中擷取摘要:

      sudo yum install jq
    4. 如要擷取摘要值,請先在 AuthData 檔案中尋找下列資料:

      { "Version":"1.0", "PublicKey":"", "Data":[ { "HsmId": <"HSM ID">, "Digest": <"DIGEST">, "Signature":"" } ] }
      注意

      已獲得的摘要是 base64 編碼的,但如要簽署該摘要,您需要先解碼該文件,然後簽署該文件。以下命令將解碼摘要並將解碼的內容存儲在「digest1.bin」中。

      cat authdata | jq '.Data[0].Digest' | cut -c2- | rev | cut -c2- | rev | base64 -d > digest1.bin
    5. 如要轉換公用金錀的內容,請添加「\n」並刪除空格,如下所示:

      -----BEGIN PUBLIC KEY-----\n<PUBLIC KEY>\n-----END PUBLIC KEY-----
      重要

      以上命令顯示如何在 BEGIN PUBLIC KEY----- 後立即添加「\n」,如何刪除「\n」和公用金錀第一個字元之間的空格,如何在 -----END PUBLIC KEY 之前添加「\n」,以及如何刪除「\n」和公用金錀結尾的空格。

      這是在 AuthData 文件中已接受的公用金錀的 PEM 格式。

    6. 將公有金錀 PEM 格式的內容粘貼到 AuthData 文件的公用金錀部分。

      vi authdata
      { "Version":"1.0", "PublicKey":"-----BEGIN PUBLIC KEY-----\n<"PUBLIC KEY">\n-----END PUBLIC KEY-----", "Data":[ { "HsmId":<"HSM ID">, "Digest":<"DIGEST">, "Signature":”” } ] }
    7. 請使用下列指命簽署權杖:

      openssl pkeyutl -sign -in digest1.bin -inkey private_key.pem -pkeyopt digest:sha256 | base64 Output Expected: <"THE SIGNATURE">
      注意

      如以上命令所示,請改用 openssl pkeyutl 而不是 openssl dgst 來簽署。

    8. 在「簽名」欄位的 AuthData File 中新增已簽署的摘要。

      vi authdata
      { "Version": "1.0", "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----", "Data": [ { "HsmId": <"HSM ID">, "Digest": <"DIGEST">, "Signature": "Kkdl ... rkrvJ6Q==" }, { "HsmId": <"HSM ID">, "Digest": <"DIGEST">, "Signature": "K1hxy ... Q261Q==" } ] }
  3. 返回到第一個終端,然後按 Enter

    Generate Base64-encoded signatures for SHA256 digests in the authentication datafile. To generate the signatures, use the RSA private key, which is the second factor ofauthentication for this user. Paste the signatures and the corresponding public keyinto the authentication data file and provide the file path below. Leave this field blank to use the path initially provided. Enter filename: >>>>> Press Enter here createUser success on server 0(10.0.1.11)

管理適用於 HSM 使用者的 2FA

使用變更密碼來變更 2FA 使用者的密碼,或啟用或停用 2FA,或輪換 2FA 金鑰。每次啟用 2FA 時,您都必須提供 2FA 登入的公用金鑰。

變更密碼的操作場景如下:

  • 變更 2FA 使用者的密碼

  • 變更 2FA 使用者的密碼

  • 為非 2FA 使用者新增 2FA

  • 移除 2FA 使用者的 2FA

  • 輪換 2FA 使用者的金鑰

您也可以合併任務。例如,您可以移除使用者的 2FA 並同時變更密碼,或輪換 2FA 金鑰並變更使用者密碼。

如要為已啟用 2FA 的 CO 使用者變更密碼或輪換金鑰
  1. 使用 CMU 以已啟用 2FA 的 CO 身分登入 HSM。

  2. changePswd 變更密碼或向已啟用 2FA 的 CO 使用者輪換金鑰。使用 -2fa 參數並在檔案系統中指定一個位置,以便系統寫入 authdata 檔案。此檔案包含叢集中每個 HSM 的摘要。

    aws-cloudhsm>changePswd CO example-user <new-password> -2fa /path/to/authdata

    CMU 會提示您使用私有金鑰簽署 authdata 檔案中的摘要,並傳回含有公有金鑰的簽章。

  3. 使用私有金鑰簽署 authdata 檔案中的摘要、將簽章和公有金鑰新增至 JSON 格式的 authdata 檔案,然後將 authdata 檔案位置提供給 CMU。如需詳細資訊,請參閱 組態參考

    注意

    叢集使用同一金鑰進行規定人數驗證和雙重要素驗證 (2FA)。如果您正在使用規定人數驗證或計劃使用法定驗證,請參閱 規定人數驗證和 2FA

如要為已啟用 2FA 的 CO 使用者停用 2FA
  1. 使用 CMU 以已啟用 2FA 的 CO 身分登入 HSM。

  2. 使用 changePswd 從已啟用 2FA 的 CO 使用者中移除 2FA。

    aws-cloudhsm>changePswd CO example-user <new password>

    CMU 會提示您確認變更密碼操作。

    注意

    如果您要為兼具規定人數驗證使用者身分的 2FA 使用者移除 2FA 要求或變更其密碼,您也會同時移除規定人數使用者作為 MofN 使用者的註冊。如需規定人數使用者和 2FA 的詳細資訊,請參閱 規定人數驗證和 2FA

  3. 輸入 y

    CMU 會確認變更密碼操作。

組態參考

以下範例顯示了 authdata 檔案中的 2FA 屬性 (包含 CMU 產生的請求和您的回應)。

{ "Version": "1.0", "PublicKey": "-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----", "Data": [ { "HsmId": "hsm-lgavqitns2a", "Digest": "k5O1p3f6foQRVQH7S8Rrjcau6h3TYqsSdr16A54+qG8=", "Signature": "Kkdl ... rkrvJ6Q==" }, { "HsmId": "hsm-lgavqitns2a", "Digest": "IyBcx4I5Vyx1jztwvXinCBQd9lDx8oQe7iRrWjBAi1w=", "Signature": "K1hxy ... Q261Q==" } ] }
資料

頂層節點。包含叢集中每個 HSM 的次級節點。出現在所有 2FA 命令的請求和回應中。

摘要

這是您必須簽署後才能提供驗證的第二個要素。在所有 2FA 命令請求中產生 CMU。

HsmId

您 HSM 的識別碼。出現在所有 2FA 命令的請求和回應中。

PublicKey

您所產生金鑰對的公開金錀部分會作為 PEM 格式字串插入。您要在 createUserchangePswd 的回應中輸入此內容。

Signature

Base 64 編碼的已簽署摘要。您要在所有 2FA 回應中輸入此內容。

版本

驗證資料的格式為 JSON 格式檔案。出現在所有 2FA 命令的請求和回應中。