Pipeline de conformidade contínua
O pipeline de conformidade contínua (pipeline CC) varre periodicamente os artefatos implementados e seus repositórios de origem.
O pipeline CC processa as entradas a partir do repo inventário usando o valor environment-tag para determinar qual é o estado implementado mais recente para olhar.
Após a digitalização e a execução de verificações de artefatos e repositórios de origem, o pipeline cria um novo problema de incidente ou atualiza as questões de incidentes existentes no repositório de incidentes. Por fim, usando essas questões
e os resultados, o pipeline coleta evidências e resume as evidências, portanto, o Security and Compliance Center pode atualizar o status de conformidade
dos artefatos encontrados.
Estágios e tarefas
A tabela abaixo lista as tarefas executadas em um pipeline CC. Além disso, a tabela também fornece uma visão geral de cada um desses estágios:
-
Tarefa ou Estágio: refere-se ao nome do estágio conforme definido no arquivo de configuração
.pipeline-config.yaml. -
Descrição simples: fornece uma explicação concisa das ações executadas durante a execução do estágio.
-
Customização permitida: isso indica se os usuários têm a flexibilidade para modificar ou substituir o comportamento padrão do estágio inserindo um script customizado no arquivo
.pipeline-config.yaml. -
Implementação de referência padrão: Isso indica se oDevSecOps pipelines vêm com uma implementação predefinida ou padrão para o estágio. Notavelmente, para certos estágios como
unit-testsousetup, oDevSecOps pipeline não oferece nenhuma implementação pronta para uso. Em vez disso, os usuários precisam fornecer scripts customizados ou código customizado para os requisitos de seus aplicativos -
Coleção de evidência: indica se o estágio executa a coleção de evidência padrão. QuandoDevSecOpsGasoduto fornecer uma implementação de referência para um estágio, a coleta de evidências é realizada imediatamente. No entanto, se o Usuário optar por modificar ou substituir esses estágios predefinidos, eles deverão assegurar que suas implementações customizadas incluam a coleta de evidência apropriada A mesma responsabilidade recai sobre os usuários nas etapas em que oDevSecOps pipeline não fornece uma implementação pronta para uso, exigindo que eles realizem a coleta de evidências. A coluna indica a entidade (Usuário / Pipeline) responsável por executar a coleta de evidências...
-
Ignorar permitido (aplicável à versão> = v10): isso indica se os usuários podem optar por não executar esse estágio configurando a propriedade ignorar como true no
.pipeline-config.yamlNo entanto, recomenda-se cuidado ao usar esse recurso, especialmente para estágios designados para coletar evidências. Ignorar tais estágios pode levar à ausência de evidências essenciais para a construção.
| Tarefa ou estágio | Descrição curta | Customização permitida em .pipeline-config.yaml |
Implementação de referência padrão | Coleta de evidências | Ignorar permitido |
|---|---|---|---|---|---|
start |
Configure o ambiente de pipeline | Não | Sim | Pipeline | Não |
setup |
Configure seu ambiente de construção e de teste | Sim | Não | Não | Não |
detect-secrets |
Executar varredura de segredos de detecção no código do aplicativo. | Sim | Sim | Pipeline | Não |
static-scan |
Execute o código de varredura estática no código do aplicativo | Sim | Sim | Pipeline | Sim |
dynamic-scan |
Execute a varredura dinâmica no aplicativo | Sim | Sim | Pipeline | Sim |
compliance-checks |
Execute as varreduras do Code Risk Analyzer e outras verificações de conformidade nos repositórios de aplicativos | Sim | Sim | Pipeline | Sim |
scan-artifact |
Varrer os artefatos compilados | Sim | Sim | Pipeline | Sim |
finish |
Colete, crie e faça upload dos arquivos de logs, artefatos e evidências para o armário de evidências. | Sim | Sim | Pipeline | Sim |
Para obter mais informações sobre como personalizar os estágios usando o arquivo .pipeline-config.yaml, consulte Scripts personalizados e listas
de parâmetros do pipeline.
Etapas e evidências
A tabela abaixo fornece um relacionamento entre vários tipos de evidência e os estágios específicos dentro do pipeline no qual sua coleta ocorre
| Tarefa ou estágio | Tipo de evidência |
|---|---|
start |
N/D |
setup |
N/D |
detect-secrets |
com.ibm.detect_secrets |
static-scan |
com.ibm.static_scan |
compliance-checks |
com.ibm.code_bom_check, com.ibm.code_cis_check, com.ibm.code_vulnerability_scan, com.ibm.branch_protection |
dynamic-scan |
com.ibm.dynamic_scan |
scan-artifact |
com.ibm.cloud.image_vulnerability_scan |
finish |
com.ibm.pipeline_logs, com.ibm.pipeline_run_data |
Para obter mais informações sobre como coletar evidências dentro dos estágios do usuário customizáveis usando o script collect-evidence, consulte collect-evidence script..
Inventário de processamento para artefatos e repositórios
O estágio inicial clona o inventário e processa as entradas mais recentes no ambiente de produção. Você pode especificar este ambiente, fornecendo os seguintes parâmetros de pipeline:
| Nome | Tipo | Descrição | Obrigatório ou opcional |
|---|---|---|---|
environment-tag |
Texto | Tag que representa o ambiente de destino mais recente no inventário. Exemplo: prod_latest ou us-south_prod_latest |
Obrigatório |
environment-branch |
Texto | Nome do ramo que representa o ambiente de destino no inventário. Exemplo:prod |
Descontinuado-prefia environment-tag em vez |
region-prefix |
Texto | Nome da região como prefixo para a tag latest para o ambiente de destino. Exemplo: us-south |
Descontinuado-prefia environment-tag em vez |
As entradas do inventário contêm artefatos implementados e fontes de repositório. O pipeline processa e coleta as entradas do inventário e registra-as para a execução do pipeline, utilizando os seguintes comandos pipelinectl:
O estágio inicial também clona os repositórios encontrados, cada repo, e cada par de commit. Então, por exemplo, repo1 com commit sha1 são clonados em uma pasta, mas o pipeline clona o mesmo repo1 com commit
sha2 em uma pasta separada.
O pipeline registra artefatos e repositórios para o pipeline executado usando um simples índice de notação e incrementador de nomenclatura, como os exemplos a seguir:
repo-1,repo-2,repo-3artifact-1artifact-2,artifact-3
Você pode listar essas entradas nos estágios personalizados usando os seguintes comandos pipelinectl:
Se você recuperar as informações de ramificação em seu pipeline do CC usando o pipelinectl comando load_repo "$repo" branch, ele sempre retornará master como ramificação Portanto, use commit hashes em vez de ramos.
Estágio de configuração
O estágio de setup no pipeline CC executa o script que está localizado no estágio setup que é definido por seu .pipeline-config.yaml. Você pode determinar qual pipeline que o script está rodando usando o seguinte comando:
get_env pipeline_namespace
Este comando retorna ou cc, cd, ci ou pr, dependendo de qual pipeline está em execução. Dessa forma, é possível reutilizar o script de setup entre pipelines se necessário.
Varredura de segredos do Detect
A ferramenta IBM Detect Secrets identifica quais segredos estão visíveis no código do aplicativo. Mais informações sobre a configuração de seu repositório para a varredura estão disponíveis aqui
Varredura de código estático
O estágio static code scan executa uma ferramenta de analisador de código estático nas bases de código do repositório do aplicativo especificado.
O pipeline CC fornece os repos que são encontrados no inventário para o scanner.
Qualquer um dos métodos a seguir pode ser usado para incluir um código estático em seu pipeline:
- Forneça o nome, a URL e as credenciais de uma instância SonarQube já em execução, incluindo a ferramenta SonarQube na cadeia de ferramentas. A tarefa
static-scanexecuta uma varredura nos repositórios especificados. - Adicione seu código ao estágio personalizado
static-scanem seu arquivo.pipeline-config.yamlpara obter uma implementação personalizada.
Varredura dinâmica
O estágio de varredura Dinâmica executa uma ferramenta de teste de segurança do aplicativo dinâmico para encontrar vulnerabilidades no aplicativo implementado.
- Adicione seu próprio código de varredura dinâmica ao estágio personalizado de varredura dinâmica em seu arquivo
.pipeline-config.yamlpara obter uma implementação personalizada.
Para saber mais sobre configurar o scan dinâmico usando o OWASP-ZAP, veja Configurando o ZAP scan para pipeline CC.
Verificações e varreduras nas verificações de conformidade
| Varredura ou verificação | Descrição |
|---|---|
| Varredura de vulnerabilidade do Code Risk Analyzer | Encontra vulnerabilidades em todas as dependências de pacotes do aplicativo, todas as imagens de base do contêiner e todos os pacotes do sistema operacional. Utiliza a ferramenta Code Risk Analyzer. |
| Verificação do CIS do Code Risk Analyzer | Executa verificações de configuração nos manifestos de implementação do Kubernetes Utiliza a ferramenta Code Risk Analyzer. |
| Verificação do BOM (Bill of Material) do Code Risk Analyzer | O BOM de um repositório especificado, que captura a origem de todas as dependências. O BOM é coletado em diferentes granularidades. Por exemplo, o BOM captura a lista de imagens de base utilizadas na construção, a lista de pacotes das imagens de base e a lista de pacotes de aplicativos instalados por meio da imagem de base. O BOM representa uma verdade absoluta para os resultados analíticos e pode, potencialmente, ser usado para a aplicação de limites de políticas. Utiliza a ferramenta Code Risk Analyzer. |
Esses scripts são executados em todos os repositórios de aplicativos reconhecidos pelo pipeline. O pipeline CC usa a interface pipelinectl save_repo para
registrar repos encontrados nas entradas de inventário, em seguida usa os comandos list_repos e load_repo para iterar sobre recompos e enviá-los para scanners.
Para obter mais informações sobre a saída esperada dos estágios de scripts do usuário, consulte Scripts customizados.
Varredura de artefatos e assinatura
O estágio de varredura de artefato fornece um comportamento padrão para imagens do Docker, com uma etapa personalizável:
- Container Registry Vulnerability Advisor escaneamento
O pipeline CC usa a interface pipelinectl save_artifact para registrar artefatos encontrados nas entradas de inventário, depois iterem sobre esses
artefatos, usando os comandos list_artifacts e load_artifact.
Para ser iniciado com este estágio, forneça seus artefatos para o pipeline usando a interface pipelinectl. Não é obrigatório atualizar os scripts de construção
e a configuração de .pipeline-config.yaml.
Para usar um processo de digitalização diferente ou para processar artefatos que não sejam imagens Docker em icr.io, é possível personalizar esses estágios usando a configuração .pipeline-config.yaml em seu projeto.
Coleta de dados de conformidade sobre a construção
O pipeline CC tenta processar os resultados a partir de verificações e scans, quebrando resultados para questões individuais por cada CVE, vulnerabilidade ou alerta encontrados. Os problemas que são encontrados pelo pipeline CC são marcados
com uma etiqueta continuous-compliance-check que identifica questões que são descobertas no ambiente prod.
O pipeline coleta evidências em todas as verificações e scans e armazena-as no armário de provas. O coletor de evidências também salva os arquivos de log do pipeline, os dados do pipeline em si, contendo as definições de Tekton. As questões que são criadas de acordo com a varredura e verificação de que resultados também estão anexadas às provas.