Recuperando dados externos para um PDP no OPA - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Recuperando dados externos para um PDP no OPA

Para o OPA, se todos os dados necessários para uma decisão de autorização puderem ser fornecidos como entrada ou como parte de um JSON Web Token (JWT) passado como componente da consulta, nenhuma configuração adicional será necessária. (É relativamente simples passar JWTs dados de contexto SaaS para o OPA como parte da entrada da consulta.) O OPA pode aceitar entradas JSON arbitrárias no que é chamado de abordagem de entrada de sobrecarga. Se um PDP exigir dados além do que pode ser incluído como entrada ou JWT, o OPA fornece várias opções para recuperar esses dados. Isso inclui agrupamento, envio de dados (replicação) e recuperação dinâmica de dados.

Pacote OPA

O recurso de agrupamento OPA suporta o seguinte processo para recuperação externa de dados:

  1. O ponto de fiscalização da política (PEP) solicita uma decisão de autorização.

  2. A OPA baixa novos pacotes de políticas, incluindo dados externos.

  3. O serviço de empacotamento replica dados da (s) fonte (s) de dados.

Quando você usa o recurso de agrupamento, o OPA baixa periodicamente pacotes de políticas e dados de um serviço de pacote centralizado. (A OPA não fornece a implementação e a configuração de um serviço de pacote.) Todas as políticas e dados externos extraídos do serviço de pacote são armazenados na memória. Essa opção não funcionará se o tamanho dos dados externos for muito grande para ser armazenado na memória ou se os dados mudarem com muita frequência.

Para obter mais informações sobre o recurso de agrupamento, consulte a documentação do OPA.

Replicação de OPA (envio de dados)

A abordagem de replicação OPA suporta o seguinte processo de recuperação de dados externos:

  1. O PEP solicita uma decisão de autorização.

  2. O replicador de dados envia os dados para o OPA.

  3. O replicador de dados replica os dados da (s) fonte (s) de dados.

Nessa alternativa à abordagem de agrupamento, os dados são enviados para, em vez de serem retirados periodicamente pela OPA. (O OPA não fornece a implementação e a configuração de um replicador.) A abordagem push tem as mesmas limitações de tamanho de dados que a abordagem de agrupamento, porque o OPA armazena todos os dados na memória. A principal vantagem da opção push é que você pode atualizar os dados no OPA por deltas em vez de substituir todos os dados externos a cada vez. Isso torna a opção push mais apropriada para conjuntos de dados que mudam com frequência. 

Para obter mais informações sobre a opção de replicação, consulte a documentação do OPA.

Recuperação dinâmica de dados OPA

Se os dados externos a serem recuperados forem muito grandes para serem armazenados em cache na memória do OPA, os dados poderão ser extraídos dinamicamente de uma fonte externa durante a avaliação de uma decisão de autorização. Quando você usa essa abordagem, os dados estão sempre atualizados. Essa abordagem tem duas desvantagens: latência e acessibilidade da rede. Atualmente, o OPA pode recuperar dados em tempo de execução somente por meio de uma solicitação HTTP. Se as chamadas que vão para uma fonte de dados externa não puderem retornar dados como uma resposta HTTP, elas precisarão de uma API personalizada ou de algum outro mecanismo para fornecer esses dados à OPA. Como o OPA pode recuperar dados somente por meio de solicitações HTTP, e a velocidade de recuperação dos dados é fundamental, recomendamos que você use um como o AWS service (Serviço da AWS) Amazon DynamoDB para armazenar dados externos sempre que possível.

Para obter mais informações sobre a abordagem pull, consulte a documentação do OPA.

Usando um serviço de autorização para implementação com OPA

Quando você busca dados externos usando agrupamento, replicação ou uma abordagem de extração dinâmica, recomendamos que o serviço de autorização facilite essa interação. Isso ocorre porque o serviço de autorização pode recuperar dados externos e transformá-los em JSON para que o OPA tome decisões de autorização. O diagrama a seguir mostra como um serviço de autorização pode funcionar com essas três abordagens externas de recuperação de dados.

Recuperando dados externos com o OPA

Recuperação de dados externos para fluxo de OPA — pacote ou recuperação dinâmica de dados no momento da decisão (ilustrada com textos explicativos numerados em vermelho no diagrama):

  1. O OPA chama o endpoint local da API para o serviço de autorização, que é configurado como um endpoint de pacote ou o endpoint para recuperação dinâmica de dados durante as decisões de autorização.

  2. O serviço de autorização consulta ou chama a fonte de dados externa para recuperar dados externos. (Para um endpoint de pacote, esses dados também devem conter políticas e regras de OPA. As atualizações do pacote substituem tudo, tanto os dados quanto as políticas, no cache do OPA.)

  3. O serviço de autorização realiza qualquer transformação necessária nos dados retornados para transformá-los na entrada JSON esperada.

  4. Os dados são devolvidos à OPA. Ele é armazenado em cache na memória para configuração do pacote e usado imediatamente para decisões dinâmicas de autorização.

Recuperação de dados externos para o fluxo OPA — replicador (ilustrado com textos explicativos com números azuis no diagrama):

  1. O replicador (parte do serviço de autorização) chama a fonte de dados externa e recupera todos os dados a serem atualizados no OPA. Isso pode incluir políticas, regras e dados externos. Essa chamada pode estar em uma cadência definida ou pode ocorrer em resposta a atualizações de dados na fonte externa.

  2. O serviço de autorização realiza todas as transformações necessárias nos dados retornados para transformá-los na entrada JSON esperada.

  3. O serviço de autorização chama o OPA e armazena em cache os dados na memória. O serviço de autorização pode atualizar dados, políticas e regras de forma seletiva.