Seguridad a nivel de columnas en Azure SQL Database

Seguridad a nivel de columnas

Se trata del hermano menos popular del row level security y object level security. En esta oportunidad veremos cómo aplicar seguridad a nivel de columnas en Azure SQL Database, método por el cual permitimos un acceso parcial a las columnas que contiene una tabla en específico.

Este artículo es la segunda publicación de una serie de artículos sobre seguridad de datos, el primero lo puedes leer utilizando este enlace.

https://dataloop.dev/azure/ocultar-datos-sensibles-en-sql-database-usando-ddm/

Escenarios de aplicación

Algunos de los posibles casos de aplicación de la seguridad a nivel de columnas pueden ser:

  • No permitir la lectura de la columna que contiene información sensible, como el salario de los empleados de la organización, número de tarjeta de crédito, número de identificación, número telefónico, dirección, entre otros datos que la organización pueda categorizar como sensible
  • Simplificar la vista de una tabla para los usuarios, ocultando las columnas que son para el funcionamiento de cierta aplicación
  • Ocultar columnas que cobran sentido en escenarios de auditoria

Creando seguridad a nivel de columnas

La implementación de este tipo de seguridad se hace a través de una sentencia GRANT en T-SQL, por lo que podremos hacerla desde cualquier IDE de SQL Server como SSMS o Azure Data Studio.

Preparación del entorno

Primero crearemos una tabla de usuarios sobre la cual daremos permisos a un usuario, igualmente la poblaremos con registros de prueba utilizando el siguiente query:

Al consultar la tabla, tendremos esto:

Muestra de información completa sobre la tabla

Concesión de permisos

Este tipo de seguridad aplica sobre usuarios de base de datos, así como para usuarios de Azure Active Directory (AAD). Para este ejercicio, crearemos un usuario de base de datos al cual posteriormente le daremos acceso limitado sobre cierta tabla:

Ahora cada vez que este usuario consulte la información de la tabla de usuarios, deberá especificar las columnas que desea consultar sin ir más allá de las que tiene acceso:

Consulta con seguridad aplicada sobre columnas en SQL Database

Si este usuario intenta hacer consultas sobre las columnas no permitidas de esta tabla, obtendrá un error que le indicará que no tienen acceso a dicha información:

Consulta errónea con seguridad aplicada sobre columnas en SQL Database

Conclusiones

Aunque es común encontrar que este tipo de requerimientos de compliance suele resolverse erróneamente a través de la creación de vistas, esto realmente no cubre los escenarios en su totalidad.

Sin embargo, es cierto que la combinación de CLS (Column Level Security) combinado con una vista facilita la generación de la consulta hacia el usuario, ya que podrá hacer un “select * from” sobre la vista sin especificar el total de columnas sobre las que tiene permisos.

You May Also Like