Visión general de control de acceso basado en etiquetas (LBAC)

El control de acceso basado en etiquetas (LBAC) aumenta considerablemente el control que tiene sobre quién puede acceder a los datos. LBAC le permite decidir exactamente quién tiene acceso de escritura y quién tiene acceso de lectura a filas y columnas individuales.

Qué hace LBAC

La capacidad LBAC es muy configurable y se puede adaptar a su entorno de seguridad particular. Toda la configuración de LBAC la realiza un administrador de seguridad, que es un usuario al que se le ha otorgado la autorización SECADM.

Un administrador de seguridad configura el sistema LBAC creando componentes de etiqueta de seguridad. Un componente de etiqueta de seguridad es un objeto de base de datos que representa un criterio que desea utilizar para determinar si un usuario debe acceder a un fragmento de datos. Por ejemplo, el criterio puede ser si el usuario está en un determinado departamento o si está trabajando en un determinado proyecto. Una política de seguridad describe los criterios que se utilizarán para decidir quién tiene acceso a qué datos. Una política de seguridad contiene uno o más componentes de etiqueta de seguridad. Tan solo se puede utilizar una política de seguridad para proteger una misma tabla pero tablas diferentes pueden estar protegidas por diferentes políticas de seguridad.

Después de crear una política de seguridad, un administrador de seguridad crea objetos, denominados etiquetas de seguridad que forman parte de dicha política. Las etiquetas de seguridad contienen componentes de etiqueta de seguridad. Exactamente lo que constituye una etiqueta de seguridad lo determina la política de seguridad y se puede configurar para representar los criterios que la organización utiliza para decidir quién debe tener acceso a determinados elementos de datos. Si decide, por ejemplo, que desea ver la posición de una persona en la empresa y de qué proyectos forma parte para decidir qué datos deben ver, puede configurar las etiquetas de seguridad para que cada etiqueta pueda incluir esa información. LBAC es lo suficientemente flexible como para permitirte configurar cualquier cosa desde criterios muy complicados, hasta un sistema muy simple donde cada etiqueta representa un nivel de confianza "alto" o "bajo".

Una vez creada, una etiqueta de seguridad se puede asociar con columnas y filas individuales de una tabla para proteger los datos que contienen. Los datos protegidos por una etiqueta de seguridad se denominan datos protegidos. Un administrador de seguridad permite a los usuarios acceder a datos protegidos otorgándoles etiquetas de seguridad. Cuando un usuario intenta acceder a datos protegidos, la etiqueta de seguridad del usuario se compara con la etiqueta de seguridad que protege los datos. La etiqueta de protección bloqueará algunas etiquetas de seguridad y no bloqueará otras.

Un usuario, un rol o un grupo puede contener etiquetas de seguridad para varias políticas de seguridad a la vez. Sin embargo, para una política de seguridad determinada, un uso, un rol o un grupo puede contener como máximo una etiqueta para el acceso de lectura y una etiqueta para el acceso de escritura.

Un administrador de seguridad también puede otorgar exenciones a los usuarios. Una exención le permite acceder a datos protegidos a los que las etiquetas de seguridad podrían impedir el acceso. Juntas, las etiquetas de seguridad y las exenciones se denominan credenciales de LBAC.

Si intenta acceder a una columna protegida a la que sus credenciales de LBAC no le permiten acceder, el acceso fallará y obtendrá un mensaje de error.

Si intenta leer filas protegidas que las credenciales de LBAC no permiten leer, Db2® actúa como si esas filas no existieran. Estas filas no se pueden seleccionar como parte de ninguna sentencia SQL que ejecute, incluidas SELECT, UPDATE o DELETE. Incluso las funciones de agregación ignoran las filas que las credenciales de LBAC no le permiten leer. La función COUNT (*), por ejemplo, devolverá un recuento sólo de las filas a las que tiene acceso de lectura.

Vistas y LBAC

Puede definir una vista en una tabla protegida de la misma forma que puede definir una en una tabla no protegida. Cuando se accede a una vista de este tipo, se aplica la protección LBAC en la tabla subyacente. Las credenciales de LBAC utilizadas son las del ID de autorización de sesión. Dos usuarios que acceden a la misma vista pueden ver filas diferentes en función de sus credenciales de LBAC.

Restricciones de integridad referencial y LBAC

Las reglas siguientes explican cómo se aplican las reglas LBAC en presencia de restricciones de integridad referencial:
  • Regla 1: las reglas de acceso de lectura LBAC NO se aplican a exploraciones generadas internamente de tablas hijo. Esto es para evitar tener hijos huérfanos.
  • Regla 2: Las reglas de acceso de lectura de LBAC NO se aplican a exploraciones generadas internamente de tablas padre
  • Regla 3: Las reglas de escritura de LBAC se aplican cuando se realiza una operación CASCADE en tablas hijo. Por ejemplo, si un usuario suprime un padre, pero no puede suprimir ninguno de los hijos debido a una violación de regla de escritura de LBAC, la supresión se debe retrotraer y se genera un error.

Sobrecarga de almacenamiento cuando se utiliza LBAC

Cuando se utiliza LBAC para proteger una tabla a nivel de fila, el coste de almacenamiento adicional es el coste de la columna de etiqueta de seguridad de fila. Este coste depende del tipo de etiqueta de seguridad elegida. Por ejemplo, si crea una política de seguridad con dos componentes para proteger una tabla, una etiqueta de seguridad de esa política de seguridad ocupará 16 bytes (8 bytes para cada componente). Puesto que la columna de etiqueta de seguridad de fila se trata como una columna VARCHAR no anulable, el coste total en este caso sería de 20 bytes por fila. En general, el coste total por fila es (N* 8 + 4) bytes, donde N es el número de componentes de la política de seguridad que protegen la tabla.

Cuando se utiliza LBAC para proteger una tabla a nivel de columna, la etiqueta de seguridad de columna es metadatos (es decir, se almacena junto con los metadatos de la columna en la tabla de catálogo SYSCOLUMNS). Estos metadatos son simplemente el ID de la etiqueta de seguridad que protege la columna. La tabla de usuario no incurre en ninguna sobrecarga de almacenamiento en este caso.

Qué no hace LBAC

  • LBAC nunca permitirá el acceso a los datos que están prohibidos por el control de acceso discrecional.
    Ejemplo: Si no tiene permiso para leer de una tabla, no podrá leer datos de dicha tabla, incluso las filas y columnas a las que LBAC le permitiría acceder.
  • Las credenciales de LBAC sólo limitan el acceso a los datos protegidos. No tienen ningún efecto en su acceso a datos no protegidos.
  • Las credenciales de LBAC no se comprueban cuando se descarta una tabla o una base de datos, incluso si la tabla o la base de datos contiene datos protegidos.
  • Las credenciales de LBAC no se comprueban cuando realiza una copia de seguridad de los datos. Si puede ejecutar una copia de seguridad en una tabla, las filas de las que se realiza una copia de seguridad no están limitadas en modo alguno por la protección LBAC de los datos. Además, los datos del soporte de copia de seguridad no están protegidos por LBAC. Sólo se protegen los datos de la base de datos.
  • LBAC no se puede utilizar para proteger ninguno de los siguientes tipos de tablas:
    • Una tabla de etapas
    • Una tabla de la que depende una tabla de etapas
    • Una tabla con tipos
  • La protección LBAC no se puede aplicar a un apodo.