Как программно создавать роли в учетных записях организации AWS - PullRequest
0 голосов
/ 04 октября 2019

Я хочу разделить ресурсы AWS для мультитенантного SaaS на отдельные учетные записи в Организации AWS.

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

Чтобы позволить разработчикам построить платформу и иметь возможность отладки работающей системы, я хочу использовать подход типа концентратора и спицы для контроля доступа с использованием федеративного IdP, аналогичный описанному здесь: https://segment.com/blog/secure-access-to-100-aws-accounts/.

В частности, у меня будет учетная запись identity, которая будет связана с Okta. Пользователи будут проходить аутентификацию в этой учетной записи, а затем использовать sts:assume-role для перехода к ролям в других учетных записях. Обратите внимание, что мне нужна отдельная учетная запись identity, и пользователи не должны проходить проверку подлинности для учетной записи master в организации (таким образом, в организации у нас есть учетные записи master и identity, а также подразделения с каждой соответствующей учетной записью). .

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

Как создать роли в новых учетных записях, которые разработчики могут принять из identity учетная запись? Учетные записи участников имеют роль, называемую OrganizationAccountAccessRole, автоматически создаваемую (см. здесь, для получения подробной информации ), но она настроена так, чтобы быть доступной только из основной учетной записи, и она обеспечивает доступ к всему в этомучетная запись. Как я могу позволить разработчику в учетной записи identity программно создавать новые учетные записи и роли в них без предоставления таких всесторонних разрешений (у них должно быть не больше разрешений для выполнения этой задачи, чем необходимо). Я не думаю, что могу взять на себя роль в учетной записи master из учетной записи identity, а затем принять на себя роль в третьей учетной записи?

РЕДАКТИРОВАТЬ: меня действительно интересуют только ответы на этот адресшаги / конфигурация, необходимые для достижения решения, которое я описываю.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Я бы сказал, что элегантным решением является использование Сервисного каталога AWS , который позволяет создавать каталоги сервисов, которые одобрены для использования в вашей среде AWS, и управлять ими. На самом деле, настройки, описанные в этой записи в блоге AWS , могут быть настроены для достижения того, что вы хотите. В нем приведен пример создания продукта Account Builder, который при запуске вашими конечными пользователями использует лямбда-сценарий AWS для:

  1. Предоставления учетной записи члена AWS
  2. Принятие организационной роли дляучетная запись
  3. Используйте шаблон CloudFormation для настройки учетной записи (в вашем случае, для создания дополнительных ролей IAM)

Вы можете настроить ее, даже удалив учетную запись организационной роли, когдавсе готово.

Предоставляется исходный код для функции Lambda вместе с шаблонами CloudFormation, которые можно настроить для получения именно того поведения, которое вы ищете.

Надеюсь, это поможет.

0 голосов
/ 04 октября 2019

Cloudformation StackSets решает эту проблему.

В основном, следующие шаги:

  1. Настройка ролей в дочерних учетных записях , у которого есть разрешения на развертывание ресурса с доверительным отношением к роли родительской учетной записи (из которой вы развертываете)

  2. Создание StackSet в родительской учетной записи и развертывание шаблона Cloudformationв нее для выбранных учетных записей или организационных единиц (OU) или всей организации

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

...