Segurança e permissões para as funções duráveis do Lambda
As funções duráveis AWS Lambda exigem permissões específicas do IAM para executar e gerenciar as execuções duráveis. Siga o princípio do privilégio mínimo concedendo somente as permissões de que cada entidade principal precisa.
Permissões do IAM para funções duráveis
Para a maioria das ações de API de execução durável, o Lambda autoriza a solicitação com base no ARN de execução durável, e não no ARN da função. Uma execução durável é um sub-recurso de uma versão de função, e seu ARN estende o ARN da função:
arn:aws:lambda:region:account-id:function:function-name:qualifier/durable-execution/execution-name/execution-id
O qualificador em um ARN de execução durável é sempre $LATEST ou um número de versão.
Se sua política especificar um ARN de função não qualificado no elemento Resource, o Lambda negará a solicitação porque um ARN não qualificado nunca corresponde a um ARN de execução durável. Para conceder acesso, anexe um padrão de qualificador ao ARN da função:
arn:aws:lambda:us-east-1:123456789012:function:my-function:*– Corresponde às execuções duráveis de todas as versões.arn:aws:lambda:us-east-1:123456789012:function:my-function:1/durable-execution/*– Corresponde apenas às execuções duráveis da versão 1.
A maioria das políticas usa o formato :* porque os números de versão podem mudar a cada implantação.
Os aliases não se aplicam às permissões de execução durável
Você pode invocar uma função durável por meio de um alias, mas o ARN da execução resultante contém o número da versão resolvida.
Permissões da função de execução
O perfil de execução da sua função durável deve ter permissões para criar pontos de verificação e recuperar o estado de execução. A política a seguir mostra as permissões mínimas necessárias:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name:*" } ] }
Quando você cria uma função durável usando o console, o Lambda adiciona automaticamente essas permissões ao perfil de execução. Se você criar a função usando a AWS CLI ou o AWS CloudFormation, adicione essas permissões ao seu perfil de execução.
Para que o Lambda assuma seu perfil de execução, a política de confiança do perfil deve especificar a entidade principal de serviço do Lambda (lambda.amazonaws.com) como um serviço confiável. O exemplo a seguir mostra uma política de confiança que concede ao Lambda a permissão de assumir o perfil.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Princípio do privilégio mínimo
Defina o escopo do elemento Resource para ARNs de funções específicas em vez de usar curingas. Isso limita o perfil de execução a operações de ponto de verificação somente para as funções que precisem delas.
exemplo Permissões com escopo definido para várias funções
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:orderProcessor:*", "arn:aws:lambda:us-east-1:123456789012:function:paymentHandler:*" ] } ] }
Como alternativa, é possível usar a política gerenciada pela AWS AWSLambdaBasicDurableExecutionRolePolicy, que inclui as permissões de execução duráveis necessárias junto às permissões básicas de execução do Lambda para o Amazon CloudWatch Logs.
Permissões para gerenciar execuções duráveis
O Lambda autoriza as ações lambda:GetDurableExecution, lambda:GetDurableExecutionHistory e lambda:StopDurableExecution contra o ARN de execução durável.
Para listar as execuções duráveis de uma função, use lambda:ListDurableExecutionsByFunction. O Lambda autoriza essa ação contra o ARN da função da solicitação. As seguintes regras se aplicam à correspondência de ARN:
Uma política que concede o ARN da função não qualificada corresponde somente às solicitações que usam o nome da função não qualificada.
Uma política que concede um ARN qualificado corresponde somente às solicitações que usam um nome de função qualificado.
Para obter mais informações, consulte Referência a funções na seção Recursos das políticas.
Para corresponder às solicitações feitas com qualquer forma do nome da função, inclua o ARN da função não qualificada e da qualificada, conforme mostra a política a seguir:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageDurableExecutions", "Effect": "Allow", "Action": [ "lambda:GetDurableExecution", "lambda:GetDurableExecutionHistory", "lambda:StopDurableExecution" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" }, { "Sid": "ListDurableExecutions", "Effect": "Allow", "Action": "lambda:ListDurableExecutionsByFunction", "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction", "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" ] } ] }
Permissões para enviar retornos de chamada
O sistema externo que envia um resultado de retorno de chamada usa as ações lambda:SendDurableExecutionCallbackSuccess, lambda:SendDurableExecutionCallbackFailure e lambda:SendDurableExecutionCallbackHeartbeat.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "SendCallbacks", "Effect": "Allow", "Action": [ "lambda:SendDurableExecutionCallbackSuccess", "lambda:SendDurableExecutionCallbackFailure", "lambda:SendDurableExecutionCallbackHeartbeat" ], "Resource": "arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:*" } ] }
O Lambda autoriza solicitações de retorno de chamada em relação ao ARN da execução durável que criou o retorno de chamada.
Criptografia de estado
As funções duráveis do Lambda criptografam os dados em repouso da execução. Cada execução de função mantém um estado isolado que outras execuções não podem acessar. Você pode configurar uma chave gerenciada pelo cliente para criptografar os dados da execução durável. Para obter mais informações, consulte Criptografia de dados de execução durável do AWS Lambda.
Os dados do ponto de verificação incluem:
Resultados e erros da etapa
Entradas de invocação encadeadas
Para obter a lista completa dos dados da execução durável criptografados em repouso, consulte O que é criptografado.
Os dados são criptografados em trânsito usando TLS quando o Lambda lê ou grava dados de pontos de verificação.
Criptografia personalizada com serializadores e desserializadores personalizados
Para requisitos críticos de segurança, é possível implementar seu próprio mecanismo de criptografia e descriptografia por meio de serializadores e desserializadores personalizados (SerDer) usando um SDK durável. Essa abordagem oferece controle total sobre as chaves de criptografia e os algoritmos usados para proteger os dados dos pontos de verificação.
Importante
Ao usar criptografia personalizada, você perde a visibilidade dos resultados da operação no console do Lambda e nas respostas de APIs. Os dados dos pontos de verificação aparecem criptografados no histórico de execução e não podem ser inspecionados sem a descriptografia.
O perfil de execução da sua função precisa das permissões kms:Encrypt e kms:Decrypt para a chave AWS KMS usada na implementação SerDer personalizada.
Registro em log do CloudTrail
O Lambda registra em log as operações de pontos de verificação como eventos de dados em AWS CloudTrail. É possível usar o CloudTrail para auditar a criação de pontos de verificação, rastrear alterações no estado de execução e monitorar o acesso a dados de execução duráveis.
As operações de pontos de verificação aparecem nos logs do CloudTrail com os nomes de eventos a seguir:
CheckpointDurableExecution: registrado em log quando uma etapa é concluída e um ponto de verificação é criadoGetDurableExecutionState: registrado em log quando o Lambda recupera o estado de execução durante a reprodução
Para habilitar o registro em log de eventos de dados para funções duráveis, configure uma trilha do CloudTrail para registrar em log eventos de dados do Lambda. Para obter mais informações, consulte Registro em log de eventos de dados no Guia do usuário do CloudTrail.
Exemplo: entrada de log do CloudTrail para operação de ponto de verificação
{ "eventVersion": "1.08", "eventTime": "2024-11-16T10:30:45Z", "eventName": "CheckpointDurableExecution", "eventSource": "lambda.amazonaws.com", "requestParameters": { "functionName": "myDurableFunction", "executionId": "exec-abc123", "stepId": "step-1" }, "responseElements": null, "eventType": "AwsApiCall" }
Considerações sobre o acesso entre contas
Se você invocar funções duráveis em várias contas da AWS, a conta chamadora precisará da permissão lambda:InvokeFunction, mas as operações de ponto de verificação sempre usarão o perfil de execução na conta da função. A conta chamadora não pode acessar diretamente os dados do ponto de verificação ou o estado de execução.
Esse isolamento garante que os dados do ponto de verificação permaneçam seguros na conta da função, mesmo quando invocados a partir de contas externas.
Recursos de segurança herdados do Lambda
As funções duráveis herdam todos os recursos de segurança, governança e conformidade do Lambda. Isso inclui conectividade da VPC, criptografia de variáveis de ambiente, filas de mensagens não entregues, simultaneidade reservada, URLs de funções, assinatura de código e certificações de conformidade, como SOC, PCI DSS e HIPAA.
Para obter informações detalhadas sobre os recursos de segurança do Lambda, consulte Segurança no AWS Lambda no Guia do desenvolvedor do Lambda. As únicas considerações adicionais de segurança para funções duráveis são as permissões de IAM documentadas neste guia.