使用 AWS re:Post 即表示您同意 AWS re:Post 使用條款

如何使用 AWS CLI 配合 MFA 來驗證對 AWS 資源的存取權限?

2 分的閱讀內容
0

我想在 AWS Command Line Interface (AWS CLI) 中使用多重要素驗證 (MFA) 代碼來驗證我的 AWS 資源的存取權限。

簡短說明

您最多可以為每個 AWS Identity and Access Management (IAM) 使用者啟動八個 MFA 裝置。

注意: 根使用者的 MFA 啟用只會影響根使用者的憑證。AWS 帳戶中的每個 IAM 身分都有自己的 MFA 組態。

要啟用 MFA,請參閱用 MFA 保護根用戶的登入IAM 中的 MFA

解決方法

若要使用 AWS CLI 對 AWS 資源進行驗證,請使用 API 操作 GetSessionToken 來獲取臨時憑證。

注意: 如果在執行 AWS CLI 指令時收到錯誤,請參閱 AWS CLI 的錯誤排除。此外,請確定您使用的是最新的 AWS CLI 版本

MFA 裝置 ARN

若要取得 MFA 裝置的 ARN,請完成下列步驟:

  1. 開啟 IAM console (IAM 主控台)
  2. 在導覽窗格中,選擇 Users (使用者),然後選擇您的 IAM 使用者。
  3. Summary (摘要) 頁面上,選擇 Security credentials (安全性憑證) 標籤。
  4. Assigned MFA device (指定的 MFA 裝置) 中,複製 MFA 裝置的 ARN。

使用 AWS CLI 取得臨時憑證

運行 get-session-token 指令:

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

範例輸出:

{
    "Credentials": {
        "SecretAccessKey": "secret-access-key",
        "SessionToken": "temporary-session-token",
        "Expiration": "expiration-date-time",
        "AccessKeyId": "access-key-id"
    }
}

重要: 請確定 MFA 裝置的序號、權杖和 ARN 正確,否則您可能會收到類似下列錯誤訊息:

「呼叫 GetSessionToken 操作時發生錯誤 (AccessDenied): 多重要素驗證失敗,無法驗證 MFA 代碼。請確認您的 MFA 序號有效且與此使用者相關聯。」

若要驗證您的 MFA 硬體裝置,序號通常位於裝置背面,且數值類似 GAHT12345678。若要驗證您的 MFA 虛擬裝置,值類似於 arn:aws:iam::123456789012:mfa/user

注意: AWS CLI 僅支援虛擬或硬體 MFA 裝置進行 MFA 驗證。AWS CLI 不支援使用 FIDO 安全金鑰的 MFA 驗證。

如需詳細資訊,請參閱 AWS CLI 或 AWS API 中的 MFA 裝置分配

使用臨時憑證將其值匯出至環境變數

針對您的作業系統 (OS) 執行下列指令:

Linux

export AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
export AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
export AWS_SESSION_TOKEN=example-session-token-as-in-previous-output

Windows

set AWS_ACCESS_KEY_ID=example-access-key-as-in-previous-output
set AWS_SECRET_ACCESS_KEY=example-secret-access-key-as-in-previous-output
set AWS_SESSION_TOKEN=example-session-Token-as-in-previous-output

再次執行 get-session-token 指令之前,請執行下列指令以取消設定環境變數:

Linux

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN

Windows

set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
set AWS_SESSION_TOKEN=

使用具有命名設定檔的暫時性憑證

您也可以使用 named profiles (命名設定檔) 來指定需要多重要素驗證 (MFA) 的指令。在使用者主目錄的 .aws 資料夾中的憑證檔案中,新增新的設定擋組態以發行 MFA 驗證指令。

設定檔組態範例:

[mfa]aws_access_key_id = example-access-key-as-in-returned-output
aws_secret_access_key = example-secret-access-key-as-in-returned-output
aws_session_token = example-session-token-as-in-returned-output

憑證到期後,再次執行 get-session-token 指令,然後將返回的值匯出至環境變數或設定檔組態中。

最好的做法是在背景中執行指令碼或執行 cron 作業,在 get-session-token 指令輸出中檢查是否到期。如果 MFA 權杖已過期,請確定指令碼或 cron 工作提示重新驗證。

當您使用命名設定檔進行驗證時,請指定 —profile 選項,然後指定設定檔名稱,以驗證 API 呼叫是否使用 MFA 進行驗證。

相關資訊

如何重設丟失或損壞的 MFA 裝置以供我的 IAM 使用者或 AWS 帳戶根使用者使用?

如何針對使用 AWS 管理主控台和 AWS CLI 的 IAM 使用者強制執行 MFA 驗證?