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

时间:2017-06-07 09:18:28

标签: amazon-web-services amazon-iam

我希望属于特定组的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?还有另一种方法来实现我的用例吗?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。我希望我的非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 > Policies > Create policy中创建了一个自定义策略。我获得了相关权限,添加了资源范围,然后将此权限分配给我的用户组。

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

    来源:

  • iam:*AccessKey也为当前用户管理访问密钥:

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