Как я могу объединить AWS в цепочку, я - вызовы API AssumeRole?

Существует много учетных записей AWS, которыми я не управляю. Я сделал, чтобы владельцы учетных записей развернулись, я ЯВЛЯЕТСЯ Ролью, TrustingSecurityAuditor, в их учетные записи, который предоставляет праву принять TrustingSecurityAuditor роль к другому я - роль в своей учетной записи AWS, TrustedSecurityAuditor. (Документы о делегировании доступа)

Это работает отлично и позволяет мне и моей службе безопасности предоставлять услуги аудита безопасности этим другим владельцам счетов в компании. Чтобы сделать это, мы вращаем ec2 экземпляр с TrustedSecurityAuditor Я - роль, и наш код запрашивает временные учетные данные из каждой из учетных записей с помощью STS путем выполнения AssumeRole в каждую учетную запись TrustingSecurityAuditor роль.

Теперь я хочу создать дополнительную услугу, работающую на другом ec2 экземпляре в моей учетной записи, которая может не только принять роль этих "Доверчивых" учетных записей, но также и делает другие вещи в моей учетной записи, как доступ DynamoDB моей учетной записи, чтобы хранить информацию.

Если я подаю заявку TrustedSecurityAuditor роль к экземпляру, у меня нет локальных полномочий, в которых я нуждаюсь (как доступ DynamoDB).

Я не могу применить несколько, я - роли к экземпляру (если я не ошибаюсь).

Когда я пытаюсь создать новую роль, MyNewService, с доступом DynamoDB, который может AssumeRole к TrustedSecurityAuditor роль в надежде на затем использование тех учетных данных STS, чтобы сделать секунду AssumeRole к TrustingSecurityAuditor роль во внешней учетной записи я встречаюсь с этой проблемой:

Я могу AssumeRole от MyNewService роль к TrustedSecurityAuditor роль, но когда я делаю второе AssumeRole к TrustingSecurityAuditor роль AWS возвращает ошибку

Пользователь: arn:aws:sts:: 123456789012:assumed-role/TrustedSecurityAuditor/MyNewService не разрешен работать: sts:AssumeRole на ресурсе: arn:aws:i:: 123456789012:role/TrustingSecurityAuditor

Причина этого состоит в том что "пользователь", пытающийся AssumeRole

arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor/MyNewService

нет

arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor

То, что это подразумевает, - то, что Вы не можете объединить Ваш в цепочку AssumeRoles, потому что ARN, из которого происходит вызов, когда он прибывает из принятой роли, не является одной только принятой ролью, но принятой ролью с rolename assumer, застрявшим на конце.

Одно решение, которое я отказываюсь использовать, состоит в том, что я мог просто добавить полномочия, в которых я нуждаюсь, например, способность использовать DynamoDB для TrustedSecurityAuditor роль. Причина я отказываюсь, состоит в том, что мне только нужно это разрешение на MyNewService экземпляр, не на моем исходном экземпляре, который только делает аудит безопасности и не имеет никакой потребности получить доступ к DynamoDB.

Какие-либо предложения, как выполнить то, что я ищу?

2
задан 28 March 2019 в 01:05
1 ответ

Сценарий:

  • AccountA - ваша учетная запись
  • AccountB - учетная запись клиента
  • RoleA - роль вашей учетной записи для доступа к DynamoDB, вызова STS и т. Д.
  • RoleB - роль TrustedSecurityAuditor в AccountB

Вам нужно будет управлять двумя наборами учетных данных. Учетные данные A, которые создаются на основе роли IAM, назначенной экземпляру EC2. Используйте эти учетные данные для доступа к своим ресурсам, таким как DynamoDB. Учетные данные B, которые создаются через STS из RoleB. Используйте эти учетные данные для доступа к ресурсам ваших клиентов.

Затем вам нужно будет самостоятельно использовать учетные данные в зависимости от того, что вы хотите делать. Например, если вы используете Python, вы должны создать двух клиентов boto3 с разными учетными данными.

1
ответ дан 3 December 2019 в 12:46

Теги

Похожие вопросы