Règles Lambda personnalisées (exemple général) - AWS Config

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.

Règles Lambda personnalisées (exemple général)

Effectuez la procédure suivante pour créer une règle Lambda personnalisée. Pour créer une règle Lambda personnalisée, vous devez d'abord créer une AWS Lambda fonction contenant la logique d'évaluation de la règle. Puis vous associez la fonction à une règle Lambda personnalisée que vous créez dans AWS Config.

Important

Pour des raisons de sécurité, lorsque vous AWS Config autorisez l'appel de votre fonction Lambda, nous vous recommandons vivement de restreindre l'accès dans la politique basée sur les ressources pour Lambda avec sourceARN et/ou dans la demande d'appel. sourceAccountId Pour plus d’informations, consultez Bonnes pratiques de sécurité pour la politique AWS Lambda basée sur les ressources.

Création d'une fonction AWS Lambda pour une règle de configuration personnalisée

Une fonction Lambda est un code personnalisé que vous téléchargez et qui est invoqué par des événements publiés par une source d'événements. AWS Lambda Si la fonction Lambda est associée à une règle Config, elle l' AWS Config invoque lorsque le déclencheur de la règle se produit. La fonction Lambda évalue ensuite les informations de configuration qui sont envoyées par AWS Config et elle retourne les résultats de l’évaluation. Pour plus d'informations sur les fonctions Lambda, consultez Fonction et sources d'événements dans le Guide du développeur AWS Lambda .

Vous pouvez utiliser un langage de programmation pris en charge par AWS Lambda pour créer une fonction Lambda pour une règle Lambda personnalisée. Pour faciliter cette tâche, vous pouvez personnaliser un AWS Lambda plan ou réutiliser un exemple de fonction du GitHub référentiel de AWS Config règles.

Plans AWS Lambda

La AWS Lambda console fournit des exemples de fonctions, ou plans, que vous pouvez personnaliser en ajoutant votre propre logique d'évaluation. Lorsque vous créez une fonction, vous pouvez choisir parmi les plans suivants :

  • config-rule-change-triggered— Déclenché lorsque la configuration de vos AWS ressources change.

  • config-rule-periodic— Déclenché à la fréquence que vous choisissez (par exemple, toutes les 24 heures).

AWS Config GitHub Référentiel de règles

Un référentiel public d'exemples de fonctions pour les règles Lambda personnalisées est disponible sur GitHub un service Web d'hébergement et de partage de code. Les exemples de fonctions sont développés et fournis par la AWS communauté. Si vous souhaitez utiliser un exemple, vous pouvez copier son code dans une nouvelle AWS Lambda fonction. Pour afficher le référentiel, consultez https://github.com/awslabs/aws-config-rules/.

Pour créer la fonction pour votre règle personnalisée
  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le AWS Management Console menu, vérifiez que le sélecteur de région est défini sur une région compatible avec les AWS Config règles. Pour obtenir la liste des régions prises en charge, consultez la section Régions et points de terminaison AWS Config dans le Référence générale d'Amazon Web Services.

  3. Choisissez Create a Lambda function.

  4. Sur la page Utiliser un plan, vous pouvez choisir l'une des fonctions du plan pour les AWS Config règles comme point de départ, ou vous pouvez continuer sans plan en choisissant Ignorer.

  5. Sur la page Configure triggers (Configurer les déclencheurs), choisissez Next (Suivant).

  6. Sur la page Informations de base, saisissez un nom et une description.

  7. Pour Runtime, choisissez le langage de programmation dans lequel votre fonction est écrit.

  8. Pour Type d'entrée de code, choisissez votre type d'entrée préféré. Si vous utilisez un plan, conservez le code préconfiguré.

  9. Fournissez votre code à l'aide de la méthode requise par le type d'entrée de code que vous avez sélectionné. Si vous utilisez un plan, le code de fonction est fourni dans l'éditeur de code et vous pouvez le personnaliser afin d'inclure votre propre logique d'évaluation. Votre code peut évaluer les données d'événement AWS Config fournies lorsqu'il appelle votre fonction :

    • Pour les fonctions basées sur le config-rule-change-triggeredplan ou pour les fonctions déclenchées par des modifications de configuration, les données d'événement sont l'élément de configuration ou un objet d'élément de configuration surdimensionné correspondant à la AWS ressource modifiée.

    • Pour les fonctions basées sur le config-rule-periodicplan ou pour les fonctions déclenchées à la fréquence que vous choisissez, les données d'événement sont un objet JSON qui inclut des informations sur le moment où l'évaluation a été déclenchée.

    • Pour les deux types de fonctions, AWS Config transmet les paramètres des règles au format JSON. Vous pouvez définir quels paramètres de la règle sont transmis lorsque vous créez la règle Lambda personnalisée dans AWS Config.

    • Par exemple, les AWS Config événements publiés lorsqu'il appelle votre fonction, voirExemple d'événements pour les règles d' AWS Config.

  10. Dans Rôle d'exécution, choisissez Créer un rôle à partir de modèles de politique AWS .

  11. Tapez un nom pour Role name (Nom de rôle).

  12. Pour Modèles de stratégie, choisissez Autorisations AWS Config Rules.

  13. Vérifiez les détails, puis choisissez Créer une fonction.

Création d'une règle personnalisée dans AWS Config

AWS Config À utiliser pour créer une règle Lambda personnalisée et associer la règle à une fonction Lambda.

Pour créer une règle personnalisée
  1. Ouvrez la AWS Config console à l'adresse https://console.aws.amazon.com/config/.

  2. Dans le AWS Management Console menu, vérifiez que le sélecteur de région est défini sur la même région que celle dans laquelle vous avez créé la AWS Lambda fonction pour votre règle Lambda personnalisée.

  3. Sur la page Règles, choisissez Ajouter une règle.

  4. Sur la page Spécifier le type de règle, choisissez Créer une règle personnalisée.

  5. Sur la page Configure rule (Configurer une règle), saisissez un nom et une description.

  6. Pour ARN de fonction AWS Lambda , spécifiez l'ARN qu' AWS Lambda a assigné à votre fonction.

    Note

    L'ARN que vous spécifiez à cette étape ne doit pas inclure le qualificateur $LATEST. Vous pouvez spécifier un ARN sans qualificatif de version ou avec un autre qualificatif$LATEST. AWS Lambda prend en charge le versionnement des fonctions, et chaque version se voit attribuer un ARN avec un qualificatif. AWS Lambda utilise le $LATEST qualificatif correspondant à la dernière version.

  7. Pour Type de déclencheur, choisissez un ou les deux éléments suivants :

    • Modifications de configuration AWS Config  : appelle votre fonction Lambda lorsqu'elle détecte un changement de configuration.

    • AWS Config Périodique : invoque votre fonction Lambda à la fréquence que vous choisissez (par exemple, toutes les 24 heures).

  8. Si les types de déclencheurs de votre règle incluent des modifications de configuration, spécifiez l'une des options suivantes pour Étendue des modifications avec laquelle AWS Config votre fonction Lambda est appelée :

    • Toutes les modifications : lorsqu'une ressource enregistrée par AWS Config est créée, modifiée ou supprimée.

    • Ressources : lorsqu'une ressource qui correspond au type spécifié, ou au type plus à l'identifiant, est créée, modifiée ou supprimée.

    • Balises : lorsqu'une ressource portant la balise spécifiée est créée, modifiée ou supprimée

  9. Si les types de déclencheurs de votre règle incluent Periodic, spécifiez la fréquence à laquelle votre fonction Lambda est AWS Config invoquée.

  10. Dans la section Paramètres, spécifiez tous les paramètres de règle évalués par votre AWS Lambda fonction ainsi que la valeur souhaitée.

  11. Choisissez Suivant. Sur la page Vérifier et créer, vérifiez les détails de votre règle et choisissez Ajouter une fonction de règle. Votre nouvelle règle s'affiche sur la page Règles.

    La conformité s'affichera Évaluer... jusqu'à ce qu'il AWS Config reçoive les résultats d'évaluation de votre AWS Lambda fonction. Si la règle et la fonction fonctionnent comme prévu, un résumé des résultats s'affiche au bout de quelques minutes. Vous pouvez mettre à jour les résultats avec le bouton Refresh.

    Si la règle ou la fonction ne fonctionnent pas comme prévu, vous pouvez voir l'un des messages suivants pour Conformité :

    • Aucun résultat n'a été signalé. Vos ressources ont AWS Config été évaluées par rapport à la règle. Cette règle ne s'appliquait à aucune des ressources AWS figurant dans sa portée, les ressources spécifiées ou les résultats de l'évaluation ont été supprimés. Pour obtenir les résultats de l'évaluation, mettez à jour la règle, modifiez sa portée ou choisissez Re-evaluate (Réévaluer).

      Ce message peut également apparaître si la règle n'a pas renvoyé de résultats d'évaluation.

    • Aucune ressource dans le champ d'application : AWS Config impossible d'évaluer vos AWS ressources enregistrées par rapport à cette règle car aucune de vos ressources n'entre dans le champ d'application de la règle. Vous pouvez choisir quelles ressources AWS Config enregistre sur la page Paramètres.

    • Evaluations failed (Échec des évaluations) - pour obtenir des informations susceptibles de vous aider à déterminer le problème, choisissez le nom de la règle pour ouvrir sa page de détails et voir le message d'erreur.

Note

Lorsque vous créez une règle Lambda personnalisée avec la AWS Config console, les autorisations appropriées sont automatiquement créées pour vous. Si vous créez une règle Lambda personnalisée avec le AWS CLI, vous devez AWS Config autoriser l'appel de votre fonction Lambda à l'aide de la commande. aws lambda add-permission Pour plus d'informations, consultez la section Utilisation de politiques basées sur les ressources pour (politiques de fonction AWS Lambda Lambda) dans le manuel du développeur.AWS Lambda

Avant d' AWS Config autoriser l'appel de votre fonction Lambda, consultez la section suivante. Bonnes pratiques de sécurité pour la politique AWS Lambda basée sur les ressources

Bonnes pratiques de sécurité pour la politique AWS Lambda basée sur les ressources

En vertu des bonnes pratiques, pour éviter d'accorder à l'ensemble du nom du principal de service (SPN) l'autorisation d'invoquer votre fonction Lambda, nous vous recommandons vivement de restreindre l'accès dans la politique basée sur les ressources pour Lambda avec sourceARN et/ou sourceAccountId dans la demande d'appel.

sourceARNIl s'agit de l'ARN de la AWS Config règle qui invoque la fonction Lambda.

L'sourceAccountId est l'ID de compte de l'utilisateur qui a créé la règle.

La restriction de l'accès dans la politique basée sur les ressources Lambda permet de s'assurer que l'accès à vos ressources AWS Lambda est réservé aux utilisateurs et aux scénarios attendus.

Pour ajouter une autorisation basée sur le SPN, vous devez utiliser la CLI suivante

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com

Pour ajouter une autorisation SourceAccountId basée

Avant de créer la règle, vous pouvez ajouter une autorisation basée sur sourceAccountId à la politique basée sur les ressources à l'aide de la CLI suivante

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID

Pour ajouter à la fois une autorisation SourceArn et une autorisation SourceAccountId basée sur

Une fois la règle créée, vous pouvez ajouter une autorisation basée sur sourceARN à la politique basée sur les ressources à l'aide de la CLI suivante. Ainsi, seul un ARN de règle spécifique peut invoquer la fonction Lambda.

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID --source-arn ARN of the created config rule

Évaluation des types de ressources supplémentaires

Vous pouvez créer des règles Lambda personnalisées pour exécuter des évaluations pour des types de ressources qui n'ont pas encore été enregistrés par. AWS Config Cela est utile si vous souhaitez évaluer la conformité de types de ressources supplémentaires qui AWS Config ne sont pas enregistrés actuellement. Pour obtenir une liste des types de ressources supplémentaires que vous pouvez évaluer avec des règles Lambda personnalisées, consultez Référence des types de ressources AWS.

Note

Lorsque vous créez un Lambda personnalisé pour un type de ressource qui n'est pas enregistré par AWS Config, la règle doit avoir le type de déclencheur périodique. Le type de déclencheur des modifications de configuration n'est pas pris en charge. Pour plus d’informations, consultez Mode d'évaluation et types de déclencheurs pour AWS Config Règles.

Exemple
  1. Vous souhaitez évaluer les coffres-forts Amazon S3 Glacier dans votre compte. Les ressources du coffre-fort Amazon S3 Glacier ne sont actuellement pas enregistrées par AWS Config.

  2. Vous créez une AWS Lambda fonction qui évalue si vos coffres-forts Amazon S3 Glacier sont conformes aux exigences de votre compte.

  3. Vous créez une règle Lambda personnalisée nommée, evaluate-glacier-vaultspuis vous lui attribuez votre AWS Lambda fonction.

  4. AWS Config invoque votre fonction Lambda, puis évalue les coffres-forts Amazon S3 Glacier par rapport à votre règle.

  5. AWS Config renvoie les évaluations et vous pouvez consulter les résultats de conformité de votre règle.

Note

Vous pouvez consulter les détails de configuration dans la AWS Config chronologie et rechercher les ressources compatibles dans la AWS Config AWS Config console. Si vous avez configuré AWS Config pour enregistrer tous les types de ressources, les nouvelles ressources prises en charge seront automatiquement enregistrées. Pour plus d'informations, voir Types de ressource pris en charge.