AWS IAM:为基于身份的策略添加“执行”

问题描述

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策略中添加一个例外/条件,说明“对于此特定用户,请不要应用此拒绝”)

预先感谢

解决方法

您可以为您的机器人用户创建标签,并添加另一个条件,为您的服务帐户添加标签以进行识别。

{
   "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结合使用将有效!