Подключение к ресурсам 2 разных AWS учетных записей через роли - PullRequest
0 голосов
/ 24 марта 2020

Рассмотрим 2 AWS учетные записи A (Другая команда) и B (Моя). В моем случае я должен опрашивать очереди в учетной записи A AWS для получения полезной нагрузки и выполнять операции с базой данных в B. Чтобы сделать это, я иметь роль, созданную в B, имеющую доступ к моим базам данных + идентификатор учетной записи A в качестве доверительных отношений. Точно так же A создал роль для предоставления доступа к очереди в A +, добавил B в качестве доверительных отношений.

Код для выполнения всех действий опроса + базы данных будет находиться на EC2 в моей учетной записи (B). Теперь, как мне использовать полезные нагрузки и выполнять операции с точки зрения роли. Правильно ли мое понимание?

  1. Предположим, роль A
  2. Опрос для очереди подготовки, получить полезную нагрузку JSON из SQS
  3. Предположим роль B
  4. Выполните операции с базой данных в Oracle RDS
  5. Примите роль A
  6. Возвратите ответ на ответ SQS
  7. Снова начните опрос в очереди обеспечения SQS

К вашему сведению: я выполняю вышеуказанные операции, используя Python + Boto3

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Вместо того, чтобы брать на себя роли, вы можете предоставить Межсчетовой доступ к очередям в учетной записи A пользователю / роли в учетной записи B.

В вашем случае предоставьте его EC2 Роль экземпляра, и тогда вы сможете выполнять все необходимые операции изнутри экземпляра без каких-либо уловок «Принять роль».

0 голосов
/ 26 марта 2020

Представьте на мгновение, что все происходило в вашей собственной учетной записи (Account-B).

Вы бы дали набор учетных данных для своего кода (либо пользователя IAM, либо, если код выполняется на для экземпляра Amazon EC2 вы должны назначить ему роль IAM, которую он может использовать для доступа к необходимым ресурсам в учетной записи B. Таким образом, никаких проблем нет.

Единственное дополнительное требование - это то, что вы sh чтобы получить доступ к Amazon SQS в Account-A. Случается, что вы можете добавить разрешения непосредственно в очередь Amazon SQS , которая предоставляет доступ к нескольким учетным записям.

См .: Основы c Примеры политик IAM для Amazon SQS - Amazon Simple Queue Service

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

0 голосов
/ 24 марта 2020

Вы не говорите, какой язык программирования или SDK вы используете, но по сути вы можете создать два объекта клиент / служба, один из которых использует учетные данные из роли A, а другой из роли B. Затем просто выполните вызовы API с помощью соответствующего клиента. / объект службы.

Использование boto3, например:

sqs_accounta = boto3.client(
    'sqs',
    region_name='us-east-1',
    aws_access_key_id=xxx,
    aws_secret_access_key=yyy,
    aws_session_token=zzz
)

rds_accountb = boto3.client(
    'rds',
    region_name='us-west-2',
    aws_access_key_id=aaa,
    aws_secret_access_key=bbb,
    aws_session_token=ccc
)
...