Менеджер секретов - ротация секретов с лямбдой в другом аккаунте

В проекте, над которым я работаю, секреты хранятся в централизованном диспетчере секретов компании в конкретной учетной записи AWS (SECRETS_ACCOUNT).

Ресурсы проекта (включая лямбда-функции) находятся в конкретной учетной записи проекта (PROJECT_ACCOUNT).

Я пытаюсь настроить ротацию секретов, но получаю сообщение об ошибке:

AccessDeniedException: Secrets Manager cannot invoke the specified Lambda function. Ensure that the function policy grants access to the principal secretsmanager.amazonaws.com.

Политика на основе лямбда-ресурсов:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "SecretsManager",
      "Effect": "Allow",
      "Principal": {
        "Service": "secretsmanager.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:eu-west-1:PROJECT_ACCOUNT:function:secret-rotation"
    }
  ]
}

Доверительные отношения лямбда-ролей:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Не знаю, имеет ли это значение, оба аккаунта находятся в одном регионе.

Я что-то пропустил? Нужно ли мне добавлять дополнительные разрешения, чтобы позволить диспетчеру секретов из другой учетной записи вызывать лямбду? Должны ли лямбда и секрет быть в одном аккаунте?

Заранее спасибо,

1 ответ

Выполните приведенную ниже команду, чтобы устранить ошибку « AccessDeniedException: Secrets Manager не может вызвать указанную функцию Lambda. Убедитесь, что политика функции предоставляет доступ к основному secrettsmanager.amazonaws.com ». в AWS Cli

aws lambda add-permission --function-name arn:aws:lambda:us-east-1:757147756798:function:"секретное имя здесь без кавычек" --principal secretsmanager.amazonaws.com --action lambda:InvokeFunction --statement-id SecretsManagerAccess

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