Índice7 seções
- 1. Onde está o registro e você consegue apresentá-lo depois?
- 2. Ele é verificado pelo sistema ou carregado pelo agente?
- 3. Se o principal estreitar os termos hoje, as credenciais do mês passado estreitam?
- 4. O agente pode mudar os próprios termos?
- 5. O que acontece com um pedido que cai um pouco fora?
- 6. Cada chamada é registrada contra o agente, o principal e a credencial?
- O que significa passar
Economia de agentes4 min de leitura
Seis perguntas para quem diz que o seu agente está autorizado
Trilhos de pagamento para agentes estão chegando rápido, e todos param na mesma fronteira: liquidação, não autoridade. Aqui estão seis perguntas que separam um sistema em que alguém de fato autorizou algo de um em que a palavra é enfeite.
Mikhail Savchenko
A resposta curta
Pergunte seis coisas. Onde está o registro daquilo com que o principal concordou, e ele pode ser apresentado depois. Ele é verificado pelo sistema no momento da chamada ou carregado no contexto do agente. Se o principal estreitar os termos hoje, as credenciais emitidas no mês passado ficam mais estreitas. O agente pode mudar os próprios termos. O que acontece com um pedido que cai um pouco fora deles. E cada chamada é registrada contra o agente, o principal e a credencial pela qual chegou. Um sistema que responde às seis tem uma autorização. Um sistema que responde à primeira tem uma tela de configurações.
Trilhos de pagamento para agentes estão chegando rápido. E são, sem exceção, trilhos: respondem como o valor se move depois que uma decisão existe, e não dizem nada sobre a decisão. Para um protocolo de pagamento esse é o escopo correto. Só que deixa a metade interessante para quem está acima, e isso é cada vez mais todo mundo.
Construímos a camada de cima para um caso sem dinheiro nenhum: um clube em que o agente de um membro faz perguntas ao agente de outro sob termos que os dois lados definiram. Nada é gasto. O problema de autorização acabou sendo idêntico, e é por isso que vale registrá-lo como perguntas, e não como arquitetura.
Estas são as seis que faríamos a qualquer coisa que alegue que um agente está autorizado, inclusive a nós mesmos.
1. Onde está o registro e você consegue apresentá-lo depois?
Não uma tela de configurações. Um registro: com o que esta pessoa concordou, preso a este agente, versionado, recuperável mais tarde por alguém que não estava lá.
O teste é temporal. Tudo parece autorizado de antemão - foi por isso que o agente agiu. O momento que importa é depois de alguém se surpreender, e então a única coisa que resolve são os termos que valiam no instante da chamada. Se os termos foram editados desde então e não há versão, você tem uma configuração atual e nenhum histórico, o que não prova nada sobre o que era permitido naquele momento.
2. Ele é verificado pelo sistema ou carregado pelo agente?
Uma regra no prompt do agente é consultiva. O agente lê texto como parte do trabalho, parte desse texto foi escrita por alguém com interesse no resultado, e instruções valem só até chegar algo mais convincente no meio da tarefa.
Uma regra que o servidor verifica vale independentemente daquilo de que o agente tenha sido convencido.
É nesta pergunta que a maioria dos desenhos falha em silêncio, porque a versão em prompt demonstra igual. A diferença só aparece diante de um adversário, e a essa altura a diferença é tudo.
3. Se o principal estreitar os termos hoje, as credenciais do mês passado estreitam?
Quase tudo diz sim e quer dizer não.
Se as permissões são carimbadas na credencial quando ela é emitida, estreitar os seus termos não muda nada do que já está em circulação. O remédio oferecido é a enumeração: encontrar cada credencial que você entregou e revogar uma a uma, inclusive as esquecidas, que são justamente as que importam.
A alternativa custa uma consulta. Calcule as permissões efetivas como a interseção dos escopos da credencial com os termos atuais do principal, a cada requisição. Aí o estreitamento alcança tudo por construção, e "você pode revogar" deixa de significar "você pode revogar o que conseguir encontrar".
4. O agente pode mudar os próprios termos?
Se pode, não há termos. Isso soa óbvio demais para se perguntar, e vale perguntar por causa de onde a resposta costuma vir: quem faz as chamadas é o agente, e o lugar conveniente para a ferramenta que atualiza configurações é ao lado de todas as outras.
Temos um escopo para mudar um mandato. Ele existe porque principais precisam mudar de ideia. Ele nunca é concedido a um agente.
5. O que acontece com um pedido que cai um pouco fora?
A resposta "ele falha" é um desenho que ainda não conheceu os seus usuários. O pedido marginal - um pouco fora dos termos, plausivelmente aceitável - é o único caso que uma pessoa mais queria ver, e um sistema que só tem permitir e negar o transforma num palpite executado por um modelo.
O que deveria acontecer é encaminhamento. O pedido vira uma decisão para o principal, carregando a coisa que o levantou, então a pessoa responde com o contexto já diante dela em vez de reconstruí-lo a partir de uma notificação. A recusa não é o produto. A passagem é.
6. Cada chamada é registrada contra o agente, o principal e a credencial?
Os três, porque cada um responde depois a uma pergunta diferente: o que este agente fez, o que foi feito em nome desta pessoa, e qual credencial - possivelmente uma que ela esqueceu, possivelmente uma que deveria ter sido revogada - foi usada para fazê-lo.
Este é o item mais barato da lista e o mais adiado, sob o argumento de que é observabilidade e não controle. É controle. "Quem permitiu isso" não é uma pergunta que só se possa fazer de antemão.
O que significa passar
Não que o agente seja seguro. Um agente operando estritamente dentro de termos que alguém escolheu ainda pode fazer algo de que se arrependam, e nenhuma lista impede um modelo de estar errado.
Significa algo mais estreito e mais útil: o pior caso fica limitado por algo que uma pessoa decidiu, e não por algo que um modelo concluiu lendo uma página escrita por um estranho. Essa é a propriedade que vale exigir antes de os agentes começarem a gastar, porque é muito mais difícil acrescentar a um sistema depois do que embutir agora - e porque os trilhos não vão esperar.
Em números
- Na nossa implementação as permissões efetivas são a interseção dos escopos do token com o mandato do principal, recalculada a cada requisição em vez de congelada na emissão.
- De sete escopos, mandate:write é retido de todo agente que o clube constrói, então nenhum agente pode ampliar os termos sob os quais opera.
- Um agente respondendo à pergunta de outro membro roda em contexto isolado e sem ferramentas, então o limite externo do seu erro é uma frase.
- Um pedido que o mandato não cobre vira uma decisão na fila do principal com a coisa que o levantou anexada, e não uma falha que o agente precisa interpretar.
- Toda chamada de ferramenta é registrada contra o agente, o principal e a credencial pela qual ela chegou.
Perguntas
- Isso não é a mesma coisa que escopos de OAuth?
- Escopos são metade disso, e a metade mais antiga. Um escopo diz o que uma credencial pode fazer. O que ele não diz é com o que a pessoa por trás da credencial concordou, que é outra coisa e normalmente mais estreita, e ele também não muda quando ela muda de ideia: um escopo é fixado no token na emissão. A segunda pergunta desta lista é a que o OAuth sozinho não responde, e a terceira é a que ele responde mal, porque revogação por enumeração não é revogação.
- Por que o registro precisa ser apresentável depois do fato?
- Porque o momento interessante é sempre depois. Antes, todo mundo concorda que o agente pode agir; foi por isso que ele agiu. A disputa acontece quando alguém se surpreende com o que ele fez, e aí a única coisa que resolve é um registro dos termos que valiam no momento da chamada, mais a chamada. Se os termos foram editados desde então e não há versão, o registro não prova nada sobre o que era permitido naquele momento.
- Uma confirmação basta?
- É o controle mais forte da lista e o que escala pior. Confirmações funcionam enquanto são poucas e viram ruído em volume, e o valor de um agente está justamente em operar em volume. O desenho útil não é confirmar tudo nem nada, e sim tornar a fronteira explícita, para que o caso comum passe e o caso marginal - um pouco fora dos termos - seja o que chega a uma pessoa. É para isso que serve o escalonamento, e é por isso que a quinta pergunta importa mais do que parece.
- Qual é a menor versão disso que vale a pena construir?
- Um registro assinado dos termos, verificado no servidor a cada chamada, e um log do que aconteceu. São três coisas e nenhuma exige um protocolo. As partes que as pessoas constroem primeiro - um limite de gasto, um diálogo de confirmação - são justamente as que parecem controle e não são, porque nenhuma sobrevive à persuasão do agente e nenhuma pode ser estreitada retroativamente.