Définition des autorisations d'une fonction Lambda avec un rôle d'exécution - 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.

Définition des autorisations d'une fonction Lambda avec un rôle d'exécution

Le rôle d'exécution d'une fonction Lambda est un rôle AWS Identity and Access Management (IAM) qui accorde à la fonction l'autorisation d'accéder aux AWS services et aux ressources. Par exemple, vous pouvez créer un rôle d'exécution autorisé à envoyer des journaux à Amazon CloudWatch et à y télécharger des données de suivi AWS X-Ray. Cette page fournit des informations sur la façon de créer, d'afficher et de gérer le rôle d'exécution d'une fonction Lambda.

Lambda assume automatiquement votre rôle d'exécution lorsque vous appelez votre fonction. Vous devez éviter d'appeler manuellement sts:AssumeRole pour assumer le rôle d'exécution dans votre code de fonction. Si votre cas d'utilisation nécessite que le rôle soit assumé par lui-même, vous devez inclure le rôle lui-même en tant que principal approuvé dans la politique d'approbation de votre rôle. Pour en savoir plus sur la procédure de modification d'une politique d'approbation des rôles, consultez Modification d'une politique d'approbation de rôle (console)dans le Guide de l'utilisateur IAM.

Pour que Lambda assume correctement 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 fiable.

Création d'un rôle d'exécution dans la console IAM

Par défaut, Lambda crée un rôle d'exécution avec des autorisations minimales lorsque vous créez une fonction dans la console Lambda. Plus précisément, ce rôle d'exécution inclut la politique AWSLambdaBasicExecutionRole gérée, qui donne à votre fonction les autorisations de base pour consigner des événements sur Amazon CloudWatch Logs.

Vos fonctions ont généralement besoin d'autorisations supplémentaires pour effectuer des tâches plus pertinentes. Par exemple, vous pouvez avoir une fonction Lambda qui répond à un événement en mettant à jour les entrées d'une base de données Amazon DynamoDB. Vous pouvez créer un rôle d'exécution doté des autorisations nécessaires à l'aide de la console IAM.

Pour créer un rôle d'exécution dans la console IAM
  1. Ouvrez la page Roles (Rôles) dans la console IAM.

  2. Sélectionnez Créer un rôle.

  3. Sous Trusted entity type (Type d'entité approuvée), choisissez service AWS .

  4. Sous Cas d'utilisation, choisissez Lambda.

  5. Choisissez Next (Suivant).

  6. Sélectionnez les politiques AWS gérées que vous souhaitez associer à votre rôle. Par exemple, si votre fonction doit accéder à DynamoDB, sélectionnez AWSLambdaDynamoDBExecutionRolela politique gérée.

  7. Choisissez Suivant.

  8. Entrez un nom dans Role name, puis choisissez Create role.

Pour obtenir des instructions détaillées, consultez la section Création d'un rôle pour un AWS service (console) dans le guide de l'utilisateur IAM.

Après avoir créé votre rôle d'exécution, associez-le à votre fonction. Lorsque vous créez une fonction dans la console Lambda, vous pouvez associer à la fonction n'importe quel rôle d'exécution que vous avez créé précédemment. Si vous souhaitez associer un nouveau rôle d'exécution à une fonction existante, suivez les étapes décrites dans.

Création et gestion des rôles à l'aide du AWS CLI

Pour créer un rôle d'exécution avec le AWS Command Line Interface (AWS CLI), utilisez la create-role commande. Lorsque vous utilisez cette commande, vous pouvez préciser la politique d'approbation en ligne. La politique d'approbation d'un rôle accorde aux principaux spécifiés l'autorisation d'assumer le rôle. Dans l'exemple suivant, vous accordez au service Lambda l'autorisation principale d'assumer votre rôle. Notez que les exigences relatives à l'échappement des guillemets dans la chaîne JSON peuvent varier en fonction de votre shell.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

Vous pouvez également définir la politique d'approbation pour le rôle à l'aide d'un fichier JSON séparé. Dans l’exemple suivant, le fichier trust-policy.json se trouve dans le répertoire actuel.

Exemple trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

Vous devriez voir la sortie suivante :

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }

Pour ajouter des autorisations au rôle, utilisez la commande attach-policy-to-role. La commande suivante ajoute la politique AWSLambdaBasicExecutionRole gérée au rôle lambda-ex d'exécution.

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Après avoir créé votre rôle d'exécution, associez-le à votre fonction. Lorsque vous créez une fonction dans la console Lambda, vous pouvez associer à la fonction n'importe quel rôle d'exécution que vous avez créé précédemment. Si vous souhaitez associer un nouveau rôle d'exécution à une fonction existante, suivez les étapes décrites dans.

Accorder un accès assorti d'un privilège minimum à votre rôle d'exécution Lambda

Lorsque vous créez pour la première fois un rôle IAM pour votre fonction Lambda pendant la phase de développement, il peut arriver que vous accordiez des autorisations au-delà de ce que est nécessaire. Avant de publier votre fonction dans l'environnement de production, une bonne pratique consiste à ajuster la stratégie de manière à inclure uniquement les autorisations requises. Pour en savoir plus, consultez Appliquer les autorisations de moindre privilège dans le Guide de l'utilisateur IAM.

Utilisez IAM Access Analyzer pour identifier les autorisations requises pour la stratégie de rôle d'exécution IAM. IAM Access Analyzer examine vos AWS CloudTrail journaux pendant la période que vous spécifiez et génère un modèle de politique avec uniquement les autorisations utilisées par la fonction pendant cette période. Vous pouvez utiliser le modèle pour créer une stratégie gérée avec des autorisations affinées, puis l'attacher au rôle IAM. Ainsi, vous n'accordez que les autorisations dont le rôle a besoin pour interagir avec les AWS ressources correspondant à votre cas d'utilisation spécifique.

Pour en savoir plus, consultez Générer des stratégies basées sur l'activité d'accès dans le Guide de l'utilisateur IAM.