我想在 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,請完成下列步驟:
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Users (使用者),然後選擇您的 IAM 使用者。
- 在 Summary (摘要) 頁面上,選擇 Security credentials (安全性憑證) 標籤。
- 在 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 驗證?