Пользователь IAM имеет доступ к корзине S3. Как получить доступ к этому из Lambda? - PullRequest
0 голосов
/ 29 июня 2019

У меня есть случай использования, когда пользователь IAM в Account-A имеет доступ к файлам в корзине S3 в Account-B.

Я хочу получить доступ к этим файлам из лямбда-функции в Account-A.

Нужно ли указывать учетные данные пользователя IAM при доступе к файлам? Есть ли другая альтернатива этому?

Ответы [ 2 ]

3 голосов
/ 29 июня 2019

Вы можете связать Роль IAM с лямбда-функцией AWS. Когда функция выполняется, она использует разрешения, связанные с этой ролью IAM.

Если ваша функция Lambda работает в Account-A и ей необходим доступ к объектам Amazon S3 в Account-B, есть два варианта:

  • Вариант 1. Добавьте политику Bucket в корзину в Account-B, которая разрешает роли IAM получить доступ к объектам, или
  • Вариант 2: Добавить роль IAM в Account-B, которая имеет доступ к корзине и дать разрешение для функции Lambda на принять роль . Функция Lambda будет иметь временные учетные данные для доступа к корзине.

Тот факт, что у вас есть пользователь IAM, который имеет доступ к объектам в Amazon S3, не помогает в этой ситуации, поскольку функция Lambda получает свои полномочия от роли IAM, а не от пользователя IAM.

0 голосов
/ 29 июня 2019

Лучший способ сделать это - создать роль выполнения Lambda в Account-A с любыми разрешениями, необходимыми для функции, например, принимая роль кросс-аккаунта в Account-B. В большинстве ситуаций, если Account-B желал предоставить разрешения пользователю IAM в Account-A, он должен подходить для предоставления роли IAM с аналогичными разрешениями, которые вы можете принять. Это гораздо безопаснее, чем использование ключа доступа IAM, поскольку нет постоянных учетных данных для утечки, только временные учетные данные, срок действия которых истекает максимум через 12 часов.

Если по какой-либо причине вы не можете изменить что-либо в Account-B, вы можете напрямую использовать существующего пользователя. Простейший способ сделать это будет заключаться в жестком кодировании идентификатора ключа доступа и секретного ключа доступа в Lambda, но это создает много проблем с точки зрения управления секретами. Теперь, если ваш код утек, данные в корзине Account-B будут скомпрометированы. AWS Secrets Manager - это неплохой нативный вариант для хранения ключей вне вашего кода, но для его включения в вашу функцию потребуется изучение некоторых вызовов API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...