查找AWS Access Key的所有者

时间:2014-06-04 03:41:05

标签: security amazon-web-services

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

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

8 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:8)

如果您只想查找访问密钥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,即用户名。

答案 2 :(得分:3)

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

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

enter image description here

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

答案 3 :(得分:0)

您可以使用AWS命令行界面枚举特定帐户的所有访问密钥。

步骤are shown here,举几个例子。

如果您未指定IAM用户名并使用您帐户的主要访问密钥来触发请求,则应列出与您的AWS账户关联的所有用户名。

答案 4 :(得分:0)

我喜欢Jonathan Kamens的解决方案,但是代码返回了所有密钥及其所有者的列表。

我制作了一个外壳脚本,用于通过访问密钥ID获取用户名。看:

#!/bin/bash

# exit when the command fails
set -o errexit;

# exit when try to use undeclared var
set -o nounset;

accessKeyToSearch=${1?"Usage: bash $0 AccessKeyId"}

for username in $(aws iam list-users --query 'Users[*].UserName' --output text); do
    for accessKeyId in $(aws iam list-access-keys --user-name $username --query 'AccessKeyMetadata[*].AccessKeyId' --output text); do
        if [ "$accessKeyToSearch" = "$accessKeyId" ]; then
            echo $username;
            break;
        fi;
    done;
done;

您还可以在我的GitHub Gist中看到脚本:https://gist.github.com/cauealvesbraz/1121c0a0375648db13b137b31ef8955d

答案 5 :(得分:0)

❯ aws --profile my-aws-account iam get-user
{
    "User": {
        "Path": "/",
        "UserName": "my-username",
        "UserId": XXXXXX",
        "Arn": "arn:aws:iam::000000000000:user/my-username",
        "CreateDate": "2019-10-27T08:53:53Z"
    }
}

aws iam get-user --query'User.Arn'

答案 6 :(得分:0)

要回答标题“查找AWS Access Key的所有者”中提出的问题,请检查所有者,并因此使用以下命令检查密钥是否存在:

aws iam get-access-key-last-used --access-key-id $AWS_ACCESS_KEY_ID --query 'UserName' --output text

请注意,如果找到,它将返回退出代码,零则返回,否则返回非零。这是@ 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

有关更多信息,请参见list-userslist-access-keys的文档。

答案 7 :(得分:-1)

即使您拥有多个帐户,也可以使用find-iam-user-by-key工具按键查找任何用户。

输出示例:

$ ./find_user_by_key BENEEP2THOOLAI8OOKOH
./database/default:ACCESSKEYMETADATA    BENEEP2THOOLAI8OOKOH    2014-09-11T23:22:53Z    Active  stanislav.rudenko