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 PEP
Um ponto de aplicação de políticas (PEP) é responsável por receber solicitações de autorização que são enviadas ao ponto de decisão de política (PDP) para avaliação. Um PEP pode estar em qualquer lugar em um aplicativo em que os dados e os recursos devem ser protegidos ou onde a lógica de autorização é aplicada. PEPs são relativamente simples em comparação com PDPs. Um PEP é responsável somente por solicitar e avaliar uma decisão de autorização e não exige nenhuma lógica de autorização. PEPs, ao contrário PDPs, não pode ser centralizado em um aplicativo SaaS. Isso ocorre porque a autorização e o controle de acesso precisam ser implementados em todo o aplicativo e em seus pontos de acesso. PEPs pode ser aplicado a microsserviços APIs, camadas de Backend for Frontend (BFF) ou a qualquer ponto do aplicativo em que o controle de acesso seja desejado ou necessário. A PEPs generalização em um aplicativo garante que a autorização seja verificada com frequência e de forma independente em vários pontos.
Para implementar um PEP, a primeira etapa é determinar onde a aplicação do controle de acesso deve ocorrer em um aplicativo. Considere esse princípio ao decidir onde PEPs deve ser integrado ao seu aplicativo:
Se um aplicativo expõe uma API, deve haver autorização e controle de acesso nessa API.
Isso ocorre porque, em uma arquitetura orientada a microserviços ou orientada a serviços, APIs servem como separadores entre diferentes funções do aplicativo. Faz sentido incluir o controle de acesso como pontos de verificação lógicos entre as funções do aplicativo. É altamente recomendável que você inclua PEPs como pré-requisito o acesso a cada API em um aplicativo SaaS. Também é possível integrar a autorização em outros pontos de um aplicativo. Em aplicações monolíticas, pode ser necessário PEPs integrá-las à lógica da própria aplicação. Não há um único local onde PEPs deva ser incluído, mas considere usar o princípio da API como ponto de partida.
Solicitando uma decisão de autorização
Um PEP deve solicitar uma decisão de autorização do PDP. A solicitação pode assumir várias formas. O método mais fácil e acessível para solicitar uma decisão de autorização é enviar uma solicitação ou consulta de autorização para uma RESTful API exposta pelo PDP (OPA ou Permissões Verificadas). Se você estiver usando Permissões verificadas, também poderá chamar o IsAuthorizedmétodo usando o AWS SDK para recuperar uma decisão de autorização. A única função de um PEP nesse padrão é encaminhar as informações de que a solicitação ou consulta de autorização precisa. Isso pode ser tão simples quanto encaminhar uma solicitação recebida por uma API como entrada para o PDP. Existem outros métodos para criar PEPs. Por exemplo, você pode integrar um OPA PDP localmente com um aplicativo escrito na linguagem de programação Go como uma biblioteca em vez de usar uma API.
Avaliando uma decisão de autorização
PEPs precisam incluir lógica para avaliar os resultados de uma decisão de autorização. Quando PDPs são expostos como APIs, a decisão de autorização provavelmente está no formato JSON e é retornada por uma chamada de API. O PEP deve avaliar esse código JSON para determinar se a ação que está sendo tomada está autorizada. Por exemplo, se um PDP for projetado para fornecer uma decisão booleana de autorização de permissão ou negação, o PEP pode simplesmente verificar esse valor e retornar o código de status HTTP 200 para permitir e o código de status HTTP 403 para negar. Esse padrão de incorporação de um PEP como pré-requisito para acessar uma API é um padrão de fácil implementação e altamente eficaz para implementar o controle de acesso em um aplicativo SaaS. Em cenários mais complicados, o PEP pode ser responsável por avaliar o código JSON arbitrário retornado pelo PDP. O PEP deve ser escrito para incluir qualquer lógica necessária para interpretar a decisão de autorização que o PDP retorna. Como é provável que um PEP seja implementado em muitos lugares diferentes em seu aplicativo, recomendamos que você empacote seu código PEP como uma biblioteca ou artefato reutilizável na linguagem de programação de sua escolha. Dessa forma, seu PEP pode ser facilmente integrado em qualquer ponto do seu aplicativo com o mínimo de retrabalho.