IBM Cloud Docs
Validando provas

Validando provas

No DevSecOps arquitetura, antes de implantar os ativos, todas as evidências que foram coletadas no pipeline de CI devem ser validadas para que os ativos atendam aos requisitos de conformidade.

A recolha de provas é um aspecto essencial da DevSecOps arquitetura de referência. O pipeline de CI coleta as peças de evidência para todas as varreduras ou etapas para os ativos que são executados pelo pipeline de CI. O pipeline de Implementação Contínua (CD) implementa os ativos que são produzidos pelo pipeline de IC e o pipeline de Conformidade Contínua (CC) varre o ativo implementado pelo pipeline de CD.

Você pode validar as evidências de uma das seguintes maneiras:

  1. Usando o perfil Security and Compliance Center (SCC).
  2. Usando um arquivo de configuração..

Usando o perfil SCC

Use o SCC para incorporar verificações de segurança em seus fluxos de trabalho diários para monitorar a segurança e a conformidade. Ao monitorar os riscos, você pode identificar as vulnerabilidades de segurança, trabalhar para reduzir o impacto e corrigir os problemas. A cadeia de ferramentas deve ter a integração SCC e o Use profile with attachment ativado, com base no perfil e na versão SCC. Todos os controles são validados com base nas evidências coletados para todos os recursos no anexo A cadeia de ferramentas suporta as IBM Cloud® Melhores práticas de segurança com versão 1.0.0 ou superior ou o IBM Cloud® for Financial Services com versão 1.2.0 ou perfil acima. Se desejar um subconjunto de controles especificados, crie um perfil customizado usando esses perfis e selecione um subconjunto de controles.. A cadeia de ferramentas é validada com relação a esse perfil Para obter mais informações, consulte Security and Compliance Center.

Usando um arquivo de configuração

Validar a evidência usando um arquivo de configuração funciona da seguinte forma:

  • Os cheques de pré-implantação validam as evidências que são produzidas pelo pipeline de IC e portões a implementação com base nessas verificações. Se todas as verificações forem validadas com sucesso, o pedido de alteração será auto-aprovado. Se alguma das verificações falhar, a solicitação de mudança não será aprovada automaticamente e a implementação será bloqueada.. No caso de uma solicitação de alteração emergency, a implementação não está bloqueada. O arquivo config faz parte da solicitação de alteração.
  • Os cheques de pós-implantação validam as evidências que são produzidas pelo pipeline do CD e avalia o pipeline com base nesses cheques.
  • A etapa de acabamento valida as verificações de provas de pós-implantação e avalia o pipeline de CD. As verificações são armazenadas no armário de evidências ao lado do arquivo summary.json.

Para cada tipo de ativo, diferentes tipos de evidência podem precisar ser coletados. Assim, nos cheques você pode definir o tipo de ativo e com base nesse ativo, as provas coletadas para uma ferramenta são as seguintes:

Ativar validação e avaliação de evidência usando o arquivo de configuração

Para ativar o validation of evidence em sua cadeia de ferramentas, configure a variável de ambiente opt-in-evidence-checks como 1 na cadeia de ferramentas CD e CC.

Configurar arquivo de configuração

Para definir o caminho de arquivo config, configure evidence-checks-config-path para o caminho de arquivo presente no pipeline-config-repo, caso contrário, será utilizado o arquivo config padrão. Diferentes ambientes de implementação podem ter arquivos de config diferentes. Por exemplo, stage pode ter verificações de evidência que diferem das verificações de evidência de produção. Se evidence-checks-config-path não for definido, o arquivo config procura o arquivo com o nome <region>.<target>.validation.json, <target>.validation.JSON ou validation.json no pipeline-config-repo.

Há duas versões desse arquivo de configuração:

Arquivo de configuração Versão 2

Durante a execução do pipeline CI/CD/CC, coletamos várias evidências contra várias ferramentas em vários ambientes de serviço Em termos simples, o ambiente de serviço pode ser de desenvolvimento, produção e pré-produção (ou estágio) com suporte recente Os resultados dessas evidências são agregados para determinar a conformidade geral do nível do aplicativo para um ambiente de serviço específico. O usuário pode configurar regras para determinar como a agregação de resultados é executada. Usando um arquivo de configuração version2, o usuário ajusta como avaliar qualquer evidência específica por ambiente de serviço. As evidências podem ser declaradas como:

  • recomendado (padrão)
  • requerido

O diagrama abaixo mostra como funciona a agregação de evidências:

agregação de evidências

Avaliação de evidências e Gating

Quando o nível de conformidade do aplicativo exigido não é alcançado, bloqueamos a implantação na execução do pipeline de CD. Evidências apoiadas para gating:

pre-deployment[evidences list]
post-deployment[evidences list]

Várias topologias de implantação:

1. Promoção de master para prod

master to prod Promoção{: caption="Caso de uso 1. Promoção de master para prod " lado da legenda = "parte inferior"}

Propriedades para '  e ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger"}

2. Promoção de master para stage e então para prod

master to prod Promoção{: caption="Caso de uso 2. Promoção de master para stage para prod " lado da legenda = "parte inferior"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' prod"}

Arquivo de configuração verison2
Arquivo de configuração verison2

3. Promoção de master para stage(us-east) para stage(us-south) e então para prod(us-south)

master para prod Promoção{: caption="Caso de uso 3. Promoção de master para stage(us-east) para stage(us-south) e então para prod(us-south) " lado da legenda = "parte inferior"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage(us-east)"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage(us-south)"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' prod(us-south)"}

4. Promoção de master para stage(us-east) para stage(us-south) e então para prod(us-south)

master para prod Promoção{: caption="Caso de uso 4. Promoção de master para stage(us-east) para stage(us-south) e então para prod(us-south) " lado da legenda = "parte inferior"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage(us-east)"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage(us-east)"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' stage(us-south)"}

Propriedades para '  e '  ambiente ' {: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' prod(us-south)"}

' Configure o arquivo verison2 com a região
Configure o arquivo verison2 com a região

Tabela de resultados para version2cocoa locker evidence check:

 version2 saída de comando {: caption="Properties for Manual Promotion Trigger and Manual CD Trigger environment prod(us-south)"}

Pré-implantação (cheques que são feitos antes da solicitação de mudança é auto-aprovada)

  • Tipo de ativo (por exemplo image, commit, *, ou qualquer ativo)
    • Evidência
      • Id do tipo de evidência (por exemplo com.ibm.static-scan)
        • Necessário (As evidências presentes no estado success )
          • Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo, SonarQube, owasp-zap, *, ou qualquer ferramenta)
        • Recomendado (se a evidência estiver em falta / pendente / falha, o pipeline registrará mensagens de aviso)
          • Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo, SonarQube, owasp-zap, *, ou qualquer ferramenta)

Pós-implantação (cheques que avaliam o pipeline de CD)

  • Tipo de ativo (por exemplo image, commit, *, ou qualquer ativo)
    • Evidência
      • Id do tipo de evidência (por exemplo com.ibm.acceptance_tests)
        • Necessário (as provas devem estar presentes no estado success )
          • Ferramenta (tipo de ferramenta, por exemplo jest, *, ou qualquer ferramenta)
        • Recomendado (se a evidência estiver em falta / pendente / falha, o pipeline registrará mensagens de aviso)
          • Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo, SonarQube, owasp-zap, *, ou qualquer ferramenta)

A avaliação de pipeline também ocorrerá quando a verificação estiver ativada no CD e no CC, utilizando o arquivo de configuração

As evidências originadas do pipeline de CI devem ter origem como ci-pipeline no arquivo de configuração.

Arquivo de configuração de amostra versão 2

{
  "version": "2.0",
  "pre-deployment": [
    {
      "evidence_type_id": "com.ibm.prod_change_request",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "stage"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "stage"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.acceptance_tests",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            },
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.branch_protection",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.cloud.slsa",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.dynamic_scan",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.cloud.verify_signature",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.peer_review",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.unit_tests",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.static_scan",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.detect_secrets",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.code_vulnerability_scan",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.code_cis_check",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.code_bom_check",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.network_compliance",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.pipeline_run_data",
      "rules": [
        {
          "asset_type": "generic",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.pipeline_logs",
      "rules": [
        {
          "asset_type": "generic",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.code-branch-protection",
      "rules": [
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.cloud.image_signing",
      "rules": [
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "ci-pipeline"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    }
  ],
  "post-deployment": [
    {
      "evidence_type_id": "com.ibm.prod_change_request",
      "rules": [
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "stage"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "stage"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.acceptance_tests",
      "rules": [
        {
          "asset_type": "commit",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "image",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        },
        {
          "asset_type": "*",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.pipeline_run_data",
      "rules": [
        {
          "asset_type": "generic",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    },
    {
      "evidence_type_id": "com.ibm.pipeline_logs",
      "rules": [
        {
          "asset_type": "generic",
          "source_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "target_environments": [
            {
              "name": "stage"
            },
            {
              "name": "prod"
            }
          ],
          "required": [],
          "recommended": [
            {
              "name": "tool",
              "values": [
                "*"
              ],
              "description": "The tool that collected the evidence"
            }
          ]
        }
      ]
    }
  ]
}

Arquivo de configuração Versão 1

Pré-implantação (cheques que são feitos antes da solicitação de mudança é auto-aprovada)

  • Tipo de ativo (por exemplo image, commit, *, ou qualquer ativo)
    • Evidência
      • Id do tipo de evidência (por exemplo com.ibm.static-scan)
        • Necessário (As evidências presentes no estado success )
          • Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo, SonarQube, owasp-zap, *, ou qualquer ferramenta)
        • Opcional (se a evidência estiver presente, então ela deve estar no estado success )
          • Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo, SonarQube, owasp-zap, *, ou qualquer ferramenta)
        • Ignorar (as provas não são validadas)

Pós-implantação (cheques que avaliam o pipeline de CD)

  • Tipo de ativo (por exemplo image, commit, *, ou qualquer ativo)
    • Evidência
      • Id do tipo de evidência (por exemplo com.ibm.acceptance_tests)
        • Necessário (as provas devem estar presentes no estado success )
          • Ferramenta (tipo de ferramenta, por exemplo jest, *, ou qualquer ferramenta)
        • Opcional (se a evidência estiver presente, então ela deve estar no estado success )
          • Ferramenta (tipo de ferramenta, por exemplo servicenow-v3, *, ou qualquer ferramenta)
        • Ignorar (as provas não são validadas)

A avaliação de pipeline também ocorrerá quando a verificação estiver ativada no CD e no CC, utilizando o arquivo de configuração

Arquivo de configuração de amostra versão 1

{
  "pre-deployment": [
    {
      "asset_type": "commit",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.branch_protection",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.peer_review",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.unit_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.static_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.detect_secrets",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_vulnerability_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_cis_check",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_bom_check",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.acceptance_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "image",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.cloud.slsa",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.image_signing",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.dynamic_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.verify_signature",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "generic",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.pipeline_run_data",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.pipeline_logs",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "*",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.code-branch-protection",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.peer_review",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.unit_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.static_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.detect_secrets",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_vulnerability_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_cis_check",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.code_bom_check",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.image_signing",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.acceptance_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.image_vulnerability_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.dynamic_scan",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.cloud.verify_signature",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    }
  ],
  "post-deployment": [
    {
      "asset_type": "image",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.prod_change_request",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.acceptance_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "generic",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.pipeline_run_data",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.pipeline_logs",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "commit",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.acceptance_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    },
    {
      "asset_type": "*",
      "evidences": [
        {
          "evidence_type_id": "com.ibm.prod_change_request",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        },
        {
          "evidence_type_id": "com.ibm.acceptance_tests",
          "rules": {
            "required": [],
            "optional": [
              {
                "tool": "*"
              }
            ],
            "ignore": []
          }
        }
      ]
    }
  ]
}

Valor padrão da ferramenta para os vários estágios do DevSecOps

ID do tipo de evidência Ferramenta padrão suportada
com.ibm.branch_protection cocoa-branch-protection
com.ibm.unit_tests jest
com.ibm.detect_secrets detect-secrets
com.ibm.code_vulnerability_scan Para apps: cra-tf, cra, mend
Para infraestrutura como código: tfsec, checkov
com.ibm.code_bom_check cra-bom, sbom-utility
com.ibm.code_cis_check cra-cis
com.ibm.peer_review peer-review
com.ibm.static_scan Para apps: sonarqube, gosec
Para infraestrutura como código: terraform-fmt, terraform-validate, tflint
com.ibm.cloud.image_signing artifact-signing
com.ibm.acceptance_tests jest
com.ibm.dynamic_scan owasp-zap, owasp-zap-ui
com.ibm.cloud.image_vulnerability_scan va, sysdig, xray
com.ibm.prod_change_request gitlab,
com.ibm.close_change_request gitlab

|com.ibm.cloud.slsa | tekton-chains |

Perguntas frequentes : Verificações de conformidade em dutos de CD

O que significa que todas as verificações estão definidas como recomendadas?

Isso significa que, embora o pipeline recomende a aprovação em todas as verificações de conformidade, ele não falha automaticamente se elas não forem aprovadas. Você, como usuário, é responsável por garantir que todas as verificações de conformidade falhadas ou ausentes sejam abordadas e corrigidas durante o seu processo de CI. O pipeline está sinalizando esses problemas para que você os investigue e resolva.

Como verificar se todas as verificações de conformidade foram cumpridas?

  • Navegue até o pipeline de CD: Vá para o pipeline de CD específico associado à sua alteração.
  • Localize a tarefa Pre-Change-Request: No pipeline, localize a tarefa denominada "pre-change-request" e selecione a etapa "change-request".
  • Localize as tabelas PRE-DEPLOYMENT: Procure uma seção de tabela com a palavra-chave PRE-DEPLOYMENT:. Você verá duas tabelas nessa seção.

Entendendo as tabelas

  1. Tabela de ativos

    a. A tabela de ativos contém o ID, que é a chave primária dessa tabela, e a chave estrangeira AssetId da tabela de verificação de evidências

    b. O Uri contém seu ativo real contra o qual todas as evidências são coletadas ou deveriam ser coletadas

  2. Tabela de verificação de evidências

    a. EvidenceTypeId especifica o tipo de evidência que está procurando.

    b. Origem da evidência especifica a origem da evidência. Se estiver escrito ci-pipeline, espera-se que a evidência seja coletada para esse evidenceTypeId para esse AssetId.

O que fazer quando as entradas na Evidence Check Table são consideradas ausentes ou com falha?

Para cada entrada na tabela Evidence Check, faça a si mesmo as seguintes perguntas: Já coletei esse tipo de evidência para esse ativo em meu pipeline de CI?

  1. Se NÃO: Esse é um requisito de conformidade válido para o meu serviço?

    a. SIM: Você precisa implementar as etapas necessárias em seu pipeline de CI para coletar e fornecer essas evidências. Isso pode envolver a adição de novas ferramentas, scripts ou configurações. Guia de ajuda

    b. NÃO: Entre em contato com o seu foco de segurança e explique por que você acredita que essa verificação não é relevante ou válida para o seu serviço. Forneça uma justificativa clara e remova essa verificação do arquivo de configuração.

  2. Se SIM: (Você já coletou essa evidência anteriormente)

    Por que ele ainda está sendo exibido como ausente na tabela Evidence Check? Pode haver um problema com a forma como a evidência está sendo relatada, processada ou vinculada ao ativo.