As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Função de alternância do Lambda
EmFunção do Lambda de alternância, uma AWS Lambda função gira o segredo. AWS Secrets Manager usa rótulos de teste para identificar versões secretas durante a rotação.
Se AWS Secrets Manager não fornecer um modelo de função de rotação para seu tipo de segredo, você pode criar uma função de rotação personalizada. Siga estas diretrizes ao escrever sua função de alternância:
Práticas recomendadas para funções de alternância personalizadas
-
Use o modelo de alternância genérico como ponto de partida.
-
Tenha cuidado com as instruções de depuração ou registro em log. Eles podem gravar informações no Amazon CloudWatch Logs. Certifique-se de que os logs não contenham informações confidenciais.
Para exemplos de instruções de log, consulte o código-fonte dos Modelos de função de alternância do AWS Secrets Manager.
-
Por segurança, permite AWS Secrets Manager apenas que uma função de rotação Lambda gire o segredo diretamente. A função de alternância não pode chamar uma outra função do Lambda para alternar o segredo.
-
Para orientações sobre depuração, consulte Teste e depuração de aplicações com tecnologia sem servidor.
-
Se você usar binários e bibliotecas externas, por exemplo, para se conectar a um recurso, será responsável pela aplicação de patches e atualizações.
-
Package sua função de rotação e quaisquer dependências em um arquivo ZIP, como
my-function.zip.
Atenção
Definir o parâmetro de simultaneidade provisionado como um valor menor que 10 pode causar limitação devido à insuficiência de threads de execução para a função do Lambda. Para obter mais informações, consulte Noções básicas sobre simultaneidade reservada e simultaneidade provisionada no Guia do desenvolvedor do AWS Lambda AWS Lambda .
Quatro etapas em uma função de alternância
Tópicos
createSecret: criar uma nova versão do segredo
O método createSecret primeiro verifica se existe um segredo chamando get_secret_valueClientRequestToken aprovado. Se não houver segredo, ele cria um novo segredo com create_secretVersionId. Em seguida, ele gera um novo valor de segredo com get_random_passwordput_secret_value. Armazenar o novo valor do segredo em AWSPENDING ajuda a garantir a idempotência. Se a alternância falhar por qualquer motivo, será possível consultar esse valor de segredo em chamadas subsequentes. Consulte Como torno minha função do Lambda idempotente?AWSPENDING
Dicas para escrever sua própria função de alternância
-
Certifique-se de que o novo valor do segredo inclua apenas caracteres válidos para o banco de dados ou serviço. Exclua caracteres usando o parâmetro
ExcludeCharacters. -
Ao testar sua função, use o AWS CLI para ver os estágios da versão: chame
describe-secrete examineVersionIdsToStages. -
Para o Amazon RDS MySQL, o Secrets Manager cria um usuário clonado com um nome de no máximo 16 caracteres no rodízio de usuários em alternância. É possível modificar a função de rodízio para permitir nomes de usuário mais longos. A versão 5.7 e superior do MySQL é compatível com nomes de usuário de até 32 caracteres. No entanto, o Secrets Manager acrescenta “_clone” (seis caracteres) ao final do nome de usuário, portanto, é necessário manter o nome de usuário com no máximo 26 caracteres.
setSecret: alterar as credenciais no banco de dados ou serviço
O método setSecret altera a credencial no banco de dados ou serviço para corresponder ao novo valor do segredo na versão AWSPENDING do segredo.
Dicas para escrever sua própria função de alternância
-
Se você transmitir instruções para um serviço que interprete instruções, como um banco de dados, use a parametrização de consulta. Para obter mais informações, consulte a Folha de dicas de parametrização de consultas
no site da OWASP. -
A função de alternância é um representante privilegiado que tem autorização para acessar e modificar as credenciais do cliente no segredo do Secrets Manager e no recurso de destino. Para evitar um possível ataque “confused deputy”, você precisa garantir que um invasor não possa usar a função para acessar outros recursos. Antes de atualizar a credencial:
-
Verifique se a credencial na versão
AWSCURRENTdo segredo é válida. Se a credencialAWSCURRENTnão for válida, abandone a tentativa de alternância. -
Verifique se os valores dos segredos
AWSCURRENTeAWSPENDINGsão para o mesmo recurso. Para obter um nome de usuário e uma senha, verifique se os nomes de usuárioAWSCURRENTeAWSPENDINGsão os mesmos. -
Verifique se o recurso do serviço de destino é o mesmo. Para um banco de dados, verifique se os nomes de host
AWSCURRENTeAWSPENDINGsão os mesmos.
-
-
Em casos raros, talvez você queira personalizar a função de alternância existente para um banco de dados. Por exemplo, com o rodízio de usuários em alternância, o Secrets Manager cria o usuário clonado copiando os parâmetros de configuração de runtime
do primeiro usuário. Se você quiser incluir mais atributos ou alterar quais são concedidos ao usuário clonado, é necessário atualizar o código na função set_secret.
testSecret: testar a nova versão do segredo
Em seguida, a função de alternância do Lambda testará a versão AWSPENDING do segredo usando-a para acessar o banco de dados ou serviço. As funções de alternância baseadas em Modelos de função de alternância testam o novo segredo usando o acesso de leitura.
finishSecret: concluir a alternância
Por fim, a função de alternância do Lambda move o rótulo AWSCURRENT da versão anterior do segredo para a atual, o que também remove o rótulo AWSPENDING na mesma chamada de API. O Secrets Manager adiciona o rótulo de preparação prévia AWSPREVIOUS na versão anterior, para que você retenha a última versão boa conhecida do segredo.
O método finish_secret usa update_secret_version_stageAWSCURRENT da versão do segredo anterior para a nova versão do segredo. O Secrets Manager adiciona automaticamente o rótulo de preparação AWSPREVIOUS à versão anterior para reter a última versão válida do segredo.
Dicas para escrever sua própria função de alternância
-
Não remova
AWSPENDINGantes desse ponto, e não remova-o por meio de uma chamada de API distinta. Isso pode indicar ao Secrets Manager que a alternância não foi concluída com êxito. O Secrets Manager adiciona o rótulo de preparação préviaAWSPREVIOUSna versão anterior, para que você retenha a última versão boa conhecida do segredo.
Quando a alternância for bem-sucedida, talvez o rótulo de preparação de AWSPENDING seja anexado à mesma versão da versão AWSCURRENT ou talvez não seja anexado a nenhuma versão. Se o rótulo de preparação de AWSPENDING estiver presente, mas não estiver anexado à mesma versão de AWSCURRENT, qualquer invocação posterior de alternância vai pressupor que uma solicitação de alternância anterior ainda está em andamento e retornará um erro. Quando a alternância não for bem-sucedida, o rótulo de preparação de AWSPENDING poderá ser anexado a uma versão vazia de segredo. Para obter mais informações, consulte Solucionar problemas de alternância.