Implementación de un PDP mediante OPA - 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 PDP mediante OPA

El Open Policy Agent (OPA) es un motor de políticas de código abierto y de uso general. La OPA tiene muchos casos de uso, pero el caso de uso relevante para la implementación del PDP es su capacidad para desvincular la lógica de autorización de una aplicación. Esto se denomina desacoplamiento de políticas. La OPA es útil para implementar un PDP por varias razones. Utiliza un lenguaje declarativo de alto nivel llamado Rego para redactar políticas y reglas. Estas políticas y reglas existen por separado de una aplicación y pueden generar decisiones de autorización sin ninguna lógica específica de la aplicación. La OPA también presenta una API RESTful para que la recuperación de las decisiones de autorización sea simple y directa. Para tomar una decisión de autorización, una aplicación consulta la OPA con una entrada de JSON y la OPA evalúa la entrada comparándola con las políticas especificadas para devolver una decisión de acceso en JSON. La OPA también es capaz de importar datos externos que podrían ser relevantes para tomar una decisión de autorización.

Uso de OPA para implementar un PDP

La OPA tiene varias ventajas en comparación con los motores de políticas personalizados:

  • La OPA y su evaluación de políticas con Rego proporcionan un motor de políticas flexible y prediseñado que solo requiere la inserción de las políticas y cualquier dato necesario para tomar decisiones de autorización. Esta lógica de evaluación de políticas tendría que recrearse en una solución de motor de políticas personalizada.

  • La OPA simplifica la lógica de autorización al tener las políticas escritas en un lenguaje declarativo. Puede modificar y administrar estas políticas y reglas independientemente del código de cualquier aplicación, sin necesidad de conocimientos de desarrollo de aplicaciones.

  • OPA presenta una API RESTful, que simplifica la integración con los puntos de aplicación de políticas (PEP).

  • OPA proporciona soporte integrado para validar y decodificar los JSON Web Tokens (JWT).

  • La OPA es un estándar de autorización reconocido, lo que significa que la documentación y los ejemplos son abundantes si necesita ayuda o investigación para resolver un problema en particular.

  • La adopción de un estándar de autorización como la OPA permite que las políticas redactadas en Rego se compartan entre los equipos, independientemente del lenguaje de programación que utilice la aplicación del equipo.

Hay dos cosas que la OPA no proporciona automáticamente:

  • La OPA no tiene un plano de control sólido para actualizar y administrar las políticas. La OPA proporciona algunos patrones básicos para implementar las actualizaciones de políticas, el monitoreo y la agregación de registros al exponer una API de administración, pero la integración con esta API debe ser gestionada por el usuario de OPA. Como práctica recomendada, debe utilizar una canalización de integración y despliegue continuos (CI/CD) para administrar, modificar y realizar un seguimiento de las versiones de las políticas y gestionar las políticas en la OPA.

  • De forma predeterminada, OPA no puede recuperar datos de fuentes externas. Una fuente de datos externa para una decisión de autorización podría ser una base de datos que contenga los atributos del usuario. Existe cierta flexibilidad en la forma en que se proporcionan los datos externos a la OPA (se pueden almacenar en caché local con antelación o se pueden recuperar de forma dinámica desde una API cuando se solicita una decisión de autorización), pero la OPA no puede obtener esta información en su nombre.