¿Cuáles son las mejores prácticas para implementar ACL?

8

Tengo un sitio web que tiene ciertos elementos de menú que deben ocultarse a los usuarios finales.

El sitio web tiene PHP en el front-end y Java y Spring en el back-end, implementado en un sistema operativo Linux en una infraestructura de VM, aunque la pila de tecnología completa no se entiende completamente ya que es un sistema heredado y no completamente documentado

Necesito proteger el sitio y las funciones según los controles de acceso: los usuarios se asignan a grupos y grupos que tienen acceso a diferentes elementos del menú (funciones). También tengo que proporcionar una interfaz para que los administradores cambien la asignación de funciones a grupos. También requiero un control preciso sobre el nivel de acceso a los diferentes métodos de lectura / escritura.

Entiendo que necesito ACL. ¿Cuál es el diseño de mejores prácticas para tal requisito?

Opciones y preguntas:

  • DB: los problemas negativos serían: el estilo antiguo y la creación de mi propia función de administración de identidad con todos sus inconvenientes y complejidades.
  • LDAP: problemas negativos: de nuevo mi propio sistema de administración de identidades, pero probablemente más simple que DB, pero no estoy seguro de cómo funciona la asignación de niveles de función a grupos. ¿Los proveedores de LDAP proporcionan la asignación de grupos a funciones particulares (es decir, dado un elemento del menú "cuentas"? Solo quiero que Finanzas pueda ver el menú de cuentas).
  • OpenAM y soluciones similares que externalizan la gestión de identidades: ¿puede funcionar? He estado leyendo acerca de esto: la autenticación que entiendo, pero la autorización a nivel de grano fino no. Parece que necesita un producto LDAP configurado como fuente de datos, así que, ¿qué proporciona OpenAM sobre la opción 2 anterior porque sería lo mismo? Con OpenAM, parece que configuro un servicio de identidad, pero me aseguro a nivel de contenedor, por lo que el servidor web y el servidor de aplicaciones, pero da su propia página de inicio de sesión. Supongo que es posible configurarlo para acceder a las hojas de estilo para que se integre con la página de inicio de sesión actual, pero ¿alguien ha hecho eso en alguno de estos tipos de productos para asegurarse de que sea posible? Además, ¿esto cumple mis requisitos de ACL? ¿Es este el mejor diseño y cuanto más complicado de configurar es en comparación con LDAP y las configuraciones de aplicaciones?

Otras preguntas:

  • ¿Se recomienda la solución LDAP?
  • ¿Tiene alguna sugerencia sobre productos de código abierto para LDAP de Apache? ¿Hay alguna buena / fácil gestión? ¿Alguna interfaz posible para la manipulación de funciones a grupos? - ¿LDAP permite la asignación a un nivel de funciones / métodos de grano fino a grupos o es algo que se realiza en la aplicación? Esta parte en particular es confusa. Si alguien puede ofrecer un buen recurso sobre esto, sería bueno.
pregunta bliss 01.05.2014 - 12:17
fuente

2 respuestas

1

Necesita autorización externalizada, por ejemplo, Autorización basada en reclamaciones (específica de Microsoft) o control de acceso basado en atributos (ABAC) más ampliamente.

ABIST fue definido recientemente por NIST y puede descargar su informe aquí .

En tus preguntas apuntas a LDAP y grupos. Luego explica que necesita asociar funciones a grupos / roles. LDAP, roles y grupos representan sus atributos. También podrían provenir de otras fuentes (por ejemplo, una base de datos). Lo que falta es la lógica de autorización: la asignación entre grupos y funciones.

En ABAC, esa lógica se expresa como políticas de autorización. OASIS tiene un estándar para eso llamado XACML, el eXtensible Access Control Markup Language. En XACML, usarás atributos para definir qué acceso se debe permitir o denegar.

Por ejemplo:

  

Un usuario con el administrador de roles y en el grupo de finanzas puede ver el menú de finanzas.

Puede leer más en XACML aquí y aquí .

    
respondido por el David Brossard 13.05.2014 - 15:33
fuente
0

No categorizaría esto bajo la Gestión de Identidad; Esta es una pregunta de gestión de acceso. Definitivamente, es recomendable externalizar su solución de gestión de acceso, y no conozco ninguna solución que no utilice el LDAP como tienda.

El control de acceso de grano fino define el acceso a los elementos que se muestran en la misma página o URL, por ejemplo. una URL con parámetros de cadena de consulta puede 'gestionarse con acceso' con un producto que admite el control de acceso de grano fino, a diferencia de las soluciones de control de acceso de grano grueso que solo lo admiten a nivel de página, es decir, una página html, jsp, php, ignorando la cadena de consulta parámetros u otros botones, enlaces dentro de la página.

Una solución es (suponiendo que la solución de administración de acceso no proporciona un control de acceso detallado; muchas no lo hacen) es combinar el producto de administración de acceso y su código personalizado para implementar el control de acceso detallado. Defina grupos / atributos personalizados en el producto de gestión de acceso. Estas definiciones personalizadas deben tener accesos de escritura, lectura y escritura definidos como en TRW para, por ejemplo. Así que por ejemplo Algunos botones / enlaces se muestran solo para los administradores en la misma URL de http. También defina los mismos valores en su base de datos personalizada (si es necesario) para asignarlos a los permisos / tipo del usuario Y a sus grupos personalizados.

Cuando los usuarios inicien sesión en su sitio web, pase los derechos de acceso del usuario como encabezados http al sitio web. Lea estos encabezados, analice estos valores y luego, según el tipo de usuario y los permisos, muestre los botones / enlaces para un usuario. Por ejemplo si un encabezado contiene R como un atributo y si el tipo de usuario no es un administrador, no muestre los botones que cumplan con los criterios de R pero no los criterios del administrador, esto puede consultarse en su base de datos.

La solución anterior es irrelevante si logra obtener una solución de administración de acceso que sea compatible con el control de acceso detallado, pero si los costos son un problema, la solución anterior debería ser sencilla de implementar.

    
respondido por el dozer 19.05.2014 - 09:07
fuente

Lea otras preguntas en las etiquetas