AWS SecretsManager list_secret_version_ids в функции поворота лямбда Возвращает AccessDeniedException

Я пишу пользовательскую лямбда-функцию для реализации универсального алгоритма вращения ключей для использования в SecretsManager.

Лямбда-функция python отлично работает при локальном запуске в моей среде разработки pycharm, однако, когда я вставляю ее в лямбда-консоль и развертываю, я получаю исключение AccessDeniedException при выполнении команды "Немедленно повернуть секрет" в SecretsManager. Код нарушения:

 resp = service_client.list_secret_version_ids(SecretId=arn, IncludeDeprecated=True)

Зарегистрированный пользователь входит в группу с присоединенной политикой AdministratorAccess. Я также добавил политику SecretsManagerReadWrite для пинков.

Я печатаю сообщение об ошибке, которое включает в себя секретный код, и оно правильное. Этот код вызывается из метода finishSecret после завершения "нормального" кода, поэтому секрет действительно вращается нормально. Однако я добавил собственный код, чтобы гарантировать, что версии будут храниться в течение 2 лет (назначив стадии версий, чтобы SM не удалял их). Для этого мне нужен метод list-secret-version-ids.

Есть ли какие-то ограничения на эту функцию при вызове из SecretsManager?

Есть идеи?

1 ответ

Я решил эту проблему. По-видимому, роль IAM по умолчанию, назначенная лямбда-функции, когда я ее создавал, не включала разрешения на запуск метода ListSecretversionIds. Я следил за разделом "Создание функции ротации Lambda с использованием шаблона AWS Serverless Application Repository" в Руководстве пользователя AWS SecretsManager (начиная со стр. 84).

Итак, чтобы добавить разрешение:

1. Bring up the lambda function just created 
2. Click the Permissions tab
3. Click the role that was assigned (at top of page)
4. On the Permissions tab (already displayed)
    1. Click Show 2 more
    2. Open SecretsManagerRotationTemplateRolePolicy1
    3. Click [Edit Policy] button
    4. Click [JSON] 
    5. Add "secretsmanager:ListSecretVersionIds” to the list of Actions allowed so it looks like:
            "Action": [ 
                "secretsmanager:DescribeSecret",
                "secretsmanager:GetSecretValue",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage",
                "secretsmanager:ListSecretVersionIds"
            ],
    6. Click [Review...]
    7. Click [Save Changes]

Или, если вы брезгливо редактируете JSON, вы можете вместо этого использовать интерактивный подход на вкладке "Визуальный редактор".

Другие вопросы по тегам