[seguranca] feat(sync-docs): filtro de segurança PII/confidencial no reusável, global-first [TH-68789] #57
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/TH-68789-sync-docs-filtro-pii"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
TH-68789 — Filtro de segurança (PII/confidencial) no sync docs → Hub
Tarefa de CI de segurança, global-first: o filtro passa a morar no reusável/canônico do
ci-shared, não em cópia por produto.Decisão de engenharia (como o reusável obtém script + anonimizador)
O reusável
sync-docs-to-hub.ymlclona o próprioci-sharedna MESMA ref douses:do caller (padrão já usado emgenerate-docs.yml/release.yml) e roda os scripts canônicos contra odocs/do produto via--repo-root ..scripts/docs/sync_docs_to_hub.pypassa a viver aqui.scripts/docs/anonimizar-docs.py(em vez de clonar oTMF/ORGem runtime). Motivo:ci-sharedé público (clone sem token), enquanto oTMF/ORGé privado e exige o baile de token (ORG_LEITURA_TOKEN/Infisical). Vendorizar deixa o gate self-contained e robusto — um único clone público traz script + gate. (Overificar-docs-produto.ymlainda clona o ORG porque o verificador tem outras dependências do acervo; o anonimizador é autocontido e cabe no mirror canônico do runtime.)--repo-rootno script canônico reapontaROOT/DOCS_DIRpara o checkout do produto.shell: bash(pipefail), padrão do repo.O que o filtro bloqueia (fail-closed)
anonimizar-docs.py --checkroda ANTES do sync; achado de PII (ou binário não escaneado) → exit != 0 → o job aborta e NADA vai ao Hub.legal/ouseguranca/(qualquer nível dedocs/);audiencia: confidencial;audienciano front-matter (default = não enviar).Teste de controle (negativo real)
tests/sync-docs-filtro/test_filtro_pii.py(12 testes). Prova que doc confidencial, doc semaudiencia,legal/eseguranca/são BARRADOS, e que o--checkreprova com PII. O controle negativo roda uma cópia do canônico com o filtro neutralizado e prova que, sem o filtro, esses docs SERIAM enviados. Validado: ao remover o filtro de verdade do script, 3 testes positivos falham (controle real, não decorativo).Follow-up (NÃO neste PR)
Substituir as cópias do script nos 7 produtos pela do
ci-shared(a canônica passa a viver aqui e o reusável a executa): dani, fina, tmf9, priceshow, tmf-platform, infra, tmf-management. HelpCor fica FORA do Hub por decisão (HCOR-64764).🤖 Generated with Claude Code
https://claude.ai/code/session_01HEu6RgsuRhe5fsePE3Dojv
feat(sync-docs): filtro de segurança PII/confidencial no reusável, global-first [TH-68789]to [seguranca] feat(sync-docs): filtro de segurança PII/confidencial no reusável, global-first [TH-68789]