Übersicht zur Zugriffssteuerung

Unter diesem Thema finden Sie Informationen zu den wichtigsten Aspekten der Zugriffssteuerung in Snowflake.

Unter diesem Thema:

Framework für die Zugriffssteuerung

Der Ansatz von Snowflake für die Zugriffssteuerung kombiniert Aspekte aus den folgenden Modellen:

  • Diskretionäre Zugriffssteuerung (DAC): Jedes Objekt hat einen Eigentümer, der wiederum Zugriff auf dieses Objekt gewähren kann.

  • Rollenbasierte Zugriffssteuerung (RBAC): Zugriffsrechte werden Rollen zugewiesen, die wiederum Benutzern zugewiesen werden.

  • Benutzerbasierte Zugriffssteuerung (UBAC): Die Zugriffsrechte werden den Benutzern direkt zugewiesen. Die Zugriffssteuerung berücksichtigt Berechtigungen, die Benutzern direkt zugewiesen werden, nur, wenn USE SECONDARY ROLE auf ALL gesetzt ist.

Weitere Informationen über Sekundärrollen finden Sie unter USE SECONDARY ROLES und Autorisierung durch Primärrolle und Sekundärrollen.

Einige Konzepte, die für das Verständnis der Zugriffssteuerung in Snowflake wichtig sind, sind:

  • Sicherungsfähiges Objekt: Eine Entität, der Zugriff gewährt werden kann. Solange keine Erlaubnis erteilt wurde, wird der Zugriff verweigert.

  • Rolle: Eine Entität, der Berechtigungen erteilt werden können.

  • Berechtigung: Eine definierte Zugriffsebene auf ein Objekt. Es können mehrere unterschiedliche Berechtigungen verwendet werden, um die Granularität des gewährten Zugriffs zu steuern.

  • Benutzer: Eine Benutzeridentität, die von Snowflake erkannt wird, unabhängig davon, ob sie mit einer Person oder einem Dienst verbunden ist. Ein Benutzer ist auch eine Entität, der Berechtigungen erteilt werden können.

In Snowflake ermöglichen Berechtigungen, die Rollen oder Benutzern zugewiesen werden, den Zugriff auf sicherungsfähige Objekte. Rollen können Benutzern oder anderen Rollen zugewiesen werden. Durch die Vergabe einer Rolle an eine andere Rolle entsteht eine Rollenhierarchie, die unter Rollenhierarchie und Vererbung von Berechtigungen näher beschrieben wird. Normalerweise verwenden Sie RBAC, um den Zugriff auf sicherungsfähige Objekte in Snowflake zu verwalten.

Das folgende Diagramm veranschaulicht, wie DAC, RBAC und UBAC eine angemessene Zuweisung von Berechtigungen für verschiedene sicherungsfähige Objekte unterstützen. In diesem Beispiel hat die Rolle 1 die Berechtigung OWNERSHIP sowohl für Objekt 1 als auch für Objekt 2. Mit anderen Worten: Rolle 1 ist Eigentümer beider Objekte. Dies veranschaulicht DAC.

Berechtigungen auf Objekt 1 können an die Rolle 2 vergeben werden, die dann an Benutzer 1 und Benutzer 2 vergeben werden kann. Mit anderen Worten: Benutzer 1 und Benutzer 2 haben Zugriff auf Objekt 1, eingeschränkt durch diese Berechtigungen, da beiden Benutzern die Rolle 2 zugewiesen ist. Dieser Teil der Abbildung veranschaulicht RBAC.

Berechtigungen auf Objekt 2 können direkt an Benutzer 3 und Benutzer 4 vergeben werden. Dieser Teil der Abbildung veranschaulicht, wie Sie UBAC verwenden können, um das Snowflake-Zugriffssteuerungssystem zu erweitern und so ein hohes Maß an Kontrolle und Flexibilität zu erreichen.

Beziehungen zur Zugriffssteuerung

Sicherungsfähige Objekte

Jedes sicherungsfähige Objekt befindet sich innerhalb eines logischen Containers in einer Hierarchie von Containern. Der oberste Container ist die Kundenorganisation. Sicherungsfähige Objekte wie Tabellen, Ansichten, Funktionen und Stagingbereiche sind in einem Schemaobjekt enthalten, das wiederum in einer Datenbank enthalten ist. Alle Datenbanken für Ihr Snowflake-Konto sind im Kontoobjekt enthalten. Diese Hierarchie von Objekten und Containern ist im Folgenden dargestellt:

Hierarchie der sicherungsfähigen Datenbankobjekte

Ein Objekt zu besitzen bedeutet, dass eine Rolle die OWNERSHIP-Berechtigung für das Objekt hat. Jedes sicherungsfähige Objekt ist Eigentum einer einzigen Rolle, die standardmäßig die Rolle ist, mit der das Objekt erstellt wurde. Wenn diese Rolle Benutzern zugewiesen wird, haben sie effektiv die gemeinsame Kontrolle über das Objekt. Mit dem Befehl GRANT OWNERSHIP können Sie die Eigentümerschaft eines Objekts von einer Rolle auf eine andere Rolle übertragen, auch auf Datenbankrollen. Dieser Befehl gibt auch an, welche Objekte im jeweiligen Container sicherungsfähig sind.

In einem typischen Schema verfügt die Rolle des Eigentümers standardmäßig über alle Berechtigungen für das Objekt, einschließlich der Möglichkeit, anderen Rollen Berechtigungen für das Objekt zu erteilen oder zu entziehen. Darüber hinaus kann das Eigentum einer Rolle auf eine andere Rolle übertragen werden. In einem verwalteten Zugriffsschema verlieren Objekteigentümer die Möglichkeit, Berechtigungsentscheidungen zu treffen. Nur der Schemaeigentümer (die Rolle mit der Berechtigung OWNERSHIP für das Schema) oder eine Rolle mit der Berechtigung MANAGE GRANTS kann Berechtigungen für Objekte im Schema erteilen.

Die Möglichkeit, SQL-Aktionen für Objekte auszuführen, wird durch die Berechtigungen definiert, die der aktiven Rolle in einer Benutzersitzung gewährt werden. Wenn die aktive Rolle in Ihrer Sitzung beispielsweise über die Berechtigungen CREATE, USAGE, SELECT und WRITE in einem bestimmten Snowflake-Datenbankschema verfügt, können Sie ein Warehouse erstellen, die enthaltenen Tabellen auflisten und Daten zu einer Tabelle in diesem Schema hinzufügen.

Rollen

Rollen sind die Entitäten, denen Berechtigungen für sicherungsfähige Objekte erteilt und entzogen werden können. Rollen werden Benutzern zugewiesen, damit sie die für Geschäftsfunktionen in ihrer Organisation erforderlichen Aktionen ausführen können. Einem Benutzer können mehrere Rollen zugewiesen werden. Dies ermöglicht es Benutzern, die Rolle zu wechseln (d. h. zu wählen, welche Rolle in der aktuellen Snowflake-Sitzung aktiv ist), um verschiedene Aktionen mit unterschiedlichen Berechtigungen durchzuführen.

Es gibt eine kleine Anzahl von systemdefinierten Rollen in jedem Snowflake-Konto. Systemdefinierte Rollen können nicht gelöscht werden. Darüber hinaus können die diesen Rollen von Snowflake erteilten Berechtigungen nicht widerrufen werden.

Benutzer, denen eine Rolle mit den erforderlichen Berechtigungen zugewiesen wurde, können kundenspezifische Rollen erstellen, um spezifische Geschäfts- und Sicherheitsanforderungen zu erfüllen.

Rollen können auch anderen Rollen zugewiesen werden, wodurch eine Hierarchie von Rollen entsteht. Die mit einer Rolle verbundenen Berechtigungen werden von allen Rollen vererbt, die in der Hierarchie über dieser Rolle liegen. Weitere Informationen über Rollenhierarchien und die Vererbung von Berechtigungen finden Sie unter Rollenhierarchie und Vererbung von Berechtigungen.

Bemerkung

Ein Rollenbesitzer (die Rolle, die über die Berechtigung OWNERSHIP für die Rolle verfügt) erbt nicht die Berechtigungen der eigenen Rolle. Die Vererbung von Berechtigungen ist nur innerhalb einer Rollenhierarchie möglich.

Den systemdefinierten Rollen können zusätzliche Berechtigungen erteilt werden, was jedoch nicht empfohlen wird. Systemdefinierte Rollen werden mit Berechtigungen in Bezug auf die Kontoverwaltung erstellt. Es wird nicht empfohlen, Berechtigungen zur Kontoverwaltung und entitätsspezifische Berechtigungen in ein und derselben Rolle zu kombinieren. Wenn zusätzliche Berechtigungen benötigt werden, empfiehlt Snowflake, diese zusätzlichen Berechtigungen einer kundenspezifischen Rolle zu erteilen und diese kundenspezifische Rolle dann der systemdefinierten Rolle zuzuweisen.

Tipp

Mithilfe von Organisationsbenutzergruppen können Sie konsistente Rollen für alle Konten innerhalb einer Organisation einrichten. Weitere Informationen dazu finden Sie unter Organisationsbenutzer.

Typen von Rollen

Die folgenden Rollentypen unterscheiden sich in ihrem Bereich, der es Administratoren ermöglicht, den Zugriff auf Objekte in Ihrem Konto zu autorisieren und einzuschränken.

Bemerkung

Sofern in der Produktdokumentation nicht anders angegeben, bezieht sich der Begriff Rolle auf einen der beiden Typen.

Kontorollen:

Um SQL-Aktionen auf beliebigen Objekten in Ihrem Konto zuzulassen, erteilen Sie einer Kontorolle Berechtigungen für das Objekt.

Datenbankrollen:

Um SQL-Aktionen auf eine einzelne Datenbank und auf ein beliebiges Objekt in der Datenbank zu beschränken, erteilen Sie einer Datenbankrolle in derselben Datenbank Berechtigungen für das Objekt.

Beachten Sie, dass Datenbankrollen nicht direkt in einer Sitzung aktiviert werden können. Weisen Sie die Datenbankrollen den Kontorollen zu, die in einer Sitzung aktiviert werden können.

Weitere Informationen zu Datenbankrollen finden Sie unter:

Instanzrollen:

Um den Zugriff auf eine Instanz einer Klasse zu ermöglichen, weisen Sie einer Kontorolle eine Instanzrolle zu.

Eine Klasse kann eine oder mehrere Klassenrollen haben, wobei jeder Rolle unterschiedliche Berechtigungen zugewiesen werden. Wenn eine Instanz einer Klasse erstellt wird, können die Instanzrollen den Kontorollen zugewiesen werden, um den Zugriff auf Instanzmethoden zu gewähren.

Beachten Sie, dass Instanzrollen nicht direkt in einer Sitzung aktiviert werden können. Weisen Sie Kontorollen die Instanzrollen zu, die in einer Sitzung aktiviert werden können.

Weitere Informationen dazu finden Sie unter Instanzrollen.

Anwendungsrollen:

Um den Verbraucherzugriff auf Objekte in einer Snowflake Native App zu ermöglichen, erstellt der Anbieter die Anwendungsrolle und weist der Anwendungsrolle im Setup-Skript Berechtigungen zu.

Um jedoch spezifische Funktionen für ein bestimmtes Feature zu unterstützen, wie z. B. die Gewährung von Zugriff auf Objekte, deren Eigentümer Snowflake ist, kann Snowflake eine oder mehrere Systemanwendungsrollen bereitstellen. Sie können die Systemanwendungsrollen nach eigenem Ermessen den Kontorollen zuweisen.

Systemanwendungsrollen werden im Zusammenhang mit einem bestimmten Feature erörtert, weil dieses Feature der einzige Ort ist, an dem Sie die Systemanwendungsrollen verwenden können. Beispiel:

Dienstrollen:

Um einer Rolle den Zugriff auf Dienstendpunkte zu ermöglichen, weisen Sie dieser Rolle die Dienstrolle zu. Sie können eine Dienstrolle einer Konto-, Anwendungs- oder Datenbankrolle zuweisen. Weitere Informationen dazu finden Sie unter Verwaltung dienstbezogener Berechtigungen.

Aktive Rollen

Aktive Rollen dienen als Quelle der Autorisierung für jede Aktion, die ein Benutzer in einer Sitzung ausführt. Sowohl die Primärrolle als auch alle Sekundärrollen können in einer Benutzersitzung aktiviert werden.

Eine Rolle wird auf eine der folgenden Arten zu einer aktiven Rolle:

  • Wenn eine Sitzung zum ersten Mal ausgeführt wird, werden die Standardrolle und die Standard-Sekundärrollen des Benutzers als Primär- bzw. Sekundärrollen der Sitzung aktiviert.

    Beachten Sie, dass die Eigenschaften der Clientverbindung, die zum Einrichten der Sitzung verwendet werden, explizit die zu verwendende Primärrolle oder die zu verwendenden Sekundärrollen überschreiben können.

  • Das Ausführen einer USE ROLE- oder USE SECONDARY ROLES-Anweisung aktiviert eine andere Primärrolle bzw. andere Sekundärrollen. Diese Rollen können sich im Laufe einer Sitzung ändern, falls einer der beiden Befehle erneut ausgeführt wird.

Systemdefinierte Rollen

GLOBALORGADMIN:

(Organisationsadministrator)

Rolle, die Aufgaben auf Organisationsebene ausführt, z. B. die Verwaltung des Lebenszyklus von Konten und die Anzeige von Nutzungsinformationen auf Organisationsebene. Die Rolle existiert nur im Konto der Organisation

ORGADMIN:

Rolle, die ein reguläres Konto verwendet, um Operationen auf Organisationsebene zu verwalten. Die Rolle ORGADMIN wird in einem zukünftigen Release auslaufen. Administratoren von Organisationen wird daher empfohlen, stattdessen die Rolle GLOBALORGADMIN zu verwenden.

ACCOUNTADMIN:

(Kontoadministrator)

Rolle, die die vom System definierten Rollen SYSADMIN und SECURITYADMIN kapselt. Dies ist die oberste Rolle im System und sollte nur einer begrenzten/kontrollierten Anzahl von Benutzern in Ihrem Konto zugewiesen werden.

SECURITYADMIN:

(Sicherheitsadministrator)

Rolle, die jede erteilte Objektberechtigung global verwalten sowie Benutzer und Rollen erstellen, überwachen und verwalten kann. Dabei gilt Folgendes:

  • Die Rolle wird die Sicherheitsberechtigung MANAGE GRANTS erteilt, um jede Berechtigung ändern zu können, einschließlich des Widerrufs.

    Bemerkung

    Die Berechtigung MANAGE GRANTS bietet die Möglichkeit, Berechtigungen zu gewähren und zu widerrufen. Sie gibt SECURITYADMIN nicht die Möglichkeit, andere Aktionen wie das Erstellen von Objekten durchzuführen. Um ein Objekt zu erstellen, muss die Rolle SECURITYADMIN auch die Berechtigungen erhalten, die zum Erstellen des Objekts erforderlich sind. Um beispielsweise eine Datenbankrolle zu erstellen, muss SECURITYADMIN auch die Berechtigung CREATE DATABASE ROLE erhalten, wie in CREATE DATABASE ROLE Zugriffssteuerungsanforderungen beschrieben.

  • Erbt die Berechtigungen der Rolle USERADMIN über die Systemrollenhierarchie (d. h. die Rolle USERADMIN wird an SECURITYADMINvergeben).

USERADMIN:

(Benutzer- und Rollenadministrator)

Rolle, die nur der Benutzer- und Rollenverwaltung gewidmet ist. Dabei gilt Folgendes:

  • Der Rolle werden die Sicherheitsberechtigungen CREATE USER und CREATE ROLE erteilt.

  • Die Rolle kann Benutzer und Rollen im Konto erstellen.

    Die Rolle kann auch Benutzer und Rollen verwalten, deren Eigentümer sie ist. Nur die Rolle mit der Berechtigung OWNERSHIP für ein Objekt (d. h. Benutzer oder Rolle) oder eine höhere Rolle kann die Objekteigenschaften ändern.

SYSADMIN:

(Systemadministrator)

Rolle, die die Berechtigung hat, Warehouses und Datenbanken (und andere Objekte) in einem Konto zu erstellen.

Wenn Sie wie empfohlen eine Rollenhierarchie erstellen, die letztendlich alle kundenspezifischen Rollen der SYSADMIN-Rolle zuordnet, hat diese Rolle auch die Möglichkeit, anderen Rollen Berechtigungen für Warehouses, Datenbanken und andere Objekte zu erteilen.

PUBLIC:

Pseudorolle, die automatisch jedem Benutzer und jeder Rolle in Ihrem Konto zugewiesen wird. Die Rolle PUBLIC kann wie jede andere Rolle sicherungsfähige Objekte besitzen. Allerdings stehen Objekte, die sich im Eigentum dieser Rolle befinden, per Definition jedem anderen Benutzer und jeder anderen Rolle in Ihrem Konto zur Verfügung.

Diese Rolle wird typischerweise in Fällen verwendet, in denen keine explizite Zugriffssteuerung erforderlich ist und alle Benutzer in Bezug auf ihre Zugriffsrechte als gleichwertig angesehen werden.

Kundenspezifische Rollen

Kundenspezifische Kontorollen können sowohl mit der USERADMIN-Rolle (oder höher) als auch mit jeder Rolle erstellt werden, der die Berechtigung CREATE ROLE erteilt wurde.

Benutzerdefinierte Datenbankrollen können vom Datenbankeigentümer (d. h. der Rolle, die die Berechtigung OWNERSHIP für die Datenbank hat) erstellt werden.

Standardmäßig ist eine neu erstellte Rolle weder einem Benutzer noch einer anderen Rolle zugewiesen.

Beim Erstellen von Rollen, die als Eigentümer von sicherungsfähigen Objekten im System dienen, empfiehlt Snowflake, eine Hierarchie von kundenspezifischen Rollen zu erstellen, wobei die oberste kundenspezifische Rolle der Systemrolle SYSADMIN zugeordnet ist. Mit dieser Rollenstruktur können Systemadministratoren alle Objekte im Konto verwalten, z. B. Warehouses und Datenbankobjekte, während die Verwaltung von Benutzern und Rollen auf die Rolle USERADMIN beschränkt wird.

Wenn umgekehrt eine kundenspezifische Rolle SYSADMIN nicht über eine Rollenhierarchie zugeordnet wird, können die Systemadministratoren die der Rolle gehörenden Objekte nicht verwalten. Nur Rollen, denen die Berechtigung MANAGE GRANTS erteilt wurde (standardmäßig nur die Rolle SECURITYADMIN), können die Objekte anzeigen und deren Zugriffsrechte ändern.

Eine Anleitung zum Erstellen kundenspezifischer Rollen finden Sie unter Erstellen von kundenspezifischen Rollen.

Berechtigungen

Die Zugriffssteuerungsrechte bestimmen, wer auf bestimmte Objekte in Snowflake zugreifen und Operationen darauf durchführen darf. Für jedes sicherungsfähige Objekt gibt es einen Satz von Berechtigungen, die diesem Objekt erteilt werden können. Für bestehende Objekte müssen Berechtigungen für einzelne Objekte erteilt werden (z. B. die SELECT-Berechtigung für die Tabelle mytable). Um die Verwaltung von Berechtigungen zu vereinfachen, ermöglichen zukünftige Berechtigungen die Definition einer anfänglichen Reihe von Berechtigungen für Objekte, die in einem Schema erstellt werden (z. B. die Gewährung der SELECT-Berechtigung für alle neuen Tabellen, die im Schema myschema erstellt werden, an eine bestimmte Rolle).

Die Berechtigungen werden mit den folgenden Befehlen verwaltet:

In regulären (nicht verwalteten) Schemas ist die Verwendung dieser Befehle auf die Rolle beschränkt, die Eigentümer eines Objekts ist (mit der Berechtigung OWNERSHIP für das Objekt), sowie auf alle Rollen oder Benutzer, die über die globale Berechtigung MANAGE GRANTS für das Objekt verfügen (standardmäßig nur die Rolle SECURITYADMIN).

In verwalteten Zugriffsschemas verlieren Objekteigentümer die Möglichkeit, Berechtigungsentscheidungen zu treffen. Nur der Schemaeigentümer oder eine Rolle mit der Berechtigung MANAGE GRANTS kann Berechtigungen für Objekte im Schema, einschließlich zukünftiger Zuweisungen, erteilen, wodurch die Berechtigungsverwaltung zentralisiert wird.

Beachten Sie, dass eine Rolle mit der globalen Berechtigung MANAGE GRANTS der aktuellen (Berechtigungsgeber-)Rolle keine zusätzlichen Berechtigungen erteilen kann.

Weitere Details dazu finden Sie unter Zugriffssteuerungsrechte.

Rollenhierarchie und Vererbung von Berechtigungen

Die folgende Abbildung veranschaulicht die Hierarchie für die vom System definierten Rollen sowie die empfohlene Struktur für zusätzliche, benutzerdefinierte Kontorollen und Datenbankrollen: Die höchste Datenbankrolle in der Beispielhierarchie wird einer angepassten (benutzerdefinierten) Kontorolle zugewiesen. Diese Kontorolle wiederum wird einer anderen kundenspezifischen Rolle in einer empfohlenen Struktur zugewiesen, die es der systemdefinierten Rolle SYSADMIN ermöglicht, die Berechtigungen von kundenspezifischen Kontorollen und Datenbankrollen zu erben:

Beispiel für eine Rollenhierarchie

Bemerkung

ORGADMIN ist eine separate Systemrolle, die Operationen auf Organisationsebene verwaltet. Diese Rolle ist nicht in der Hierarchie der Systemrollen enthalten.

Ein spezifischeres Beispiel für die Vererbung von Rollenhierarchien und Berechtigungen zeigt das folgende Szenario:

  • Rolle 3 wurde Rolle 2 zugewiesen.

  • Rolle 2 wurde Rolle 1 zugewiesen.

  • Rolle 1 wurde Benutzer 1 zugewiesen.

Vererbung von Berechtigungen für zugewiesene Rollen

In diesem Szenario gilt:

  • Rolle 2 erbt Berechtigung C.

  • Rolle 1 erbt die Berechtigungen B und C.

  • Benutzer 1 hat alle drei Berechtigungen.

Eine Anleitung zum Erstellen einer Rollenhierarchie finden Sie unter Erstellen einer Rollenhierarchie.

Datenbankrollen und Rollenhierarchien

Derzeit gelten für Datenbankrollen folgende Einschränkungen:

  • Wenn eine Datenbankrolle einer Freigabe zugewiesen wird, können dieser Datenbankrolle keine anderen Datenbankrollen zugewiesen werden. Wenn beispielsweise die Datenbankrolle d1.r1 einer Freigabe zugewiesen wurde, dann wird das Zuweisen der Datenbankrolle d1.r2 zu d1.r1 blockiert.

    Außerdem gilt: Wenn eine Datenbankrolle einer anderen Datenbankrolle zugewiesen wurde, kann die zugewiesene Datenbankrolle nicht mehr einer Freigabe zugewiesen werden.

    Andererseits können Datenbankrollen, die einer Freigabe zugewiesen sind, auch anderen Datenbankrollen sowie Kontorollen zugewiesen werden.

  • Kontorollen können nicht Datenbankrollen in einer Rollenhierarchie zugewiesen werden.

Autorisierung durch Primärrolle und Sekundärrollen

Jede aktive Benutzersitzung hat eine aktuelle Rolle, die auch als Primärrolle bezeichnet wird. Wenn eine Sitzung initiiert wird (z. B. wenn ein Benutzer eine Verbindung über JDBC/ODBC herstellt oder sich bei der Snowflake Weboberfläche anmeldet), wird die aktuelle Rolle anhand der folgenden Kriterien bestimmt:

  1. Wenn eine Rolle als Teil der Verbindung angegeben wurde und diese Rolle eine Rolle ist, die dem verbindenden Benutzer bereits zugewiesen wurde, wird die angegebene Rolle zur aktuellen Rolle.

  2. Wenn keine Rolle angegeben wurde und eine Standardrolle für den verbindenden Benutzer festgelegt wurde, wird diese Rolle zur aktuellen Rolle.

  3. Wenn keine Rolle angegeben wurde und keine Standardrolle für den verbindenden Benutzer festgelegt wurde, wird die Systemrolle PUBLIC verwendet.

Um die aktuelle Rolle für eine Sitzung anzuzeigen, führen Sie die Funktion CURRENT_ROLE aus.

Darüber hinaus kann eine Reihe von Sekundärrollen in einer Benutzersitzung aktiviert werden. Benutzer können SQL-Aktionen auf Objekten in einer Sitzung ausführen, indem sie die aggregierten Berechtigungen verwenden, die der Primärrolle und den Sekundärrollen erteilt wurden. Die Rollen müssen dem Benutzer zugewiesen werden, bevor sie in einer Sitzung aktiviert werden können. Beachten Sie, dass eine Sitzung zwar genau eine aktive Primärrolle haben muss, aber eine Sitzung kann eine beliebige Anzahl von Sekundärrollen gleichzeitig aktivieren.

Bemerkung

Eine Datenbankrolle kann weder eine Primärrolle noch eine Sekundärrolle sein. Um die einer Datenbankrolle erteilten Berechtigungen zu übernehmen, weisen Sie die Datenbankrolle einer Kontorolle zu. In einer Sitzung können nur Kontorollen aktiviert werden.

Die Berechtigung zur Ausführung von CREATE <Objekt>-Anweisungen kommt nur von der Primärrolle. Beim Erstellen eines Objekts wird dessen Eigentümerschaft auf die zu diesem Zeitpunkt aktive Primärrolle übertragen. Für jede andere SQL-Aktion kann jedoch jede Berechtigung, die einer aktiven Primär- oder Sekundärrolle erteilt wurde, zur Autorisierung der Aktion verwendet werden. Wenn beispielsweise eine beliebige Rolle in einer sekundären Rollenhierarchie Eigentümer eines Objekts ist (über die Berechtigung OWNERSHIP für das Objekt verfügt), sind die Sekundärrollen autorisiert, alle DDL-Aktionen für das Objekt durchzuführen. Sowohl die Primärrolle als auch alle Sekundärrollen erben Berechtigungen von allen Rollen, die in ihrer Rollenhierarchie niedriger sind.

Operationen von Primär- und Sekundärrollen

Für Unternehmen, deren Sicherheitsmodell eine große Anzahl von Rollen umfasst, von denen jede mit einer feinen Granularität von durch Berechtigungen definierten Autorisierungen ausgestattet ist, vereinfacht die Verwendung von Sekundärrollen die Rollenverwaltung. Alle Rollen, die einem Benutzer zugewiesen wurden, können in einer Sitzung aktiviert werden. Sekundärrollen sind besonders nützlich für SQL-Operationen wie datenbankübergreifende Verknüpfungen (Joins), für die sonst eine übergeordnete Rolle für die Rollen erstellt werden müsste, die Zugriffsrechte auf die Objekte in jeder Datenbank haben.

Im Verlauf einer Sitzung können Sie den Befehl USE ROLE oder USE SECONDARY ROLES ausführen, um die aktuellen Primär- bzw. Sekundärrollen zu ändern. Sie können die Funktion CURRENT_SECONDARY_ROLES verwenden, um alle aktiven Sekundärrollen für die aktuelle Sitzung anzuzeigen.

Wenn Sie ein Objekt erstellen, für dessen Verwendung ein oder mehrere Berechtigungen erforderlich sind, werden bei der Suche nach den Zuweisungen dieser Berechtigungen nur die Primärrolle und die Rollen, die sie direkt oder indirekt erben, berücksichtigt.

Für jede andere Anweisung, die eine oder mehrere Berechtigungen erfordert (z. B. die Abfrage einer Tabelle erfordert die Berechtigung SELECT für eine Tabelle mit der Berechtigung USAGE für die Datenbank und das Schema), werden die Primärrolle, die Sekundärrollen und alle anderen geerbten Rollen bei der Suche nach der Vergabe dieser Berechtigungen berücksichtigt.

Bemerkung

Es gibt in Snowflake kein Konzept eines „Superusers“ oder einer „Superrolle“, mit dem Berechtigungsprüfungen umgangen werden können. Für jeden Zugriff sind entsprechende Zugriffsrechte erforderlich.