View a markdown version of this page

Sécurité et autorisations pour les fonctions durables de Lambda - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Sécurité et autorisations pour les fonctions durables de Lambda

AWS Lambda les fonctions durables nécessitent des autorisations IAM spécifiques pour exécuter et gérer des exécutions durables. Suivez le principe du moindre privilège en n'accordant que les autorisations dont chaque directeur a besoin.

Autorisations IAM pour des fonctions durables

Pour la plupart des actions d'API d'exécution durables, Lambda autorise la demande sur l'ARN d'exécution durable, et non sur l'ARN de la fonction. Une exécution durable est une sous-ressource de la version d'une fonction, et son ARN étend l'ARN de la fonction :

arn:aws:lambda:region:account-id:function:function-name:qualifier/durable-execution/execution-name/execution-id

Le qualificatif d'un ARN d'exécution durable est toujours $LATEST ou un numéro de version.

Si votre politique spécifie un ARN de fonction non qualifié dans l'élément Resource, Lambda refuse la demande car un ARN non qualifié ne correspond jamais à un ARN d'exécution durable. Pour autoriser l'accès, ajoutez un modèle de qualificatif à la fonction ARN :

  • arn:aws:lambda:us-east-1:123456789012:function:my-function:*— Correspond aux exécutions durables de chaque version.

  • arn:aws:lambda:us-east-1:123456789012:function:my-function:1/durable-execution/*— Correspond aux exécutions durables de la version 1 uniquement.

La plupart des politiques utilisent le :* formulaire car les numéros de version peuvent changer à chaque déploiement.

Les alias ne s'appliquent pas aux autorisations d'exécution durables

Vous pouvez invoquer une fonction durable via un alias, mais l'ARN de l'exécution qui en résulte contient le numéro de version résolu.

Autorisations du rôle d’exécution

Le rôle d'exécution de votre fonction durable doit être autorisé à créer des points de contrôle et à récupérer l'état d'exécution. La politique suivante indique les autorisations minimales requises :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecution", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:region:account-id:function:function-name:*" } ] }

Lorsque vous créez une fonction durable à l'aide de la console, Lambda ajoute automatiquement ces autorisations au rôle d'exécution. Si vous créez la fonction à l'aide du AWS CLI ou AWS CloudFormation, ajoutez ces autorisations à votre rôle d'exécution.

Pour que Lambda assume votre rôle d'exécution, la politique de confiance du rôle doit spécifier le principal du service Lambda (lambda.amazonaws.com) en tant que service sécurisé. L'exemple suivant montre une politique de confiance qui accorde à Lambda l'autorisation d'assumer le rôle.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Principe du moindre privilège

Étendez l'Resourceélément à des ARN de fonction spécifiques au lieu d'utiliser des caractères génériques. Cela limite le rôle d'exécution aux opérations de point de contrôle uniquement pour les fonctions qui en ont besoin.

Exemple Autorisations étendues pour plusieurs fonctions
{ "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:*" ] } ] }

Vous pouvez également utiliser la politique AWS gérée AWSLambdaBasicDurableExecutionRolePolicy qui inclut les autorisations d'exécution durables requises ainsi que les autorisations d'exécution Lambda de base pour Amazon CloudWatch Logs.

Autorisations pour la gestion des exécutions durables

Lambda autorise les lambda:StopDurableExecution actions lambda:GetDurableExecutionlambda:GetDurableExecutionHistory, et contre l'ARN d'exécution durable.

Pour répertorier les exécutions durables d'une fonction, utilisezlambda:ListDurableExecutionsByFunction. Lambda autorise cette action sur la fonction ARN de la requête. Les règles suivantes s'appliquent à la correspondance des ARN :

  • Une politique qui accorde à la fonction non qualifiée ARN ne correspond qu'aux requêtes qui utilisent le nom de la fonction non qualifiée.

  • Une politique qui accorde un ARN qualifié ne fait correspondre que les requêtes qui utilisent un nom de fonction qualifié.

Pour de plus amples informations, veuillez consulter Fonctions de référencement dans la section Ressources relative aux stratégies.

Pour faire correspondre les demandes faites avec l'une ou l'autre forme du nom de fonction, incluez à la fois l'ARN de la fonction non qualifiée et l'ARN de la fonction qualifiée, comme le montre la politique suivante :

{ "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:*" ] } ] }

Autorisations pour l'envoi de rappels

Le système externe qui envoie un résultat de rappel utilise les lambda:SendDurableExecutionCallbackHeartbeat actions lambda:SendDurableExecutionCallbackSuccesslambda:SendDurableExecutionCallbackFailure, et.

{ "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:*" } ] }

Lambda autorise les demandes de rappel par rapport à l'ARN de l'exécution durable qui a créé le rappel.

Chiffrement d'état

Les fonctions durables Lambda chiffrent les données d'exécution au repos. Chaque exécution de fonction conserve un état isolé auquel les autres exécutions ne peuvent pas accéder. Vous pouvez configurer une clé gérée par le client pour chiffrer des données d'exécution durables. Pour de plus amples informations, veuillez consulter Chiffrement AWS Lambda données d'exécution durables.

Les données relatives aux points de contrôle incluent :

  • Résultats des étapes et erreurs

  • Entrées d'appel chaînées

Pour obtenir la liste complète des données d'exécution durables chiffrées au repos, consultezQu'est-ce qui est crypté.

Toutes les données sont chiffrées en transit à l'aide du protocole TLS lorsque Lambda lit ou écrit des données de point de contrôle.

Chiffrement personnalisé avec sérialiseurs et désérialiseurs personnalisés

Pour répondre à des exigences de sécurité critiques, vous pouvez implémenter votre propre mécanisme de chiffrement et de déchiffrement à l'aide de sérialiseurs et de désérialiseurs personnalisés () à l'aide d'un SDK durable. SerDer Cette approche vous donne un contrôle total sur les clés de chiffrement et les algorithmes utilisés pour protéger les données des points de contrôle.

Important

Lorsque vous utilisez le chiffrement personnalisé, vous perdez la visibilité des résultats des opérations dans la console Lambda et les réponses de l'API. Les données des points de contrôle apparaissent cryptées dans l'historique des exécutions et ne peuvent pas être inspectées sans déchiffrement.

Le rôle d'exécution de votre fonction nécessite kms:Encrypt et kms:Decrypt les autorisations nécessaires pour la AWS KMS clé utilisée dans l' SerDer implémentation personnalisée.

CloudTrail journalisation

Lambda enregistre les opérations aux points de contrôle en tant qu'événements de données dans. AWS CloudTrail Vous pouvez l'utiliser CloudTrail pour auditer la création de points de contrôle, suivre les changements d'état d'exécution et surveiller l'accès à des données d'exécution durables.

Les opérations relatives aux points de contrôle apparaissent dans CloudTrail les journaux avec les noms d'événements suivants :

  • CheckpointDurableExecution- Enregistré lorsqu'une étape est terminée et crée un point de contrôle

  • GetDurableExecutionState- Enregistré lorsque Lambda récupère l'état d'exécution pendant le replay

Pour activer la journalisation des événements de données pour les fonctions durables, configurez un journal CloudTrail pour enregistrer les événements de données Lambda. Pour plus d'informations, consultez la section Journalisation des événements liés aux données dans le Guide de CloudTrail l'utilisateur.

Exemple : entrée de CloudTrail journal pour le fonctionnement des points de contrôle

{ "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" }

Cross-account considérations

Si vous invoquez des fonctions durables sur plusieurs AWS comptes, le compte appelant a besoin d'une lambda:InvokeFunction autorisation, mais les opérations de point de contrôle utilisent toujours le rôle d'exécution dans le compte de la fonction. Le compte appelant ne peut pas accéder directement aux données des points de contrôle ou à l'état d'exécution.

Cette isolation garantit la sécurité des données des points de contrôle dans le compte de la fonction, même lorsqu'elles sont invoquées depuis des comptes externes.

Fonctionnalités de sécurité Lambda héritées

Les fonctions durables héritent de toutes les fonctionnalités de sécurité, de gouvernance et de conformité de Lambda. Il s'agit notamment de la connectivité VPC, du chiffrement des variables d'environnement, des files d'attente de lettres mortes, de la simultanéité réservée, des URL de fonction, de la signature de code et des certifications de conformité telles que SOC, PCI DSS et HIPAA.

Pour obtenir des informations détaillées sur les fonctionnalités de sécurité de Lambda, consultez la section Security in AWS Lambda dans le Lambda Developer Guide. Les seules considérations de sécurité supplémentaires pour les fonctions durables sont les autorisations IAM documentées dans ce guide.