Configurando varreduras do IBM Cloud Code Risk Analyzer

Você pode usar o IBM Cloud Code Risk Analyzer para analisar seu código em busca de vulnerabilidades e validar a conformidade com as regras especificadas.

Quando o Code Risk Analyzer avalia seu aplicativo, é gerada uma lista de materiais de software (SBOM) que relaciona as dependências e as informações de licença disponíveis de todos os pacotes de terceiros. Isso pode ser gerado no formato cycloneDX-specific, se necessário Os pacotes listados no arquivo SBOM são varridos para vulnerabilidades. Esse arquivo pode ser gerado no formato cycloneDX-specific. Como alternativa, você pode ativar a correção automática de vulnerabilidades encontradas em aplicativos escritos em Node.js, Maven ou Gradle.

  • Todos os seus arquivos Kubernetes são analisados para conformidade.
  • Todos os planos do Terraform são analisados para conformidade.

O Code Risk Analyzer está disponível em todas as regiões do IBM Cloud nas quais são suportadas cadeias de ferramentas. Para obter mais informações, consulte a documentação do plug-in.

Configurando varreduras

Para gerar o arquivo SBOM, uma varredura do Code Risk Analyzer acessa artefatos no caminho do diretório especificado e executa descoberta profunda para identificar todas as dependências; incluindo dependências de transporte. Não há nenhuma variável de ambiente de pipeline específica que seja necessária para gerar o arquivo SBOM e descobrir vulnerabilidades, mas se o caminho contiver um Dockerfile, a imagem base será extraída e as imagens serão construídas para cada estágio de construção especificado no arquivo

Se o Dockerfile precisar de ARGS, configure um ARG individual como uma variável de ambiente em um script customizado e forneça o local do script customizado como o pipeline vairable.

Variáveis de ambiente do scriptDocker
Variáveis de ambiente Descrição Necessária ou opcional Propósito
cra-custom-script-path Caminho para o script em seu repositório Opcional Configura variáveis de ambiente que são necessárias pelo script Docker.

Para obter mais informações, consulte scripts customizados

Por padrão, os arquivos do Terraform não são analisados Para varrer seu arquivo Terraform, deve-se configurar as variáveis de ambiente de pipeline a seguir.

Variáveis de ambiente de análise do Terraform
Variáveis de ambiente Descrição Obrigatório ou opcional Propósito
opt-in-tfsec True ou False. Configure como False por padrão. Opcional Varre os arquivos do Terraform para segurança.
opt-in-cra-tf-validate True ou False. Configure como False por padrão. Opcional Valida os arquivos do Terraform

A varredura do Code Risk Analyzer utiliza a chave de API fornecida para efetuar login na CLI do IBMCloud e aciona uma construção do Docker A sessão da CLI existente do IBM Cloud continua a ser usada para o restante desta etapa do CRA No entanto, a sessão da CLI do IBM Cloud expira após 20 minutos para um login de chave API padrão. Se o processo de construção levar mais de 20 minutos, a etapa do CRA falhará com uma mensagem de erro 401, pois a sessão expirou. Uma variável de ambiente ibmcloud-enable-session-keep-alive foi introduzida para manter a sessão da CLI do IBM Cloud ativa para operações longas.

IBMCloud Live Session para trabalhos de longa duração
Variáveis de ambiente Descrição Tipo Obrigatório ou opcional Propósito
ibmcloud-enable-session-keep-alive 0 ou 1. Definido como 0 por padrão. selecionar Opcional Mantenha a sessão da CLI do IBM Cloud ativa para tarefas de longa execução na varredura do Code Risk Analyzer.

Por padrão, o comando de análise de implementação do Code Risk Analyzer executa verificações de configuração em manifestos de implementação do Kubernetes O comando deployment-analyze do Code Risk Analyzer é executado com a opção --strict configurada. Para ignorar arquivos durante a varredura de análise de implementação do Code Risk Analyzer, a variável de ambiente a seguir deve ser usada.

Variáveis de ambiente de varredura do IBMCloud CRA CIS
Variáveis de ambiente Descrição Obrigatório ou opcional Propósito
cra-cis-fileignore-path O caminho do arquivo .fileignore no repositório. Opcional Especifique o caminho do arquivo .fileignore que contém as informações de arquivos a serem ignorados durante a varredura de análise de implementação do Code Risk Analyzer.

Omitindo vulnerabilidades para implementar seu app

O Code Risk Analyzer foi projetado para encontrar pacotes vulneráveis antes que um conselho consultivo o faça. Em circunstâncias excepcionais, pode ser necessário implementar seu aplicativo mesmo se pacotes vulneráveis foram detectados e ainda não foram corrigidos. Sempre que possível, você deve atualizar os pacotes ou removê-los antes de reimplementar o código.

Para ignorar arquivos específicos e concluir seu push para produção, é possível criar um arquivo chamado .cra/.cveignore na raiz do repositório varrido com o esquema a seguir:

[
  {
    "cve": "string",
    "alwaysOmit": "bool",
    "untilRemediationAvailable": "bool",
    "expiration": "string"
  },
]

O trecho de código a seguir mostra um arquivo .cveignore de amostra:

[
  {
    "cve": "CVE-2021-27290",
    "alwaysOmit": true
  },
  {
    "cve": "CVE-2020-8244",
    "untilRemediationAvailable": true,
  },
  {
    "cve": "CLAIR-JAVA-ORGAPACHEHTTPCOMPONENTS-31517",
    "expiration": "2022-02-10T22:08:41+04:00",
    "comment": "Additional security measures are in place"
  }
]

Esse arquivo costumava ser conhecido como .craveomit O formato de arquivo original foi descontinuado por .cra/.cveignore. Atualize seu código para usar o arquivo mais recente.

É possível saber mais sobre os docs do plug-in do Code Risk Analyzer, ou também verificar os docs do CRA descontinuados.

Corrigindo vulnerabilidades automaticamente

É possível usar o Code Risk Analyzer como parte do pipeline de conformidade contínua (CC) para não apenas localizar, mas corrigir automaticamente as vulnerabilidades. O Code Risk Analyzer funciona como parte da etapa compliance-check do pipeline. Por padrão, a correção automática está desativada.

A correção automática está disponível apenas para o pipeline do CC

Quando a correção automática estiver ativada, o Code Risk Analyzer tentará atualizar um pacote vulnerável para uma versão não vunlnerable criando uma solicitação pull com as correções identificadas com relação à ramificação padrão de seu repositório Por padrão, o Code Risk Analyzer atualizará versões secundárias e de correção para o pacote vulnerável principal, bem como pacotes dependentes, mas não atualiza a versão principal de um pacote. Se a solicitação pull for aceitável, será possível aprovar e mesclar manualmente. Cada vez que o pipeline é executado, uma nova solicitação pull é gerada, portanto, certifique-se de revisar e mesclar conforme eles são abertos para evitar duplicações.

A correção automática está disponível para os repositórios Enterprise GitHub e GitLab e pode modificar os arquivos especificados na tabela a seguir.

Ecossistemas com suporte
Ecossistema Arquivos modificáveis
Nodejs package.json e package-lock.json
Gradle build.gradle, gradle.lockfile e buildscript-gradle.lockfile
Maven pom.xml

Para iniciar automaticamente corrigindo vulnerabilidades, configure as variáveis de ambiente opcionais a seguir para seu pipeline.

Ecossistemas com suporte
Variável Descrição Configurações padrão
opt-in-cra-auto-remediation Ativa a correção automática para o seu pipeline false
Para iniciar a correção, configure essa variável como true
opt-in-cra-auto-remediation-force Força uma atualização de pacote principal como parte da solicitação de pull que é aberta false
Para forçar uma atualização do pacote principal, configure essa variável como true..
opt-in-cra-auto-remediation-enabled-repos Especifica os repositórios específicos nos quais você deseja ativar a correção automática Ativado para todos os repositórios retornados quando list_repos é chamado. Para especificar repositórios específicos, forneça uma lista separada por vírgula de nomes de repositório.