Проблемы с обновлением IAM, чтобы разрешить AWS Glue доступ к AWS Secrets Manager

Я работаю над проектом, который требует, чтобы сценарий AWS Glue Python имел доступ к AWS Secrets Manager.

Я попытался предоставить Glue разрешения для этого через IAM, но не понимаю, как это сделать; Я вижу строки разрешений, показывающие, что у Lambda есть доступ, но я не вижу способа их редактировать.

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

Мой запасной обходной путь - захватить секрет через крошечный Lambda и передать его через S3 в Glue ... но это должно быть выполнено напрямую. Любая помощь, которую вы можете оказать, очень приветствуется!


person Mark McWiggins    schedule 11.05.2020    source источник


Ответы (2)


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

После добавления политики к роли IAM, связанной с AWS Glue, добавьте следующий фрагмент кода, чтобы прочитать учетные данные от секретного менеджера:

# Getting DB credentials from Secrets Manager
client = boto3.client("secretsmanager", region_name="us-west-2")

get_secret_value_response = client.get_secret_value(
        SecretId="mysecrets-info"   <--name as configured in secrets manager
)

secret = get_secret_value_response['SecretString']
secret = json.loads(secret)

uname = secret.get('username')
pwd = secret.get('password')
url = secret.get('host')

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

person Yuva    schedule 11.05.2020
comment
Эта политика SecretsManagerReadWrite привязана к роли ... но я не могу редактировать политику, и она указывает только доступ Lambda ... звоните в колокола? - person Mark McWiggins; 11.05.2020
comment
вы не можете редактировать эту политику SecretsManagerReadWrite, поскольку это политика AWS Managed, и ее достаточно, если вы прикрепите ее к своей роли IAM, связанной с AWS Glue. Можете ли вы показать сообщение об ошибке, которое вы получаете после добавления приведенного выше кода в ваш склеивающий скрипт? - person Yuva; 12.05.2020

Политика SecretsManagerReadWrite не предоставляет разрешения только для Lambda. Я думаю, вы, возможно, смотрите на второй оператор, который предоставляет разрешения Role для создания Lambdas (используется для создания Lambdas для ротации секретов).

Глядя на Glue в блоге для настройки заданий ETL, они также говорят, что вам нужно только добавить политику SecretsManagerReadWrite к роли Glue. Однако они также говорят, что это только для тестирования, и вы должны использовать политику, которая предоставляет только необходимые разрешения (например, используйте встроенную политику, которая предоставляет secretmanager: GetSecretValue с Resource, являющимся рассматриваемым секретом).

На самом деле вы не говорите, какое сообщение об ошибке видите. Это может быть полезно для выяснения того, что происходит не так.

person JoeB    schedule 25.05.2020