Ошибка: Менеджер секретов не может вызвать указанную лямбда-функцию. Убедитесь, что политика функции предоставляет доступ к основному secrettsmanager.amazonaws.com
Я использую диспетчер секретов для хранения своего ключа для проверки JWT.
Моя запланированная конфигурация состоит в том, чтобы заменить ключи устаревшими по следующей логике:
мой секрет выглядит так:
{
current:'my-current-secret',
previous:'my-previous-secret',
alg:'encoding alg',
}
* Казалось излишним использовать два секрета и чередовать их - я храню в памяти только токен previous
, чтобы обрабатывать второстепенные случаи для передачи. Если аутентификация не удалась, я проверю, проверяется ли он с помощью previous
, если это так, он вернет обновленный файл cookie с помощью ключа current
createSecret:
putSecretValue({
current: getRandomPassword(...),
previous: getSecretValue(...)['current'],
alg: env.param ? env.param : getSecretValue(...)['alg']
})
Я не использую setSecret
, testSecret
, finishSecret
Я не использую бессерверный (в какой-то момент, но я хотел сначала ознакомиться с AWS / GUI, прежде чем сокращать его с помощью CLI). Я посмотрел:
- Как предоставить доступ к ротации лямбда-выражения в AWS Secrets Manager
- https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-create-generic-template.html.
Я не могу понять, какой параметр IAM мне не хватает.
Когда я пытаюсь установить лямбда вращения:
Это мигает (так быстро, что мне пришлось записать свой экран, чтобы посмотреть):
И сразу получаю следующую ошибку:
Я начал с того, что предоставил лямбде полный контроль над secrets manager
и lambdas
, чтобы он работал в обратном направлении до минимальных элементов управления, но даже бросив в него кухонную раковину, я не смог заставить его работать:
{
"permissionsBoundary": {},
"roleName": "secrets_manager-role-REDACTED",
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"secretsmanager:GetRandomPassword",
"secretsmanager:CreateSecret",
"secretsmanager:ListSecrets"
],
"Resource": "*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "secretsmanager:*",
"Resource": "arn:aws:secretsmanager:us-east-1:REDACTED:secret:REDACTED"
}
]
},
"name": "ReadWriteREDACTEDSecret",
"id": "REDACTED",
"type": "managed",
"arn": "arn:aws:iam::REDACTED:policy/ReadWriteREDACTEDSecret"
},
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction",
"lambda:InvokeAsync"
],
"Resource": "arn:aws:lambda:us-east-1:REDACTED:function:secrets_manager"
}
]
},
"name": "invoke_secrets_manager_lambda",
"id": "REDACTED",
"type": "managed",
"arn": "arn:aws:iam::REDACTED:policy/invoke_secrets_manager_lambda"
},
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "logs:CreateLogGroup",
"Resource": "arn:aws:logs:us-east-1:REDACTED:*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:us-east-1:REDACTED:log-group:/aws/lambda/secrets_manager:*"
]
}
]
},
"name": "AWSLambdaBasicExecutionRole-REDACTED",
"id": "REDACTED",
"type": "managed",
"arn": "arn:aws:iam::REDACTED:policy/service-role/AWSLambdaBasicExecutionRole-REDACTED"
},
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudformation:DescribeChangeSet",
"cloudformation:DescribeStackResources",
"cloudformation:DescribeStacks",
"cloudformation:GetTemplate",
"cloudformation:ListStackResources",
"cloudwatch:*",
"cognito-identity:ListIdentityPools",
"cognito-sync:GetCognitoEvents",
"cognito-sync:SetCognitoEvents",
"dynamodb:*",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"events:*",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:ListRoles",
"iam:PassRole",
"iot:AttachPrincipalPolicy",
"iot:AttachThingPrincipal",
"iot:CreateKeysAndCertificate",
"iot:CreatePolicy",
"iot:CreateThing",
"iot:CreateTopicRule",
"iot:DescribeEndpoint",
"iot:GetTopicRule",
"iot:ListPolicies",
"iot:ListThings",
"iot:ListTopicRules",
"iot:ReplaceTopicRule",
"kinesis:DescribeStream",
"kinesis:ListStreams",
"kinesis:PutRecord",
"kms:ListAliases",
"lambda:*",
"logs:*",
"s3:*",
"sns:ListSubscriptions",
"sns:ListSubscriptionsByTopic",
"sns:ListTopics",
"sns:Publish",
"sns:Subscribe",
"sns:Unsubscribe",
"sqs:ListQueues",
"sqs:SendMessage",
"tag:GetResources",
"xray:PutTelemetryRecords",
"xray:PutTraceSegments"
],
"Resource": "*"
}
]
},
"name": "AWSLambdaFullAccess",
"id": "REDACTED",
"type": "managed",
"arn": "arn:aws:iam::aws:policy/AWSLambdaFullAccess"
}
],
"trustedEntities": [
"secretsmanager.amazonaws.com",
"lambda.amazonaws.com"
]
}
Моя политика доверия лямбда следующая:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"secretsmanager.amazonaws.com",
"lambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}