我想在AWS组织中启用MFA,并允许用户仅管理自己的MFA设备。但我希望用户能够通过API / CLI管理设备(而不是使用AWS控制台)。
我在AWS文档中找到了this policy,这几乎是好的,因为它允许创建/启用/删除自己的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}
is not present。我想当使用AWS控制台作为用户时,布尔值aws:MultiFactorAuthPresent
可以为真。但据我所知,使用API / CLI时,不可能同时存在aws:MultiFactorAuthPresent==true
和${aws:username}
。
那么,我可以编写什么策略来授权用户在使用MFA时禁用他们的设备,但是当他们担任角色时?
[免责声明,这将与awless CLI]
一起使用