DataSunrise Logra el Estado de Competencia en AWS DevOps en AWS DevSecOps y Monitoreo, Registro, Rendimiento

RBAC en Snowflake

RBAC en Snowflake

RBAC en Snowflake

Introducción

A medida que las organizaciones trasladan cada vez más sus datos y análisis a la nube, la seguridad de los datos y el control de acceso se convierten en preocupaciones críticas. Snowflake, una popular plataforma de datos en la nube, proporciona características de seguridad sólidas, incluyendo el Control de Acceso basado en Roles (RBAC). RBAC te permite controlar el acceso a objetos y funcionalidades en Snowflake basado en los roles asignados a los usuarios.

Este artículo aborda RBAC en Snowflake. Explica cómo funciona RBAC y proporciona ejemplos para ayudarte a familiarizarte con el RBAC de Snowflake.

¿Qué es el Control de Acceso basado en Roles?

El Control de Acceso basado en Roles (RBAC) determina quién puede acceder a un ordenador o recurso en función de los roles de los usuarios en una empresa. RBAC es un método para controlar el acceso a la información.

Este sistema asigna permisos a los usuarios de acuerdo con sus roles dentro de la organización. Ayuda a garantizar que solo las personas autorizadas puedan acceder a ciertos datos o recursos.

En RBAC, se asocian roles con permisos y se asignan usuarios a roles adecuados. Esto simplifica la gestión del acceso. En lugar de asignar permisos a cada usuario individualmente, puedes asignar permisos a roles. Los usuarios de la base de datos de Snowflake pertenecen a esos roles según sea necesario.

RBAC ofrece varios beneficios:

  • Gestión de accesos simplificada: los administradores pueden asignar permisos a roles en lugar de a usuarios individuales
  • Mayor seguridad: los usuarios solo tienen acceso a los recursos específicos que permite su rol
  • Reducción de la carga administrativa: al haber menos asignaciones directas, RBAC reduce el esfuerzo de gestión
  • Cumplimiento normativo: RBAC facilita la implementación y demostración de controles de acceso para cumplir con los requisitos regulatorios

Cómo Funciona RBAC en Snowflake

Snowflake gestiona todos los controles de acceso a través de roles y privilegios. Un rol asigna una colección nombrada de privilegios a los usuarios. Los privilegios otorgan la capacidad de realizar ciertas acciones en objetos protegibles como bases de datos, esquemas, tablas, y otros.

A continuación se presentan los conceptos clave en el modelo RBAC de Snowflake:

  • Roles: Un rol es una colección de privilegios. Los usuarios u otros roles pueden asignar roles.
  • Privilegios: Un privilegio otorga la capacidad de realizar una acción determinada, como crear una base de datos o consultar una tabla. Los roles asignan un conjunto de privilegios a los usuarios.
  • Objetos protegibles: Una entidad como una base de datos, esquema, tabla o vista que tiene acceso controlado. Se otorgan privilegios para asegurar estos objetos.
  • Control de acceso: Los roles son grupos que controlan el acceso al otorgar permisos y asignarlos a los usuarios. Los administradores asignan permisos a los roles y luego asignan roles a los usuarios.
  • Jerarquía de roles: El administrador de la base de datos puede asignar roles a otros roles, creando una jerarquía. Los roles hijos heredan los privilegios de sus roles padres.

Configuración de RBAC en Snowflake

Para implementar RBAC en Snowflake, seguirás estos pasos a grandes rasgos:

  1. Crear roles
  2. Conceder privilegios a roles
  3. Asignar roles a usuarios

Veamos un ejemplo. Supongamos que tenemos una base de datos simple con datos de ventas a los que diferentes usuarios necesitan acceder. Crearemos una configuración RBAC para controlar el acceso.

Primero, creemos la base de datos y la tabla:

CREATE DATABASE sales_db;
CREATE TABLE sales_db.public.orders (
order_id INT,
amount DECIMAL(10,2)
);

A continuación, crearemos algunos roles:

CREATE ROLE admin;
CREATE ROLE analyst;
CREATE ROLE reporter;

Ahora podemos asignar privilegios a los roles:

-- los administradores pueden gestionar la base de datos
GRANT CREATE DATABASE ON ACCOUNT TO ROLE admin;
GRANT CREATE SCHEMA ON DATABASE sales_db TO ROLE admin;
GRANT CREATE TABLE ON ALL SCHEMAS IN DATABASE sales_db TO ROLE admin;
-- los analistas pueden consultar los datos
GRANT USAGE ON DATABASE sales_db TO ROLE analyst;
GRANT USAGE ON SCHEMA sales_db.public TO ROLE analyst;
GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE analyst;
-- los reporteros pueden realizar consultas SELECT 
GRANT USAGE ON DATABASE sales_db TO ROLE reporter;
GRANT USAGE ON SCHEMA sales_db.public TO ROLE reporter;
GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE reporter;

Finalmente, asignemos los roles a los usuarios:

CREATE USER michelle PASSWORD = 'strong_password';
CREATE USER frank PASSWORD = 'another_strong_password';
CREATE USER lisa PASSWORD = 'yet_another_strong_password';
GRANT ROLE admin TO USER michelle;
GRANT ROLE analyst TO USER frank;
GRANT ROLE reporter TO USER lisa;

Michelle tiene privilegios de administrador, Frank tiene privilegios de analista y Lisa tiene privilegios de reportera basados en sus roles asignados.

Podemos probarlo:

-- conectarse como michelle 
USE ROLE ADMIN;
CREATE TABLE sales_db.public.customers (customer_id INT); -- éxito
-- conectarse como frank
USE ROLE ANALYST;
SELECT * FROM sales_db.public.orders; -- éxito
CREATE TABLE sales_db.public.customers (customer_id INT); -- falla, los analistas solo pueden consultar 
-- conectarse como lisa
USE ROLE REPORTER;
SELECT * FROM sales_db.public.orders; -- éxito 
CREATE TABLE sales_db.public.customers (customer_id INT); -- falla, las reporteras solo pueden consultar
Cada usuario solo puede hacer lo que su rol le permite, siguiendo el principio de menor privilegio.

Características Avanzadas de RBAC en Snowflake

A partir de las últimas versiones de Snowflake, RBAC no se limita a las asignaciones tradicionales de roles y privilegios. Ahora puedes aplicar políticas de acceso utilizando controles avanzados como Políticas de Acceso a Filas y Enmascaramiento Dinámico Basado en Etiquetas para proteger información sensible a un nivel más detallado.

Políticas de Acceso a Filas te permiten restringir el acceso a filas de una tabla en función del contexto de sesión, como el rol actual del usuario o su identificador de inicio de sesión. Estas políticas se adjuntan a tablas o vistas y se evalúan automáticamente durante la ejecución de las consultas.

CREATE OR REPLACE ROW ACCESS POLICY region_filter
AS (user_region STRING) 
RETURNS BOOLEAN ->
    CURRENT_REGION() = user_region;

ALTER TABLE sales_db.public.orders 
ADD ROW ACCESS POLICY region_filter ON (region);

Además, puedes aplicar el enmascaramiento dinámico de datos utilizando las etiquetas de clasificación de Snowflake. Al etiquetar columnas como email o ssn y asociarlas con políticas de enmascaramiento, aseguras que solo los usuarios con roles específicos puedan ver los datos sin enmascarar.

CREATE MASKING POLICY mask_email
AS (val STRING) RETURNS STRING ->
    CASE 
        WHEN CURRENT_ROLE() IN ('admin', 'auditor') THEN val
        ELSE '********@****.com'
    END;

ALTER TABLE sales_db.public.customers 
MODIFY COLUMN email 
SET MASKING POLICY mask_email;

Estas funciones avanzadas ayudan a las organizaciones a cumplir con requisitos de cumplimiento como GDPR y HIPAA, automatizando la aplicación de normas basadas en la clasificación de datos y roles de usuario.

Jerarquía de Roles

Las organizaciones pueden organizar los roles de Snowflake en jerarquías, donde un rol hijo hereda los privilegios de su rol padre. Esto te permite definir un acceso amplio en niveles superiores y luego afinar el acceso creando roles hijos más específicos.

Por ejemplo, supongamos que queremos crear un rol de “solo lectura” que pueda acceder a múltiples bases de datos. Podemos crear un rol padre con amplios privilegios de SELECT, y luego crear roles hijos para accesos específicos:

CREATE ROLE read_only;
GRANT USAGE ON DATABASE sales_db TO ROLE read_only;
GRANT USAGE ON SCHEMA sales_db.public TO ROLE read_only;
GRANT SELECT ON ALL TABLES IN SCHEMA sales_db.public TO ROLE read_only;
GRANT USAGE ON DATABASE marketing_db TO ROLE read_only;
GRANT USAGE ON SCHEMA marketing_db.public TO ROLE read_only;
GRANT SELECT ON ALL TABLES IN SCHEMA marketing_db.public TO ROLE read_only;
CREATE ROLE sales_reader;
GRANT ROLE read_only TO ROLE sales_reader;
CREATE ROLE marketing_reader;
GRANT ROLE read_only TO ROLE marketing_reader;
-- Ahora los roles sales_reader y marketing_reader heredan los privilegios SELECT del rol padre read_only.
GRANT ROLE sales_reader TO USER frank;
GRANT ROLE marketing_reader TO USER lisa;

Frank puede acceder a la base de datos de ventas para obtener información. Lisa puede acceder a la base de datos de marketing para obtener información. Ambos tienen asignado el rol padre de solo lectura.

Utilizar jerarquías de roles de manera juiciosa puede hacer que las configuraciones de RBAC sean más fáciles de gestionar y comprender. Construye tu jerarquía empezando con roles amplios, y luego crea roles hijos para accesos más granulares y específicos.

Centrar y Simplificar la Gestión de RBAC

Snowflake cuenta con un buen sistema para gestionar roles y privilegios. Sin embargo, puede ser difícil manejarlos en una gran organización con muchos usuarios y bases de datos. Aquí es donde herramientas de terceros como DataSunrise pueden ayudar.

DataSunrise ofrece un conjunto de herramientas para mejorar y simplificar la seguridad de los datos y el cumplimiento en Snowflake. Su interfaz web intuitiva facilita la gestión de las configuraciones RBAC en todas tus bases de datos y almacenes de datos de Snowflake. Puedes gestionar usuarios, roles y privilegios desde una única consola.

Además de la gestión de RBAC, DataSunrise ofrece otras funciones críticas de seguridad para Snowflake, tales como:

  • Cifrado y tokenización de datos
  • Enmascaramiento dinámico de datos
  • Firewall SQL para monitoreo en tiempo real y aplicación de políticas
  • Auditoría y generación de informes para cumplir con requerimientos de cumplimiento

Si buscas formas de mejorar la seguridad y el cumplimiento en tu entorno de Snowflake, considera explorar herramientas como DataSunrise. Ofrecemos una demo gratuita para que puedas ver las capacidades de DataSunrise en acción.

Conclusión

El Control de Acceso basado en Roles es una herramienta poderosa para gestionar el acceso a los datos en Snowflake. RBAC te permite controlar el acceso en detalle mediante la asignación de privilegios a roles.

Posteriormente, el administrador de la base de datos asigna estos roles a los usuarios, siguiendo el principio de menor privilegio. La implementación de RBAC en Snowflake es flexible y robusta, soportando jerarquías de roles para un control aún más granular.

Aunque RBAC en Snowflake es nativamente robusto, las implementaciones a escala empresarial pueden volverse complejas de gestionar. Herramientas de terceros como DataSunrise pueden ayudar a simplificar y centralizar la gestión de RBAC en todas tus instancias de Snowflake.

Esperamos que este artículo haya sido una introducción útil al RBAC en Snowflake. Para obtener más información, consulta la documentación de Snowflake.

Siguiente

Maximice la seguridad de sus datos con soluciones de tokenización

Maximice la seguridad de sus datos con soluciones de tokenización

Más información

¿Necesita la ayuda de nuestro equipo de soporte?

Nuestros expertos estarán encantados de responder a sus preguntas.

Información general:
[email protected]
Servicio al Cliente y Soporte Técnico:
support.datasunrise.com
Consultas sobre Asociaciones y Alianzas:
[email protected]