Implementación de un PEP - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de un PEP

Un punto de aplicación de políticas (PEP) es responsable de recibir las solicitudes de autorización que se envían al punto de decisión de políticas (PDP) para su evaluación. Un PEP puede estar en cualquier parte de una aplicación donde se deban proteger los datos y los recursos o donde se aplique la lógica de autorización. PEPs son relativamente simples en comparación con PDPs. Un PEP es responsable únicamente de solicitar y evaluar una decisión de autorización y no requiere ninguna lógica de autorización. PEPs, a diferencia de PDPs esto, no se puede centralizar en una aplicación SaaS. Esto se debe a que es necesario implementar la autorización y el control de acceso en toda la aplicación y sus puntos de acceso. PEPs se puede aplicar a los microservicios APIs, a las capas de backend para frontend (BFF) o a cualquier punto de la aplicación en el que se desee o requiera el control de acceso. PEPs La integración en una aplicación garantiza que la autorización se verifique con frecuencia y de forma independiente en varios puntos.    

Para implementar un PEP, el primer paso es determinar dónde debe aplicarse el control de acceso en una aplicación. Tenga en cuenta este principio a la hora de decidir dónde PEPs debe integrarse en su aplicación: 

Si una aplicación expone una API, debe haber autorización y control de acceso en esa API.

Esto se debe a que en una arquitectura orientada a microservicios u orientada a servicios, APIs sirven como separadores entre las diferentes funciones de la aplicación. Tiene sentido incluir el control de acceso como puntos de control lógicos entre las funciones de la aplicación. Le recomendamos encarecidamente que lo incluya PEPs como requisito previo para acceder a cada API en una aplicación SaaS. También es posible integrar la autorización en otros puntos de una aplicación. En aplicaciones monolíticas, puede ser necesario PEPs integrarlas dentro de la lógica de la propia aplicación. No hay una ubicación única en la que PEPs deba incluirse, pero considere utilizar el principio de la API como punto de partida.

Solicitar una decisión de autorización

El PEP debe solicitar una decisión de autorización al PDP. La solicitud puede adoptar varias formas. El método más fácil y accesible para solicitar una decisión de autorización es enviar una solicitud o consulta de autorización a una RESTful API expuesta por el PDP (OPA o permisos verificados). Si utilizas permisos verificados, también puedes utilizar el IsAuthorizedmétodo mediante el AWS SDK para recuperar una decisión de autorización. La única función de un PEP en este patrón es reenviar la información que necesita la solicitud o consulta de autorización. Esto puede ser tan simple como reenviar una solicitud recibida por una API como entrada al PDP. Existen otros métodos de creación. PEPs Por ejemplo, puede integrar un PDP de OPA de forma local con una aplicación escrita en el lenguaje de programación Go como biblioteca en lugar de utilizar una API.

Evaluar una decisión de autorización

PEPs es necesario incluir una lógica para evaluar los resultados de una decisión de autorización. Cuando PDPs se exponen como APIs, es probable que la decisión de autorización esté en formato JSON y se devuelva mediante una llamada a la API. El PEP debe evaluar este código JSON para determinar si la acción que se está realizando está autorizada. Por ejemplo, si un PDP está diseñado para proporcionar una decisión booleana de permitir o denegar la autorización, el PEP podría simplemente comprobar este valor y, a continuación, devolver el código de estado HTTP 200 para permitir o denegar. Este patrón de incorporar un PEP como requisito previo para acceder a una API es un patrón fácil de implementar y muy eficaz para implementar el control de acceso en una aplicación SaaS. En escenarios más complicados, el PEP podría ser responsable de evaluar el código JSON arbitrario devuelto por el PDP. El PEP debe escribirse de manera que incluya la lógica necesaria para interpretar la decisión de autorización que devuelve el PDP. Como es probable que un PEP se implemente en muchos lugares diferentes de la aplicación, le recomendamos que empaquete el código PEP como una biblioteca o artefacto reutilizable en el lenguaje de programación que prefiera. De esta forma, el PEP se puede integrar fácilmente en cualquier punto de la aplicación con un mínimo de reelaboración.