將規定人數身分驗證用於管理員 - AWS CloudHSM

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

將規定人數身分驗證用於管理員

HSM 上的管理員可以針對 AWS CloudHSM 叢集中的下列作業配置法定驗證:

設定 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 使用者管理操作,管理員必須完成下列工作:

取得規定人數字符

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

取得規定人數權杖
  1. 使用下列命令來啟動 CloudHSM CLI。

    Linux
    $ /opt/cloudhsm/bin/cloudhsm-cli interactive
    Windows
    C:\Program Files\Amazon\CloudHSM\bin\> .\cloudhsm-cli.exe interactive
  2. 使用 login 命令並以管理員身分登入叢集。

    aws-cloudhsm>login --username admin --role admin
  3. 使用 quorum token-sign generate 命令來產生規定人數權杖。如需詳細資訊,請參閱下列範例或使用 help quorum token-sign generate 命令。

範例 – 產生規定人數權杖

此範例會取得使用者名稱為 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", "approval_data": "AAEAAwAAABgAAAAAAAAAAJ9eFkfcP3mNzJAlfK+OWbNhZG1pbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj5vbeAAAAAAAAAAAAAQADAAAAFQAAAAAAAAAAW/v5Euk83amq1fij0zyvD2FkbWluAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPm9t4AAAAAAAAAAAABAAMAAAAUAAAAAAAAAABDw2XDwfK4hB8a15Xh1E0nYWRtaW4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY+b23gAAAAAAAAAA", "token": "0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=", "signatures": [] }

權杖檔案由以下項目組成:

  • approval_data:由 HSM 產生的 base64 編碼原始資料權杖。

  • token:approval_data 的 base64 編碼和 SHA-256 雜湊權杖

  • signatures:base64 編碼的簽名權杖 (簽名) 陣列,其中核准者的每個簽名均採用 JSON 物件常值的形式:

    { "username": "<APPROVER_USERNAME>", "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 時間表示過期前需核准的所產生權杖的超時期 (以秒為單位)。

取得核准管理員的簽章

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

簽署權杖的方式有很多。下列範例示範使用 OpenSSL 的做法。若要使用不同的簽署工具,請確認工具使用管理員的私有金鑰 (簽署金鑰) 來簽署權杖的 SHA-256 摘要。

範例 取得核准管理員的簽章

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

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

    $echo -n '0l2LZkmAHZyAc1hPhyckOoVW33aGrgG77qmDHWQ3CJ8=' | base64 -d > admin.bin
  2. 使用 OpenSSL 和核准者 (admin3) 各自的私有金鑰來簽署使用者服務的現在二進位規定人數未簽署的權杖,並建立二進位簽章檔案:

    $openssl pkeyutl -sign \ -inkey admin3.key \ -pkeyopt digest:sha256 \ -keyform PEM \ -in admin.bin \ -out admin.sig.bin
  3. 將二進位簽章編碼為 base64:

    $base64 -w0 admin.sig.bin > admin.sig.b64
  4. 最後,將 base64 編碼的簽名複製並粘貼到權杖檔案中,遵循先前為核准者簽名指定的 JSON 物件常值格式:

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

核准 AWS CloudHSM 叢集上的權杖並執行使用者管理作業

管理員擁有必要的核准/簽名後 (詳見上一節),管理員可以將該權杖提供給 AWS CloudHSM 叢集,以及下列其中一項使用者管理操作:

如需使用這些命令的詳細資訊,請參閱使用 CloudHSM CLI

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

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

注意

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

範例 以管理員身分建立新使用者

在下列範例命令中,登入的管理員會在 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": [] } }