查找AWS Access Key的所有者

tim*_*bat 24 security amazon-web-services

我有一个使用AWS Access Key将服务推送到S3的服务.我将落实该服务,我有AWS Access Key和Secret.但是,我无法在帐户的IAM或安全凭证中找到此密钥.

有没有办法枚举整个AWS账户的所有访问密钥?

小智 39

如果您无权访问帐户的主要访问密钥,但确实拥有对IAM具有足够访问权限的访问密钥,则可以枚举帐户中的所有用户,然后列出每个用户的访问密钥.例如:

for user in $(aws iam list-users --output text | awk '{print $NF}'); do
    aws iam list-access-keys --user $user --output text
done
Run Code Online (Sandbox Code Playgroud)

  • 实际上,您不需要运行多个命令。您可以通过以下方式获取用户名:`aws iam get-access-key-last-used --access-key-id $AWS_ACCESS_KEY_ID --query 'UserName' --output text`。 (3认同)
  • 大.为我工作.获取用户列表的一个可能的改进:`$(aws iam list-users --query'Users [*] .UserName'-output text)`而不是管道到`awk`并希望用户名始终在最后一栏. (2认同)

har*_*are 10

要回答“查找 AWS 访问密钥的所有者”标题中提出的问题,请检查所有者,从而检查密钥是否存在:

aws iam get-access-key-last-used --access-key-id $AWS_ACCESS_KEY_ID --query 'UserName' --output text
Run Code Online (Sandbox Code Playgroud)

请注意,如果找到,它将返回退出代码零,如果没有,则返回非零。这是 @dols3m 对当前接受的答案的评论中建议的方法,更多详细信息位于get-access-key-last-used 的文档中。

要枚举帐户中的所有密钥,请执行以下操作:

for user in $(aws iam list-users --query 'Users[*].UserName' --output text); do
  aws iam list-access-keys --user $user --query "AccessKeyMetadata[].AccessKeyId" --output text
done
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅list-users和list-access-keys的文档。


nng*_*eek 9

如果您只想查找访问密钥ID的所有者,更简单的方法就是使用AWS CLI和密钥ID和密钥来访问随机AWS服务.AWS CLI将抛出Access Denied错误,其中包含Access Key的所有者信息的完整详细信息,如下所示:

$ aws iam get-user
An error occurred (AccessDenied) when calling the GetUser operation: 
User: arn:aws:iam::xxxxxxx:user/xxxx is not authorized to perform: 
iam:GetUser on resource: user xxxxx

从错误消息中,您将拥有帐户ID,即用户名.


Sri*_*bat 5

在Web控制台中进行反向查询

如果您没有耐心或信心来创建脚本,那么很容易会错过可以进行反向查找以至少找到拥有特定密钥的用户的想法。我知道一个用户可以有几个键,但是它会大大减少搜索空间。

在此处输入图片说明

https://console.aws.amazon.com/iam/home?region=us-east-1#/users

  • 看来“按访问密钥搜索”部分在新的 IAM 控制台中已被弃用=/ (4认同)
  • 这是最简单的搜索方法。 (2认同)