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 plus d'informations sur la façon de modifier une politique d'approbation des rôles, consultez la section Modification d'une politique d'approbation des rôles (console) dans le Guide de IAM l'utilisateur.

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 IAM console

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 IAM console.

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

  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 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 IAM l'utilisateur.

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 dansMettre à jour le rôle d'exécution d'une fonction.

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'exclusion des guillemets dans la JSON chaîne 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 de confiance pour le rôle à l'aide d'un JSON fichier distinct. 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 dansMettre à jour le rôle d'exécution d'une fonction.

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

Lorsque vous créez un IAM rôle pour votre fonction Lambda pour la première fois pendant la phase de développement, vous pouvez parfois accorder des autorisations au-delà de ce qui est requis. 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 plus d'informations, voir Appliquer les autorisations de moindre privilège dans le Guide de l'IAMutilisateur.

Utilisez IAM Access Analyzer pour identifier les autorisations requises pour la politique de rôle IAM d'exécution. IAMAccess 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 politique gérée avec des autorisations détaillées, puis l'associer au IAM rôle. Ainsi, vous accordez uniquement les autorisations dont le rôle a besoin pour interagir avec les AWS ressources correspondant à votre cas d'utilisation spécifique.

Pour plus d'informations, voir Générer des politiques en fonction de l'activité d'accès dans le Guide de IAM l'utilisateur.