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.

Le schéma montre le flux de travail automatisé d'assurance qualité du code :
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é.
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.
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.
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.
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).
Système de notification :
Amazon SNS transmet la charge utile à Amazon Q Developer dans des applications de chat pour l'intégration à Slack.
Intégration à Slack :
Dans les applications de chat, Amazon Q Developer publie une notification sur le canal Slack désigné.
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.
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.
Message généré :
La fonction d'approbation génère un message personnalisé pour les notifications destinées aux développeurs.
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
Le schéma suivant montre un exemple du statut de l'étape Step Functions après l'échec du contrôle qualité.

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. SonarQube
est 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âche | Description | Compétences requises |
---|---|---|
Pour cloner le référentiel. | Pour cloner le dépôt chatops-slack
| 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
| AWS DevOps, responsable du développement, DevOps ingénieur, administrateur du cloud |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez le fichier de | Le fichier de
| Administrateur AWS, AWS DevOps, responsable du développement, DevOps ingénieur |
Téléchargez les fichiers .zip dans le compartiment Amazon S3. | Chargez les | AWS DevOps, responsable du développement, DevOps ingénieur, administrateur système AWS |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez le fichier de | Les fichiers de
| 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 :
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âche | Description | Compétences requises |
---|---|---|
Configurez une action Lambda personnalisée. | Pour configurer l' AWS Lambda action personnalisée, procédez comme suit :
| 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ème | Solution |
---|---|
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 :
|
Ressources connexes
AWS documentation
Création d'une procédure d'identification par adresse e-mail
Autres ressources
Ajouter des applications à votre espace de travail Slack
(documentation Slack) Génération et utilisation de jetons
(SonarQube documentation) Présentation de l'installation du serveur
(SonarQube documentation)
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 |
---|---|
| Nom de la CloudFormation pile. |
| Le nom du compartiment Amazon S3 dans lequel vous chargez le code Lambda. Le nom doit être globalement unique. |
| 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 |
---|---|
| Le nom de ressource AWS KMS key Amazon (ARN) utilisé dans les rôles IAM et les fonctions Lambda créés dans cette pile. |
| L' AWS KMS key ID utilisé dans la rubrique Amazon SNS créée dans cette pile. |
| 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. |
| Le nom du compartiment Amazon S3 qui contient les |
| 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. |
| Adresse e-mail de destination à laquelle les notifications de numérisation sont envoyées. |
| 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. |
| 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. |
| Nom de la CloudFormation pile. |
| Le répertoire qui contient le |
| Le nom du |
| Nom du fichier .zip qui contient le |