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

9

我有一些管理员账户供开发人员使用,他们应该能够管理所有的aws资源,但不能管理用户/根属性。因此,我通过以下策略限制了对IAM的访问:

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

然而这个方法会阻止用户更改他们自己的密码。我该如何在IAM中阻止他们但允许更改密码?


请注意,IAM 不建议允许用户在没有 MFA 的情况下更改密码,因为这可能会存在安全风险。查看我在另一个问题中的回答,了解如何配置一个策略,要求大多数操作需要 MFA,但允许用户更改自己的密码。 - evan.bovie
2个回答

8

您所分配的策略授予了访问所有操作的权限,除了AWS身份和访问管理(IAM)的操作。

因此,为了允许用户更改密码,请将另一个(附加的)策略附加到用户/组,授予更改密码的权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SomeSID",
            "Effect": "Allow",
            "Action": [
                "iam:ChangePassword"
            ],
            "Resource": "arn:aws:iam::account-id-without-hyphens:user/${aws:username}"
        }
    ]
}

尽管“deny”通常会覆盖“allow”,但原始策略并未使用“deny”--它仅授予权限,允许所有内容,除了 IAM。因此,额外的“allow”将授予所需的权限。


2

亚马逊提供了一个示例策略,不需要为每个用户手动指定用户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 权限。

一个更好的选择是启用密码策略并勾选“允许用户更改自己的密码”框;这个选项恰如其分,没有任何混乱。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接