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

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

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

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

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

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

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

Любые идеи?


person DSadaka    schedule 13.10.2020    source источник


Ответы (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, вы можете вместо этого использовать интерактивный подход на вкладке «Визуальный редактор».

person DSadaka    schedule 15.10.2020