Pular para o conteúdo principal

📅 Aplicação no Ciclo de Vida - CI/CD Seguro

Enquanto o intro.md explica porque os pipelines são críticos e que práticas devem ser aplicadas, este documento mostra como transformar essas prescrições em ações concretas ao longo do ciclo de vida de desenvolvimento e entrega.

O princípio orientador é simples e não negociável:

  • o pipeline pode automatizar execução e produzir sinais;
  • mas a organização só ganha segurança quando existe decisão humana atribuída, validação empírica e evidência auditável.

À medida que a automação se torna mais sofisticada, surgem riscos de processo adicionais: não-determinismo, “aprovação implícita” por outputs, evidência plausível sem execução real, fuga de contexto e diluição de responsabilidade.
Este documento operacionaliza essas preocupações sem “falar de tecnologia”: trata-as como controlos de engenharia e governação do pipeline.


🧭 Quando aplicar

A segurança em pipelines não acontece apenas quando algo corre mal — ela é parte do seu ADN desde o primeiro commit.
Sempre que se cria, altera, executa ou promove um pipeline, existem triggers que exigem controlos específicos:

Momento triggerObjetivo de segurançaPapéis principais
Criação ou refactor do pipelineIntroduzir controlos base, garantir auditabilidade e evitar alterações “fora do PR”Developers, DevOps / SRE
Alteração de regras de decisão (gates/thresholds)Garantir separação entre sinal automático e decisão; evitar bypass implícitoAppSec Engineers, DevOps / SRE, GRC / Compliance
Alteração de tooling/infra (runners, permissões, segredos)Rever isolamento, injeção de segredos, blast radius e não-repúdioDevOps / SRE, AppSec Engineers
Introdução/atualização de validadores (scanners, testes, policies)Aumentar cobertura e gates proporcionais ao risco; garantir evidência de execução realDevelopers, AppSec Engineers, DevOps / SRE
Integração de serviços externos no pipelineTratar como dependência; minimizar contexto; mitigar risco de exfiltraçãoDevOps / SRE, AppSec Engineers, GRC / Compliance
Preparação de release / promoção a produçãoValidar assinatura, proveniência, rastreabilidade e responsabilidade humanaDevOps / SRE, AppSec Engineers
Registo de exceção (bypass de gate)Aprovação formal, prazos, compensações e reversão automáticaGRC / Compliance, Auditores Internos, AppSec Engineers
Auditoria ou revisão periódicaDemonstrar rastreabilidade ponta-a-ponta e reprodutibilidadeGRC / Compliance, Auditores Internos, DevOps / SRE

👥 Quem executa cada ação

A responsabilidade em CI/CD é partilhada.
Um pipeline seguro resulta da soma de esforços: do programador que submete código com validações ativas, ao DevOps que endurece runners e segredos, até ao GRC que controla exceções e evidencia governação.

Ação operacionalResponsávelApoioEvidência/Artefactos
Definir/alterar pipeline versionado via PRDevelopersDevOps / SREci-pipeline.yml, histórico de revisão
Definir regras de decisão (gates/thresholds) explícitas e binárias por riscoAppSec EngineersDevOps / SRE, GRC / ComplianceRegras de gates, critérios publicados, registos de alteração
Endurecer runners (ephemerais, não-privilegiados, segregados)DevOps / SREAppSec EngineersConfiguração de runners, imagens base, evidência de isolamento
Integrar validadores (SAST, secrets, IaC, containers, SBOM, DAST quando aplicável)DevelopersAppSec Engineers, DevOps / SRERelatórios + logs de execução + exit codes
Injeção segura de segredos (OIDC, TTL curto, masked logs)DevOps / SREAppSec EngineersPolíticas de segredos, logs de acesso, evidência de rotação/TTL
Assinar artefactos e gerar proveniênciaDevOps / SREAppSec EngineersAssinaturas, proveniência, logs de verificação antes de promoção
Aprovar promoção/deploy (ações irreversíveis) com owner explícitoDevOps / SREAppSec Engineers (L2/L3), GRC (L3)Registo nominal de aprovação, contexto e evidência associada
Registar e aprovar exceções (com prazo e compensações)GRC / Compliance, Auditores InternosAppSec EngineersRegisto formal de exceções e aprovações, TTL, plano compensatório
Garantir rastreabilidade commit→pipeline→releaseDevOps / SREGRC / Compliance, Auditores InternosLogs correlacionados, IDs, export imutável (quando aplicável)
Garantir higiene de logs/outputs (minimização de contexto sensível)DevOps / SREAppSec EngineersPolítica de logging, evidência de mascaramento/redação, revisão periódica

🧾 User Stories normalizadas

Cada prática é expressa como user story reutilizável, com critérios verificáveis, artefactos concretos e proporcionalidade por nível de risco.

Nota editorial: estas user stories assumem explicitamente que “output bonito” não é evidência e que sugestões nunca equivalem a decisão.
Sempre que existam sinais automáticos (scores, recomendações, flags), estes são tratados como inputs para uma decisão humana formal.


US-01 - Gestão segura de código fonte

Contexto.
Sem controlo sobre o repositório, qualquer pipeline é vulnerável.

User Story

História.
Como Developers, quero que todas as alterações ao repositório sejam protegidas por PR e revisão obrigatória, para garantir integridade.

Critérios de aceitação (BDD).

  • Dado que existe um repositório protegido
    Quando submeto um PR para main
    Então só é aceite após revisão obrigatória e todos os checks concluídos com sucesso.
  • Dado que ocorre um merge
    Quando são detetados conflitos ou alterações relevantes na superfície de ataque
    Então é exigida nova revisão e reexecução automática dos validadores definidos.

Checklist.

  • Branch protection ativa
  • Reviewer obrigatório
  • Status checks configurados
  • Proibido force push

🧾 Artefactos & evidências.
Políticas de branch protection; logs de revisão; histórico Git; auditoria de merges.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimRevisão simples e build check obrigatório
L2SimRevisor técnico + validação de segurança ativa
L3SimRevisão dupla (code owner + AppSec) e bloqueio em falhas High

US-02 - Design seguro dos pipelines (versionamento, determinismo e revisão)

Contexto.
Pipelines inseguros são alvos privilegiados de ataque — e pipelines não reprodutíveis destroem auditoria.

User Story

História.
Como DevOps / SRE, quero pipelines versionados e aprovados por PR, com comportamento determinístico, para evitar alterações não auditadas e resultados não reproduzíveis.

Critérios de aceitação (BDD).

  • Dado que altero a definição do pipeline
    Quando submeto PR
    Então só é aceite após revisão por DevOps e AppSec (em L2/L3).
  • Dado que o pipeline depende de configuração ou parâmetros
    Quando é executado
    Então a configuração efetiva usada é registada como evidência (sem dados sensíveis).
  • Dado que há alteração de ferramentas, etapas ou regras de execução
    Quando o pipeline é modificado
    Então é criada nova versão rastreável e auditável (commit/hash + changelog no PR).

Checklist.

  • ci-pipeline.yml versionado
  • PR obrigatório
  • Triggers explícitos
  • Configuração efetiva registada (sem segredos)
  • Histórico de versões mantido

🧾 Artefactos & evidências.
Histórico de commits; ficheiro ci-pipeline.yml; aprovação PR; logs de revisão; registo de configuração efetiva.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimVersão única do pipeline com aprovação manual
L2SimVersionamento e revisão obrigatória
L3SimControlo de alterações assinado e validação reforçada de proveniência

US-03 - Scanners integrados (validação empírica obrigatória)

Contexto.
Detetar cedo é mais barato e eficaz — mas só conta se houver execução real.

User Story

História.
Como Developers, quero que o pipeline execute validadores de segurança com execução observável, para impedir falhas graves em produção.

Critérios de aceitação (BDD).

  • Dado que submeto código
    Quando corre o pipeline
    Então os validadores obrigatórios são executados e produzem logs/artefactos rastreáveis.
  • Dado que existem falhas críticas
    Quando os resultados são avaliados
    Então o merge/promoção é bloqueado de acordo com os gates definidos.
  • Dado que é introduzido novo tipo de artefacto
    Quando o conjunto atual de validação não o cobre
    Então o AppSec define regra adicional e a mudança é versionada e aprovada.

Checklist.

  • SAST ativo
  • Secrets scanning ativo
  • IaC scanning (quando aplicável)
  • Logs/artefactos de execução guardados
  • Falhas High bloqueiam merge (L2/L3)

🧾 Artefactos & evidências.
Relatórios de scanners; logs CI/CD; exit codes; registos de bloqueio; dashboards de vulnerabilidades.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimValidação base (SAST, secrets)
L2SimInclusão de IaC e análise de dependências
L3SimValidação completa incluindo containers e SBOM

US-04 - Gestão de segredos

Contexto.
Segredos estáticos expõem a organização — e logs descuidados tornam-se um canal de fuga.

User Story

História.
Como DevOps / SRE, quero segredos injetados por OIDC com TTL curto e outputs mascarados, para reduzir risco de abuso e exposição indireta.

Critérios de aceitação (BDD).

  • Dado que o pipeline arranca
    Quando credenciais são necessárias
    Então são emitidas just-in-time, com TTL curto e sem exposição em logs.
  • Dado que o token expira
    Quando é necessário novo acesso
    Então é gerado token temporário novo sem reutilização.

Checklist.

  • OIDC configurado
  • TTL curto
  • Variáveis mascaradas
  • Logging revisto para não expor contexto sensível

🧾 Artefactos & evidências.
Políticas de segredos; logs de acesso; configuração OIDC; evidência de TTL/rotação.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalSegredos armazenados encriptados + masking
L2SimOIDC implementado com TTL controlado
L3SimTokens efémeros automáticos e rotação frequente

US-05 - Isolamento de runners

Contexto.
Runners inseguros comprometem todo o ecossistema.

User Story

História.
Como DevOps / SRE, quero runners ephemerais e segregados, para reduzir persistência pós-compromisso e limitar blast radius.

Critérios de aceitação (BDD).

  • Dado que um job termina
    Quando o runner encerra
    Então é destruído sem manter estado.
  • Dado que há pipelines paralelos
    Quando são executados
    Então estão isolados por permissões, namespace e segmentação de rede.

Checklist.

  • Runners efémeros
  • Sem privilégios excessivos
  • Segmentação de rede
  • Sem estado persistente entre jobs

🧾 Artefactos & evidências.
Configuração de runners; logs de execução; registos de isolamento; scripts de provisionamento.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalRunners partilhados com limites e hardening
L2SimSegregação de runners por projeto
L3SimRunners efémeros + rede isolada + destruição automática

US-06 - Assinatura e proveniência

Contexto.
Artefactos não assinados perdem legitimidade — e artefactos sem proveniência enfraquecem auditoria e confiança.

User Story

História.
Como DevOps / SRE, quero que todos os artefactos sejam assinados e tenham proveniência validada, para garantir confiança e permitir verificação independente.

Critérios de aceitação (BDD).

  • Dado que um artefacto é produzido
    Quando é promovido
    Então assinatura e proveniência são verificadas antes da promoção.
  • Dado que falha verificação
    Quando a assinatura/proveniência não é válida
    Então o artefacto é rejeitado e é emitido alerta.

Checklist.

  • Assinatura automática
  • Proveniência gerada
  • Verificação antes de release
  • Rejeição automática em falha (L2/L3)

🧾 Artefactos & evidências.
Assinaturas digitais; ficheiros de proveniência; logs de promoção; auditoria de build.

Referência: Este US complementa o princípio de gerar SBOM por build, integrando assinatura e proveniência como artefactos de build.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimAssinatura recomendada + verificação manual em releases
L2SimAssinatura automática + verificação obrigatória
L3SimBloqueio automático + validações reforçadas de proveniência

US-07 - Gates por risco (separação sinal/decisão)

Contexto.
Nem todas as apps exigem o mesmo rigor — mas em nenhuma app um “sinal” substitui decisão.

User Story

História.
Como AppSec Engineers, quero gates distintos por L1–L3 e explicitamente binários, para aplicar segurança proporcional e evitar bypass implícito.

Critérios de aceitação (BDD).

  • Dado que uma aplicação é L3
    Quando há falha High ou Critical
    Então o gate bloqueia a promoção e exige decisão humana formal para qualquer exceção.
  • Dado que uma aplicação é L1
    Quando há falha Medium
    Então é registado alerta sem bloqueio, mas com rastreabilidade e backlog de remediação.
  • Dado que existe um output automático (score/recomendação)
    Quando é apresentado
    Então é tratado apenas como input, nunca como aprovação.

Checklist.

  • Política publicada
  • Gates configurados
  • Thresholds definidos
  • Separação entre sinal e decisão documentada

🧾 Artefactos & evidências.
Políticas de gates; logs de bloqueio; registos de alteração de thresholds; evidência de decisão em exceções.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimBloqueio apenas em Critical
L2SimBloqueio High/Critical + aprovação AppSec para exceções
L3SimBloqueio automático + governança reforçada (incl. GRC em exceções)

US-08 - Cobertura ampliada (containers e SBOM)

Contexto.
Cobertura limitada cria pontos cegos e fragiliza supply chain.

User Story

História.
Como AppSec Engineers, quero validação de containers e SBOM em pipelines, para cobrir supply chain e permitir rastreabilidade de componentes.

Critérios de aceitação (BDD).

  • Dado que uma imagem é construída
    Quando corre o pipeline
    Então o SBOM é gerado e anexado ao artefacto.
  • Dado que uma imagem base muda
    Quando vulnerabilidade é detetada
    Então é aberta tarefa de mitigação e o risco é rastreável ao release afetado.

Checklist.

  • Container scanning ativo
  • SBOM gerado
  • Base images validadas
  • Evidência de execução guardada

🧾 Artefactos & evidências.
Relatórios de scanning; SBOM; auditoria de imagens; logs de builds.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalScans de imagens base periódicos
L2SimSBOM obrigatório + validação de base images
L3SimScans contínuos + correlação de CVEs + bloqueios em risco crítico

US-09 - Rastreabilidade ponta-a-ponta (commit→pipeline→release)

Contexto.
Sem rastreio, auditoria é impossível — e investigação de incidentes torna-se especulativa.

User Story

História.
Como GRC / Compliance, quero rastrear commit→pipeline→release, para suportar auditorias e investigação de incidentes.

Critérios de aceitação (BDD).

  • Dado que ocorre um incidente
    Quando analiso um release
    Então consigo traçar origem até commit e execução do pipeline.
  • Dado que um auditor pede evidências
    Quando executo consulta
    Então o sistema exporta logs correlacionados e verificáveis (sem dados sensíveis).

Checklist.

  • IDs de correlação
  • Logs retidos
  • Export imutável (quando aplicável)
  • Ligação explícita entre artefactos e execução

🧾 Artefactos & evidências.
Logs de pipelines; dashboards; registos de auditoria; exports (imutáveis quando exigido).

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimLogs básicos armazenados 30 dias
L2SimRetenção 90 dias + correlação commit-build
L3SimRetenção ≥1 ano + exportação imutável + auditoria reforçada

US-10 - Gestão de exceções (bypass controlado)

Contexto.
Exceções mal geridas tornam-se risco estrutural e normalizam bypass.

User Story

História.
Como GRC / Compliance, quero exceções registadas, aprovadas e temporárias, para evitar acumulação de dívida e manter governação.

Critérios de aceitação (BDD).

  • Dado que uma exceção é pedida
    Quando é analisada
    Então só é aprovada com prazo, owner e compensações definidas.
  • Dado que o prazo expira
    Quando não há renovação formal
    Então a exceção é removida e o pipeline volta ao modo normal de controlo.

Checklist.

  • Owner registado
  • Prazo definido
  • Aprovação dupla (AppSec + GRC) em L2/L3
  • Registo de compensações
  • Reversão automática no fim do prazo

🧾 Artefactos & evidências.
Registo de exceções; logs de aprovação; relatórios de revisão; prazos automáticos no sistema de GRC.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimRegisto simples com aprovação única
L2SimAprovação dupla e prazo máximo (ex.: 60 dias)
L3SimRevisão frequente + auditoria obrigatória

US-11 - Testes de segurança dinâmicos (DAST)

Contexto.
Testes estáticos apenas cobrem parcialmente; DAST em staging valida comportamento real.

User Story

História.
Como AppSec Engineers, quero executar DAST em staging após deployment, para validar vulnerabilidades comportamentais antes de produção.

Critérios de aceitação (BDD).

  • Dado que uma build é promovida a staging
    Quando inicia pipeline DAST
    Então são executadas análises relevantes e os resultados são rastreáveis ao commit/release.
  • Dado que DAST encontra falha High
    Quando o resultado é disponibilizado
    Então bloqueia promoção a produção até correção validada.

Checklist.

  • DAST integrado no pipeline
  • Credenciais de teste segregadas
  • Relatório correlacionado com commit
  • Bloqueio automático em High/Critical (L2/L3)

🧾 Artefactos & evidências.
Relatórios DAST; logs de execução; evidências de correção; rastreabilidade.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalDAST manual periódico
L2SimDAST em staging pré-release
L3SimDAST contínuo + bloqueio automático + revalidação pós-correção

US-12 - Métricas e conformidade organizacional

Contexto.
Sem visibilidade centralizada, risco acumula-se invisível.

User Story

História.
Como Gestão Executiva / CISO, quero visualizar métricas de CI/CD (cobertura, gates, exceções, bloqueios, MTTR), para decisão informada e ação corretiva.

Critérios de aceitação (BDD).

  • Dado que o pipeline executa
    Quando ocorrem eventos (merge, bloqueio, exceção, promoção)
    Então são registados com timestamp, contexto e atores.
  • Dado que consulto o dashboard
    Quando filtro por projeto/período/risco
    Então obtenho indicadores acionáveis e auditáveis.

Checklist.

  • Eventos centralizados
  • Dashboard com KPIs (cobertura, MTTR, compliance rate)
  • Alertas em anomalias
  • Relatórios periódicos para GRC

🧾 Artefactos & evidências.
Dashboard; logs centralizados; relatórios; alertas; evidência de retenção.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalRelatórios manuais periódicos
L2SimDashboard com KPIs principais, atualizado diariamente
L3SimDashboard quase em tempo real + alertas automáticos

US-13 - Validação de integridade de imagens base

Contexto.
Imagens base comprometidas propagam risco a todo o ecossistema.

User Story

História.
Como DevOps / SRE, quero validar integridade de imagens base (hash/assinatura/drift) e correlacionar com vulnerabilidades, para evitar supply chain comprometido.

Critérios de aceitação (BDD).

  • Dado que uma imagem base é usada
    Quando o pipeline inicia
    Então o identificador esperado é validado contra fonte confiável.
  • Dado que surge vulnerabilidade relevante
    Quando afeta imagens em uso
    Então é criado alerta e aberta ação de mitigação rastreável ao release.

Checklist.

  • Hash/assinatura de imagens base registado
  • Validação automática no pull
  • Rejeição em mismatch (L2/L3)
  • Correlação contínua com vulnerabilidades

🧾 Artefactos & evidências.
Registos de hashes/assinaturas; logs de validação; relatórios de drift; ações de mitigação.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1OpcionalValidação manual periódica
L2SimValidação automática no pull com logs
L3SimValidação + assinatura + alertas automáticos em drift/vulnerabilidade

🆕 User Stories adicionais (riscos de processo do CI/CD moderno)

As user stories seguintes tornam explícitas as preocupações de processo que, na prática, mais degradam a segurança quando a automação aumenta: não-determinismo, confusão sinal/decisão, evidência fraca, fuga de contexto e diluição de responsabilidade.


US-14 - Reprodutibilidade e determinismo do pipeline

Contexto.
Sem reprodutibilidade, não há auditoria nem investigação de incidentes.

User Story

História.
Como DevOps / SRE, quero que execuções do pipeline sejam reprodutíveis e determinísticas (na medida do possível), para permitir verificação independente e auditoria.

Critérios de aceitação (BDD).

  • Dado que um build é executado
    Quando volto a executar o mesmo pipeline sobre o mesmo commit
    Então obtenho resultados equivalentes (ou divergências justificadas e registadas).
  • Dado que existem parâmetros/configuração
    Quando o pipeline corre
    Então a configuração efetiva usada é registada como evidência (sem segredos).

Checklist.

  • Definição do pipeline versionada
  • Dependências e versões relevantes estabilizadas/identificadas
  • Configuração efetiva registada
  • Divergências documentadas quando inevitáveis

🧾 Artefactos & evidências.
Execução rastreável (logs + config efetiva); ligação a commit; registos de divergência; artefactos produzidos.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimReprodutibilidade “boa-fé” com logging suficiente
L2SimReprodutibilidade como requisito; validação periódica
L3SimReprodutibilidade obrigatória + auditoria reforçada e retenção prolongada

US-15 - Separação formal entre sinal automático e decisão de promoção

Contexto.
Um “score verde” não é uma decisão; uma decisão exige owner e evidência.

User Story

História.
Como AppSec Engineers, quero que qualquer recomendação/score/flag seja formalmente classificada como sinal, e que a promoção exija decisão humana explícita, para evitar aprovação implícita.

Critérios de aceitação (BDD).

  • Dado que o pipeline produz sinais (scores/recomendações)
    Quando a promoção é considerada
    Então a decisão é registada com owner humano e evidência associada.
  • Dado que alguém tenta promover sem decisão formal
    Quando o pipeline avalia a ação
    Então bloqueia e exige registo nominal de aprovação.

Checklist.

  • Distinção “sinal” vs “decisão” documentada
  • Promoção exige aprovação nominal
  • Registo inclui evidência referenciada
  • Bloqueio automático a promoções “sem owner”

🧾 Artefactos & evidências.
Registo de aprovação; evidência associada; logs de bloqueio; política publicada.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimAprovação nominal para produção
L2SimAprovação nominal + regra de separação de funções
L3SimAprovação nominal + auditoria reforçada + regra estrACI (approval control integrity)

US-16 - Evidência empírica obrigatória (anti-“relatórios sem execução”)

Contexto.
Resultados plausíveis não substituem execução real.

User Story

História.
Como GRC / Compliance, quero que qualquer evidência de controlo em CI/CD seja baseada em execução observável (logs, exit codes, artefactos), para impedir conformidade aparente sem validação real.

Critérios de aceitação (BDD).

  • Dado que existe um relatório de validação
    Quando é usado como evidência
    Então contém referência verificável à execução (job/run id, logs, artefactos).
  • Dado que não existe execução observável
    Quando alguém tenta registar um resultado como evidência
    Então é rejeitado como “não verificável”.

Checklist.

  • Evidência liga a uma execução real
  • Logs e exit codes disponíveis
  • Artefactos preservados conforme retenção
  • Rejeição de evidência não verificável

🧾 Artefactos & evidências.
Run IDs; logs; exit codes; artefactos; política de evidência.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimEvidência mínima por execução
L2SimEvidência obrigatória + retenção reforçada
L3SimEvidência obrigatória + export imutável e auditoria

US-17 - Contenção de contexto e higiene de logs/outputs

Contexto.
O pipeline “vê” tudo — logo, é onde a fuga de contexto é mais provável.

User Story

História.
Como DevOps / SRE, quero que logs e outputs do pipeline sejam minimizados e higienizados, para impedir exposição de segredos, dados sensíveis ou propriedade intelectual.

Critérios de aceitação (BDD).

  • Dado que o pipeline executa
    Quando gera logs
    Então segredos e identificadores sensíveis são mascarados/redigidos por defeito.
  • Dado que é necessário debug
    Quando é ativado temporariamente
    Então exige aprovação, é limitado no tempo e produz evidência de desativação.

Checklist.

  • Política de logging publicada
  • Masking/redação ativa por defeito
  • Debug temporário controlado e auditável
  • Revisão periódica de logs e configurações

🧾 Artefactos & evidências.
Configuração de logging; evidência de masking; registos de ativação/desativação de debug; relatórios de revisão.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimMasking básico + revisão pontual
L2SimMasking + controlo formal de debug
L3SimControlo formal + auditoria + retenção e export conforme exigência

US-18 - Não-repúdio e ownership de promoções (ações irreversíveis)

Contexto.
Se ninguém “assina” a promoção, ninguém responde pelo incidente.

User Story

História.
Como DevOps / SRE, quero que qualquer promoção para produção tenha owner humano explícito e registo de decisão, para garantir não-repúdio e responsabilização.

Critérios de aceitação (BDD).

  • Dado que uma promoção para produção é solicitada
    Quando é executada
    Então existe registo nominal de aprovação e contexto de decisão (evidência referenciada).
  • Dado que não existe owner
    Quando alguém tenta promover
    Então o pipeline bloqueia a ação.

Checklist.

  • Promoção exige owner humano
  • Registo nominal e timestamp
  • Evidência referenciada (runs, artefactos, relatórios)
  • Bloqueio a promoções sem registo

🧾 Artefactos & evidências.
Registo de aprovação; logs do pipeline; evidência associada; trilho de auditoria.

⚖️ Proporcionalidade.

NívelObrigatório?Ajustes
L1SimAprovação nominal para produção
L2SimAprovação nominal + separação de funções
L3SimAprovação nominal + auditoria reforçada e retenção prolongada

📦 Artefactos esperados

Cada prática deixa pegadas técnicas. Sem elas, não há prova de conformidade:

Artefacto / EvidênciaDonoObservações
ci-pipeline.ymlDevelopersVersionado via PR (US-01, US-02)
Registo de configuração efetiva (sem segredos)DevOps / SRESuporta reprodutibilidade (US-02, US-14)
Regras de gates/thresholds publicadasAppSec EngineersSeparação sinal/decisão (US-07, US-15)
Logs + exit codes + artefactos de execuçãoDevOps / SREEvidência empírica (US-03, US-16)
Assinaturas + proveniênciaDevOps / SREVerificação antes de promoção (US-06)
Relatórios de validadores (SAST, secrets, etc.)Developers / AppSec EngineersSempre ligados a execução real (US-03, US-16)
SBOM por buildAppSec EngineersAnexado ao artefacto (US-08)
Registo de exceções (TTL, compensações, approvals)GRC / ComplianceGovernação de bypass (US-10)
Logs correlacionados commit→pipeline→releaseDevOps / SRERastreabilidade auditável (US-09)
Política e evidência de higiene de logsDevOps / SREMinimização de contexto (US-17)
Registos nominais de promoção/deployDevOps / SRENão-repúdio (US-18)
Dashboard de métricas e eventosGestão Executiva / CISOVisibilidade organizacional (US-12)

⚖️ Matriz de proporcionalidade L1–L3

Nem todas as apps exigem o mesmo nível de rigor.
A matriz assegura que o esforço é proporcional ao risco sem nunca comprometer: decisão humana, evidência empírica e rastreabilidade.

CategoriaL1 (baixo)L2 (médio)L3 (crítico)
Branches/PR1 reviewer + build checkReviewer + validação de segurança≥2 reviewers + code owners + AppSec
DeterminismoLogging suficienteReprodutibilidade como requisitoReprodutibilidade + auditoria reforçada
Sinal vs decisãoAprovação nominal para produçãoAprovação nominal + separação de funçõesAprovação nominal + controlo reforçado + auditoria
Evidência empíricaLogs básicos + artefactos chaveLogs + exit codes + retenção reforçadaEvidência completa + export imutável (quando exigido)
ScannersSAST + secrets+ IaC + dependências+ containers + SBOM + cobertura alargada
SegredosMasking + armazenamento seguroOIDC preferido + TTL controladoOIDC obrigatório + TTL curto + rotação frequente
RunnersPartilhados com hardeningSegregados por projetoEfémeros + segmentação de rede + destruição automática
ArtefactosAssinatura recomendadaAssinatura + verificação obrigatóriaBloqueio automático em falha + proveniência reforçada
ExceçõesRegisto simplesAprovação dupla + TTLAprovação dupla + revisão frequente + auditoria
RastreabilidadeLogs 30 diasLogs 90 dias + correlação commit-build≥1 ano + export imutável + dashboards
DASTManual periódicoEm staging pré-releaseContínuo + bloqueio automático
MétricasRelatórios manuaisDashboard diárioQuase tempo real + alertas

🏁 Recomendações finais

A segurança de pipelines não é opcional: é o mecanismo de confiança de toda a entrega contínua.

  • Versiona e revê o pipeline como código — e exige determinismo suficiente para auditoria.
  • Define gates binários e governáveis — e nunca confundas sinais automáticos com decisões.
  • Exige evidência empírica — logs, exit codes e artefactos, não apenas relatórios.
  • Protege segredos e minimiza contexto — o pipeline é um ponto privilegiado de exfiltração.
  • Atribui ownership às ações irreversíveis — promoções sem owner são um risco estrutural.
  • Controla exceções com TTL e compensações — bypass só existe quando é governado.

Um CI/CD seguro é o garante silencioso de que tudo o que chega a produção é íntegro, verificável, rastreável e assumido por responsáveis reais.