Enriquecimento
O PIP busca em APIs confiáveis do cliente os fatos que a decisão precisa e que não estão no token nem na chamada.
Algumas regras dependem de fatos que não estão no token nem na tool call. "Só pode reembolsar pedidos abaixo do limite do cliente" precisa do limite, que mora no sistema de cobrança. "Só pode mexer em tickets do próprio time" precisa do time do ticket. Pôr esses fatos no token não funciona: o token seria emitido com o valor de horas atrás, e cresceria a cada regra nova.
O PIP (Policy Information Point) resolve isso no momento da chamada. Ele busca os fatos em fontes confiáveis, APIs do cliente que o administrador cadastrou, e os junta à pergunta AuthZEN antes de ela chegar ao PDP.
Context source, binding e trusted attributes
Uma context source é uma API autorizada do cliente: endereço, método GET e credencial própria, guardada cifrada. Um binding é uma operação dessa fonte, aprovada para uma tool de um server, que enriquece o sujeito ou o objeto da chamada. Ele pode ser escrito à mão ou importado de um OpenAPI 3, e diz quais identificadores saem de entradas confiáveis da chamada e quais campos da resposta viram trusted attributes, com tipo declarado. No Admin, cada binding é uma linha da aba Trusted attributes.
Os trusted attributes entram em subject.properties.chokepoint e resource.properties.chokepoint. O PIP sobrescreve esses campos, assim nenhum mapping finge um trusted attribute. Cada um leva o valor, as revisões da fonte e do binding e a hora em que foi resolvido.
Buscar não é decidir
A separação segue o modelo que o Cerbos usa no External API: uma camada busca fatos, outra avalia. As condições em CEL do PDP só leem os fatos que o PIP entregou. Elas não fazem chamadas HTTP. Isso mantém a avaliação previsível e permite registrar exatamente quais fatos sustentaram uma decisão.
O token do agente nunca vai para as fontes. Cada fonte usa a própria credencial.
Quando o fato falta
Um fato que a política exige e não chegou bloqueia a chamada com 503. Uma fonte desabilitada ou com configuração alterada no meio da chamada também bloqueia. Ignorar o fato faria a condição ser avaliada sem ele, e o resultado poderia ser um ALLOW que ninguém configurou.
O cache guarda respostas das fontes, nunca decisões. Ele é limitado em tamanho e qualificado por escopo, revisões, identidade, recurso e parâmetros, e o tempo de vida é configurado em cada fonte.