Déployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et AWS CloudFormation - Recommandations AWS

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éployez une ChatOps solution pour gérer les résultats du scan SAST en utilisant Amazon Q Developer dans les applications de chat, les actions personnalisées et AWS CloudFormation

Créée par Anand Bukkapatnam Tirumala (AWS)

Récapitulatif

Ce modèle présente une solution complète qui utilise Amazon Q Developer dans les applications de chat afin de rationaliser la gestion des défaillances d'analyse des tests de sécurité des applications statiques (SAST) signalées par le biais SonarQube de ce modèle. Cette approche innovante intègre des actions et des notifications personnalisées dans une interface conversationnelle, permettant une collaboration efficace et des processus décisionnels au sein des équipes de développement.

Dans l'environnement de développement logiciel en évolution rapide d'aujourd'hui, la gestion efficace des résultats du scan SAST est essentielle pour maintenir la qualité et la sécurité du code. Cependant, de nombreuses organisations sont confrontées aux défis importants suivants :

  • Prise de conscience différée des vulnérabilités critiques en raison de l'inefficacité des systèmes de notification

  • Processus de prise de décision lents causés par des flux de travail d'approbation déconnectés

  • Absence de réponses immédiates et exploitables en cas d'échec du scan SAST

  • Communication et collaboration fragmentées autour des résultats de sécurité

  • Configuration manuelle de l'infrastructure fastidieuse et sujette aux erreurs pour les outils de sécurité

Ces problèmes augmentent souvent les risques de sécurité, retardent les publications et réduisent la productivité des équipes. Pour relever efficacement ces défis, il faut une solution capable de rationaliser la gestion des résultats du SAST, d'améliorer la collaboration des équipes et d'automatiser le provisionnement de l'infrastructure.

Les principales fonctionnalités de la solution sont les suivantes :

  • Notifications personnalisées — Les alertes et notifications en temps réel sont transmises directement aux canaux de discussion de l'équipe, ce qui permet de détecter et d'agir rapidement en cas de vulnérabilité ou d'échec du scan SAST.

  • Approbations conversationnelles — Les parties prenantes peuvent initier et terminer des flux de travail d'approbation pour les résultats du scan SAST de manière fluide via l'interface de chat, accélérant ainsi les processus de prise de décision.

  • Actions personnalisées — Les équipes peuvent définir et exécuter des actions personnalisées en fonction des résultats du scan SAST, telles que le déclenchement automatique d'e-mails en cas de défaillance du contrôle qualité ou l'amélioration de la réactivité face aux problèmes de sécurité.

  • Collaboration centralisée — Toutes les discussions, décisions et actions liées au scan SAST sont conservées dans un environnement de discussion unifié, ce qui favorise une meilleure collaboration et un partage des connaissances entre les membres de l'équipe.

  • Infrastructure sous forme de code (IaC) : l'ensemble de la solution est enveloppé de AWS CloudFormation modèles, ce qui permet un provisionnement plus rapide et plus fiable de l'infrastructure tout en réduisant les erreurs de configuration manuelle.

Conditions préalables et limitations

Prérequis

  • Un actif Compte AWS.

  • Rôle AWS Identity and Access Management (IAM) autorisé à créer et à gérer les ressources associées aux ressources Services AWS répertoriées dans Outils.

  • Un espace de travail Slack.

    Amazon Q Developer dans les applications de chat a été ajouté à l'espace de travail Slack requis en tant que plug-in. Pour plus d'informations, consultez la section Ajouter des applications à votre espace de travail Slack dans la documentation Slack. Notez l'identifiant de l'espace de travail Slack tel qu'indiqué sur le une AWS Management Console fois l'enregistrement réussi.

  • Un client Amazon Q Developer configuré dans des applications de chat, avec l'ID de l'espace de travail facilement disponible pour la saisie dans la AWS CloudFormation console. Pour obtenir des instructions, consultez la section Configurer un client Slack dans le Guide de l'administrateur des applications de chat Amazon Q pour les développeurs.

  • Un compte e-mail source créé et vérifié dans Amazon Simple Email Service (Amazon SES) pour envoyer des e-mails d'approbation. Pour les instructions de configuration, consultez la section Création et vérification des identités e-mail dans le manuel Amazon Simple Email Service Developer Guide.

  • Adresse e-mail de destination pour recevoir les notifications d'approbation. Cette adresse peut être une boîte de réception partagée ou une liste de distribution spécifique à une équipe.

  • Une SonarQube instance opérationnelle accessible depuis votre Compte AWS. Pour plus d'informations, consultez les instructions SonarQube d'installation.

  • Un jeton SonarQube utilisateur autorisé à déclencher et à créer des projets via le pipeline.

Limites

  • La création de boutons d'action personnalisés est un processus manuel dans cette solution.

  • Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir Services AWS par région. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.

Architecture

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

Flux de travail pour déployer l'assurance qualité du code automatisée pour la gestion des versions à l'aide d'Amazon Q Developer.

Le schéma montre le flux de travail automatisé d'assurance qualité du code :

  1. Préparation et téléchargement du code :

    • Le développeur compresse la base de code dans un fichier .zip.

    • Le développeur télécharge manuellement le fichier .zip dans un compartiment Amazon Simple Storage Service (Amazon S3) désigné.

  2. Déclenchement et AWS Step Functions orchestration d'événements Amazon S3 :

    • L'événement de téléchargement Amazon S3 déclenche un flux de travail Step Functions.

    • Step Functions orchestre un scan SAST à l'aide de. SonarQube

    • Le flux de travail surveille l'état de la AWS CodeBuild tâche pour déterminer les prochaines actions. En cas de CodeBuild succès (contrôle qualité), le flux de travail s'arrête. En cas d' CodeBuild échec, une AWS Lambda fonction est invoquée à des fins de diagnostic. Pour plus de détails, consultez AWS Step Functions la section logique plus loin dans cette section.

  3. AWS CodeBuild exécution :

    • La CodeBuild tâche exécute une SonarQube analyse de la base de code téléchargée.

    • Les artefacts de scan sont stockés dans un compartiment Amazon S3 distinct à des fins d'audit et d'analyse.

  4. Analyse des défaillances (fonction Lambda) :

    • En CodeBuild cas d'échec, la fonction CheckBuildStatus Lambda est déclenchée.

    • En cas de CodeBuild succès, le processus est arrêté et aucune autre action n'est nécessaire.

  5. La fonction Lambda analyse la cause de la défaillance (défaillance du contrôle qualité ou autres problèmes)

    • La CheckBuildStatus fonction crée une charge utile personnalisée avec des informations détaillées sur les défaillances.

    • La CheckBuildStatus fonction publie la charge utile personnalisée dans une rubrique Amazon Simple Notification Service (Amazon SNS).

  6. Système de notification :

    • Amazon SNS transmet la charge utile à Amazon Q Developer dans des applications de chat pour l'intégration à Slack.

  7. Intégration à Slack :

    • Dans les applications de chat, Amazon Q Developer publie une notification sur le canal Slack désigné.

  8. Processus d'approbation :

    • Les approbateurs examinent les détails de l'échec dans la notification Slack.

    • Les approbateurs peuvent initier l'approbation à l'aide du bouton Approuver dans Slack.

  9. Gestionnaire d'approbation :

    • Une fonction Lambda d'approbation traite l'action d'approbation depuis Slack.

    • La fonction d'approbation publie le message personnalisé sur Amazon SES.

  10. Message généré :

    • La fonction d'approbation génère un message personnalisé pour les notifications destinées aux développeurs.

  11. Notification aux développeurs :

    • Amazon SES envoie un e-mail au développeur avec les prochaines étapes ou les actions requises.

Ce flux de travail associe le téléchargement manuel du code à des contrôles de qualité automatisés, fournit un feedback immédiat via Slack et permet une intervention humaine si nécessaire, garantissant ainsi un processus de révision du code robuste et flexible.

AWS Step Functions logique

Comme indiqué dans le schéma d'architecture précédent, si le transfert du contrôle qualité SonarQube échoue, le flux de travail passe à la fonction CheckBuildStatus Lambda. La CheckBuildStatus fonction déclenche une notification sur le canal Slack. Chaque notification inclut des informations avec les prochaines étapes suggérées. Les types de notifications sont les suivants :

  • L'application a échoué lors de l'analyse de sécurité du code : l'utilisateur reçoit cette notification lorsque le code téléchargé n'a pas réussi le scan SonarQube de sécurité. L'utilisateur peut choisir APPROVE pour accepter le build. Cependant, la notification conseille à l'utilisateur de se méfier de la mauvaise qualité du code et des risques de sécurité potentiels. La notification inclut les informations suivantes :

    • Prochaines étapes : Erreur : État du contrôle de qualité : ÉCHEC — Afficher les détails à l'URL fournie.

    • Triez les vulnérabilités comme indiqué dans le document à l'adresse URL fournie.

    • CodeBuild les détails sont disponibles sur place à l'adresse URL fournie.

  • Le pipeline d'analyse des applications a échoué pour une autre raison : l'utilisateur reçoit cette notification lorsque le pipeline échoue pour une raison autre que l'échec de l'analyse de sécurité du code. La notification inclut les informations suivantes :

    • Pour les étapes suivantes, cliquez sur le lien fourni pour un dépannage plus approfondi.

Pour voir des captures d'écran des notifications telles qu'elles apparaissent sur une chaîne Slack, rendez-vous dans le dossier des ressources du référentiel GitHub chatops-slack.

Le schéma suivant montre un exemple du statut de l'étape Step Functions après l'échec du contrôle qualité.

État de l'étape du flux de travail d'AWS Step Functions après l'échec du test Quality Gate.

Outils

Services AWS

  • Amazon Q Developer dans les applications de chat vous permet d'utiliser les canaux de discussion Amazon Chime, Microsoft Teams et Slack pour surveiller les événements opérationnels de vos applications et y répondre. AWS Avis de fin de support : le 20 février 2026, le support du service Amazon Chime AWS prendra fin. Après le 20 février 2026, vous ne pourrez plus accéder à la console Amazon Chime ni aux ressources de l'application Amazon Chime. Pour plus d'informations, consultez le billet de blog. Cela n'a aucune incidence sur la disponibilité du service Amazon Chime SDK.

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, de bout Comptes AWS en bout Régions AWS.

  • AWS CodeBuildest un service de génération entièrement géré qui vous aide à compiler le code source, à exécuter des tests unitaires et à produire des artefacts prêts à être déployés.

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.

  • AWS Key Management Service (AWS KMS) vous aide à créer et à contrôler des clés cryptographiques afin de protéger vos données.

  • AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • AWS Secrets Manager vous aide à remplacer les informations d'identification codées en dur dans votre code, y compris les mots de passe, par un appel d'API à Secrets Manager pour récupérer le secret par programmation.

  • Amazon Simple Email Service (Amazon SES) vous permet d'envoyer et de recevoir des e-mails en utilisant vos propres adresses e-mail et domaines.

  • Amazon Simple Notification Service (Amazon SNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • AWS Step Functionsest un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et d'autres fonctions Services AWS pour créer des applications critiques pour l'entreprise.

Autres outils

  • Slack, une offre de Salesforce, est une plateforme conversationnelle basée sur l'IA qui permet la collaboration par chat et vidéo, automatise les processus sans code et prend en charge le partage d'informations.

  • SonarQubeest un outil d'analyse sur site conçu pour détecter les problèmes de codage dans plus de 30 langages, frameworks et plateformes IaC.

Référentiel de code

Le code de ce modèle est disponible dans le dépôt GitHub chatops-slack.

Bonnes pratiques

  • CloudFormation gestion des piles : si vous rencontrez des défaillances lors de l'exécution de la CloudFormation pile, nous vous recommandons de supprimer la pile défaillante. Recréez-le ensuite avec les valeurs de paramètres correctes. Cette approche permet un déploiement propre et permet d'éviter les conflits potentiels ou les implémentations partielles.

  • Configuration des e-mails dans une boîte de réception partagée : lorsque vous configurez le SharedInboxEmail paramètre, utilisez une liste de distribution commune accessible à tous les développeurs concernés. Cette approche favorise la transparence et permet aux notifications importantes de parvenir aux membres de l'équipe concernés.

  • Flux de travail d'approbation de production : pour les environnements de production, limitez l'accès au canal Slack utilisé pour les approbations de construction. Seuls les approbateurs désignés doivent être membres de cette chaîne. Cette pratique permet de maintenir une chaîne de responsabilité claire et d'améliorer la sécurité en limitant le nombre de personnes habilitées à approuver les modifications critiques.

  • Autorisations IAM — Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.

Épopées

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Pour cloner le dépôt chatops-slack pour ce modèle, utilisez la commande suivante.

git clone “git@github.com:aws-samples/chatops-slack.git“

AWS DevOps, responsable du développement, DevOps ingénieur, administrateur du cloud

Créez les fichiers .zip contenant le code Lambda.

Créez les fichiers .zip pour le code de AWS Lambda fonction de la ApprovalEmail fonctionnalité CheckBuildStatus et. Pour créer notification.zip etapproval.zip, utilisez les commandes suivantes.

cd chatops-slack/src
chmod -R 775 *
zip -r approval.zip approval
zip -r notification.zip notification
AWS DevOps, responsable du développement, DevOps ingénieur, administrateur du cloud
TâcheDescriptionCompétences requises

Exécutez le fichier de pre-requisite.yml pile.

Le fichier de pre-requisite.yml CloudFormation pile déploie les ressources initiales requises avant que vous n'exécutiez le fichier de app-security.yml pile. Pour exécuter le pre-requisite.yml fichier, procédez comme suit :

  1. Connectez-vous à la AWS Management ConsoleAWS CloudFormationconsole et ouvrez-la. Choisissez Créer une pile, puis choisissez Avec de nouvelles ressources (standard) dans la liste déroulante.

  2. Sur la page Créer une pile, choisissez Choisir un modèle existant et Charger un fichier modèle. Choisissez ensuite Choisir un fichier et sélectionnez pre-requisite.yml. Choisissez Suivant.

  3. Sur la page Spécifier les détails de la pile, entrez les valeurs des paramètres comme décrit dans Informations supplémentaires. Ensuite, choisissez Suivant.

  4. Sur la page Configurer les options de pile, choisissez le rôle IAM pour créer les ressources, comme décrit dans Conditions préalables. Ensuite, choisissez Suivant.

  5. Sur la page Réviser et créer, choisissez Soumettre.

  6. Sur la page de détails de la pile, choisissez les onglets Ressources et Sorties. Notez les valeurs des CKMSKeyId paramètres S3LambdaCKMSKeyArn, et qui sont utilisées dans les étapes suivantes.

Administrateur AWS, AWS DevOps, responsable du développement, DevOps ingénieur

Téléchargez les fichiers .zip dans le compartiment Amazon S3.

Chargez les approval.zip fichiers notification.zip et que vous avez créés précédemment dans le compartiment Amazon S3 nomméS3LambdaBucket. Le fichier de app-security.yml CloudFormation pile est utilisé S3LambdaBucket pour provisionner la fonction Lambda.

AWS DevOps, responsable du développement, DevOps ingénieur, administrateur système AWS
TâcheDescriptionCompétences requises

Exécutez le fichier de app-security.yml pile.

Les fichiers de app-security.yml pile déploient l'infrastructure restante pour le système de notification et d'approbation. Pour exécuter le app-security.yml fichier, procédez comme suit :

  1. Connectez-vous à la AWS Management ConsoleAWS CloudFormationconsole et ouvrez-la. Choisissez Créer une pile, puis choisissez Avec de nouvelles ressources (standard) dans la liste déroulante.

  2. Sur la page Créer une pile, choisissez Choisir un modèle existant et Charger un fichier modèle. Choisissez ensuite Choisir un fichier et sélectionnez app-security.yml. Choisissez Suivant.

  3. Sur la page Spécifier les détails de la pile, entrez les valeurs des paramètres comme décrit dans Informations supplémentaires. Ensuite, choisissez Suivant.

  4. Sur la page Configurer les options de pile, choisissez le rôle IAM pour créer les ressources, comme décrit dans Conditions préalables. Ensuite, choisissez Suivant.

  5. Sur la page Réviser et créer, choisissez Soumettre.

AWS DevOps, administrateur système AWS, DevOps ingénieur, responsable du développement

Testez la configuration des notifications.

Pour tester la configuration des notifications, procédez comme suit :

  1. Ouvrez la console Amazon SNS. Dans le panneau de navigation de gauche, choisissez Rubriques.

  2. Sélectionnez le nom du sujet qui se termine par LambdaToAWSSlackChatbot.

  3. Sur la page de détails du sujet, choisissez Publier le message.

  4. Sur la page Publier le message dans le sujet, pour le corps du message à envoyer au point de terminaison, entrez ce qui suit :

    { "version": "1.0", "source": "custom", "content": { "description": ":warning: This is a test notification" } }
  5. Choisissez Publier le message.

Une fois le message de test envoyé avec succès, vous devriez voir une notification sur le canal Slack. Pour plus d'informations, consultez la section Tester les notifications envoyées Services AWS à Slack dans le guide de l'administrateur des applications de chat Amazon Q pour les développeurs.

AWS DevOps, administrateur système AWS, DevOps ingénieur, responsable du développement
TâcheDescriptionCompétences requises

Configurez une action Lambda personnalisée.

Pour configurer l' AWS Lambda action personnalisée, procédez comme suit :

  1. Cliquez sur le bouton représentant des points de suspension verticaux en bas de la notification de livraison dans votre chaîne Slack.

  2. Dans Gérer les actions, choisissez Créer.

  3. Entrez un nom d'action personnalisé, par exemple Approuver. Ce nom est un identifiant unique pour votre action personnalisée.

  4. Entrez un nom pour votre bouton d'action personnalisé, par exemple, Approuver. Ce nom apparaît sur un bouton de votre notification. Ce nom doit comporter 20 caractères ou moins et peut intégrer des emojis.

  5. Pour Type d'action personnalisé, sélectionnez Action Lambda.

  6. Choisissez Suivant.

  7. Sélectionnez l'action Compte AWS et l' Région AWS endroit où vous souhaitez déployer cette action.

  8. Choisissez Load Lambdas.

  9. Dans Définir une fonction Lambda, sélectionnez une fonction Lambda qui se termine par. ApprovalEmailLambdaEnsuite, choisissez Suivant.

  10. Pour créer le bouton Approuver, choisissez Enregistrer sur la page des critères d'affichage.

Administrateur AWS DevOps, responsable du développement, DevOps ingénieur, administrateur Slack

Validez le flux d'approbation.

Pour vérifier que le flux d'approbation fonctionne comme prévu, cliquez sur le bouton Approuver dans Slack.

Slackbot doit envoyer une notification sur le fil de discussion avec la chaîne de confirmation « L'e-mail d'approbation a été envoyé avec succès ».

Administrateur AWS, DevOps ingénieur AWS DevOps, administrateur Slack

Résolution des problèmes

ProblèmeSolution

Mauvaises configurations de Slack

Pour plus d'informations sur la résolution des problèmes liés aux mauvaises configurations de Slack, consultez la section Résolution des problèmes liés aux développeurs Amazon Q Developer dans le Guide de l'administrateur d'Amazon Q Developer in Chat applications.

Le scan a échoué pour une autre raison

Cette erreur signifie que la tâche de génération du code a échoué. Pour résoudre le problème, cliquez sur le lien figurant dans le message. L'échec de la tâche de génération du code peut avoir les causes suivantes :

  • L'application n'est pas correctement empaquetée. La sonar-scanner commande ne trouve pas le sonar.project.env.properties fichier.

  • Les valeurs des SonarToken paramètres SonarFileNameSonarFileDirectory, ou sont incorrectes. Vérifiez les valeurs, puis exécutez à nouveau les fichiers de pile.

  • L'hôte Sonar n'est pas joignable.

  • Autres problèmes que vous pouvez résoudre à l'aide des journaux.

Ressources connexes

AWS documentation

Autres ressources

Informations supplémentaires

Cette solution met l'accent sur les actions personnalisées d'Amazon Q Developer dans les applications de chat à des fins de gestion des versions. Cependant, vous pouvez réutiliser la solution en modifiant le code Lambda en fonction de votre cas d'utilisation spécifique et en le complétant.

Paramètres des fichiers de CloudFormation pile

Le tableau suivant présente les paramètres et leurs descriptions pour le fichier de CloudFormation pilepre-requisite.yml.

Clé

Description

StackName

Nom de la CloudFormation pile.

S3LambdaBucket

Le nom du compartiment Amazon S3 dans lequel vous chargez le code Lambda. Le nom doit être globalement unique.

SonarToken

Le jeton SonarQube utilisateur tel que décrit dans la section Conditions préalables.

Le tableau suivant présente les paramètres et leurs descriptions pour le fichier de CloudFormation pileapp-security.yml.

Clé

Description

CKMSKeyArn

Le nom de ressource AWS KMS key Amazon (ARN) utilisé dans les rôles IAM et les fonctions Lambda créés dans cette pile.

CKMSKeyId

L' AWS KMS key ID utilisé dans la rubrique Amazon SNS créée dans cette pile.

EnvironmentType

Nom de l'environnement client pour le déploiement du pipeline d'analyse des applications. Sélectionnez le nom de l'environnement dans la liste déroulante des valeurs autorisées.

S3LambdaBucket

Le nom du compartiment Amazon S3 qui contient les notification.zip fichiers approval.zip et.

SESEmail

Le nom de l'identité e-mail enregistrée dans Amazon SES, tel que décrit dans la section Conditions préalables. Cette identité est l'adresse e-mail source.

SharedInboxMail

Adresse e-mail de destination à laquelle les notifications de numérisation sont envoyées.

SlackChannelId

L'identifiant de la chaîne Slack sur laquelle vous souhaitez que les notifications soient envoyées. Pour trouver l'identifiant de la chaîne, cliquez avec le bouton droit sur le nom de la chaîne dans Détails de la chaîne dans l'application Slack. L'identifiant de la chaîne se trouve en bas.

SlackWorkspaceId

L'identifiant de l'espace de travail Slack tel que décrit dans la section Conditions préalables. Pour trouver l'identifiant de l'espace de travail Slack, connectez-vous à la AWS Management Console console Amazon Q Developer dans les applications de chat, puis choisissez Clients configurés, Slack, WorkspaceID.

StackName

Nom de la CloudFormation pile.

SonarFileDirectory

Le répertoire qui contient le sonar.project.<env>.properties fichier.

SonarFileName

Le nom du sonar.project.<env>properties fichier.

SourceCodeZip

Nom du fichier .zip qui contient le sonar.project.<env>properties fichier et le code source.