Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa una ChatOps soluzione per gestire i risultati della scansione SAST utilizzando Amazon Q Developer nelle applicazioni di chat, azioni personalizzate e AWS CloudFormation
Creato da Anand Bukkapatnam Tirumala (AWS)
Riepilogo
Questo modello presenta una soluzione completa che utilizza Amazon Q Developer nelle applicazioni di chat per semplificare la gestione degli errori di scansione statici dei test di sicurezza delle applicazioni (SAST) segnalati. SonarQube Questo approccio innovativo integra azioni e notifiche personalizzate in un'interfaccia conversazionale, abilitando processi decisionali e di collaborazione efficienti all'interno dei team di sviluppo.
Nell'odierno ambiente di sviluppo software frenetico, la gestione efficiente dei risultati di scansione SAST è fondamentale per mantenere la qualità e la sicurezza del codice. Tuttavia, molte organizzazioni devono affrontare le seguenti sfide significative:
Ritardo nella consapevolezza delle vulnerabilità critiche a causa dell'inefficienza dei sistemi di notifica
Processi decisionali lenti causati da flussi di lavoro di approvazione scollegati
Mancanza di risposte immediate e attuabili agli errori di scansione SAST
Comunicazione e collaborazione frammentate in merito ai problemi di sicurezza
Configurazione manuale dell'infrastruttura per gli strumenti di sicurezza, dispendiosa in termini di tempo e soggetta a errori
Questi problemi spesso comportano un aumento dei rischi per la sicurezza, ritardi nei rilasci e una riduzione della produttività del team. Per affrontare efficacemente queste sfide è necessaria una soluzione in grado di semplificare la gestione dei risultati SAST, migliorare la collaborazione tra i team e automatizzare il provisioning dell'infrastruttura.
Le caratteristiche principali della soluzione includono:
Notifiche personalizzate: gli avvisi e le notifiche in tempo reale vengono inviati direttamente ai canali di chat del team, garantendo una pronta consapevolezza e azioni in caso di vulnerabilità o errori della scansione SAST.
Approvazioni conversazionali: le parti interessate possono avviare e completare i flussi di lavoro di approvazione dei risultati della scansione SAST senza problemi all'interno dell'interfaccia di chat, accelerando i processi decisionali.
Azioni personalizzate: i team possono definire ed eseguire azioni personalizzate in base ai risultati della scansione SAST, come l'attivazione automatica di messaggi e-mail in caso di guasti ai gate di qualità, migliorando la reattività ai problemi di sicurezza.
Collaborazione centralizzata: tutte le discussioni, le decisioni e le azioni relative alla scansione SAST vengono conservate all'interno di un ambiente di chat unificato, che favorisce una migliore collaborazione e condivisione delle conoscenze tra i membri del team.
Infrastructure as code (IaC): l'intera soluzione è dotata di AWS CloudFormation modelli che consentono un provisioning dell'infrastruttura più rapido e affidabile riducendo al contempo gli errori di configurazione manuale.
Prerequisiti e limitazioni
Prerequisiti
Un attivo. Account AWS
Un ruolo AWS Identity and Access Management (IAM) con autorizzazioni per creare e gestire risorse associate a Servizi AWS quelle elencate in Strumenti.
Uno spazio di lavoro Slack.
Amazon Q Developer in applicazioni di chat aggiunte all'area di lavoro Slack richiesta come plug-in. Per ulteriori informazioni, consulta Aggiungere app al tuo spazio di lavoro Slack
nella documentazione di Slack. Tieni nota dell'ID dell'area di lavoro Slack come mostrato dopo la registrazione avvenuta con successo. AWS Management Console Un client di applicazioni Amazon Q Developer in chat configurato, con l'ID dello spazio di lavoro immediatamente disponibile per l'immissione nella AWS CloudFormation console. Per istruzioni, consulta Configurare un client Slack nella Guida per amministratori delle applicazioni Amazon Q Developer in chat.
Un account e-mail di origine creato e verificato in Amazon Simple Email Service (Amazon SES) per inviare messaggi e-mail di approvazione. Per istruzioni di configurazione, consulta Creazione e verifica delle identità e-mail nella Amazon Simple Email Service Developer Guide.
Un indirizzo e-mail di destinazione per ricevere le notifiche di approvazione. Questo indirizzo può essere una casella di posta condivisa o una lista di distribuzione specifica del team.
Un' SonarQube istanza operativa accessibile dal tuo Account AWS. Per ulteriori informazioni, consulta le istruzioni SonarQube di installazione
. Un token SonarQube utente
con le autorizzazioni per attivare e creare progetti attraverso la pipeline.
Limitazioni
Le azioni personalizzate per Amazon Q Developer nelle applicazioni di chat non sono attualmente supportate tramite AWS CloudFormation. La creazione di pulsanti di azione personalizzati è un processo manuale in questa soluzione.
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.
Architettura
Il diagramma seguente mostra i componenti del flusso di lavoro e dell'architettura per questo modello.

Il diagramma mostra il flusso di lavoro automatizzato per il controllo automatico della qualità del codice:
Preparazione e caricamento del codice:
Lo sviluppatore comprime la codebase in un file.zip.
Lo sviluppatore carica manualmente il file.zip in un bucket Amazon Simple Storage Service (Amazon S3) designato.
Attivazione e orchestrazione di eventi Amazon S3: AWS Step Functions
L'evento di caricamento di Amazon S3 attiva un flusso di lavoro Step Functions.
Step Functions orchestra una scansione SAST utilizzando. SonarQube
Il flusso di lavoro monitora lo stato del AWS CodeBuild lavoro per determinare le azioni successive. In caso di CodeBuild esito positivo (quality gate pass), il flusso di lavoro viene interrotto. In caso di CodeBuild errore, viene richiamata una AWS Lambda funzione per la diagnostica. Per ulteriori dettagli, consulta la sezione AWS Step Functions logica più avanti in questa sezione.
AWS CodeBuild esecuzione:
Il CodeBuild job esegue una SonarQube scansione sulla codebase caricata.
Gli artefatti di scansione vengono archiviati in un bucket Amazon S3 separato per il controllo e l'analisi.
Analisi dei guasti (funzione Lambda):
In CodeBuild caso di errore, viene attivata la funzione
CheckBuildStatus
Lambda.In caso di CodeBuild successo, il processo viene interrotto e non sono necessarie ulteriori azioni.
La funzione Lambda analizza la causa del guasto (guasto del Quality Gate o altri problemi)
La
CheckBuildStatus
funzione crea un payload personalizzato con informazioni dettagliate sugli errori.La
CheckBuildStatus
funzione pubblica il payload personalizzato su un argomento di Amazon Simple Notification Service (Amazon SNS).
Sistema di notifica:
Amazon SNS inoltra il payload ad Amazon Q Developer nelle applicazioni di chat per l'integrazione con Slack.
Integrazione con Slack:
Amazon Q Developer nelle applicazioni di chat pubblica una notifica nel canale Slack designato.
Procedura di approvazione:
Gli approvatori esaminano i dettagli dell'errore nella notifica di Slack.
Gli approvatori possono avviare l'approvazione utilizzando il pulsante Approva in Slack.
Gestore dell'approvazione:
Una funzione Approval Lambda elabora l'azione di approvazione di Slack.
La funzione di approvazione genera un messaggio personalizzato per la notifica agli sviluppatori.
La funzione Approval pubblica il messaggio personalizzato su Amazon SES.
Notifica per gli sviluppatori:
Amazon SES invia un messaggio e-mail allo sviluppatore con i passaggi successivi o le azioni richieste.
Questo flusso di lavoro combina il caricamento manuale del codice con controlli di qualità automatici, fornisce un feedback immediato tramite Slack e consente l'intervento umano quando necessario, garantendo un processo di revisione del codice solido e flessibile.
AWS Step Functions logica
Come mostrato nel diagramma di architettura precedente, se il quality gate pass on SonarQube fallisce, il flusso di lavoro passa alla funzione CheckBuildStatus
Lambda. La CheckBuildStatus
funzione attiva una notifica sul canale Slack. Ogni notifica include informazioni con i passaggi successivi suggeriti. Di seguito sono riportati i tipi di notifiche:
L'applicazione non è riuscita nella scansione di sicurezza del codice: l'utente riceve questa notifica quando il codice caricato non ha superato la scansione SonarQube di sicurezza. L'utente può scegliere APPROVE per accettare la build. Tuttavia, la notifica consiglia all'utente di fare attenzione ai potenziali rischi di scarsa qualità del codice e alla sicurezza. La notifica include i seguenti dettagli:
Passaggi successivi: Errore: Quality gate status: FAILED — Visualizza i dettagli all'URL fornito.
Valuta le vulnerabilità come indicato nel documento all'URL fornito.
CodeBuild i dettagli sono disponibili nella posizione all'URL fornito.
La pipeline di scansione dell'applicazione non è riuscita per qualche altro motivo: l'utente riceve questa notifica quando la pipeline non riesce per qualche motivo diverso dal fallimento della scansione di sicurezza del codice. La notifica include i seguenti dettagli:
Per i passaggi successivi, vai al link fornito per ulteriori informazioni sulla risoluzione dei problemi.
Per vedere gli screenshot delle notifiche così come appaiono in un canale Slack, vai alla cartella assets
Il diagramma seguente mostra un esempio dello stato della fase di Step Functions dopo il fallimento del Quality Gate Pass.

Strumenti
Servizi AWS
Le applicazioni di chat di Amazon Q Developer ti consentono di utilizzare i canali di chat Amazon Chime, Microsoft Teams e Slack per monitorare e rispondere agli eventi operativi nelle tue applicazioni. AWS
AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su e. Account AWS Regioni AWS
AWS CodeBuildè un servizio di compilazione completamente gestito che consente di compilare codice sorgente, eseguire test unitari e produrre artefatti pronti per l'implementazione.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
AWS Key Management Service (AWS KMS) ti aiuta a creare e controllare chiavi crittografiche per proteggere i tuoi dati.
AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Con AWS Secrets Manager puoi sostituire le credenziali nel codice,incluse le password, con una chiamata API a Secrets Manager in modo da recuperare il segreto a livello di codice.
Amazon Simple Email Service (Amazon SES) Simple Email Service (Amazon SES) ti aiuta a inviare e ricevere messaggi e-mail utilizzando i tuoi indirizzi e-mail e domini.
Amazon Simple Notification Service (Amazon SNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.
Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
AWS Step Functionsè un servizio di orchestrazione senza server che ti aiuta a combinare AWS Lambda funzioni e altro per creare applicazioni aziendali critiche. Servizi AWS
Altri strumenti
Slack
, un'offerta di Salesforce, è una piattaforma conversazionale basata sull'intelligenza artificiale che offre collaborazione tramite chat e video, automatizza i processi senza codice e supporta la condivisione delle informazioni. SonarQube
è uno strumento di analisi locale progettato per rilevare problemi di codifica in oltre 30 lingue, framework e piattaforme IaC.
Archivio di codice
Il codice per questo pattern è disponibile nel repository GitHub chatops-slack
Best practice
CloudFormation gestione dello stack: se riscontri errori durante l'esecuzione CloudFormation dello stack, ti consigliamo di eliminare lo stack fallito. Quindi, ricrealo con i valori dei parametri corretti. Questo approccio supporta una distribuzione pulita e aiuta a evitare potenziali conflitti o implementazioni parziali.
Configurazione condivisa della posta in arrivo: quando configuri il
SharedInboxEmail
parametro, utilizza una lista di distribuzione comune accessibile a tutti gli sviluppatori interessati. Questo approccio promuove la trasparenza e aiuta le notifiche importanti a raggiungere i membri del team interessati.Flusso di lavoro di approvazione della produzione: per gli ambienti di produzione, limita l'accesso al canale Slack utilizzato per le approvazioni delle build. Solo gli approvatori designati devono essere membri di questo canale. Questa pratica mantiene una chiara catena di responsabilità e migliora la sicurezza limitando chi può approvare modifiche critiche.
Autorizzazioni IAM: segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Clonare il repository. | Per clonare il repository chatops-slack
| AWS DevOps, responsabile di sviluppo, DevOps ingegnere, amministratore cloud |
Crea i file.zip che contengono il codice Lambda. | Crea i file.zip per il codice AWS Lambda funzionale per la funzionalità and.
| AWS DevOps, responsabile di sviluppo, DevOps ingegnere, amministratore cloud |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui il file | Il file
| Amministratore AWS, AWS DevOps, responsabile di Build, DevOps ingegnere |
Carica i file.zip nel bucket Amazon S3. | Carica i | AWS DevOps, responsabile di sviluppo, DevOps ingegnere, amministratore di sistema AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui il file | I file
| AWS DevOps, amministratore di sistema AWS, DevOps ingegnere, responsabile Build |
Verifica la configurazione delle notifiche. | Per testare la configurazione delle notifiche, procedi come segue:
Dopo che il messaggio di prova è stato recapitato correttamente, dovresti vedere una notifica sul canale Slack. Per ulteriori informazioni, consulta Notifiche di test da Servizi AWS a Slack nella Guida per amministratori delle applicazioni Amazon Q Developer in chat. | AWS DevOps, amministratore di sistema AWS, DevOps ingegnere, responsabile Build |
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura un'azione Lambda personalizzata. | Per configurare l' AWS Lambda azione personalizzata, procedi come segue:
| Amministratore AWS, AWS DevOps, responsabile di Build, DevOps ingegnere, amministratore Slack |
Convalida il flusso di approvazione. | Per verificare che il flusso di approvazione funzioni come previsto, scegli il pulsante Approva in Slack. Slackbot dovrebbe inviare una notifica sul thread dei messaggi con la stringa di conferma Email di approvazione inviata con successo. | Amministratore AWS, AWS DevOps, DevOps ingegnere, amministratore Slack |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Configurazioni errate di Slack | Per informazioni sulla risoluzione dei problemi relativi alle configurazioni errate di Slack, consulta Risoluzione dei problemi di Amazon Q Developer nelle applicazioni di chat nella Guida per l'amministratore delle applicazioni Amazon Q Developer in chat. |
La scansione non è riuscita per qualche altro motivo | Questo errore indica che l'attività di compilazione del codice non è riuscita. Per risolvere il problema, vai al link contenuto nel messaggio. L'errore dell'attività di compilazione del codice potrebbe avere le seguenti possibili cause:
|
Risorse correlate
AWS documentazione
Creazione di una procedura per l'identità di un indirizzo e-mail
Altre risorse
Aggiungi app al tuo spazio di lavoro Slack
(documentazione Slack) Generazione e utilizzo di token
(documentazione) SonarQube Introduzione all'installazione del server
(SonarQube documentazione)
Informazioni aggiuntive
Questa soluzione enfatizza le azioni personalizzate di Amazon Q Developer nelle applicazioni di chat per scopi di gestione dei rilasci. Tuttavia, puoi riutilizzare la soluzione modificando il codice Lambda per il tuo caso d'uso specifico e basandoti su di esso.
Parametri dei file stack CloudFormation
La tabella seguente mostra i parametri e le relative descrizioni per il file CloudFormation stack. pre-requisite.yml
Chiave | Descrizione |
---|---|
| Il nome dello CloudFormation stack. |
| Il nome del bucket Amazon S3 in cui carichi il codice Lambda. Il nome deve essere univoco a livello globale. |
|
La tabella seguente mostra i parametri e le relative descrizioni per il file CloudFormation stack. app-security.yml
Chiave | Descrizione |
---|---|
| L' AWS KMS key Amazon Resource Name (ARN) utilizzato nei ruoli IAM e nelle funzioni Lambda create in questo stack. |
| L' AWS KMS key ID utilizzato nell'argomento Amazon SNS creato in questo stack. |
| Il nome dell'ambiente client per la distribuzione della pipeline di scansione delle applicazioni. Seleziona il nome dell'ambiente dall'elenco a discesa dei valori consentiti. |
| Il nome del bucket Amazon S3 che contiene i |
| Il nome dell'identità e-mail registrata in Amazon SES come descritto in Prerequisiti. Questa identità è l'indirizzo e-mail di origine. |
| L'indirizzo e-mail di destinazione a cui vengono inviate le notifiche di scansione. |
| L'ID del canale Slack a cui desideri inviare le notifiche. Per trovare l'ID del canale, fai clic con il pulsante destro del mouse sul nome del canale in Dettagli del canale nell'app Slack. L'ID del canale si trova in basso. |
| L'ID dell'area di lavoro di Slack come descritto in Prerequisiti. Per trovare l'ID dello spazio di lavoro Slack, accedi a AWS Management Console, apri la console delle applicazioni di chat Amazon Q Developer e scegli Clienti configurati, Slack, WorkspaceID. |
| Il nome dello stack. CloudFormation |
| La directory che contiene il |
| Il nome del |
| Il nome del file.zip che contiene il |