Получить IAM userId от userArn - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть сценарий использования, когда несколько учетных записей aws отправляют сообщения в мою очередь sqs, и я хочу однозначно определить, кто и что отправил. В сообщении SQS я вижу Sender Account ID, который является userId для пользователя / роли IAM, который отправил сообщение.

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

<User>
  <UserId>AIDACKCEVSQ6C2EXAMPLE</UserId>
  <Path>/division_abc/subdivision_xyz/</Path>
  <UserName>Bob</UserName>
  <Arn>arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob</Arn>
  <CreateDate>2013-10-02T17:01:44Z</CreateDate>
  <PasswordLastUsed>2014-10-10T14:37:51Z</PasswordLastUsed>
</User>

This userId - это уникальный для чтения уникальный идентификатор, присутствующий для каждого пользователя / роли. Чего я хочу добиться, так это userArn, передавая userId. Эта документация предоставляет информацию о userId.

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

Если мы посмотрим на один из ответов API getUser, он будет выглядеть примерно так -

1 Ответ

1 голос
/ 21 апреля 2020

AWS на самом деле не предоставляет подробности о том, "кто" делает что-то в учетной записи AWS. Если у пользователя есть достаточные разрешения для выполнения вызова API (например, SendMessage() для отправки сообщения в очередь SNS), именно AWS Account фактически отправляет сообщение, а не отдельный пользователь.

То же самое касается объектов, хранящихся в Amazon S3 (нет «пользователя», которому принадлежит объект), и экземпляров Amazon EC2 (нет «владельца» экземпляра).

Единственное место, где вы можете определить, кто что делает, находится в AWS CloudTrail , который предоставляет контрольный журнал вызовов API. Он будет отображать каждый вызов API с отметкой времени и сведениями о пользователе, который сделал запрос.

В вашем сообщении SQS Sender Account ID - это идентификатор учетной записи AWS, которая использовалась отправителем. Это не идентификатор конкретного пользователя (только учетная запись AWS, которую он использовал).

...