Менеджер секретов - ротация секретов с лямбдой в другом аккаунте
В проекте, над которым я работаю, секреты хранятся в централизованном диспетчере секретов компании в конкретной учетной записи 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