Skip to main content

En cualquier sistema de datos, la seguridad y el control de accesos son fundamentales. En el caso de Snowflake, el acceso a los recursos se gestiona mediante un sistema basado en roles y privilegios.

El comando GRANT es la herramienta principal para asignar permisos y controlar quién puede acceder a qué recursos dentro de Snowflake.

En este artículo veremos cómo funcionan los permisos en Snowflake y cómo utilizar GRANT de forma correcta.

Modelo de seguridad en Snowflake

Snowflake utiliza un modelo de control de acceso basado en roles (RBAC).

Este modelo se basa en tres elementos principales:

  • Usuarios → personas o sistemas que acceden a Snowflake
  • Roles → conjuntos de permisos
  • Objetos → recursos como tablas, esquemas o bases de datos

Los permisos no se asignan directamente a los usuarios, sino a los roles.

Qué es GRANT

El comando GRANT permite asignar permisos sobre objetos a roles o usuarios.

Ejemplo básico:

GRANT SELECT ON TABLE my_table TO ROLE analyst_role;

Este comando permite al rol analyst_role consultar la tabla my_table.

Tipos de privilegios

Snowflake ofrece diferentes tipos de privilegios según el objeto.

Algunos ejemplos:

Sobre tablas

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Sobre esquemas

  • USAGE
  • CREATE TABLE
  • CREATE VIEW

Sobre bases de datos

  • USAGE
  • CREATE SCHEMA

Permisos en cadena (hierarquía)

Para acceder a una tabla en Snowflake, no basta con tener permisos sobre la tabla.

También es necesario tener acceso a:

  • la base de datos
  • el esquema

Ejemplo:

GRANT USAGE ON DATABASE my_db TO ROLE analyst_role;

GRANT USAGE ON SCHEMA my_db.my_schema TO ROLE analyst_role;

GRANT SELECT ON TABLE my_db.my_schema.my_table TO ROLE analyst_role;

Este enfoque garantiza un control más preciso.

Asignar roles a usuarios

Una vez definidos los permisos, se asignan los roles a los usuarios.

GRANT ROLE analyst_role TO USER my_user;

Esto permite que el usuario herede los permisos del rol.

Roles jerárquicos

Snowflake permite crear jerarquías de roles.

GRANT ROLE analyst_role TO ROLE senior_analyst_role;

Esto permite reutilizar permisos y simplificar la gestión.

Revocar permisos

Para eliminar permisos, se utiliza el comando REVOKE.

REVOKE SELECT ON TABLE my_table FROM ROLE analyst_role;

Esto elimina el acceso a la tabla.

Buenas prácticas

Para gestionar permisos de forma eficiente es recomendable:

  • utilizar roles en lugar de asignar permisos directamente a usuarios
  • seguir el principio de menor privilegio
  • estructurar roles por función (analyst, engineer, admin)
  • evitar permisos innecesarios
  • documentar la estructura de roles

Casos de uso comunes

La gestión de permisos es clave en distintos escenarios.

Por ejemplo:

  • control de acceso a datos sensibles
  • separación de entornos (dev, test, prod)
  • gestión de equipos
  • cumplimiento de normativas

Seguridad en arquitecturas modernas

En arquitecturas modernas de datos, la seguridad es un componente esencial.

Snowflake permite:

  • gestionar accesos de forma granular
  • auditar permisos
  • controlar quién accede a qué datos

Esto facilita el cumplimiento de políticas de seguridad.

Errores comunes

Al trabajar con permisos en Snowflake, algunos errores habituales incluyen:

  • olvidar permisos de USAGE en base de datos o esquema
  • asignar permisos directamente a usuarios
  • no utilizar roles jerárquicos
  • conceder permisos excesivos

Evitar estos errores mejora la seguridad del sistema.

Conclusión

El comando GRANT es una herramienta fundamental para gestionar permisos en Snowflake. Comprender cómo funciona el modelo de roles y privilegios permite controlar el acceso a los datos de forma segura y eficiente.

Aplicar buenas prácticas en la gestión de permisos es clave para proteger la información y garantizar un uso adecuado de la plataforma.