Basada en atributos de control de acceso (abac) en nosql

Video: Fundamentos de Control de Acceso y Nuevas Tendencias

Un modelo útil para la seguridad es aplicar permisos basados ​​en los datos dentro de un registro en lugar de asignar permisos por separado en el registro. Esto podría basarse en cualquiera de los dos valores de metadatos, columna individual (clones Bigtable), o elemento (bases de datos agregada NoSQL).

Video: 9 cosas que debes saber al comprar control de acceso biometrico

Un buen ejemplo es un nombre de cliente que se menciona en un documento. Es posible que desee restringir el acceso a todos los documentos que citan que el cliente sólo a aquellas personas que tienen acceso a la información de este cliente. Puede restringir el acceso a estos documentos mediante el procesamiento de los datos dentro del documento, y la aplicación de los permisos de seguridad pertinentes en función del valor de los datos.

No hay bases de datos NoSQL proporcionan esta capacidad a la derecha de la caja. Esto se debe a permisos deben ser asignados al registro después de los datos se guardan por la aplicación, pero antes de que esté disponible para su recuperación por otras aplicaciones o usuarios. Por lo tanto, esta asignación de permisos debe ocurrir dentro del límite de la transacción.

También, muy pocas bases de datos NoSQL soportan transacciones ACID-compatible (MarkLogic, FoundationDB y Neo4j, lo hacen por ejemplo). Si una base de datos no admite la asignación fuera de la caja de permisos sobre la base de datos dentro de un documento, pero no admite transacciones ACID y pre-commit desencadenantes, a continuación, una solución fácil es posible.

Por lo general es fácil escribir un disparador que comprueba la presencia de un valor dentro de un registro y para modificar los permisos sobre la base de su valor. Mientras una base de datos soporta hacerlo durante el proceso de confirmación, y no después de la confirmación, entonces usted sabe que sus datos se hace segura mediante el uso de un simple pre-commit gatillo.

Video: control de acceso

Como un ejemplo, MarkLogic Server admite transacciones ACID totalmente serializables y pre-commit desencadenantes. Lo que sigue es un documento XML simple que quiero apoyar para el control de acceso basado en atributo:

jbloggsCUMBRELorem Ipsum Dolar Sit Amet ...

desencadenantes de MarkLogic Server utilizan el lenguaje XQuery W3C. El siguiente ejemplo XQuery es un disparador simple que, cuando se instala en MarkLogic, cesionarios de leer y escribir:

Video: CONTROL DE ACCESO VEHICULAR MAXIMA SEGURIDAD

versión xquery "1,0 ml"Módulo -import namespacetrgr = `http://marklogic.com/xdmp/triggers`at` /MarkLogic/triggers.xqy`-declare $ trgr variables: uri como xs: string-externa declarar la variable $ trgr: gatillo como nodo () externa, si ( “ACME” = fn: doc ($ trgr: URI) / MeetingReport / cliente) thenxdmp: documento-set-permisos ($ trgr-uri, (xdmp: permiso ( “seniorsales”,”actualización”), xdmp : permiso ( “sales”,”leer”))) else ()

Una vez que el gatillo se instala en el archivo setperms.xqy en una base de datos de los módulos MarkLogic Server, ejecute el código siguiente en la codificación de aplicaciones web para MarkLogic - Consola de consulta para permitir el gatillo. En una instalación predeterminada MarkLogic Server, puede encontrar la consola de consulta en la URL: http: // localhost: 8000 / QCONSOLE.

Aquí está el código que muestra cómo instalar el gatillo con la consola de consulta:

versión xquery "1,0 ml"-import módulo namespacetrgr = `http: //marklogic.com/xdmp/triggers`at` /MarkLogic/triggers.xqy`-trgr:create-trigger ("setperms","Establecer permisos de ventas Doc", Trgr: disparador de datos de eventos (trgr: Colección-scope ("meetingreports"), Trgr: documento de contenido ("modificar"), Trgr: pre-commit ()), trgr: trigger-módulo (xdmp: base de datos ("módulos"), "/ triggers /","setperms.xqy"), Fn: true (), xdmp: default-permisos (), fn: false ()) 
Artículos Relacionados