允许AWS用户创建自己的第一个访问密钥

4
我希望我的AWS IAM用户能够管理自己的凭证,包括创建他们的第一个访问密钥。但要求他们不能获得其他权限,如列出账户的用户。
看起来控制台访问不是一个选项,因为它需要我不想授予的权限(如ListUsers)。
因此,我尝试了AWS CLI选项,并根据AWS文档建议添加了以下策略。
{
  "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}"
  }
}

这个方法很好,但似乎AWS CLI需要一个访问密钥来登录(我的用户还没有这个,我希望他们自己创建访问密钥)。

作为一种解决方法,我为他们创建访问密钥,然后要求他们更改它,但这相当麻烦。

有没有一种方法可以使用用户名和密码登录AWS CLI?还有其他实现我的用例的方法吗?


对于甚至无法查看用户列表的限制似乎是不必要的,但鉴于此,如果您省略该权限并告诉用户名为example的用户登录到控制台,然后直接导航到https://console.aws.amazon.com/iam/home?region=us-east-1#/users/example?section=security_credentials,似乎可以绕过列出用户的需求。如果用户聪明地篡改URL,它将失败--他们只能查看自己的详细信息。请参考:http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html - Michael - sqlbot
@Michael-sqlbot 很不幸,这个方法不起作用,创建 API 密钥的按钮是灰色的。 - coffee_machine
1个回答

6

我遇到了类似的问题。我希望我的非root用户能够更改他们的密码和更改(创建/使无效/删除)他们CLI访问的访问密钥。但是,这些用户必须不能列出用户或显示/执行其他用户的任何操作。

我尝试实现最小策略的JSON如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "iam:DeleteAccessKey",
        "iam:ChangePassword",
        "iam:CreateAccessKey",
        "iam:ListAccessKeys"
      ],
      "Resource": "arn:aws:iam::*:user/${aws:username}"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": "iam:GetAccountPasswordPolicy",
      "Resource": "*"
    }
  ]
}

以下是针对像我这样的 AWS 新手的一些解释:

  • IAM > 策略 > 创建策略 中创建了一个自定义策略。我选择了相关权限,添加了资源范围,然后将该权限分配给我的用户组。

  • iam:ChangePassword 显然是密码更改权限,由资源 = "arn:aws:iam::*:user/${aws:username}" 限制为仅适用于当前用户。如果您需要限制到特定帐户,请使用不带连字符的帐户 ID 替换 *。 如 AWS 文档中所述,iam:GetAccountPasswordPolicy 是必需的。

    来源:

  • iam:*AccessKey 同样可以管理当前用户的访问密钥:

    • create 允许创建新的密钥,以便管理员不知道密钥
    • update 允许“使不活动”操作
    • delete 允许删除访问密钥,因为每个帐户有两个密钥的配额

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