我想在 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:MultiFactorAuthPresent
为true
。这是一个完善的安全措施,用户不能禁用 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 一起使用的]