0

我想在 AWS 组织中启用 MFA 并允许用户仅管理他们自己的 MFA 设备。但我希望用户能够通过 API/CLI(而不是使用 AWS 控制台)管理设备。

我在 AWS 文档中找到了这个策略,它几乎很好,因为它允许创建/启用/删除自己的 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
        }
      }
    }
  ]
}

但是,对于设备停用 ( iam:DeactivateMFADevice),它需要条件aws:MultiFactorAuthPresenttrue。这是一个完善的安全措施,用户不能禁用 MFA,而不使用 MFA。但在此策略中,当使用 STS 通过 API/CLI 使用 MFA 登录并承担角色时,资源"arn:aws:iam::account-id-without-hyphens:mfa/${aws:username}"并不代表实际资源,因为${aws:username} 它不存在。我想当以用户身份使用 AWS 控制台时,布尔值aws:MultiFactorAuthPresent可以为真。但据我所知,使用 API/CLI 是不可能同时aws:MultiFactorAuthPresent==true存在${aws:username}的。

那么,我可以编写什么策略来仅授权用户在使用 MFA 时禁用他们的设备,但是当他们承担角色时?

[免责声明,这是与awless CLI 一起使用的]

4

0 回答 0