GNU/Linux >> Tutoriels Linux >  >> Linux

Contrôle d'accès basé sur les rôles Snowflake (RBAC) expliqué

Le contrôle d'accès est l'un des concepts cruciaux dans tous les environnements de base de données. Dans cet article, nous découvrirons le contrôle d'accès basé sur les rôles (RBAC) de Snowflake et comment créer des rôles personnalisés et accorder l'accès aux rôles à partir de l'interface utilisateur Web de Snowflake et à l'aide du client CLI SnowSQL.

1. Qu'est-ce que le contrôle d'accès basé sur les rôles (RBAC) ?

Flocon de neige fournit un contrôle d'accès basé sur les rôles (RBAC) en tant que mécanisme permettant d'accorder ou de refuser l'accès à divers objets et actions de base de données aux principaux de sécurité (utilisateurs, services, etc.).

2. Qu'est-ce que le rôle ?

Les rôles sont les entités qui peuvent accorder et révoquer des droits sur des objets sécurisables. Les utilisateurs se voient attribuer des rôles leur permettant d'entreprendre les activités nécessaires aux fonctions commerciales de leur organisation.

Un utilisateur peut se voir attribuer plusieurs rôles. Les utilisateurs peuvent échanger des rôles pour effectuer différentes tâches avec différents ensembles de droits.

Les rôles peuvent également être attribués à d'autres rôles, ce qui entraîne une hiérarchie des rôles. Des rôles personnalisés peuvent être créés par des utilisateurs disposant d'un accès approprié. Tous les rôles situés au-dessus de cette position dans la hiérarchie héritent des privilèges associés à ce rôle.

Dans un compte Snowflake, certains rôles définis par le système seront intégrés. Les rôles définis par le système ne peuvent pas être supprimés et les privilèges attribués à ces rôles ne peuvent pas être révoqués.

Il existe cinq rôles définis par le système, et Snowflake détermine quel "rôle" chaque rôle système doit remplir, quels utilisateurs doivent suivre.

  • ADMINISTRATEUR DE COMPTE : Le poste ACCOUNTADMIN combine les responsabilités SYSADMIN et SECURITYADMIN en une seule.
  • ORGADMIN : Au niveau organisationnel, il s'agit d'un rôle qui gère les opérations.
  • ADMINISTRATEUR DE SÉCURITÉ : Ce poste est responsable de la surveillance et de la gestion des utilisateurs et des rôles.
  • USERADMIN : Ce poste est chargé de créer des rôles et des utilisateurs.
  • SYSADMIN : Dans un compte, ce rôle a la capacité de construire des entrepôts, des bases de données et d'autres objets. SYSADMIN est censé cumuler tous les rôles personnalisés.
  • PUBLIQUE : Il s'agit d'un rôle qui est automatiquement attribué à tous les utilisateurs et rôles de votre compte.

Outre ces rôles définis par le système, on peut créer des rôles en fonction des besoins et attribuer des privilèges à ce rôle. C'est ce qu'on appelle les rôles personnalisés .

3. Hiérarchie des rôles et héritage des privilèges

Le diagramme suivant illustre comment les rôles définis par le système sont hiérarchisés et comment les rôles personnalisés peuvent être associés à des rôles définis par le système.

ORGADMIN est un rôle système distinct qui supervise les opérations à l'échelle de l'organisation. La hiérarchie des rôles système ne contient pas ce rôle.

Exemple de hiérarchie des rôles et d'héritage des privilèges :

Dans l'exemple ci-dessus,

  • Le rôle 2 hérite du privilège "Sélectionner".
  • Le rôle 1 hérite des privilèges "Sélectionner" et "Créer".
  • L'utilisateur 1 s'est vu attribuer le rôle 1, ce qui signifie les trois privilèges.
  • L'utilisateur 2 s'est vu attribuer le rôle 2, ce qui signifie les privilèges "Sélectionner" et "Créer".

Remarque : Des privilèges seront accordés aux rôles, et des rôles seront accordés aux utilisateurs, pour déterminer les actions/opérations que les utilisateurs peuvent effectuer sur les objets du système.

4. Comment créer des rôles personnalisés

Ici, nous allons créer les rôles personnalisés dont nous avons parlé précédemment. Nous pouvons créer des règles à partir de l'interface utilisateur Web de Snowflake ou à l'aide de SnowSQL CLI client. Tout d'abord, nous allons voir la manière graphique.

4.1. Créer des rôles à partir de Snowflake WebUI

Vous pouvez afficher les rôles définis par le système dans l'interface utilisateur de Snowflake. Accédez à Snowflake-UI 🡪 Compte 🡪 Rôles .

Créez un nouveau rôle nommé 'dev_ostechnix' . Pour ce faire, accédez à Snowflake-UI 🡪 Compte 🡪 Rôles 🡪 Créer .

Remplissez le nom du rôle, sélectionnez le rôle parent et commentez ce rôle.

Le nouveau rôle 'dev_ostechnix' sera créé une fois que vous aurez cliqué sur le bouton 'Terminer'.

Nous avons créé ce rôle personnalisé avec le rôle défini par le système 'ACCOUNTADMIN' . Actuellement, aucun utilisateur n'a reçu ce rôle. Comme le rôle parent est SYSADMIN, le rôle 'dev_ostechnix' est accordé à 'SYSADMIN' .

4.2. Créer des rôles à partir de la ligne de commande à l'aide de SnowSQL

Connectez Snowflake à SnowSQL à l'aide de la commande ci-dessous :

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

Saisissez le mot de passe de votre compte :

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

ACCOUNT ADMIN est le rôle super privilégié, nous nous sommes connectés avec ce rôle. Nous allons maintenant créer un rôle personnalisé par le rôle ACCOUNT ADMIN.

Vous pouvez vérifier le rôle actuel en utilisant la commande ci-dessous :

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)>

Créez le rôle 'TEST_OSTECHNIX' avec le commentaire 'rôle de testeur' en utilisant la commande ci-dessous.

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

Exemple de résultat :

+-------------------------------------------+
| status                                    |
|-------------------------------------------|
| Role TEST_OSTECHNIX successfully created. |
+-------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.753s
OSTECHNIX#[email protected](no database).(no schema)>

Vous pouvez afficher les rôles en utilisant la commande ci-dessous.

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

Pour l'instant, aucun privilège n'est accordé au rôle 'TEST_OSTECHNIX'.

Vérifiez les subventions à l'aide de la commande ci-dessous.

OSTECHNIX#[email protected](no database).(no schema)>show grants to role TEST_OSTECHNIX;

5. Accorder des privilèges au rôle

Chaque catégorie d'objets aura son propre ensemble de privilèges. Par exemple, 'Virtual Warehouse' aura les privilèges ci-dessous.

  • MODIFIER : Permet de modifier les propriétés de Warehouse.
  • SURVEILLANCE : Permet de surveiller les requêtes en cours d'exécution dans l'entrepôt et l'utilisation de ses statistiques d'entrepôt.
  • FAIRE FONCTIONNER : Permet de changer l'état de l'entrepôt comme Arrêter, Démarrer, Suspendre et Reprendre. Permet également d'afficher les requêtes passées et présentes dans l'entrepôt et d'abandonner les requêtes.
  • UTILISATION : Permet d'utiliser le Warehouse, c'est-à-dire permet d'exécuter les requêtes dans le Warehouse.
  • PROPRIÉTÉ : Permet un contrôle total de l'entrepôt. Un seul rôle peut avoir ce privilège sur un objet à la fois.
  • TOUS : Autorise tous les privilèges à l'exception de la PROPRIÉTÉ.

Ici, nous accordons les privilèges de l'objet 'Virtual Warehouse' au rôle que nous avons créé ci-dessus.

5.1. Accorder des privilèges au rôle à partir de l'interface Web Snowflake

Vous pouvez changer de rôle si le rôle a été accordé au rôle. Comme nous utilisons le rôle ACCOUNT ADMIN, il aura un super contrôle. Changez de rôle en cliquant sur les options sous Compte dans le coin supérieur droit.

Nous sommes maintenant dans le rôle 'ACCOUNT ADMIN'. Il aura tous les privilèges sur les entrepôts du système.

Dès que nous changeons de rôle, nous pouvons voir que le rôle 'DEV_OSTECHNIX' ne peut afficher aucun entrepôt dans le système. Le rôle 'DEV_OSTECHNIX' n'a aucun privilège.

Pour accorder des privilèges, l'utilisateur doit passer au rôle qui a des privilèges pour accorder le rôle. Comme nous utilisons ACCOUNT_ADMIN, nous y passons et accordons des privilèges au rôle DEV_OSTECHNIX.

Sélectionnez la ligne de l'entrepôt auquel vous souhaitez accorder des privilèges, vous obtiendrez une fenêtre contextuelle de privilèges d'approvisionnement sur le côté droit.

Aucun privilège n'est accordé actuellement. Cliquez sur "Accorder des privilèges" pour accorder des privilèges au rôle.

Sélectionnez le privilège que vous souhaitez accorder et sélectionnez le rôle auquel vous souhaitez accorder ce privilège. Vous pouvez cliquer sur + symbole en haut à droite pour ajouter les privilèges à accorder.

Ici, nous accordons les privilèges MODIFY et OPERATE au rôle DEV_OSTECHNIX.

Vous pouvez vérifier les privilèges en basculant le rôle sur DEV_OSTECHNIX.

5.2. Accorder des privilèges au rôle à l'aide du client CLI SnowSQL

Assurez-vous que vous êtes dans le rôle qui devrait avoir des privilèges à accorder. Ici, nous utilisons ACCOUNT_ADMIN dans cette démonstration.

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)>

Affichez les entrepôts disponibles dans le système en utilisant la commande 'show' ci-dessous.

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

Passez le rôle à TEST_OSTECHNIX.

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

Vérifiez les privilèges sur les entrepôts en visualisant simplement les entrepôts.

Pour l'instant, aucun privilège n'est accordé au rôle TEST_OSTECHNIX.

Pour accorder les privilèges, revenez au rôle ACCOUNT_ADMIN.

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

Accordez les privilèges sur l'entrepôt "OSTECH_DEMO_3" au rôle TEST_OSTECHNIX.

OSTECHNIX#[email protected](no database).(no schema)>grant MODIFY, OPERATE on warehouse OSTECH_DEMO_3 to role TEST_OSTECHNIX;

Vérifiez les privilèges en passant au rôle TEST_OSTECHNIX.

OSTECHNIX#[email protected](no database).(no schema)>use role TEST_OSTECHNIX;
OSTECHNIX#(no warehouse)@(no database).(no schema)>show WAREHOUSES;

Vous pouvez maintenant vous assurer que le rôle TEST_OSTECHNIX peut afficher l'entrepôt OSTECH_DEMO_3 et qu'il est à l'état suspendu.

Démarrez l'entrepôt en utilisant la commande ci-dessous.

OSTECHNIX#(no warehouse)@(no database).(no schema)>alter WAREHOUSE OSTECH_DEMO_3 RESUME;

Vérifiez l'état en utilisant la commande 'show'.

Nous pouvons maintenant nous assurer que le rôle TEST_OSTECHNIX dispose des privilèges accordés sur l'entrepôt OSTECH_DEMO_3.

Remarque : Quelles que soient les requêtes que nous utilisons dans SnowSQL CLI, elles peuvent être utilisées dans la feuille de calcul Snowflake disponible dans WebUI.

Conclusion

Dans cet article, nous avons abordé le contrôle d'accès basé sur les rôles (RBAC) dans Snowflake. Nous avons démontré que le RBAC crée simplement des rôles et accorde des privilèges au rôle sur l'objet 'Virtual Warehouse'.

De même, nous pouvons provisionner l'accès sur d'autres objets comme les bases de données, les tables, etc. Nous aurons une compréhension détaillée de la gestion des utilisateurs et de la provision d'accès aux utilisateurs dans le prochain article.


Linux
  1. Une introduction aux listes de contrôle d'accès Linux (ACL)

  2. [Linux] :Shellinabox – Un accès web à votre Terminal SSH

  3. RHCE Ansible Series #9 :Rôles Ansible

  4. Matrice d'autorisations RBAC (Role-Based Access Control) pour l'hébergement cloud

  5. Comment désactiver le contrôle d'accès client dans MySQL

Comment créer des rôles Ansible et les utiliser dans Playbook

Comment créer un groupe de sécurité (SG) et une liste de contrôle d'accès réseau (NACL) dans AWS

Listes de contrôle d'accès sur Linux expliquées

Comment accéder à mon panneau de configuration Managed.com ?

Comment accéder au panneau de contrôle de mon hébergement

Comment accéder au panneau de contrôle (Plesk)