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:
- Usando o perfil Security and Compliance Center (SCC).
- 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:

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
: caption="Caso de uso 1. Promoção de master para prod " lado da legenda = "parte inferior"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger"}
2. Promoção de master para stage e então para prod
: caption="Caso de uso 2. Promoção de master para stage para prod " lado da legenda = "parte
inferior"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente '
prod"}
3. Promoção de master para stage(us-east) para stage(us-south) e então para prod(us-south)
: 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"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage(us-east)"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage(us-south)"}
{: 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)
: 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"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage(us-east)"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage(us-east)"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente
' stage(us-south)"}
{: caption="Propriedades para ' Manual Promotion Trigger e ' Manual CD Trigger ambiente ' prod(us-south)"}
Tabela de resultados para version2cocoa locker evidence check:
{: 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)
- Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo,
- 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)
- Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo,
- Necessário (As evidências presentes no estado
- Id do tipo de evidência (por exemplo
- Evidência
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)
- Ferramenta (tipo de ferramenta, por exemplo
- 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)
- Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo,
- Necessário (as provas devem estar presentes no estado
- Id do tipo de evidência (por exemplo
- Evidência
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)
- Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo,
- 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)
- Ferramenta (Tipo de ferramenta para o qual as provas são coletadas. Por exemplo,
- Ignorar (as provas não são validadas)
- Necessário (As evidências presentes no estado
- Id do tipo de evidência (por exemplo
- Evidência
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)
- Ferramenta (tipo de ferramenta, por exemplo
- 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)
- Ferramenta (tipo de ferramenta, por exemplo
- Ignorar (as provas não são validadas)
- Necessário (as provas devem estar presentes no estado
- Id do tipo de evidência (por exemplo
- Evidência
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
-
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
-
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?
-
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.
-
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.