我为我的开发人员设置了一些管理帐户,这些帐户应该能够管理所有aws资源但不应该能够管理用户/ root属性。因此,我通过以下政策限制了对IAM的访问:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
然而,这会阻止用户更改自己的密码。如何阻止它们进入IAM,但允许他们更改密码?
答案 0 :(得分:6)
您指定的策略授予对AWS身份和访问管理(IAM)以外的所有操作的访问权限。
因此,要允许用户更改其密码,请将另一个(附加)策略附加到授予更改密码权限的用户/组:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SomeSID",
"Effect": "Allow",
"Action": [
"iam:ChangePassword"
],
"Resource": [
"*"
]
}
]
}
虽然“拒绝”通常会覆盖“允许”,但原始策略不使用拒绝 - 它仅仅授予除 IAM之外的所有内容的权限。因此,附加的“允许”将授予所需的权限。
答案 1 :(得分:0)
亚马逊provides an example policy,不需要为每个用户手动指定用户的ID:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:*LoginProfile",
"iam:*AccessKey*",
"iam:*SSHPublicKey*"
],
"Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
},
{
"Effect": "Allow",
"Action": [
"iam:ListAccount*",
"iam:GetAccountSummary",
"iam:GetAccountPasswordPolicy",
"iam:ListUsers"
],
"Resource": "*"
}
]
}
但是,更改密码(至少在初次登录时,在创建用户时勾选“首次登录时需要更改密码”)仍然需要iam:ChangePassword
权限。
更好的选择是启用密码策略并选中“允许用户更改自己的密码”框;这与锡上所说的一模一样,没有任何笨拙的感觉。