Tutoriales

Explicación del control de acceso basado en roles (RBAC) de Snowflake

El control de acceso es uno de los conceptos cruciales en todos los entornos de bases de datos. En este artículo, aprenderemos sobre el control de acceso basado en roles (RBAC) de Snowflake y cómo crear roles personalizados y otorgar acceso a los roles desde Snowflake WebUI y usando el cliente SnowSQL CLI. .

1. ¿Qué es el control de acceso basado en roles (RBAC)?

Copo de nieve proporciona control de acceso basado en roles (RBAC) como un mecanismo para otorgar o denegar el acceso a varios objetos de la base de datos y acciones a los principales de seguridad (usuarios, servicios, etc.).

2. ¿Qué es Rol?

Los roles son las entidades que pueden otorgar y revocar derechos sobre objetos asegurables.A los usuarios se les asignan roles para permitirles realizar las actividades necesarias para las funciones comerciales de su organización.

Un usuario puede tener varios roles asignados, los usuarios pueden intercambiar roles para realizar diferentes tareas con diferentes conjuntos de derechos.

Los roles también se pueden asignar a otros roles, lo que da como resultado una jerarquía de roles. Los usuarios con acceso adecuado pueden crear roles personalizados. Cualquier rol por encima de esa posición en la jerarquía hereda los privilegios asociados con ese rol.

En una cuenta de Snowflake, habrá algunos roles definidos por el sistema que están incorporados. Los roles definidos por el sistema no se pueden eliminar y los privilegios asignados a estos roles no se pueden revocar.

Hay cinco roles definidos por el sistema, y ​​Snowflake determina qué «rol» debe cumplir cada rol del sistema, qué usuarios deben seguir.

  • ADMINISTRADOR DE CUENTA: El puesto de ACCOUNTADMIN combina las responsabilidades de SYSADMIN y SECURITYADMIN en una sola.
  • ORGANIZADOR: A nivel organizacional, este es un rol que administra la operación.
  • ADMINISTRADOR DE SEGURIDAD: Este puesto es responsable de monitorear y administrar usuarios y roles.
  • USUARIO ADMIN: Esta posición está a cargo de crear roles y usuarios.
  • ADMINISTRADOR DEL SISTEMA: En una cuenta, este rol tiene la capacidad de construir almacenes, bases de datos y otros objetos. Se supone que SYSADMIN debe acumular todos los roles personalizados.
  • PÚBLICO: Este es un rol que se asigna automáticamente a todos los usuarios y roles en su cuenta.

Aparte de estos roles definidos por el sistema, uno puede crear roles de acuerdo con los requisitos y asignar privilegios a ese rol. Funciones personalizadas.

3. Jerarquía de funciones y herencia de privilegios

El siguiente diagrama ilustra cómo se jerarquizan los roles definidos por el sistema y cómo los roles personalizados se pueden asociar con roles definidos por el sistema.

ORGADMIN es un rol del sistema distinto que supervisa las operaciones de toda la organización. La jerarquía de roles del sistema no contiene este rol.

Jerarquía de funciones y herencia de privilegios

Ejemplo de jerarquía de roles y herencia de privilegios:

Ejemplo: jerarquía de funciones y herencia de privilegios
Ejemplo: jerarquía de funciones y herencia de privilegios

En el ejemplo anterior,

  • El rol 2 hereda el privilegio ‘Seleccionar’.
  • El rol 1 hereda los privilegios ‘Seleccionar’ y ‘Crear’.
  • Al usuario 1 se le ha asignado el rol 1, lo que significa los tres privilegios.
  • Al usuario 2 se le ha asignado el Rol-2, lo que significa privilegios de ‘Seleccionar’ y ‘Crear’.

Nota: Se otorgarán privilegios a los roles y se otorgarán roles a los usuarios para determinar las acciones/operaciones que los usuarios pueden realizar en los objetos del sistema.

4. Cómo crear roles personalizados

Aquí vamos a crear los roles personalizados que discutimos anteriormente. Podemos crear reglas desde WebUI de Snowflake o usando CLI de SnowSQL cliente Primero, veremos la forma gráfica.

4.1 Crear roles desde Snowflake WebUI

Puede ver los roles definidos por el sistema en la interfaz de usuario de Snowflake. Snowflake-UI 🡪 Cuenta 🡪 Roles.

Ver funciones
Ver funciones

Crear un nuevo Rol llamado ‘dev_ostechnix’Para ello, acceda a Snowflake-UI 🡪 Cuenta 🡪 Roles 🡪 Crear.

Crear rol
Crear rol

Complete el nombre del rol, seleccione el rol principal y comente sobre este rol.

Definir las propiedades del rol
Definir las propiedades del rol

El nuevo rol ‘dev_ostechnix’ se creará una vez que presione el botón ‘Finalizar’.

Hemos creado este rol personalizado con el rol definido por el sistema ‘ADMINISTRADOR DE CUENTA’. Actualmente, no se ha otorgado este rol a ningún usuario. Como el rol principal es SYSADMIN, el rol ‘dev_ostechnix’ se otorga a ‘ADMINISTRADOR DEL SISTEMA’.

Nuevo rol creado
Nuevo rol creado

4.2 Crear roles desde la línea de comandos usando SnowSQL

Conecte Snowflake con SnowSQL usando el siguiente comando:

# snowsql -a uz64318.southeast-asia.azure -u OSTECHNIX

Ingrese la contraseña de su cuenta:

Password:
* SnowSQL * v1.2.21
Type SQL statements or !help
OSTECHNIX#[email protected](no database).(no schema)>
Conecte Snowflake con SnowSQL
Conecte Snowflake con SnowSQL

ADMINISTRADOR DE CUENTA es el rol de superprivilegio, hemos iniciado sesión con este rol. Ahora vamos a crear un rol personalizado para el rol ADMINISTRADOR DE CUENTA.

Puede verificar el rol actual usando el siguiente comando:

OSTECHNIX#[email protected](no database).(no schema)>select current_role();
+----------------+
| CURRENT_ROLE() |
|----------------|
| ACCOUNTADMIN   |
+----------------+
1 Row(s) produced. Time Elapsed: 0.133s
OSTECHNIX#[email protected](no database).(no schema)>
Comprobar rol actual
Comprobar rol actual

Crear el rol ‘TEST_OSTECHNIX’ con el comentario ‘rol de probador’ usando el siguiente comando.

OSTECHNIX#[email protected](no database).(no schema)>CREATE ROLE "TEST_OSTECHNIX" COMMENT = 'tester role';

Salida de muestra:

+-------------------------------------------+
| status                                    |
|-------------------------------------------|
| Role TEST_OSTECHNIX successfully created. |
+-------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.753s
OSTECHNIX#[email protected](no database).(no schema)>
Crear un nuevo rol desde la línea de comandos
Crear un nuevo rol desde la línea de comandos

Puede ver los roles usando el siguiente comando.

OSTECHNIX#[email protected](no database).(no schema)>show ROLES;
Mostrar todos los roles
Mostrar todos los roles

A partir de ahora, no se otorgan privilegios al rol ‘TEST_OSTECHNIX’.

Verifique las concesiones usando el siguiente comando.

OSTECHNIX#[email protected](no database).(no schema)>show grants to role TEST_OSTECHNIX;
Verificar los privilegios de concesión
Verificar los privilegios de concesión

5. Otorgar privilegios al rol

Cada categoría de objetos tendrá su propio conjunto de privilegios. Por ejemplo, ‘Almacén virtual’ tendrá los siguientes privilegios.

  • MODIFICAR: Permite alterar las propiedades del Almacén.
  • MONITOR: Permite monitorear las consultas que se ejecutan en el Almacén y el uso de sus estadísticas de Almacén.
  • FUNCIONAR: Permite cambiar el estado del Almacén como Detener, Iniciar, Suspender y Reanudar. También permite ver las consultas pasadas y presentes en el Almacén y abortar las consultas.
  • USO: Permite utilizar el Almacén, es decir, permite ejecutar las consultas en el Almacén.
  • PROPIEDAD: Permite el control total del Almacén. Solo un único rol puede tener este privilegio sobre un Objeto a la vez.
  • TODO: Permite todos los privilegios excepto el de PROPIEDAD.

Aquí estamos otorgando privilegios del objeto. ‘Almacén Virtual’ al rol que creamos arriba.

5.1 Otorgar privilegios al rol desde Snowflake WebUI

Puede cambiar el rol si el rol se le ha otorgado al rol. Como estamos usando el rol ADMINISTRADOR DE CUENTA, tendrá un súper control. Cambie el rol haciendo clic en las opciones debajo Cuenta en la esquina superior derecha.

Ahora estamos en el rol ‘ADMINISTRADOR DE CUENTA’, tendrá todos los privilegios sobre los Almacenes en el sistema.

Ver Almacén Virtual
Ver Almacén Virtual

Tan pronto como cambiamos el rol, podemos ver que el rol ‘DEV_OSTECHNIX’ no puede ver ningún almacén en el sistema. El rol ‘DEV_OSTECHNIX’ no tiene ningún privilegio.

Verificar privilegios
Verificar privilegios

Para otorgar privilegios, el usuario debe cambiar al rol que tiene privilegios para otorgar el rol. Como estamos usando ACCOUNT_ADMIN, estamos cambiando a él y otorgando privilegios al rol DEV_OSTECHNIX.

Seleccione la fila del Almacén al que desea otorgar privilegios, obtendrá una ventana emergente de privilegios de provisión en el lado derecho.

Otorgar privilegios
Otorgar privilegios

No se otorgan privilegios ahora. Haga clic en ‘Conceder privilegios’ para otorgar privilegios al rol.

Otorgar privilegios al rol
Otorgar privilegios al rol

Seleccione qué privilegio desea otorgar y seleccione el rol al que desea otorgar ese privilegio. Puede hacer clic en + símbolo en la parte superior derecha para agregar los privilegios a otorgar.

Aquí, otorgamos privilegios MODIFICAR y OPERAR al rol DEV_OSTECHNIX.

Privilegios otorgados al rol
Privilegios otorgados al rol

Puede verificar los privilegios cambiando el rol a DEV_OSTECHNIX.

Ver privilegios
Ver privilegios

5.2 Otorgue privilegios al rol mediante el cliente CLI de SnowSQL

Asegúrese de estar en el rol que debería tener privilegios para otorgar Aquí, estamos usando ACCOUNT_ADMIN en esta demostración.

OSTECHNIX#[email protected](no database).(no schema)>select current_role();
+----------------+
| CURRENT_ROLE() |
|----------------|
| ACCOUNTADMIN   |
+----------------+
1 Row(s) produced. Time Elapsed: 0.133s
OSTECHNIX#[email protected](no database).(no schema)>
Cambiar al rol ACCOUNT_ADMIN
Cambiar al rol ACCOUNT_ADMIN

Vea los almacenes disponibles en el sistema usando el siguiente comando ‘mostrar’.

OSTECHNIX#[email protected](no database).(no schema)>show WAREHOUSES;
Mostrar ALMACENES
Mostrar ALMACENES

Cambie el rol a TEST_OSTECHNIX.

OSTECHNIX#[email protected](no database).(no schema)>use role TEST_OSTECHNIX;
Cambiar rol
Cambiar rol

Verifique los privilegios sobre los Almacenes con solo visualizar los Almacenes.

Verificar privilegios desde la línea de comandos
Verificar privilegios desde la línea de comandos

A partir de ahora, no se otorgan privilegios al rol TEST_OSTECHNIX.

Para otorgar los privilegios, vuelva a cambiar al rol ACCOUNT_ADMIN.

OSTECHNIX#(no warehouse)@(no database).(no schema)>use role ACCOUNTADMIN;

Otorgue los privilegios en el Almacén ‘OSTECH_DEMO_3’ al rol TEST_OSTECHNIX.

OSTECHNIX#[email protected](no database).(no schema)>grant MODIFY, OPERATE on warehouse OSTECH_DEMO_3 to role TEST_OSTECHNIX;
Otorgar privilegios desde la línea de comandos
Otorgar privilegios desde la línea de comandos

Verifique los privilegios cambiando al rol TEST_OSTECHNIX.

OSTECHNIX#[email protected](no database).(no schema)>use role TEST_OSTECHNIX;
OSTECHNIX#(no warehouse)@(no database).(no schema)>show WAREHOUSES;
Mostrar ALMACENES Desde Línea de Comandos
Mostrar ALMACENES Desde Línea de Comandos

Ahora puede asegurarse de que el rol TEST_OSTECHNIX puede ver el Almacén OSTECH_DEMO_3 y está en estado Suspendido.

Inicie el Almacén usando el siguiente comando.

OSTECHNIX#(no warehouse)@(no database).(no schema)>alter WAREHOUSE OSTECH_DEMO_3 RESUME;
Iniciar almacén desde la línea de comandos
Iniciar almacén desde la línea de comandos

Verifique el estado usando el comando ‘mostrar’.

Mostrar el estado del almacén desde la línea de comandos
Mostrar el estado del almacén desde la línea de comandos

Ahora podemos asegurarnos de que el rol TEST_OSTECHNIX tiene los privilegios otorgados en el almacén OSTECH_DEMO_3.

Nota: Independientemente de las consultas que estemos usando en SnowSQL CLI, las mismas se pueden usar en la hoja de trabajo de Snowflake disponible en WebUI.

Hoja de trabajo de copo de nieve
Hoja de trabajo de copo de nieve

Conclusión

En este artículo, hemos analizado el control de acceso basado en funciones (RBAC) en Snowflake. Hemos demostrado que el RBAC simplemente crea funciones y otorga privilegios a funciones en el objeto ‘Almacén virtual’.

Del mismo modo, podemos aprovisionar el acceso a otros objetos como bases de datos, tablas, etc. Tendremos una comprensión detallada de la gestión de usuarios y el aprovisionamiento de acceso a los usuarios en el próximo artículo.

Recurso:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba