Por que segregar o acesso
Quando vários clientes chamam a sua plataforma, uma credencial compartilhada dá a cada um deles o acesso de todos. Os parceiros trocam isso por um conjunto de limites para cada cliente:
- Menor privilégio. Cada parceiro recebe só as ações e os dados de que precisa, e nada acima do que a sua própria equipe pode fazer.
- Credenciais por parceiro. Cada parceiro tem as próprias credenciais. Você pode revogar um parceiro sem mexer nos outros.
- Revogação imediata. Suspender um parceiro, ou chegar ao fim da janela de validade dele, recusa a próxima requisição dele, mesmo com um token que ele já tem.
- Restrição de rede. Um parceiro só pode chamar dos endereços que você lista para ele.
- Janelas de validade. O acesso pode começar e terminar nas datas que você escolhe. Um piloto que termina em uma data não precisa de lembrete para ser desligado.
- Responsabilidade clara. Cada requisição leva a credencial do próprio parceiro, então cada ação aponta para um único parceiro.
Os blocos de construção
Um tenant contém organizações, e uma organização contém ledgers. Um parceiro é um registro do tenant, e as linhas depois dele descrevem o que um parceiro recebe.
Como as peças se encaixam
O tenant é uma fronteira rígida. Os dados do seu tenant de staging nunca se misturam com os dados do seu tenant de produção. Dentro de um tenant, organizações e ledgers separam os seus dados de forma lógica: o Access Manager usa o escopo de cada parceiro para manter cada parceiro dentro da própria parte.
- Tenant: Produção. O seu tenant de staging é outro, separado.
- Organização Norte
- Ledger N1. O Parceiro A escreve contas e transações aqui.
- Ledger N2
- Contas 1 e 2. O Parceiro C lê só estas duas contas.
- Organização Sul. O Parceiro B lê a organização inteira, por 90 dias.
- Ledger S1
- Ledger S2
- Organização Norte
Exemplo: três parceiros em um tenant
A sua empresa usa um tenant por ambiente. O tenant de produção tem duas organizações do Midaz, Norte e Sul. Três dos seus clientes precisam de acesso à API.
Parceiro A: escreve em um ledger, de um endereço
Você também não pode dar ao Parceiro A o direito de criar ledgers. Criar um ledger atua sobre a organização inteira, que é mais amplo que um ledger. O Access Manager recusa essa alteração com
IDE-1056, e o Console mostra a linha como “Fora do escopo”.
Parceiro B: lê uma organização inteira por 90 dias
Parceiro C: lê duas contas e depois é suspenso
Como uma requisição é decidida
As verificações abaixo rodam em cada requisição que a credencial de um parceiro envia a um produto. Elas rodam nesta ordem, e a primeira que falha para a requisição.
- Token. O sistema do parceiro troca o client ID e o client secret por um token de acesso e envia o token com a requisição.
- Parceiro. O Access Manager encontra o parceiro a quem a credencial pertence.
- Endereço de rede. O Access Manager compara o endereço de quem chama com a lista própria do parceiro. Um parceiro sem lista própria usa a lista do seu tenant. Uma recusa retorna
403comAUT-0021. - Estado e validade. Um parceiro suspenso, ou fora da janela de validade, é recusado com
401:AUT-1009para suspenso,AUT-1010para fora da janela. - Permissões. O produto, o recurso e a ação precisam estar nas permissões do parceiro. Uma recusa retorna
403. - Escopo. A organização, o ledger, a conta ou outro item que a requisição nomeia precisa estar dentro do escopo do parceiro. Uma recusa retorna
403. - Se todas as verificações passam, o produto executa a requisição.
403, então um parceiro não consegue usar as recusas para descobrir quais itens existem fora do escopo dele.
O que você precisa saber
- Permissões e escopo precisam casar. Um parceiro alcança só o que os dois permitem. Permissões sem escopo em um produto com restrição obrigatória não podem ser salvas.
- A suspensão e o fim da janela de validade valem na hora. A próxima requisição do parceiro é recusada, mesmo com um token que ele já tem. Um parceiro suspenso também não consegue tokens novos.
- Qualquer outra alteração vale a partir da próxima requisição. Isso inclui permissões novas, um escopo mais restrito e uma nova lista de IPs permitidos.
- Um parceiro nunca recebe mais do que o seu tenant tem. O teto é o que o papel de editor do produto tem no seu tenant. Se esse papel perder uma permissão depois, o parceiro também a perde.
- O Access Manager não confere se os IDs do escopo existem no produto. Ele guarda os IDs que você informa. Copie-os da própria API ou do Console do produto.
- Um produto mostrado como “ainda não está preparado para parceiros” ainda não publicou a lista de restrições dele. Você não pode dar a um parceiro acesso a esse produto até que ele publique.
- Uma requisição que deixa de fora um item que o escopo restringe é recusada. Por exemplo, um parceiro restrito a alguns ledgers não consegue listar todos os ledgers da organização.
- Um parceiro com aplicações não pode ser excluído. Exclua as aplicações dele antes. Para pausar um parceiro, suspenda-o. A suspensão é reversível; a exclusão não.
- A lista de IPs permitidos própria de um parceiro substitui a lista do seu tenant. Ela não se soma a ela. Um endereço que está só na lista do seu tenant não serve para esse parceiro. A lista do parceiro vale mesmo quando a lista do seu tenant está desligada.
Produtos que aceitam parceiros
Cada produto declara, no manifesto de permissões dele, quais restrições aceita: por exemplo organização, ledger, conta, portfólio ou segmento. Hoje o Midaz (o ledger) e o Tracer aceitam parceiros. O Midaz exige uma organização para cada parceiro e aceita restrições opcionais em ledgers, contas, aliases de conta, ativos, portfólios, segmentos, holders e outros itens. O Tracer aceita restrições opcionais em regras, limites, validações de transação, contas, portfólios, segmentos e merchants.
Próximos passos
Gerenciar parceiros no Console
Crie um parceiro passo a passo, emita as credenciais dele, suspenda-o ou exclua-o.
Gerenciar parceiros pela API
As operações de parceiro, os campos, exemplos e códigos de erro.
Lista de IPs permitidos
A lista do tenant que um parceiro sem lista própria usa.
Lista de erros
Todos os códigos que o Access Manager pode retornar.

