Acabo de encontrar un marco de AT&T para construir ABAC.
Este marco utiliza XACML siguiendo el formato XML para crear reglas. Pero este marco solo se implementa para Java.
Sin embargo, estoy trabajando con PHP y estoy usando JSON para escribir reglas.
¿Es correcta mi solución? ¿Puede sugerir algunos marcos o soluciones compatibles con PHP?
Para completar la respuesta de David con respecto a AuthzForce : es de código abierto, compatible con XACML 3.0 y proporciona tanto una API Java (AuthzForce Core) como una API REST para PAP y PDP. Entonces podría usar la API REST de su programa PHP. La API es compatible con los formatos XML y JSON para las interfaces PAP y PDP. Sin embargo, no estamos usando el perfil JSON de XACML para PDP. En cambio, para toda la API, usamos la convención mapeada proporcionada por Apache CXF . Dicha convención permite la traducción automática de XML (más precisamente, el modelo interno derivado de XML utilizado en el código de implementación) a JSON y viceversa automáticamente.
EDITAR (2018-02-26): AuthzForce Core y Server ahora admiten el perfil JSON estándar de XACML para el PDP. AuthzForce también proporciona un PDP RESTful mínimo basado en Core, ya sea empaquetado como una aplicación Spring-boot o simplemente la implementación de JAX-RS para su reutilización en cualquier marco JAX-RS.
El marco de AT&T fue un marco de investigación y desarrollo diseñado por AT&T hace algunos años y luego lanzado a Apache. Según github , todavía está activo. No estoy al tanto de ningún uso comercial del producto (aunque sospecho que AT&T lo usa).
Los tres marcos principales utilizados por ahí son:
Puede encontrar esta información en la página de wikipedia de XACML . Hay otro motor interesante llamado AuthZForce pero tengo poca experiencia con él.
Todos estos motores, AFAIK, usan el formato XML de XACML para almacenar políticas. Usted afirma que necesita JSON. No hay un perfil de política de XACML en JSON. Hubo una pregunta sobre el tema que puedes leer aquí .
Dado que Axiomatics Policy Server está expuesto como una API JSON, puede usarlo para integrarse con PHP. Otros motores probablemente tengan un enfoque similar. Si utiliza Amazon AWS, puede solicitar una copia de la AMI del servidor de políticas de Axiomatics .
ABAC es tecnológicamente neutral, lo que significa que no es específico de Java, Ruby, .NET, PHP o cualquier otro lenguaje. En qué está escrito el motor PDP es irrelevante para en qué está escrita su aplicación, siempre que pueda integrar los dos juntos.
Espero que esto ayude, David.
El componente de control de acceso TYPO3 implementa ABAC y admite un lenguaje de política de control de acceso simple pero expresivo basado en Jiang, Hao y Bouabdallah, Ahmed (2017) y está escrito en PHP.
Consulte el esquema JSON para obtener una impresión rápida sobre el lenguaje de la política de control de acceso. El componente es delgado y flexible. No se opina sobre el formato ni sobre el lenguaje de expresión del lenguaje de la política. Por ejemplo, podrías usar el lenguaje de expresión YAML y Symfony . Como tal política podría verse así:
description: 'Root policy set.' algorithm: highestPriority policies: Admin: target: 'hasAuthority("typo3:security:principal:admin")' description: 'Administrator policy' priority: 100 rules: - effect: permit Default: description: 'Deny everything per default.' rules: - obligation: deny: Feedback: ['Access denied.']