Implementando um PDP usando 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á.

Implementando um PDP usando OPA

O Open Policy Agent (OPA) é um mecanismo de políticas de uso geral de código aberto. O OPA tem muitos casos de uso, mas o caso de uso relevante para a implementação do PDP é sua capacidade de desacoplar a lógica de autorização de um aplicativo. Isso é chamado de desacoplamento de políticas. O OPA é útil na implementação de um PDP por vários motivos. Ele usa uma linguagem declarativa de alto nível chamada Rego para elaborar políticas e regras. Essas políticas e regras existem separadamente de um aplicativo e podem processar decisões de autorização sem nenhuma lógica específica do aplicativo. O OPA também expõe uma API RESTful para tornar as decisões de autorização de recuperação simples e diretas. Para tomar uma decisão de autorização, um aplicativo consulta a OPA com entrada JSON e a OPA avalia a entrada em relação às políticas especificadas para retornar uma decisão de acesso em JSON. O OPA também é capaz de importar dados externos que podem ser relevantes para a tomada de uma decisão de autorização.

Usando o OPA para implementar um PDP

O OPA tem várias vantagens em relação aos mecanismos de políticas personalizadas:

  • A OPA e sua avaliação de políticas com a Rego fornecem um mecanismo de políticas flexível e pré-construído que requer apenas a inserção de políticas e quaisquer dados necessários para tomar decisões de autorização. Essa lógica de avaliação de políticas precisaria ser recriada em uma solução personalizada de mecanismo de políticas.

  • O OPA simplifica a lógica de autorização ao ter políticas escritas em uma linguagem declarativa. Você pode modificar e administrar essas políticas e regras independentemente de qualquer código de aplicativo, sem habilidades de desenvolvimento de aplicativos.

  • O OPA expõe uma API RESTful, que simplifica a integração com pontos de aplicação de políticas (PEPs).

  • O OPA fornece suporte integrado para validar e decodificar JSON Web Tokens (JWTs).

  • O OPA é um padrão de autorização reconhecido, o que significa que a documentação e os exemplos são abundantes se você precisar de ajuda ou pesquisa para resolver um problema específico.

  • A adoção de um padrão de autorização, como o OPA, permite que as políticas escritas em Rego sejam compartilhadas entre as equipes, independentemente da linguagem de programação usada pelo aplicativo da equipe.

Há duas coisas que a OPA não fornece automaticamente:

  • A OPA não tem um plano de controle robusto para atualizar e gerenciar políticas. O OPA fornece alguns padrões básicos para implementar atualizações de políticas, monitoramento e agregação de registros ao expor uma API de gerenciamento, mas a integração com essa API deve ser feita pelo usuário do OPA. Como prática recomendada, você deve usar um pipeline de integração contínua e implantação contínua (CI/CD) para administrar, modificar e rastrear versões de políticas e gerenciar políticas no OPA.

  • O OPA não pode recuperar dados de fontes externas por padrão. Uma fonte externa de dados para uma decisão de autorização pode ser um banco de dados que contém atributos do usuário. Há alguma flexibilidade na forma como os dados externos são fornecidos ao OPA — eles podem ser armazenados em cache localmente com antecedência ou recuperados dinamicamente de uma API quando uma decisão de autorização é solicitada — mas obter essas informações não é algo que o OPA possa fazer em seu nome.