AWS IAM:为基于身份的策略添加 "exeption"

AWS IAM: Adding "exeption" for identity-based policy

以下 AWS documentation 我将策略附加到我的组 admin 以强制该组的权限仅适用于启用了 MFA 的用户

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BlockMostAccessUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": [
                "iam:CreateVirtualMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:ListVirtualMFADevices",
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ListMFADevices",
                "iam:ResyncMFADevice",
                "iam:GetAccountSummary",
                "sts:GetSessionToken"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

我的问题是我有一个机器人(我们称它为 arn:aws:iam::12345678:user/my-bot)是 admin 组并且它没有启用 MFA。目前我想到了这两个方案

  1. 将我的机器人放入不存在 EnforceMFA 策略的不同组(重复代码)
  2. 以某种方式为机器人启用 MFA(虽然我不喜欢那个选项)

有没有一种方法可以在我的 EnforceMFA 政策中添加一个 exception/condition 来表示“对于这个特定的用户不要应用这个拒绝”)

提前致谢

您可以为您的 bot 用户创建一个标签并添加另一个条件,标记您的服务帐户以识别它。

{
   "Condition": {
      "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                },
      "StringNotEqual": {
            "iam:ResourceTag/type": "bot"
      }
   }
}

另外创建一个拒绝更改用户标签的策略。

如果您只想排除特定用户,您可以使用 aws:PrincipalArn 全局条件您的策略对除指定用户之外的所有用户应用拒绝:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html

与 StringNotEqual 结合使用即可!