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.




