Entendiendo Schema with Managed Access in Snowflake

Arsilvaf
3 min readFeb 12, 2024

--

Durante mi estudio para obtener las certificaciones avanzadas de Snowflake, me topé con un tema de seguridad de datos que llamó mi atención: los esquemas con acceso gestionado. Decidí investigar y profundizar en este concepto, ya que su definición es bastante interesante: “Managed access schemas centralize privilege management with the schema owner.” Al leer más al respecto, descubrí que hay otros roles que podrían gestionar los privilegios de los objetos dentro de estos esquemas. Por ello, opté por realizar un laboratorio y explicarlo con más detalle.

En el siguiente escenario, tenemos varios roles y objetos creados, cada uno con una función específica:

Roles

  • DB_OWNER: Propietario de la base de datos donde estará el esquema.
  • ROLE_SC_OWNER_GRANTED: Rol al que se le garantizará el rol SC_OWNER.
  • SC_OWNER: Propietario del esquema con acceso gestionado.
  • TB_OWNER: Propietario de la tabla dentro del esquema.
  • ROLE_TB_HAVE_TO_BE_GRANTED: Rol al que se le debe garantizar el acceso a la tabla dentro del esquema.

Objetos

  • DB_TEST: Base de datos que contendrá el esquema con acceso gestionado.
  • SC_TEST: Esquema con acceso gestionado.
  • TB_TEST: Tabla dentro del esquema con acceso gestionado.

La idea principal de los esquemas con acceso gestionado es centralizar quién puede otorgar privilegios a los objetos dentro de estos esquemas. Según la documentación, se definen los siguientes roles que podrían manejar estos privilegios:

  • El propietario del esquema.
  • SECURITYADMIN: Rol que puede gestionar cualquier concesión de objeto a nivel global.
  • Cualquier rol con el privilegio de seguridad MANAGE GRANTS.

Veamos qué pasa si tratamos de asignar los permisos con el rol dueño de la tabla.

Ahora que pasa si tratamos de asignarlos con el propietario del schema

De acuerdo al modelo de Snowflake “Access to securable objects is allowed via privileges assigned to roles, which are in turn assigned to users or other roles. Granting a role to another role creates a role hierarchy.” lo que significa que el rol superior en la jerarquía de cada rol herede esos privilegios, en el escenario planteado ROLE_SC_OWNER_GRANTED también podría otorgar privilegios sobre los objetos en los schemas con aceso gestionado.

Por último con el rol que esta encima en la jerarquía del dueño del schema

Una pregunta que te puedes hacer y responder es, ¿el role propietario de la base de datos donde se encuentra el schema con aceso gestionado tendrá permiso para manejar esos objetos? Pregunta de certificación.

Los leo en los comentarios.

--

--

Arsilvaf

I'm a Snowflake expert with over 8 years of experience in business intelligence. With expertise in Power BI, SQL, Python, and more. Let's connect!