174 lines
6.5 KiB
Markdown
174 lines
6.5 KiB
Markdown
# Politica de acesso GPT/MCP Gateway
|
|
|
|
- report_id: `mcp-gateway-access-policy-a787db3755906de2`
|
|
- generated_at: `2026-05-02T02:17:13+00:00`
|
|
- policy_version: `mcp-gateway-access-policy.v1`
|
|
- endpoint: `https://mcps-gateway.ami-app.workers.dev/v1/execute`
|
|
- status: `passed`
|
|
- live_ready: `True`
|
|
- secret_safe: `True`
|
|
- method: `POST`
|
|
- content_type: `application/json`
|
|
- user_agent: `Codex-Mais-Humana-MCP-Publication-Gate/1.0`
|
|
- auth_scheme: `Bearer credentialRef; raw token forbidden in artifacts`
|
|
- rate_limit_per_minute: `30`
|
|
- log_retention_days: `30`
|
|
|
|
## Sumario
|
|
|
|
- Probes live avaliados: 3.
|
|
- Probes live OK: 3/3.
|
|
- Regras aprovadas: 12/12.
|
|
- Bearer bruto persistido: False.
|
|
- Falha do plugin Cloudflare nao e blocker operacional: True.
|
|
|
|
## Regras
|
|
|
|
### http.method.post
|
|
|
|
- kind: `http`
|
|
- required: `True`
|
|
- requisito: Toda chamada GPT/MCP deve usar POST em /v1/execute.
|
|
- validacao: Comparar metodo observado com POST.
|
|
|
|
### header.content-type.json
|
|
|
|
- kind: `header`
|
|
- required: `True`
|
|
- requisito: Toda chamada deve enviar Content-Type application/json.
|
|
- validacao: Comparar content_type observado.
|
|
|
|
### header.user-agent.codex
|
|
|
|
- kind: `header`
|
|
- required: `True`
|
|
- requisito: Probes Codex devem usar User-Agent Codex-Mais-Humana-MCP-Publication-Gate/1.0.
|
|
- validacao: Comparar User-Agent observado para separar WAF de runtime.
|
|
|
|
### auth.bearer.present-redacted
|
|
|
|
- kind: `auth`
|
|
- required: `True`
|
|
- requisito: Authorization Bearer pode ser usado no probe, mas relatorios devem guardar apenas existencia, hash e credentialRef.
|
|
- validacao: Confirmar authorization_present e authorization_redacted.
|
|
|
|
### waf.classification.explicit
|
|
|
|
- kind: `waf`
|
|
- required: `True`
|
|
- requisito: HTTP 403/1010 e bloqueios WAF devem ser separados de tool_not_found, erro de runtime e erro de contrato.
|
|
- validacao: Usar http_status e response_excerpt redigido para classificar falha.
|
|
|
|
### evidence.trace-audit-required
|
|
|
|
- kind: `evidence`
|
|
- required: `True`
|
|
- requisito: Toda resposta aceita deve possuir traceId e auditId reais ou derivados de hash de evidencia.
|
|
- validacao: Confirmar trace_id e audit_id por probe.
|
|
|
|
### evidence.hashes-required
|
|
|
|
- kind: `evidence`
|
|
- required: `True`
|
|
- requisito: Toda evidencia deve guardar request_hash e response_hash sem payload sensivel bruto.
|
|
- validacao: Confirmar hashes preenchidos por probe.
|
|
|
|
### redaction.no-secret-shapes
|
|
|
|
- kind: `redaction`
|
|
- required: `True`
|
|
- requisito: Evidencias nao podem conter cfat_, Authorization Bearer cru, tokens longos ou bearer numerico bruto.
|
|
- validacao: Varrer response_excerpt e campos textuais por formatos proibidos.
|
|
|
|
### rate-limit.default
|
|
|
|
- kind: `rate_limit`
|
|
- required: `True`
|
|
- requisito: Probes automatizados devem respeitar limite padrao de 30 chamadas/minuto por ator.
|
|
- validacao: Registrar limite no contrato e bloquear suites que excedam o teto.
|
|
|
|
### retention.logs
|
|
|
|
- kind: `retention`
|
|
- required: `True`
|
|
- requisito: Logs de evidencia operacional devem reter metadados redigidos por 30 dias.
|
|
- validacao: Registrar politica no artefato de acesso.
|
|
|
|
### transit.required-fields
|
|
|
|
- kind: `transit`
|
|
- required: `True`
|
|
- requisito: Fluxos interplataforma devem preservar origin, destination, tool, payload, actor, permission, result, traceId, auditId e timestamp.
|
|
- validacao: Validar campos exigidos no contrato de transito MCP.
|
|
|
|
### governance.plugin-not-operational-path
|
|
|
|
- kind: `governance`
|
|
- required: `True`
|
|
- requisito: Falha ou aceite do plugin Cloudflare fica fora do diagnostico de Workers; trabalho real usa wrangler ou validacao HTTP live.
|
|
- validacao: Confirmar que o artefato nao transforma plugin em blocker operacional.
|
|
|
|
## Probes
|
|
|
|
- `mais_humana.rulebook.compact` http `200` ok `True`
|
|
- evidenceId: `evidence-a75a27e0669c49da1db8b615`
|
|
- traceId: `trace-3e1c8f057ac439f4b9b3eb7f`
|
|
- auditId: `audit-a75a27e0669c49da1db8b615`
|
|
- requestHash: `3e1c8f057ac439f4b9b3eb7f8f5be9ac36323f08adc23db6fc7d51633076b79a`
|
|
- responseHash: `a75a27e0669c49da1db8b6157757c0615eed06c32674c7ed87a6db5d071359de`
|
|
- `mais_humana.admin_ui.same_source` http `200` ok `True`
|
|
- evidenceId: `evidence-af37a8d489b0038a7a6b5575`
|
|
- traceId: `trace-17e7d8039c8c34e3f570b6de`
|
|
- auditId: `audit-af37a8d489b0038a7a6b5575`
|
|
- requestHash: `17e7d8039c8c34e3f570b6de8b386edc1cfd0c079084b0c7013016d2c76b388c`
|
|
- responseHash: `af37a8d489b0038a7a6b5575970ec69855dd0f0e0ab09cf38b0e7658d3678195`
|
|
- `mais_humana.mcp_transit.ledger` http `200` ok `True`
|
|
- evidenceId: `evidence-3f0e3b9f829c7ff912b335d0`
|
|
- traceId: `trace-dae7d91a59e37901d50c027d`
|
|
- auditId: `audit-3f0e3b9f829c7ff912b335d0`
|
|
- requestHash: `dae7d91a59e37901d50c027d3a0792f697902bd4289801edb2a508f3baf177fe`
|
|
- responseHash: `3f0e3b9f829c7ff912b335d01afb5e78acdaa331bd984713dfca757072be6bbf`
|
|
|
|
## Checks
|
|
|
|
- `http.method.post`: `passed`
|
|
- motivo: todos os probes usaram POST
|
|
- proxima_acao: manter regra como gate de release
|
|
- `header.content-type.json`: `passed`
|
|
- motivo: todos os probes usaram application/json
|
|
- proxima_acao: manter regra como gate de release
|
|
- `header.user-agent.codex`: `passed`
|
|
- motivo: User-Agent operacional aplicado
|
|
- proxima_acao: manter regra como gate de release
|
|
- `auth.bearer.present-redacted`: `passed`
|
|
- motivo: bearer usado como credencial de probe e redigido nos artefatos
|
|
- proxima_acao: manter regra como gate de release
|
|
- `waf.classification.explicit`: `passed`
|
|
- motivo: WAF nao bloqueou os probes atuais; HTTP/runtime classificados separadamente
|
|
- proxima_acao: manter regra como gate de release
|
|
- `evidence.trace-audit-required`: `passed`
|
|
- motivo: traceId e auditId presentes em todos os probes
|
|
- proxima_acao: manter regra como gate de release
|
|
- `evidence.hashes-required`: `passed`
|
|
- motivo: hashes de request/response presentes
|
|
- proxima_acao: manter regra como gate de release
|
|
- `redaction.no-secret-shapes`: `passed`
|
|
- motivo: nenhum formato de segredo bruto detectado nas evidencias
|
|
- proxima_acao: manter regra como gate de release
|
|
- `rate-limit.default`: `passed`
|
|
- motivo: regra institucional materializada no artefato de politica
|
|
- proxima_acao: manter regra como gate de release
|
|
- `retention.logs`: `passed`
|
|
- motivo: regra institucional materializada no artefato de politica
|
|
- proxima_acao: manter regra como gate de release
|
|
- `transit.required-fields`: `passed`
|
|
- motivo: regra institucional materializada no artefato de politica
|
|
- proxima_acao: manter regra como gate de release
|
|
- `governance.plugin-not-operational-path`: `passed`
|
|
- motivo: regra institucional materializada no artefato de politica
|
|
- proxima_acao: manter regra como gate de release
|
|
|
|
## Blockers
|
|
|
|
- Nenhum blocker tecnico na politica local.
|