Seguridad a nivel de columna y de fila

Gestión, gobierno y colaboración en Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

El problema del acceso a nivel de tabla

Tabla de users con acceso a tabla

  • La tabla users de Claro contiene nombres, emails, credit scores y credit band
  • Conceder SELECT al rol de analista expone todas las columnas
  • Los analistas de campañas no necesitan los credit scores brutos
  • El control de acceso a nivel de tabla no puede hacer esa distinción
Gestión, gobierno y colaboración en Snowflake

¿Qué es la seguridad a nivel de columna?

  • La columna sigue en los resultados: solo cambia el valor
  • Roles con privilegios ven valores reales; sin privilegios ven valores enmascarados
  • El enmascaramiento ocurre en la consulta según el rol que consulta = enmascaramiento de datos dinámico

Seguridad a nivel de columna

Gestión, gobierno y colaboración en Snowflake

Enmascaramiento de datos dinámico

Diagrama que muestra dos tablas, una con enmascaramiento dinámico y otra sin él

Gestión, gobierno y colaboración en Snowflake

Crear y aplicar una Masking Policy

CREATE MASKING POLICY mask_credit_score
  AS (val NUMBER) RETURNS NUMBER ->
  CASE
    WHEN IS_ROLE_IN_SESSION('CREDIT_ADMIN') THEN val
    ELSE -9999
  END;

ALTER TABLE core.users
  MODIFY COLUMN credit_score
  SET MASKING POLICY mask_credit_score;
  • CURRENT_ROLE devuelve el rol primario activo
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Gestión, gobierno y colaboración en Snowflake

Tokenización externa

  • Alternativa al enmascaramiento de datos dinámico
  • Requiere un proveedor de tokenización externo y una External Function
  • Valores sensibles se sustituyen por tokens coherentes entre sistemas
  • Útil cuando el mismo token debe reconocerse fuera de Snowflake

Tokenización externa

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Gestión, gobierno y colaboración en Snowflake

¿Qué es la seguridad a nivel de fila?

Dos tablas que muestran cómo un analista solo ve ciertas filas

Gestión, gobierno y colaboración en Snowflake

Cómo funcionan las Row Access Policies

Diagrama que muestra una consulta de US_ANALYST pasando por una Row Access Policy en la tabla users, devolviendo solo filas de US, y EU_ANALYST devolviendo solo filas de EU con la misma consulta

  • La política evalúa el rol que consulta y aplica un filtro
Gestión, gobierno y colaboración en Snowflake

Crear y aplicar una Row Access Policy

CREATE ROW ACCESS POLICY region_filter
  AS (region_col VARCHAR) RETURNS BOOLEAN ->
  CASE
    WHEN IS_ROLE_IN_SESSION('US_ANALYST') THEN region_col = 'US'
    WHEN IS_ROLE_IN_SESSION('EU_ANALYST') THEN region_col = 'EU'
    ELSE FALSE
  END;

ALTER TABLE core.users
  ADD ROW ACCESS POLICY region_filter ON (region);
Gestión, gobierno y colaboración en Snowflake

Usar enmascaramiento y Row Access Policies juntos

Enmascaramiento dinámico y políticas de acceso a filas

Gestión, gobierno y colaboración en Snowflake

¡Vamos a practicar!

Gestión, gobierno y colaboración en Snowflake

Preparing Video For Download...