Найти владельца ключа доступа AWS

У меня есть служба, которая использует ключ доступа AWS, чтобы передать материал S3. Я собираюсь закатить службу, и у меня есть ключ доступа и секретность AWS. Однако я не могу найти этот ключ в IAM или учетных данных безопасности для учетной записи.

Есть ли способ перечислить все ключи доступа для всей учетной записи AWS?

Ответ 1

Если у вас нет доступа к ключу основного доступа к учетной записи, но у вас есть ключ доступа с достаточным доступом к IAM, вы можете перечислить всех пользователей в учетной записи и затем перечислить ключи доступа для каждого из них. Например:

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

Ответ 2

Если вы просто хотите найти владельца идентификатора ключа доступа, более простой прием - использовать интерфейс командной строки AWS с идентификатором ключа и ключом для доступа к случайной службе AWS. AWS CLI выдаст ошибку "Отказано в доступе", которая содержит полную информацию о владельце ключа доступа, как показано ниже:

$ 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

Из сообщения об ошибке у вас будет идентификатор учетной записи, имя пользователя.

Ответ 3

Обратный поиск в веб-консоли

Если у вас нет терпения или уверенности в создании сценария, легко не заметить, что вы можете выполнить обратный поиск, чтобы хотя бы найти пользователя, которому принадлежит определенный ключ. Я знаю, что у пользователя может быть несколько ключей, но это резко сокращает пространство поиска.

enter image description here

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

Ответ 4

Вы можете использовать интерфейс командной строки AWS для перечисления всех ключей доступа для определенной учетной записи.

Этапы показаны здесь с несколькими примерами.

Если вы не укажете имя пользователя IAM и используете основной ключ доступа к учетной записи для запуска запроса, он должен отобразить все те, которые связаны с вашей учетной записью AWS.

Ответ 5

Мне нравится решение Джонатана Каменса, но код возвращает список всех ключей и их владельцев.

Я сделал скрипт для получения имени пользователя по ключу доступа. Посмотрите:

#!/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

Ответ 6

Вы можете использовать инструмент find-iam-user-by-key, чтобы найти любого пользователя по ключу, даже если у вас несколько учетных записей.

Пример вывода:

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

Ответ 7

Вы можете перечислить все ключи доступа с помощью следующей команды:

aws iam list-access-keys

то вы можете grep его пользователем.

Чтобы отобразить только ключи, попробуйте (увеличьте 100, если у вас больше пользователей):

while read meta key date status user; do
  echo $key;
done < <(aws iam list-access-keys --output text --page-size 100)