[seguranca] fix(deploy-guard): frase manual confirma-deploy só vale disparada por aprovador [INFRA-69413] #114
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/INFRA-69413-manual-exige-aprovador"
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?
[seguranca] Guard de deploy: a frase manual exige aprovador [INFRA-69413]
Achado do Hub (TH-69412), conferido na develop. Espera aprovação do operador: o prefixo
[seguranca]no título vale como a label, que não existe no repo (o bot não lê as labels da org, INFRA-69128).Furo. Em
scripts/ci/conferir_autorizacao_deploy.py, o caminho manual (RE_MANUAL→conferir_manual) aceitavaconfirma-deploy <produto> <tag> <data>sem olhar oACTOR. O bottmf-ia, que dispara workflow pelo token, escrevia a frase e autorizava o próprio deploy de produção. É o mesmo furo que a INFRA-68604 fechou no hotfix.Prova do furo e do conserto (mesmo ambiente: dispatch em main,
ACTOR=tmf-ia, frase de hoje):✅ deploy autorizado — autorização manual do operador, rc=0;❌ DEPLOY BLOQUEADO: a frase manual só vale disparada por um aprovador: quem disparou (tmf-ia) é bot, rc=1.Correção (opção A).
conferir_manualexigeeh_aprovador(ACTOR): bot, vazio ou fora deDEPLOY_APROVADORESreprova, com mensagem clara. O bot segue pelorelease-aprovado PR #N, que confere o ato humano pela API. O docstring e o guia de adoção foram atualizados, e o CHANGELOG está em [Não lançado].Testes:
ManualExigeAprovador:*-bot,[bot]);ACTORvazio e ausente recusados;release-aprovadonão é afetado.tests/release/test_autorizacao_dispatch.py: o teste que passava a frase manual comACTOR=tmf-iae esperava sucesso confirmava o furo. Agora o caso positivo usa o operador, e há um teste negativo com o bot.Impacto:
release.ymljá passaACTOR: ${{ github.actor }};deploy.ymlpróprio de produto que não passe oACTORpassa a ter o dispatch manual recusado, que é falha fechada; o guia de adoção diz isso;🤖 Generated with Claude Code
https://claude.ai/code/session_01ES1xwVdpQV69zEsuLLKzx2