如何要求使用 AWS CLI 的 IAM 使用者進行 MFA 驗證?

1 分的閱讀內容
0

我建立了多重要素驗證 (MFA) 條件政策,以限制 AWS Identity and Access Management (IAM) 使用者對 AWS 服務的存取。該政策適用於 AWS 管理主控台,但不適用於 AWS Command Line Interface (AWS CLI)。如何搭配 AWS CLI 使用 MFA?

簡短描述

下列 IAM 政策範例要求 IAM 使用者使用 MFA 來存取特定的 AWS 服務:

{
  "Sid": "BlockMostAccessUnlessSignedInWithMFA",
  "Effect": "Deny",
  "NotAction": [
    "iam:CreateVirtualMFADevice",
    "iam:DeleteVirtualMFADevice",
    "iam:ListVirtualMFADevices",
    "iam:EnableMFADevice",
    "iam:ResyncMFADevice",
    "iam:ListAccountAliases",
    "iam:ListUsers",
    "iam:ListSSHPublicKeys",
    "iam:ListAccessKeys",
    "iam:ListServiceSpecificCredentials",
    "iam:ListMFADevices",
    "iam:GetAccountSummary",
    "sts:GetSessionToken"
  ],
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:MultiFactorAuthPresent": "false",
      "aws:ViaAWSService": "false"
    }
  }
}

系統會提示使用 AWS 管理主控台的 IAM 使用者輸入 MFA 驗證憑證,然後便可存取 AWS 服務。不過,系統不會提示使用 AWS CLI 的 IAM 使用者輸入 MFA 驗證憑證,這類使用者可以存取 AWS 服務。

解決方法

**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI

使用長期憑證發出的請求中不存在 MultiFactorAuthPresent 索引鍵。使用布林值條件運算子時,如果政策中的索引鍵不存在,則值不相符。MultiFactorAuthPresent 索引鍵不會拒絕存取使用長期憑證發出的請求。

使用 AWS 管理主控台的 IAM 使用者會產生臨時憑證,並且僅在使用 MFA 時允許存取。

布林值條件可讓您使用設定為 truefalse 的索引鍵值來限制存取。您可以新增 IfExists 條件運算子來檢查請求中是否存在 MultiFactorAuthPresent 索引鍵。如果 MultiFactorAuthPresent 索引鍵不存在,IfExists 將條件元素評估為 true,類似於以下內容:

"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false", "aws:ViaAWSService":"false"} }

**注意:**使用 AWS CLI 與長期憑證的 IAM 使用者會遭到拒絕存取,必須使用 MFA 進行驗證。因此,請務必使用 MFA 權杖來驗證您的 CLI 工作階段


相關資訊

使用多重要素驗證

AssumeRole

啟用和管理虛擬 MFA 裝置 (AWS CLI 或 AWS API)

AWS 官方
AWS 官方已更新 2 年前