【问题标题】:AWS IAM Policy to Allow Users to Change their own Passwords while Blocking Access to IAM允许用户更改自己的密码同时阻止访问 IAM 的 AWS IAM 策略
【发布时间】:2015-01-31 22:12:16
【问题描述】:
我的开发人员有一些管理帐户,他们应该能够管理所有 aws 资源,但不能管理用户/根属性。因此,我通过以下策略限制了对 IAM 的访问:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
}
]
}
但是,这会阻止用户更改自己的密码。如何阻止他们访问 IAM,但允许他们更改密码?
【问题讨论】:
标签:
amazon-web-services
passwords
amazon-iam
【解决方案1】:
您分配的策略授予对除 AWS Identity and Access Management (IAM) 之外的所有操作的访问权限。
因此,要允许用户更改密码,请向授予更改密码权限的用户/组附加另一个(附加)策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SomeSID",
"Effect": "Allow",
"Action": [
"iam:ChangePassword"
],
"Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
}
]
}
虽然“拒绝”通常会覆盖“允许”,但原始策略并没有使用拒绝 - 它只是授予所有除了 IAM 的权限。因此,额外的“允许”将授予所需的权限。
【解决方案2】:
Amazon 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 权限。
更好的选择是启用密码策略并选中“允许用户更改自己的密码”框;这和它在罐头上说的完全一样,没有摸索。