Permissões para alternância - AWS Secrets Manager

Permissões para alternância

O Secrets Manager usa uma função do Lambda para alternar segredos. O serviço Lambda assume uma função de execução do IAM e fornece essas credenciais para o código para a função do Lambda quando ela é executada. Se você ativar a alternância usando o console do Secrets Manager, a função do Lambda, a política de recursos, a função de execução e as políticas em linha da função de execução serão criadas para você.

Se você criar a função do Lambda de outra forma, deverá garantir que ela tenha as permissões certas. Você também precisa criar uma função de execução e garantir que ela tenha as permissões certas.

Para ativar a alternância automática, é necessário ter permissão para criar a função de execução do IAM e anexar uma política de permissão a ela. Ambas as permissões iam:CreateRole e iam:AttachRolePolicy são necessárias.

Atenção

Conceder a uma identidade as permissões iam:CreateRole e iam:AttachRolePolicy permite que a identidade conceda a ela mesma quaisquer permissões.

Na política de recursos para sua função do Lambda, recomendamos que você inclua a chave de contexto aws:SourceAccount para ajudar a evitar que o AWS Lambda seja usado como um confused deputy. Para alguns serviços da AWS, a fim de evitar o “confused deputy scenario” (cenário confused deputy), a AWS recomenda usar ambas as chaves de condição globais aws:SourceArn e aws:SourceAccount. No entanto, se você incluir a chave de contexto aws:SourceArn na sua política de função de alternância do Lambda, a função de alternância só pode ser usada para alternar o segredo especificado por esse ARN. Recomendamos que inclua apenas a chave de contexto aws:SourceAccount, de modo que possa usar a função de alternância para vários segredos.

Política de recursos de função do Lambda

A política a seguir permite que o Secrets Manager invoque a função do Lambda especificada no Resource. Para anexar uma política de recursos a uma função do Lambda, consulte Uso de políticas baseadas em recursos para o AWS Lambda.

{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "secretsmanager.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "LambdaRotationFunctionARN", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Como alternativa, você pode adicionar essa permissão executando o seguinte comando da AWS CLI:

aws lambda add-permission --function-name LambdaRotationFunctionARN --principal secretsmanager.amazonaws.com --action lambda:InvokeFunction --source-account 111122223333 --statement-id SecretsManagerAccess

Política em linha da função de execução da função do Lambda

Os exemplos a seguir mostram políticas em linha para funções de execução de funções Lambda. Para criar uma função de execução e anexá-la a uma política de permissões, consulte Função de execução do AWS Lambda.

exemplo Política em linha de função de execução do IAM para estratégia de alternância de usuário único

Para Alternar credenciais de banco de dados, o Secrets Manager cria a função de execução do IAM e anexa essa política para você.

O exemplo de política a seguir permite que a função:

  • Execute operações do Secrets Manager para segredos que estão configurados para usar essa função de alternância.

  • Criar uma nova senha.

  • Definir a configuração necessária se seu banco de dados ou serviço for executado em uma VPC. Consulte Configuring a Lambda function to access resources in a VPC (Configurar uma função do Lambda para acessar recursos em uma VPC).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }

exemplo Instrução da política em linha da função de execução do IAM para estratégia de usuários alternados

Para Alternar credenciais de banco de dados, o Secrets Manager cria a função de execução do IAM e anexa essa política para você.

O exemplo de política a seguir permite que a função:

  • Execute operações do Secrets Manager para segredos que estão configurados para usar essa função de alternância.

  • Recupere as credenciais no segredo distinto. O Secrets Manager usa as credenciais no segredo separado para atualizar as credenciais no segredo que está sendo alternado.

  • Criar uma nova senha.

  • Definir a configuração necessária se seu banco de dados ou serviço for executado em uma VPC. Para obter mais informações, consulte Configuração de uma função do Lambda para acessar recursos em uma VPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "SeparateSecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }

exemplo Instrução da política em linha da função de execução do IAM para chave gerenciada pelo cliente

Se você usa uma chave do KMS que não é a Chave gerenciada pela AWS aws/secretsmanager para criptografar seu segredo, precisa conceder à função de execução do Lambda permissão para usar a chave.

O exemplo a seguir mostra uma instrução a ser adicionada à política de função de execução para permitir que a função recupere a chave do KMS.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" }