GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erläuterung der rollenbasierten Zugriffskontrolle (Role Based Access Control, RBAC) von Snowflake

Die Zugriffskontrolle ist eines der entscheidenden Konzepte in allen Datenbankumgebungen. In diesem Artikel erfahren Sie mehr über die rollenbasierte Zugriffskontrolle (Role Based Access Control, RBAC) von Snowflake und wie Sie benutzerdefinierte Rollen erstellen und den Zugriff auf die Rollen über die Snowflake-WebUI und die Verwendung des SnowSQL-CLI-Clients gewähren.

1. Was ist rollenbasierte Zugriffskontrolle (RBAC)?

Schneeflocke bietet rollenbasierte Zugriffskontrolle (RBAC) als Mechanismus zum Gewähren oder Verweigern des Zugriffs auf verschiedene Datenbankobjekte und -aktionen für Sicherheitsprinzipale (Benutzer, Dienste usw.).

2. Was ist Rolle?

Rollen sind die Entitäten, die Rechte an sicherungsfähigen Objekten erteilen und entziehen können. Benutzern werden Rollen zugewiesen, damit sie Aktivitäten ausführen können, die für die Geschäftsfunktionen ihrer Organisation erforderlich sind.

Einem Benutzer können mehrere Rollen zugewiesen werden. Benutzer können Rollen tauschen, um verschiedene Aufgaben mit unterschiedlichen Rechten auszuführen.

Rollen können auch anderen Rollen zugeordnet werden, wodurch sich eine Rollenhierarchie ergibt. Benutzerdefinierte Rollen können von Benutzern mit entsprechendem Zugriff erstellt werden. Alle Rollen über dieser Position in der Hierarchie erben die mit dieser Rolle verbundenen Privilegien.

In einem Snowflake-Konto sind einige systemdefinierte Rollen integriert. Rollen, die vom System definiert sind, können nicht entfernt werden, und die diesen Rollen zugewiesenen Berechtigungen können nicht widerrufen werden.

Es gibt fünf vom System definierte Rollen, und Snowflake bestimmt, welche „Rolle“ jede Systemrolle erfüllen und welchen Benutzern sie folgen sollten.

  • ACCOUNTADMIN: Die Position ACCOUNTADMIN kombiniert die Verantwortlichkeiten SYSADMIN und SECURITYADMIN in einer.
  • ORGADMIN: Auf Organisationsebene ist dies eine Rolle, die den Betrieb verwaltet.
  • SICHERHEITADMIN: Diese Position ist für die Überwachung und Verwaltung von Benutzern und Rollen verantwortlich.
  • USERADMIN: Diese Position ist für die Erstellung von Rollen und Benutzern zuständig.
  • SYSADMIN: In einem Konto hat diese Rolle die Fähigkeit, Warehouses, Datenbanken und andere Objekte zu erstellen. SYSADMIN soll alle benutzerdefinierten Rollen aufrollen.
  • ÖFFENTLICH: Dies ist eine Rolle, die automatisch allen Benutzern und Rollen in Ihrem Konto zugewiesen wird.

Abgesehen von diesen systemdefinierten Rollen kann man Rollen nach Bedarf erstellen und dieser Rolle Privilegien zuweisen. Dies wird als benutzerdefinierte Rollen bezeichnet .

3. Rollenhierarchie und Rechtevererbung

Das folgende Diagramm zeigt, wie die systemdefinierten Rollen hierarchisiert sind und wie die benutzerdefinierten Rollen mit systemdefinierten Rollen verknüpft werden können.

ORGADMIN ist eine eigenständige Systemrolle, die organisationsweite Vorgänge überwacht. Die Hierarchie der Systemrollen enthält diese Rolle nicht.

Beispiel für Rollenhierarchie und Rechtevererbung:

Im obigen Beispiel

  • Rolle 2 erbt die Berechtigung „Auswählen“.
  • Rolle 1 erbt die Privilegien „Auswählen“ und „Erstellen“.
  • Benutzer 1 wurde Rolle-1 zugewiesen, was alle drei Privilegien bedeutet.
  • Benutzer 2 wurde Rolle-2 zugewiesen, was die Berechtigungen „Auswählen“ und „Erstellen“ bedeutet.

Hinweis: Privilegien werden Rollen gewährt und Rollen werden Benutzern gewährt, um die Aktionen/Operationen zu bestimmen, die die Benutzer an Objekten im System ausführen können.

4. So erstellen Sie benutzerdefinierte Rollen

Hier werden wir die benutzerdefinierten Rollen erstellen, die wir zuvor besprochen haben. Wir können Regeln über die WebUI von Snowflake oder mithilfe der SnowSQL-Befehlszeilenschnittstelle erstellen Klient. Zuerst sehen wir den grafischen Weg.

4.1. Erstellen Sie Rollen über die Snowflake-WebUI

Sie können die vom System definierten Rollen in der Snowflake-Benutzeroberfläche anzeigen. Gehen Sie zu Snowflake-UI 🡪 Konto 🡪 Rollen .

Erstellen Sie eine neue Rolle namens 'dev_ostechnix' . Gehen Sie dazu zu Snowflake-UI 🡪 Konto 🡪 Rollen 🡪 Erstellen .

Geben Sie den Rollennamen ein, wählen Sie die übergeordnete Rolle aus und kommentieren Sie diese Rolle.

Die neue Rolle „dev_ostechnix“ wird erstellt, sobald Sie auf die Schaltfläche „Fertig stellen“ klicken.

Wir haben diese benutzerdefinierte Rolle mit der systemdefinierten Rolle 'ACCOUNTADMIN' erstellt . Derzeit wurde diese Rolle keinem Benutzer gewährt. Da die übergeordnete Rolle SYSADMIN ist, wird die Rolle 'dev_ostechnix' an 'SYSADMIN' vergeben .

4.2. Erstellen Sie Rollen über die Befehlszeile mit SnowSQL

Verbinden Sie Snowflake mit SnowSQL mit dem folgenden Befehl:

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

Geben Sie Ihr Kontopasswort ein:

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

ACCOUNT ADMIN ist die Superprivileg-Rolle, wir haben uns mit dieser Rolle angemeldet. Jetzt erstellen wir eine benutzerdefinierte Rolle mit der Rolle ACCOUNT ADMIN.

Sie können die aktuelle Rolle mit dem folgenden Befehl überprüfen:

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

Erstellen Sie die Rolle 'TEST_OSTECHNIX' mit dem Kommentar 'Testerrolle' mit dem folgenden Befehl.

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

Beispielausgabe:

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

Sie können die Rollen mit dem folgenden Befehl anzeigen.

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

Ab sofort werden der Rolle 'TEST_OSTECHNIX' keine Privilegien gewährt.

Überprüfen Sie die Erteilungen mit dem folgenden Befehl.

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

5. Gewähren Sie der Rolle Berechtigungen

Jede Objektkategorie hat ihre eigenen Privilegien. Beispielsweise hat „Virtual Warehouse“ die folgenden Berechtigungen.

  • ÄNDERN: Ermöglicht das Ändern der Eigenschaften von Warehouse.
  • ÜBERWACHUNG: Ermöglicht die Überwachung der im Warehouse ausgeführten Abfragen und der Nutzungsstatistik des Warehouse.
  • BETRIEB: Ermöglicht das Ändern des Status des Warehouses wie Stop, Start, Suspend &Resume. Ermöglicht auch das Anzeigen vergangener und aktueller Abfragen im Warehouse und das Abbrechen der Abfragen.
  • VERWENDUNG: Erlaubt die Nutzung des Warehouse, dh erlaubt die Abfragen im Warehouse auszuführen.
  • EIGENTUM: Ermöglicht die vollständige Kontrolle über das Warehouse. Nur eine einzige Rolle kann diese Berechtigung für ein Objekt gleichzeitig haben.
  • ALLE: Erlaubt alle Privilegien außer OWNERSHIP.

Hier vergeben wir Privilegien für das Objekt 'Virtual Warehouse' zu der Rolle, die wir oben erstellt haben.

5.1. Gewähren Sie der Rolle Berechtigungen von der Snowflake-WebUI

Sie können die Rolle wechseln, wenn die Rolle der Rolle zugewiesen wurde. Da wir die Rolle ACCOUNT ADMIN verwenden, hat sie die Superkontrolle. Wechseln Sie die Rolle, indem Sie auf die Optionen unter Konto klicken in der oberen rechten Ecke.

Jetzt befinden wir uns in der Rolle „ACCOUNT ADMIN“. Es wird alle Privilegien für die Warehouses im System haben.

Sobald wir die Rolle wechseln, sehen wir, dass die Rolle 'DEV_OSTECHNIX' keine Warehouses im System anzeigen kann. Rolle 'DEV_OSTECHNIX' hat keine Privilegien.

Um Berechtigungen zu erteilen, muss der Benutzer zu der Rolle wechseln, die über Berechtigungen zum Erteilen der Rolle verfügt. Da wir ACCOUNT_ADMIN verwenden, wechseln wir zu diesem und gewähren der Rolle DEV_OSTECHNIX.

Berechtigungen

Wählen Sie die Zeile des Lagers aus, dem Sie Berechtigungen erteilen möchten. Auf der rechten Seite wird ein Popup-Fenster mit Bereitstellungsberechtigungen angezeigt.

Es werden jetzt keine Privilegien gewährt. Klicken Sie auf „Berechtigungen gewähren“, um der Rolle Berechtigungen zu erteilen.

Wählen Sie aus, welches Privileg Sie gewähren möchten, und wählen Sie die Rolle aus, der Sie dieses Privileg gewähren möchten. Sie können auf + klicken oben rechts, um die zu gewährenden Privilegien hinzuzufügen.

Hier erteilen wir der Rolle DEV_OSTECHNIX die Rechte MODIFY und OPERATE.

Sie können die Berechtigungen überprüfen, indem Sie die Rolle auf DEV_OSTECHNIX.

ändern

5.2. Erteilen Sie der Rolle mithilfe des SnowSQL-CLI-Clients Berechtigungen

Stellen Sie sicher, dass Sie sich in der Rolle befinden, die Berechtigungen gewähren sollte. Hier verwenden wir ACCOUNT_ADMIN in dieser Demonstration.

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

Zeigen Sie die im System verfügbaren Warenlager an, indem Sie den folgenden Befehl „Anzeigen“ verwenden.

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

Wechseln Sie die Rolle zu TEST_OSTECHNIX.

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

Überprüfen Sie die Berechtigungen für die Warehouses, indem Sie sich einfach die Warehouses ansehen.

Ab sofort werden der Rolle TEST_OSTECHNIX keine Privilegien gewährt.

Um die Privilegien zu vergeben, wechseln Sie zurück in die Rolle ACCOUNT_ADMIN.

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

Gewähren Sie der Rolle TEST_OSTECHNIX die Berechtigungen für das Warehouse „OSTECH_DEMO_3“.

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

Überprüfen Sie die Berechtigungen, indem Sie in die Rolle TEST_OSTECHNIX wechseln.

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

Jetzt können Sie sicherstellen, dass die Rolle TEST_OSTECHNIX das Warehouse OSTECH_DEMO_3 anzeigen kann und sich im Status Suspended befindet.

Starten Sie das Warehouse mit dem folgenden Befehl.

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

Überprüfen Sie den Status mit dem Befehl „show“.

Jetzt können wir sicherstellen, dass die Rolle TEST_OSTECHNIX die gewährten Berechtigungen für das Warehouse OSTECH_DEMO_3 hat.

Hinweis: Unabhängig davon, welche Abfragen wir in der SnowSQL-Befehlszeilenschnittstelle verwenden, können dieselben im Snowflake-Arbeitsblatt verwendet werden, das in der WebUI verfügbar ist.

Schlussfolgerung

In diesem Artikel haben wir die rollenbasierte Zugriffssteuerung (RBAC) in Snowflake durchlaufen. Wir haben demonstriert, dass RBAC einfach Rollen erstellt und Berechtigungen für Rollen für das Objekt „Virtual Warehouse“ gewährt.

In ähnlicher Weise können wir den Zugriff auf andere Objekte wie Datenbanken, Tabellen usw. bereitstellen. Im nächsten Artikel erfahren Sie mehr über die Benutzerverwaltung und die Bereitstellung des Zugriffs für Benutzer.


Linux
  1. Zugriffskontrolllisten und externe Laufwerke unter Linux:Was Sie wissen müssen

  2. Suchen und sortieren Sie Dateien basierend auf Zugriff, Änderungsdatum und -zeit in Linux

  3. Eine Einführung in Linux Access Control Lists (ACLs)

  4. TCP-Wrapper

  5. [Linux] :Shellinabox – Ein webbasierter Zugang zu Ihrem SSH-Terminal

So erstellen Sie Ansible-Rollen und verwenden sie im Playbook

So erstellen Sie eine Sicherheitsgruppe (SG) und eine Netzwerkzugriffskontrollliste (NACL) in AWS

Zugriffssteuerungslisten unter Linux erklärt

Wie greife ich auf mein Managed.com Control Panel zu?

Zugriff auf mein Hosting-Kontrollfeld

Zugriff auf die Systemsteuerung (Plesk)