Implantação de um pipeline que detecta simultaneamente problemas de segurança em diversos entregáveis de código - 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á.

Implantação de um pipeline que detecta simultaneamente problemas de segurança em diversos entregáveis de código

Benjamin Morris, Tim Hahn, Sapeksh Madan, Dina Odum e Isaiah Schisler, Amazon Web Services

Resumo

O Simple Code Scanning Pipeline (SCSP) possibilita a criação de um pipeline de análise de código com apenas dois cliques, executando ferramentas de segurança de código aberto, que são reconhecidas pelo setor, em paralelo. Com isso, os desenvolvedores podem verificar a qualidade e a segurança do código sem precisar instalar ferramentas ou entender como utilizá-las. Isso contribui para reduzir vulnerabilidades e configurações incorretas nos entregáveis de código. Além disso, reduz o tempo que sua organização dedica à instalação, pesquisa e configuração de ferramentas de segurança.

Antes do SCSP, verificar o código com este conjunto específico de ferramentas exigia que os desenvolvedores localizassem, instalassem manualmente e configurassem as ferramentas de análise de software. Mesmo instaladas localmente, all-in-one ferramentas, como o Automated Security Helper (ASH), exigem a configuração de um contêiner Docker para serem executadas. No entanto, com o SCSP, um conjunto de ferramentas de análise de código padrão do setor é executado automaticamente na Nuvem AWS. Com essa solução, você usa o Git para enviar seus resultados de código e, em seguida, recebe uma saída visual com at-a-glance informações sobre as falhas nas verificações de segurança.

Pré-requisitos e limitações

  • Um ativo Conta da AWS

  • Um ou mais entregáveis de código que você deseja verificar quanto a problemas de segurança

  • AWS Command Line Interface (AWS CLI), instalado e configurado

  • O Python, versão 3.0 ou versões posteriores, e o pip, versão 9.0.3 ou versões posteriores, instalados

  • Git, instalado

  • Instale git-remote-codecommitem sua estação de trabalho local

Arquitetura

Pilha de tecnologias de destino

  • AWS CodeCommit repositório

  • AWS CodeBuild projeto

  • AWS CodePipeline encanamento

  • Bucket do Amazon Simple Storage Service (Amazon S3)

  • AWS CloudFormation modelo

Arquitetura de destino

O SCSP para análise estática de código é um DevOps projeto desenvolvido para fornecer feedback de segurança sobre o código entregue.

O SCSP que executa a análise de código em uma região da AWS
  1. No Console de gerenciamento da AWS, faça login no alvo Conta da AWS. Confirme se você está no Região da AWS local em que deseja implantar o pipeline.

  2. Use o CloudFormation modelo no repositório de código para implantar a pilha SCSP. Isso cria um novo CodeCommit repositório e CodeBuild projeto.

    nota

    Como opção alternativa de implantação, você pode usar um CodeCommit repositório existente fornecendo o Amazon Resource Name (ARN) do repositório como parâmetro durante a implantação da pilha.

  3. Clone o repositório para sua estação de trabalho local e, em seguida, adicione quaisquer arquivos às respectivas pastas no repositório clonado.

  4. Use o Git para adicionar, confirmar e enviar os arquivos para o CodeCommit repositório.

  5. Enviar para o CodeCommit repositório inicia um trabalho. CodeBuild O CodeBuild projeto usa as ferramentas de segurança para escanear os resultados do código.

  6. Analise a saída do pipeline. As ferramentas de segurança que detectarem problemas considerados erros resultarão em ações com falha no pipeline. Corrija os erros ou marque-os como falsos positivos. Analise os detalhes da saída da ferramenta nos detalhes da ação no bucket S3 do pipeline CodePipeline ou no repositório S3.

Ferramentas

Serviços da AWS

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

  • 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.

  • O AWS CodeCommit é um serviço de controle de versão que ajuda no armazenamento e no gerenciamento de repositórios Git de forma privada, sem a necessidade de administrar o próprio sistema de controle de origem.

Outras ferramentas

Para obter uma lista completa das ferramentas que o SCSP usa para escanear os resultados do código, consulte o arquivo readme do SCSP em. GitHub

Repositório de código

O código desse padrão está disponível no repositório Simple Code Scanning Pipeline (SCSP) em. GitHub

Épicos

TarefaDescriptionHabilidades necessárias

Crie a CloudFormation pilha.

  1. Faça login no Console de gerenciamento da AWS.

  2. No console, confirme que você está na região de destino em que deseja implantar a solução. Para obter mais informações, consulte Choosing a Region.

  3. Selecione o link apresentado a seguir. Isso abre o assistente de criação rápida de pilha em CloudFormation.

    https://console.aws.amazon.com/cloudformation/casa? #/ stacks/create/review?templateURL=https://proservetools.s3.amazonaws.com/cft/scsp -Pipeline-stack.template.json&StackName = SimpleCodeScanPipeline

  4. No assistente de criação rápida de pilha, analise as configurações dos parâmetros da sua pilha e realize as modificações necessárias conforme o seu caso de uso.

  5. Selecione Eu reconheço que a AWS CloudFormation pode criar recursos do IAM e, em seguida, escolha Create stack.

Isso cria um CodeCommit repositório, um CodePipeline pipeline, várias definições de CodeBuild tarefas e um bucket S3. Os resultados das execuções de compilação e da verificação são copiados para este bucket. Depois que a CloudFormation pilha for completamente implantada, o SCSP estará pronto para uso.

AWS DevOps, administrador da AWS
TarefaDescriptionHabilidades necessárias

Examine os resultados da verificação.

  1. No console do Amazon S3, em Buckets, escolha o bucket simplecodescanpipeline-deleteresourcespipelinereso.

  2. Selecione o diretório scan_results e, em seguida, escolha a pasta com a data da verificação mais recente.

  3. Analise os arquivos de log presentes nesta pasta para verificar quaisquer problemas detectados pelas ferramentas de segurança usadas no pipeline. As ferramentas de segurança que detectarem problemas considerados erros resultarão em ações failed no pipeline. Esses problemas precisam ser corrigidos ou marcados, caso sejam falsos positivos.

    nota

    Você também pode ver detalhes da saída da ferramenta (para digitalizações aprovadas e reprovadas) no CodePipeline console, na seção Detalhes da ação.

Desenvolvedor de aplicativos, AWS DevOps

Solução de problemas

ProblemaSolução

HashiCorp O Terraform ou AWS CloudFormation os arquivos não estão sendo escaneados.

Certifique-se de que os arquivos do Terraform (.tf) e CloudFormation (.yml, .yaml ou .json) sejam colocados nas pastas apropriadas no repositório clonado. CodeCommit

O comando git clone está apresentando falhas.

Verifique se você instalou git-remote-codecommit e se sua CLI tem acesso às AWS credenciais que têm permissões para ler o repositório. CodeCommit

Um erro de simultaneidade, como Project-level concurrent build limit cannot exceed the account-level concurrent build limit of 1.

Execute novamente o pipeline escolhendo o botão Release Change no CodePipeline console. Este é um problema conhecido e geralmente ocorre nas primeiras execuções do pipeline.

Recursos relacionados

Forneça feedback sobre o projeto do SCSP.

Mais informações

PERGUNTAS FREQUENTES

O projeto do SCSP é equivalente ao Automated Security Helper (ASH)?

Não. Use o ASH quando você precisar de uma ferramenta de linha de comandos (CLI) que execute ferramentas de análise de código por meio de contêineres. O Automated Security Helper (ASH) é uma ferramenta projetada para reduzir a probabilidade de uma violação de segurança em novos códigos, infraestrutura ou configurações de recursos do IAM. O ASH é um utilitário de linha de comandos que pode ser executado localmente. O uso local requer que um ambiente destinado a contêiner esteja instalado e operacional no sistema.

Use o SCSP quando desejar uma pipeline com configuração mais simples do que o ASH. O SCSP não requer instalações locais. O SCSP foi desenvolvido para executar verificações individuais em um pipeline e apresentar os resultados por ferramenta. O SCSP também remove grande parte da sobrecarga que existe na configuração do Docker, além de ser agnóstico em relação ao sistema operacional (SO).

O SCSP é exclusivo para equipes de segurança?

Não. Qualquer pessoa pode implantar o pipeline para identificar quais partes do seu código estão apresentando falhas nas verificações de segurança. Por exemplo, usuários que não são da área de segurança podem usar o SCSP para verificar o código antes da análise das equipes de segurança.

Posso usar o SCSP se estiver trabalhando com outro tipo de repositório, como GitLab GitHub, ou Bitbucket?

É possível configurar um repositório Git local para direcionamento a dois repositórios remotos distintos. Por exemplo, você pode clonar um GitLab repositório existente, criar uma instância SCSP (especificando CloudFormation as pastas Terraform e AWS Config Rules Development Kit (AWS RDK), se necessário) e, em seguida, usar git remote add upstream <SCSPGitLink> para apontar o repositório local para o repositório SCSP também. CodeCommit Isso permite que as alterações de código sejam enviadas primeiro para o SCSP, validadas e, depois que quaisquer atualizações adicionais forem feitas para abordar as descobertas, enviadas para o repositório GitLab GitHub, ou Bitbucket. Para obter mais informações sobre vários controles remotos, consulte Enviar confirmações para um repositório Git adicional (postagem no blog).AWS

nota

Tenha cuidado com desvios, como evitar fazer alterações por meio de interfaces web.

Contribuição e adição com as suas próprias ações

A configuração do SCSP é mantida como um GitHub projeto, que contém o código-fonte do aplicativo SCSP AWS Cloud Development Kit (AWS CDK) . Para adicionar verificações adicionais ao pipeline, o AWS CDK aplicativo precisa ser atualizado e, em seguida, sintetizado ou implantado no destino em Conta da AWS que o pipeline será executado. Para fazer isso, comece clonando o GitHub projeto SCSP e, em seguida, localize o arquivo de definição da pilha na pasta. lib

Se houver uma verificação adicional que você gostaria de adicionar, a StandardizedCodeBuildProject classe no AWS CDK código facilita muito a adição de ações. Forneça o nome, a descrição install e/ou build os comandos. AWS CDK cria o CodeBuild projeto usando valores padrão sensatos. Além de criar o projeto de construção, você precisa adicioná-lo às CodePipeline ações no estágio de construção. Ao projetar uma nova verificação, a ação provavelmente terá FAIL se a ferramenta de verificação detectar problemas ou não conseguir ser executada. A ação provavelmente terá PASS se a ferramenta de verificação não detectar nenhum problema. Para obter um exemplo de configuração de uma ferramenta, consulte o código da ação Bandit.

Para obter mais informações sobre as entradas e as saídas esperadas, consulte a documentação do repositório.

Se você adicionar ações personalizadas, será necessário implantar o SCSP usando o comando cdk deploy ou cdk synth + CloudFormation deploy. Isso ocorre porque o CloudFormation modelo de pilha de criação rápida é mantido pelos proprietários do repositório.