Définition des autorisations de 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 de 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 Services AWS et ressources. Vous pouvez par exemple créer un rôle d’exécution autorisé à envoyer des journaux à Amazon CloudWatch et à charger des données de suivi vers 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 sts:AssumeRole manuellement afin d’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 de service Lambda (lambda.amazonaws.com) comme un service de confiance.

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 gérée AWSLambdaBasicExecutionRole, qui donne à votre fonction les autorisations de base pour journaliser les événements dans 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 disposer d’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 avec les 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 Suivant.

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

  7. Choisissez Suivant.

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

Pour obtenir les instructions complètes, consultez Création d’un rôle pour un service AWS (console) dans le guide de l’utilisateur IAM.

Après avoir créé votre rôle d’exécution, attachez-le à votre fonction. Lorsque vous créez une fonction dans la console Lambda, vous pouvez attacher n’importe quel rôle d’exécution précédemment créé à la fonction. Si vous souhaitez attacher un nouveau rôle d’exécution à une fonction existante, suivez les étapes décrites dans Mise à jour du rôle d’exécution d’une fonction.

Création et gestion des rôles à l’aide de l’AWS CLI

Pour créer un rôle d’exécution avec l’AWS Command Line Interface(AWS CLI), utilisez la commande create-role. 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 gérée AWSLambdaBasicExecutionRole au rôle d’exécution lambda-ex.

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, attachez-le à votre fonction. Lorsque vous créez une fonction dans la console Lambda, vous pouvez attacher n’importe quel rôle d’exécution précédemment créé à la fonction. Si vous souhaitez attacher un nouveau rôle d’exécution à une fonction existante, suivez les étapes décrites dans Mise à jour du 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 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 journaux AWS CloudTrail sur la plage de dates que vous spécifiez, et génère un modèle de stratégie avec uniquement les autorisations que la fonction a utilisées 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. De cette façon, vous accordez uniquement les autorisations dont le rôle a besoin pour interagir avec les ressources AWS pour 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.