-1

我想向我们的新用户发送他们的 IAM 用户名和临时凭证,然后要求他们更改密码并要求他们配置自己的虚拟 MFA,然后才能访问控制台中的任何其他内容。

1)创建用户时,我显然可以生成一个临时密码并要求他们在第一次登录时更改它。Security Credentials-->Manage Password-->'Require user to create a new password at next sign-in'.

2) 以下策略将允许 IAM 用户更改自己的密码

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "iam:ChangePassword",
      "iam:GetAccountPasswordPolicy"
    ],
    "Resource": "*"
  }
}

3) 以下策略只允许用户管理自己的虚拟 mfa 设备

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUsersToCreateEnableResyncDeleteTheirOwnVirtualMFADevice",
      "Effect": "Allow",
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ResyncMFADevice",
        "iam:DeleteVirtualMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}",
        "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
      ]
    },
    {
      "Sid": "AllowUsersToDeactivateTheirOwnVirtualMFADevice",
      "Effect": "Allow",
      "Action": [
        "iam:DeactivateMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}",
        "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
      ],
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": true
        }
      }
    },
    {
      "Sid": "AllowUsersToListMFADevicesandUsersForConsole",
      "Effect": "Allow",
      "Action": [
        "iam:ListMFADevices",
        "iam:ListVirtualMFADevices",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}

使用上面的三种方法我可以要求他们更改密码并允许他们配置自己的虚拟 MFA 设备,我只是不知道是否有办法要求他们配置 MFA

4

2 回答 2

1

AWS 对此有一个书面答案:https ://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html

这是一个包含多个声明的单一策略:

  1. 允许列出所有用户和所有 MFA 设备。
  2. 允许仅列出您自己的用户和他们自己的 MFA 设备。
  3. 允许管理您自己的 MFA 设备。
  4. 如果您已使用 MFA 登录,则允许停用 MFA。
  5. 除非使用 MFA 登录,否则阻止访问其他所有内容。
于 2019-03-11T12:50:09.883 回答
0

我发布了完整的解决方案,因为它不是您是否需要 AWS IAM 账户的 MFA 的副本?,这非常有用,但不是允许新 IAM 用户登录控制台、更改密码并自行添加自己的虚拟 MFA的完整解决方案。

1) 创建托管策略以允许用户更改自己的密码

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "iam:ChangePassword",
      "iam:GetAccountPasswordPolicy"
    ],
    "Resource": "*"
  }
}

2) 创建托管策略以允许用户管理自己的虚拟 mfa 设备

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUsersToCreateEnableResyncDeleteTheirOwnVirtualMFADevice",
      "Effect": "Allow",
      "Action": [
        "iam:CreateVirtualMFADevice",
        "iam:EnableMFADevice",
        "iam:ResyncMFADevice",
        "iam:DeleteVirtualMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}",
        "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
      ]
    },
    {
      "Sid": "AllowUsersToDeactivateTheirOwnVirtualMFADevice",
      "Effect": "Allow",
      "Action": [
        "iam:DeactivateMFADevice"
      ],
      "Resource": [
        "arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}",
        "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
      ],
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": true
        }
      }
    },
    {
      "Sid": "AllowUsersToListMFADevicesandUsersForConsole",
      "Effect": "Allow",
      "Action": [
        "iam:ListMFADevices",
        "iam:ListVirtualMFADevices",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}

3) 将以下条件添加到您想要要求 MFA 的所有策略中:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "ReadOnlyEC2RequireMFA",
        "Action": [
            "ec2:Describe*"
        ],
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "Null": {
                "aws:MultiFactorAuthAge": "false"
            }
        }
    }]
}

4) 当您创建新的 IAM 用户并为其分配密码时,选中“要求用户在下次登录时创建新密码”框并应用上述三个托管策略(或将托管策略分配给一个组并添加用户加入组)。

现在将用户名和临时密码分发给新的 IAM 用户。当他们登录时,它会提示他们更改密码,然后他们将只能进入 IAM,选择自己的用户帐户并添加自己的 MFA 设备。他们将需要注销并使用 MFA 重新登录以获取ec2:Describe*权限。

于 2016-07-08T14:48:25.870 回答