Man*_*uel 7 passwords amazon-web-services amazon-iam
我为我的开发人员提供了一些管理帐户,他们应该能够管理所有aws资源但不应该能够管理用户/ root属性.因此,我通过以下政策限制了对IAM的访问:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是这会阻止用户更改自己的密码.如何阻止它们进入IAM但允许他们更改密码?
您指定的策略授予对AWS Identity and Access Management(IAM)以外的所有操作的访问权限.
因此,要允许用户更改其密码,请将另一个(附加)策略附加到授予更改密码权限的用户/组:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SomeSID",
"Effect": "Allow",
"Action": [
"iam:ChangePassword"
],
"Resource": [
"*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
虽然"拒绝"通常会覆盖"允许",但原始策略并未使用拒绝 - 它仅仅授予除 IAM 之外的所有内容的权限.因此,附加的"允许"将授予所需的权限.
Amazon提供了一个示例策略,不需要为每个用户手动指定用户 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": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,更改密码(至少在初始登录期间,当创建用户时勾选“首次登录时需要更改密码”时)似乎仍然需要权限iam:ChangePassword。
更好的选择是启用密码策略并选中“允许用户更改自己的密码”框;这完全按照罐头上的说明进行操作,没有任何摸索。