AWS IAM策略允许用户在阻止对IAM的访问时更改自己的密码

时间:2014-12-03 11:08:55

标签: amazon-web-services passwords amazon-iam

我为我的开发人员设置了一些管理帐户,这些帐户应该能够管理所有aws资源但不应该能够管理用户/ root属性。因此,我通过以下政策限制了对IAM的访问:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "NotAction": "iam:*",
      "Resource": "*"
    }
  ]
}

然而,这会阻止用户更改自己的密码。如何阻止它们进入IAM,但允许他们更改密码?

2 个答案:

答案 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权限。

更好的选择是启用密码策略并选中“允许用户更改自己的密码”框;这与锡上所说的一模一样,没有任何笨拙的感觉。