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

2 分的閱讀內容
0

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

簡短描述

下列 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 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

由於 aws:MultiFactorAuthPresent 索引鍵不存在於長期憑證請求中,因此索引鍵不會拒絕對請求的存取。如果政策中的索引鍵未使用布林值條件運算子,則值不相符。

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

若要使用 AWS CLI 強制執行 MFA 驗證,請新增 IfExists 條件運算子來檢查請求中是否有 MultiFactorAuthPresent 索引鍵。布林值條件可讓您使用設定為 truefalse 的索引鍵值來限制存取。如果請求中沒有 MultiFactorAuthPresent 索引鍵,則 IfExists 會將條件元素評估為 true

IAM 政策範例:

{
    "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": {
        "BoolIfExists": {
            "aws:MultiFactorAuthPresent": "false",
            "aws:ViaAWSService": "false"
        }
    }
}

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

相關資訊

如何要求其他 AWS 帳戶的使用者使用 MFA 存取我的 Amazon S3 儲存貯體?

使用多重要素驗證

在 AWS CLI 或 AWS API 中指派 MFA 裝置