Implemente uma ChatOps solução para gerenciar os resultados do escaneamento SAST usando o Amazon Q Developer em aplicativos de bate-papo, ações personalizadas e CloudFormation - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implemente uma ChatOps solução para gerenciar os resultados do escaneamento SAST usando o Amazon Q Developer em aplicativos de bate-papo, ações personalizadas e CloudFormation

Anand Bukkapatnam Tirumala, Amazon Web Services

Resumo

Esse padrão apresenta uma solução abrangente que usa o Amazon Q Developer em aplicativos de bate-papo para agilizar o gerenciamento de falhas de verificação de testes estáticos de segurança de aplicativos (SAST) relatadas. SonarQube Essa abordagem inovadora integra ações e notificações personalizadas em uma interface conversacional, permitindo processos eficientes de colaboração e tomada de decisão nas equipes de desenvolvimento.

No ambiente de desenvolvimento de software acelerado de hoje, gerenciar os resultados de verificação de SAST com eficiência é crucial para manter a qualidade e a segurança do código. No entanto, muitas organizações enfrentam os seguintes desafios significativos:

  • Atraso na conscientização de vulnerabilidades críticas devido a sistemas de notificação ineficientes

  • Processos lentos de tomada de decisão causados por fluxos de trabalho de aprovação desconectados

  • Falta de respostas imediatas e acionáveis às falhas de verificação de SAST

  • Comunicação e colaboração fragmentadas em torno das descobertas de segurança

  • Configuração manual de infraestrutura demorada e propensa a erros para ferramentas de segurança

Esses problemas geralmente levam ao aumento dos riscos de segurança, atrasos nos lançamentos e à redução da produtividade da equipe. Para enfrentar esses desafios de forma eficaz, é necessária uma solução que possa agilizar o gerenciamento de resultados de SAST, aprimorar a colaboração das equipes e automatizar o provisionamento da infraestrutura.

Os principais recursos da solução incluem:

  • Notificações personalizadas: alertas e notificações em tempo real são enviados diretamente aos canais de chat da equipe, garantindo o conhecimento e a ação de maneira rápida para as vulnerabilidades ou falhas da verificação de SAST.

  • Aprovações conversacionais: as partes interessadas podem iniciar e concluir fluxos de trabalho de aprovação dos resultados de verificação de SAST facilmente na interface de chat, acelerando os processos de tomada de decisão.

  • Ações personalizadas: as equipes podem definir e executar ações personalizadas com base nos resultados da verificação de SAST, como acionar automaticamente mensagens de e-mail em caso de falhas no quality gate, melhorando a capacidade de resposta aos problemas de segurança.

  • Colaboração centralizada: todas as discussões, decisões e ações relacionadas à verificação de SAST são mantidas em um ambiente de chat unificado, promovendo melhor colaboração e compartilhamento de conhecimento entre os membros da equipe.

  • Infraestrutura como código (IaC) — Toda a solução está repleta de AWS CloudFormation modelos, permitindo um provisionamento de infraestrutura mais rápido e confiável, ao mesmo tempo que reduz os erros de configuração manual.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS.

  • Uma função AWS Identity and Access Management (IAM) com permissões para criar e gerenciar recursos associados aos Serviços da AWS listados em Ferramentas.

  • Um espaço de trabalho do Slack.

  • O Amazon Q Developer em aplicações de chat foi adicionado ao espaço de trabalho do Slack necessário como um plug-in. Para obter mais informações, consulte Add apps to your Slack workspace na documentação do Slack. Anote o ID do espaço de trabalho do Slack, conforme mostrado Console de gerenciamento da AWS após o registro bem-sucedido.

  • Um Amazon Q Developer configurado no cliente de aplicativos de bate-papo, com o ID do espaço de trabalho prontamente disponível para entrada no CloudFormation console. Para obter instruções, consulte Configure a Slack client no Guia do administrador do Amazon Q Developer em aplicações de chat.

  • Uma conta de e-mail de origem criada e verificada no Amazon Simple Email Service (Amazon SES) para enviar mensagens de aprovação por e-mail. Para obter instruções de configuração, consulte Creating and verifying email identities no Guia do desenvolvedor do Amazon Simple Email Service.

  • Um endereço de e-mail de destino para receber notificações de aprovação. Esse endereço pode ser uma caixa de entrada compartilhada ou uma lista específica de distribuição da equipe.

  • Uma SonarQube instância operacional que pode ser acessada a partir do seu Conta da AWS. Para obter mais informações, consulte as instruções SonarQube de instalação.

  • Um token de SonarQube usuário com permissões para acionar e criar projetos por meio do pipeline.

Limitações

  • A criação de botões de ação personalizados é um processo manual nessa solução.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte Serviços da AWS by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Arquitetura

O diagrama a seguir mostra o fluxo de trabalho e os componentes da arquitetura desse padrão.

Fluxo de trabalho para implantar a garantia de qualidade de código automatizada para gerenciamento de versões usando o Amazon Q Developer.

O diagrama mostra o fluxo de trabalho da garantia de qualidade do código automatizada:

  1. Preparação e upload do código:

    • O desenvolvedor compacta a base do código em um arquivo .zip.

    • O desenvolvedor carrega manualmente o arquivo .zip em um bucket designado do Amazon Simple Storage Service (Amazon S3).

  2. Gatilho e orquestração de eventos do Amazon S3: AWS Step Functions

    • O evento de upload do Amazon S3 aciona um fluxo de trabalho do Step Functions.

    • Step Functions orquestra uma verificação SAST usando. SonarQube

    • O fluxo de trabalho monitora o status do AWS CodeBuild trabalho para determinar as próximas ações. Se for CodeBuild bem-sucedido (Quality Gate Pass), o fluxo de trabalho será encerrado. Se CodeBuild falhar, uma AWS Lambda função será invocada para diagnóstico. Para obter mais detalhes, consulte Lógica do AWS Step Functions mais adiante nesta seção.

  3. AWS CodeBuild execução:

    • O CodeBuild trabalho executa uma SonarQube varredura na base de código carregada.

    • Os artefatos da verificação são armazenados em um bucket separado do Amazon S3 para auditoria e análise.

  4. Análise de falhas (função do Lambda):

    • Em CodeBuild caso de falha, a função CheckBuildStatus Lambda é acionada.

    • Em CodeBuild caso de sucesso, o processo é encerrado e nenhuma ação adicional é necessária.

  5. A função do Lambda analisa a causa da falha (falha no quality gate ou outros problemas)

    • A função CheckBuildStatus cria uma carga útil personalizada com informações detalhadas sobre falhas.

    • A função CheckBuildStatus publica a carga útil personalizada em um tópico do Amazon Simple Notification Service (Amazon SNS).

  6. Sistema de notificações:

    • O Amazon SNS encaminha a carga útil ao Amazon Q Developer em aplicações de chat para integração com o Slack.

  7. Integração do Slack:

    • O Amazon Q Developer em aplicações de chat publica uma notificação no canal designado do Slack.

  8. Processo de aprovação:

    • Os aprovadores analisam os detalhes da falha na notificação do Slack.

    • Os aprovadores podem iniciar a aprovação usando o botão Aprovar no Slack.

  9. Manipulador de aprovação:

    • Uma função do Lambda de aprovação processa a ação de aprovação do Slack.

    • A função de aprovação publica a mensagem personalizada no Amazon SES.

  10. Mensagem gerada:

    • A função de aprovação gera uma mensagem personalizada para notificação ao desenvolvedor.

  11. Notificação ao desenvolvedor:

    • O Amazon SES envia uma mensagem de e-mail ao desenvolvedor com as próximas etapas ou ações necessárias.

Esse fluxo de trabalho combina o upload manual de código com verificações de qualidade automatizadas, fornece feedback imediato por meio do Slack e permite a intervenção humana quando necessário, garantindo um processo robusto e flexível de revisão de código.

Lógica AWS Step Functions  

Conforme mostrado no diagrama de arquitetura anterior, se a passagem do portal de qualidade SonarQube falhar, o fluxo de trabalho vai para a função CheckBuildStatus Lambda. A função CheckBuildStatus aciona uma notificação no canal do Slack. Cada notificação inclui informações com as próximas etapas sugeridas. Seguem abaixo os tipos de notificações:

  • O aplicativo falhou na verificação de segurança do código — O usuário recebe essa notificação quando o código carregado não passou pela verificação SonarQube de segurança. O usuário pode escolher APROVAR para aceitar a compilação. No entanto, a notificação informa ao usuário sobre possíveis riscos de segurança e baixa qualidade do código. A notificação inclui os seguintes detalhes:

    • Próximas etapas: Erro: Status do quality gate: FALHOU | Veja os detalhes no URL fornecido.

    • Faça a triagem das vulnerabilidades conforme mencionado no documento no URL fornecido.

    • CodeBuild os detalhes estão disponíveis no local no URL fornecido.

  • O pipeline de verificação da aplicação falhou por algum outro motivo: o usuário recebe essa notificação quando o pipeline falhou por algum motivo que não seja a falha na verificação de segurança do código. A notificação inclui os seguintes detalhes:

    • Para ver as próximas etapas, acesse o link fornecido para obter mais informações sobre a solução de problemas.

Para ver as capturas de tela das notificações conforme elas aparecem em um canal do Slack, acesse a pasta de ativos no repositório GitHub chatops-slack.

O diagrama a seguir mostra um exemplo do status da etapa do Step Functions após a falha na aprovação do quality gate.

Fluxo de trabalho do status da etapa do AWS Step Functions após a falha de aprovação no quality gate.

Ferramentas

Serviços da AWS

  • O Amazon Q Developer em aplicativos de bate-papo permite que você use os canais de bate-papo Amazon Chime, Microsoft Teams e Slack para monitorar e responder a eventos operacionais em seus aplicativos. AWS Aviso de fim do suporte: em 20 de fevereiro de 2026, AWS encerrará o suporte para o serviço Amazon Chime. Após 20 de fevereiro de 2026, não será mais possível acessar o console do Amazon Chime ou os recursos de aplicação do Amazon Chime. Para obter mais informações, acesse esta publicação no blog. Isso não afeta a disponibilidade do serviço do SDK do Amazon Chime.

  • AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS

  • O AWS CodeBuild é um serviço de compilação totalmente gerenciado que permite compilar o código-fonte, realizar testes de unidade e produzir artefatos preparados para a implantação.

  • AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus AWS recursos controlando quem está autenticado e autorizado a usá-los.

  • AWS Key Management Service (AWS KMS) ajuda você a criar e controlar chaves criptográficas para ajudar a proteger seus dados.

  • O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O AWS Secrets Manager ajuda a substituir credenciais codificadas, incluindo senhas, por uma chamada de API ao Secrets Manager para recuperar o segredo por programação.

  • Amazon Simple Email Service (Amazon SES): ajuda você a enviar e receber mensagens de e-mail usando seus próprios endereços de e-mail e domínios.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • AWS Step Functionsé um serviço de orquestração sem servidor que ajuda você a combinar AWS Lambda funções e outras Serviços da AWS para criar aplicativos essenciais para os negócios.

Outras ferramentas

  • O Slack, uma solução da Salesforce, consiste em uma plataforma de conversação com tecnologia de IA que oferece colaboração por chat e vídeo, automatiza processos no-code e facilita o compartilhamento de informações.

  • SonarQubeé uma ferramenta de análise local projetada para detectar problemas de codificação em mais de 30 linguagens, estruturas e plataformas de IaC.

Repositório de código

O código desse padrão está disponível no repositório GitHub chatops-slack.

Práticas recomendadas

  • CloudFormation gerenciamento de pilha — Se você encontrar alguma falha durante a execução da CloudFormation pilha, recomendamos que você exclua a pilha com falha. Em seguida, recrie-a com os valores corretos dos parâmetros. Essa abordagem oferece suporte a uma implantação limpa e ajuda a evitar possíveis conflitos ou implementações parciais.

  • Configuração de e-mail de caixa de entrada compartilhada: ao configurar o parâmetro SharedInboxEmail, use uma lista de distribuição comum que seja acessível a todos os desenvolvedores relevantes. Essa abordagem promove transparência e ajuda notificações importantes a chegarem aos membros relevantes da equipe.

  • Fluxo de trabalho de aprovação de produção: para ambientes de produção, restrinja o acesso ao canal do Slack usado para aprovações de compilação. Somente aprovadores designados devem ser membros desse canal. Essa prática mantém uma cadeia clara de responsabilidade e aumenta a segurança ao limitar quem pode aprovar mudanças críticas.

  • Permissões do IAM: siga o princípio do privilégio mínimo e forneça o mínimo de permissões para a execução de uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.

Épicos

TarefaDescriptionHabilidades necessárias

Clonar o repositório.

Para clonar o repositório chatops-slack deste padrão, use o seguinte comando:

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

AWS DevOps, líder de construção, DevOps engenheiro, administrador de nuvem

Crie os arquivos .zip que contêm o código do Lambda.

Crie os arquivos.zip para o código da AWS Lambda função para a ApprovalEmail funcionalidade CheckBuildStatus e. Para criar notification.zip e approval.zip, use os comandos a seguir.

cd chatops-slack/src
chmod -R 775 *
zip -r approval.zip approval
zip -r notification.zip notification
AWS DevOps, líder de construção, DevOps engenheiro, administrador de nuvem
TarefaDescriptionHabilidades necessárias

Execute o arquivo de pilha pre-requisite.yml.

O arquivo de pre-requisite.yml CloudFormation pilha implanta os recursos iniciais necessários antes de você executar o arquivo de app-security.yml pilha. Para executar o arquivo pre-requisite.yml, faça o seguinte:

  1. Faça login no Console de gerenciamento da AWS e abra o CloudFormationconsole. Selecione Criar pilha e, depois, escolha Com novos recursos (padrão) na lista suspensa.

  2. Na página Criar pilha, selecione Escolher um modelo existente e Fazer upload de um arquivo de modelo. Em seguida, selecione Escolher arquivo e pre-requisite.yml. Escolha Próximo.

  3. Na página Especificar detalhes da pilha, insira valores para os parâmetros conforme descrito em Informações adicionais. Em seguida, escolha Próximo.

  4. Na página Configurar opções da pilha, escolha o perfil do IAM para criar os recursos, conforme descrito em Pré-requisitos. Em seguida, escolha Próximo.

  5. Na página Revisar e criar, escolha Enviar.

  6. Na página de detalhes da pilha, escolha as guias Recursos e Saídas. Anote os valores dos parâmetros S3Lambda, CKMSKeyArn e CKMSKeyId que são usados nas etapas a seguir.

Administrador da AWS, AWS DevOps, líder de construção, DevOps engenheiro

Faça upload dos arquivos .zip no bucket do Amazon S3.

Faça upload dos arquivos notification.zip e approval.zip que você criou anteriormente para o bucket do Amazon S3 chamado S3LambdaBucket. O arquivo app-security.yml CloudFormation de pilha é usado S3LambdaBucket para provisionar a função Lambda.

AWS DevOps, líder de construção, DevOps engenheiro, administrador de sistemas da AWS
TarefaDescriptionHabilidades necessárias

Execute o arquivo de pilha app-security.yml.

Os arquivos de pilha app-security.yml implantam a infraestrutura restante para o sistema de notificação e aprovação. Para executar o arquivo app-security.yml, faça o seguinte:

  1. Faça login no Console de gerenciamento da AWS e abra o CloudFormationconsole. Selecione Criar pilha e, depois, escolha Com novos recursos (padrão) na lista suspensa.

  2. Na página Criar pilha, selecione Escolher um modelo existente e Fazer upload de um arquivo de modelo. Em seguida, selecione Escolher arquivo e app-security.yml. Escolha Próximo.

  3. Na página Especificar detalhes da pilha, insira valores para os parâmetros conforme descrito em Informações adicionais. Em seguida, escolha Próximo.

  4. Na página Configurar opções da pilha, escolha o perfil do IAM para criar os recursos, conforme descrito em Pré-requisitos. Em seguida, escolha Próximo.

  5. Na página Revisar e criar, escolha Enviar.

AWS DevOps, administrador de sistemas da AWS, DevOps engenheiro, líder de criação

Teste a configuração das notificações.

Para testar a configuração de notificações, faça o seguinte.

  1. Abra o console do Amazon SNS. No painel de navegação à esquerda, selecione Tópicos.

  2. Selecione o nome do tópico que termina com LambdaToAWSSlackChatbot.

  3. Na página de detalhes do tópico, selecione Publicar mensagem.

  4. Na página Publicar mensagem no tópico, em O corpo da mensagem a ser enviada ao endpoint, insira o seguinte:

    { "version": "1.0", "source": "custom", "content": { "description": ":warning: This is a test notification" } }
  5. Selecione Publish message (Publicar mensagem).

Depois que a mensagem de teste for entregue com sucesso, você verá uma notificação no canal do Slack. Para obter mais informações, consulte Notificações de teste do Serviços da AWS Slack no Guia do administrador do Amazon Q Developer em aplicativos de bate-papo.

AWS DevOps, administrador de sistemas da AWS, DevOps engenheiro, líder de criação
TarefaDescriptionHabilidades necessárias

Configure a ação personalizada do Lambda.

Para configurar a AWS Lambda ação personalizada, faça o seguinte:

  1. Escolha o botão de reticências verticais na parte inferior da notificação de entrega no canal do Slack.

  2. Em Gerenciar conexões, escolha Criar.

  3. Insira um nome de ação personalizado, por exemplo, Aprovar. Esse nome é um identificador exclusivo para sua ação personalizada.

  4. Insira um nome para seu botão de ação personalizado, por exemplo, Aprovar. Esse nome é exibido em um botão na sua notificação. Esse nome deve ter 20 caracteres ou menos e pode incorporar emojis.

  5. Em Tipo de ação personalizada, selecione Ação do Lambda.

  6. Escolha Próximo.

  7. Selecione Conta da AWS e Região da AWS onde você deseja implantar essa ação.

  8. Escolha Carregar o Lambda.

  9. Em Definir função Lambda, selecione uma função Lambda que termine com. ApprovalEmailLambdaEm seguida, escolha Próximo.

  10. Para criar o botão Aprovar, escolha Salvar na página Exibir critérios.

Administrador da AWS, AWS DevOps, líder de construção, DevOps engenheiro, administrador do Slack

Valide o fluxo de aprovação.

Para validar se o fluxo de aprovação funciona conforme o esperado, escolha o botão Aprovar no Slack.

O Slackbot deve enviar uma notificação no tópico da mensagem com a string de confirmação E-mail de aprovação enviado com sucesso.

Administrador da AWS, AWS DevOps, DevOps engenheiro, administrador do Slack

Solução de problemas

ProblemaSolução

Configurações incorretas do Slack

Para obter informações sobre como solucionar problemas relacionados a configurações incorretas do Slack, consulte a solução de problemas no Amazon Q Developer no Guia do administrador do Amazon Q Developer em aplicações de chat.

A verificação falhou devido a algum outro motivo

Esse erro significa que a tarefa de criação do código falhou. Para solucionar o problema, acesse o link que está na mensagem. A falha na tarefa de criação de código pode ter as seguintes causas possíveis:

  • A aplicação não está empacotada corretamente. O comando sonar-scanner não consegue encontrar o arquivo sonar.project.env.properties.

  • Os valores dos parâmetros SonarFileName, SonarFileDirectory ou SonarToken estão incorretos. Verifique os valores e, em seguida, execute os arquivos da pilha novamente.

  • O host do Sonar não está acessível.

  • Outros problemas para os quais você pode usar os logs para solucioná-los.

Recursos relacionados

AWS documentação

Outros recursos

Mais informações

Esta solução enfatiza as soluções personalizadas do Amazon Q Developer em aplicações de chat para fins de gerenciamento de versão. No entanto, você pode reutilizar a solução modificando o código do Lambda para seu caso de uso específico e construindo com base nela.

Parâmetros dos arquivos de CloudFormation pilha

A tabela a seguir mostra os parâmetros e suas descrições para o arquivo pre-requisite.yml de CloudFormation pilha.

Chave

Descrição

StackName

O nome da CloudFormation pilha.

S3LambdaBucket

O nome do bucket do Amazon S3 onde você carregou o código do Lambda. O nome precisa ser globalmente exclusivo.

SonarToken

O token SonarQube do usuário, conforme descrito em Pré-requisitos.

A tabela a seguir mostra os parâmetros e suas descrições para o arquivo app-security.yml de CloudFormation pilha.

Chave

Descrição

CKMSKeyArn

O AWS KMS key Amazon Resource Name (ARN) usado nas funções do IAM e nas funções do Lambda criadas nessa pilha.

CKMSKeyId

O AWS KMS key ID usado no tópico do Amazon SNS criado nessa pilha.

EnvironmentType

O nome do ambiente de cliente para implantação do pipeline de verificação de aplicações. Selecione o nome do ambiente na lista suspensa de valores permitidos.

S3LambdaBucket

O nome do bucket do Amazon S3 que contém os arquivos approval.zip e notification.zip.

SESEmail

O nome da identidade de e-mail registrada no Amazon SES, conforme descrito em Pré-requisitos. Essa identidade é o endereço de e-mail de origem.

SharedInboxMail

O endereço de e-mail de destino para o qual as notificações de verificação são enviadas.

SlackChannelId

O ID do canal do Slack para o qual você deseja que as notificações sejam enviadas. Para encontrar o ID do canal, clique com o botão direito do mouse no nome do canal em Detalhes do canal na aplicação do Slack. O ID do canal está na parte inferior.

SlackWorkspaceId

O ID do espaço de trabalho do Slack, conforme descrito em Pré-requisitos. Para encontrar o ID do espaço de trabalho do Slack, faça login no Console de gerenciamento da AWS, abra o Amazon Q Developer no console de aplicativos de bate-papo e escolha Clientes configurados, Slack, WorkspaceID.

StackName

O nome da CloudFormation pilha.

SonarFileDirectory

O diretório que contém o arquivo sonar.project.<env>.properties.

SonarFileName

O nome do arquivo sonar.project.<env>properties.

SourceCodeZip

O nome do arquivo .zip que contém o arquivo sonar.project.<env>properties e o código-fonte.