Acceso basado en el tipo de información solicitada y concesión de acceso

2

La solución simple para acceder a la restricción cuando la cantidad de usuarios es pequeña es Access Control Matrix. Aquí las filas son los usuarios y las columnas son diferentes tipos de activos.

En mi caso, tengo un documento que debo servir que tiene atributos diferentes. Así que mis columnas serán atributos diferentes. Así que ahora es simple matriz 2-D.

Pero tengo requisitos que también dependen de la información contenida en el documento. Así que digamos que tengo dos tipos de documentos, uno con el atributo X y otro sin el atributo X.

Por lo que tengo, esto aumentará la dimensión de mi matriz a 3-D, donde en el eje Z tendré dos entradas, "X Attr Doc", "Sin X Attr Doc".

Mis requisitos son tales que también depende de la información que estoy proporcionando.

La única solución que he encontrado hasta ahora es tener una matriz bidimensional y en cada celda de la matriz tenemos una regla específica.

Se parece a esto:

Aquí, los ClientID son usuarios diferentes, y Public, Core, Private, Default son diferentes categorías (conjunto de atributos) a las que se les otorga acceso o no.

Puede ver en una celda, el acceso se otorga solo si se cumple cierta condición que depende del documento.

Además, quiero que en el futuro esta tabla sea configurable, por ejemplo, cada vez que un nuevo cliente se registre, podemos agregar una nueva fila. O podemos tener una nueva columna si tenemos una nueva categoría que debemos servir.

¿Hay alguna solución mejor? Si no es así, ¿puede alguien sugerir la manera más eficiente de implementar el rendimiento en Java? Estaba pensando en el lenguaje de expresión como SPEL, pero no tengo idea.

    
pregunta prakharjain 08.12.2017 - 07:05
fuente

1 respuesta

3

Descargo de responsabilidad: trabajo para Axiomatics , el proveedor líder en autorización detallada .

Hola Prakharjain,

Lo que está describiendo es la base del control de acceso basado en atributos (). Con ABAC, puede definir el acceso según los atributos del usuario como lo haría en RBAC (por ejemplo, identidad del usuario, rol, grupo) pero también otros atributos del usuario (departamento, fecha de nacimiento, ubicación ...), así como los atributos de los recursos, los atributos de acción y atributos del entorno (dirección IP, hora, dispositivo).

En su caso, desea controlar el acceso a los activos, por ejemplo. un documento. Usted declara que su documento tiene diferentes atributos. En ABAC, puede definir el propietario de un documento, lista blanca, lista negra, tipo, sensibilidad, departamento, etc. Puede tener tantos atributos como desee.

Una vez que haya definido sus atributos (esencialmente su modelo de información), puede comenzar a definir su autorización policies . Esta es la clave aquí. En lugar de definir permisos en una tabla o matriz (que son difíciles de definir, mantener, actualizar y auditar), se definen los derechos de autorización mediante políticas. Una política se parece a la siguiente:

  

Un usuario puede ver un documento en su departamento.

Esta es la política de línea base Permit . Otorga acceso siempre que el usuario y el documento estén en el mismo departamento. Una versión reescrita (desglosada) se vería así:

  

Un usuario puede hacer la acción == "ver" en el activo del tipo == "documento" si user.department == asset.department

Y puede agregar más políticas a la línea de base. Por ejemplo, podría indicar que

  
  1. Si el usuario no es el propietario y el documento es privado, entonces niegue el acceso.
  2.   
  3. Si el usuario.clearance < document.classification, luego denegar el acceso.
  4.   
  5. Si el usuario está en la lista blanca, entonces permita el acceso.
  6.   

Puedes elegir cómo se combinan las políticas.

Además de definir atributos y un modelo de política, ABAC también define una arquitectura:

  1. elPuntodedecisióndelapolítica(PDP):elnúcleodelaarquitecturadondeseevalúanlaspolíticasysetomanlasdecisiones.ElPDPesparaXACMLloqueelTribunalSupremoesparalaleydelosEE.UU.
  2. elpuntodeaplicacióndepolíticas(PEP):loselementosdeintegraciónquepuedenestarencualquierpartedelaarquitecturadeunaaplicación.LosPEPsonextremadamenteversátilesdependiendodedóndeimponenelcontroldeacceso.ElPEPesparaXACMLyelPDPloquelosoficialesdepolicíaylosjuecessonparalostribunalesylaley
  3. Elpuntodeinformacióndepolítica(PIP):enABACyXACML,hayunanecesidaddeatributos.Losatributosestánahíparadescribirusuarios,servicios,recursos,accionesyelentorno.Lospuntosdeinformacióndepolíticassontiendasdeatributos.Puedenserdecualquierformatoyubicarseencualquierlugar.LosPIPsonparaXACMLloqueelDVLA,elconjuntoderegistrospoliciales,laoficinadecensos,etc.sonparaunanaciónysusciudadanos.
  4. Elpuntodeadministracióndepolíticas(PAP):aquíesdondeadministrastuspolíticas.

HayunestándarimportantequeimplementaABACyesXACML(lenguajedemarcadodecontroldeaccesoextensible).LoquenecesitaesunaimplementaciónXACMLcomo Axiomatics Policy Server .

También vea esta pregunta respondí.

HTH, David.

    
respondido por el David Brossard 18.12.2017 - 22:00
fuente

Lea otras preguntas en las etiquetas