我希望属于特定组的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?还有另一种方法来实现我的用例吗?
答案 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
允许删除访问密钥,因为每个帐户有两个密钥的配额