Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Lakebase Autoscaling ist in Beta in den folgenden Regionen: eastus2, westeurope, westus.
Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Einen Featurevergleich mit Lakebase Provisioned finden Sie unter Auswahl zwischen Versionen.
Wenn Sie ein Projekt erstellen, erstellt Lakebase mehrere Postgres-Rollen im Projekt:
- Eine Postgres-Rolle für die Azure Databricks-Identität des Projektbesitzers (z. B
user@databricks.com. ), die die Standarddatenbankdatabricks_postgresbesitzt - Eine
databricks_superuseradministrative Rolle
Die databricks_postgres Datenbank wird erstellt, damit Sie direkt nach der Projekterstellung eine Verbindung herstellen und Lakebase ausprobieren können.
Es werden auch mehrere vom System verwaltete Rollen erstellt. Hierbei handelt es sich um interne Rollen, die von Azure Databricks-Diensten für Verwaltung, Überwachung und Datenvorgänge verwendet werden.
Hinweis
Postgres-Rollen steuern den Datenbankzugriff (wer Daten abfragen kann). Informationen zu Projektberechtigungen (wer die Infrastruktur verwalten kann) finden Sie unter Project-Berechtigungen. Ein Lernprogramm zum Einrichten des Projekt- und Datenbankzugriffs für einen neuen Benutzer finden Sie unter Tutorial: Gewähren von Projekt- und Datenbankzugriff an einen neuen Benutzer.
Siehe vorab erstellte Rollen und Systemrollen.
Erstellen von Postgres-Rollen
Lakebase unterstützt zwei Typen von Postgres-Rollen für den Datenbankzugriff:
-
OAuth-Rollen für Azure Databricks-Identitäten: Erstellen Sie diese mithilfe der
databricks_authErweiterung und SQL. Ermöglicht Azure Databricks-Identitäten (Benutzer, Dienstprinzipale und Gruppen) die Verbindung mit OAuth-Token. - Native Postgres-Kennwortrollen: Erstellen Sie diese mithilfe der Lakebase-UI oder SQL. Verwenden Sie einen beliebigen gültigen Rollennamen mit Kennwortauthentifizierung.
Anleitungen zum Auswählen des zu verwendenden Rollentyps finden Sie unter Authentifizierungsübersicht. Jedes ist für unterschiedliche Anwendungsfälle ausgelegt.
Erstellen einer OAuth-Rolle für eine Azure Databricks-Identität mit SQL
Damit Azure Databricks-Identitäten (Benutzer, Dienstprinzipale oder Gruppen) mithilfe von OAuth-Token eine Verbindung herstellen können, müssen Sie ihre Postgres-Rollen mithilfe der databricks_auth Erweiterung erstellen. Durch das Erstellen einer Rolle für eine Gruppe können sich alle Gruppenmitglieder mithilfe der Gruppenrolle authentifizieren und die Berechtigungsverwaltung vereinfachen.
Ausführliche Anweisungen zum Abrufen von OAuth-Token in Benutzer-zu-Computer- und Computer-zu-Computer-Abläufen finden Sie in der Authentifizierungsdokumentation unter Abrufen eines OAuth-Tokens in einem Benutzer-zu-Computer-Ablauf und Abrufen eines OAuth-Tokens in einem Computer-zu-Computer-Ablauf.
Voraussetzungen:
- Sie müssen über
CREATE- undCREATE ROLE-Berechtigungen für die Datenbank verfügen. - Sie müssen als Azure Databricks-Identität mit einem gültigen OAuth-Token authentifiziert werden.
- Authentifizierte Native Postgres-Sitzungen können keine OAuth-Rollen erstellen.
So erstellen Sie eine OAuth-Rolle:
Erstellen Sie die
databricks_authErweiterung. Jede Postgres-Datenbank muss über eine eigene Erweiterung verfügen.CREATE EXTENSION IF NOT EXISTS databricks_auth;Verwenden Sie die
databricks_create_roleFunktion, um eine Postgres-Rolle für die Azure Databricks-Identität zu erstellen:SELECT databricks_create_role('identity_name', 'identity_type');Für einen Azure Databricks-Benutzer:
SELECT databricks_create_role('myuser@databricks.com', 'USER');Für einen Azure Databricks-Dienstprinzipal:
SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');Für eine Azure Databricks-Gruppe:
SELECT databricks_create_role('My Group Name', 'GROUP');Bei dem Gruppennamen wird die Groß-/Kleinschreibung beachtet und muss genau so übereinstimmen, wie er in Ihrem Azure Databricks-Arbeitsbereich angezeigt wird. Wenn Sie eine Postgres-Rolle für eine Gruppe erstellen, kann jedes direkte oder indirekte Mitglied (Benutzer oder Dienstprinzipal) dieser Databricks-Gruppe sich bei Postgres als Gruppenrolle mit ihrem individuellen OAuth-Token authentifizieren. Auf diese Weise können Sie Berechtigungen auf Gruppenebene in Postgres verwalten, anstatt Berechtigungen für einzelne Benutzer zu verwalten.
Gewähren von Datenbankberechtigungen für die neu erstellte Rolle.
Die databricks_create_role() Funktion erstellt nur eine Postgres-Rolle mit LOGIN Berechtigungen. Nachdem Sie die Rolle erstellt haben, müssen Sie den entsprechenden Datenbankrechte und Zugriffsberechtigungen für die spezifischen Datenbanken, Schemata oder Tabellen erteilen, auf die der Benutzer zugreifen muss. Erfahren Sie, wie: Verwalten von Berechtigungen
Gruppenbasierte Authentifizierung
Wenn Sie eine Postgres-Rolle für eine Azure Databricks-Gruppe erstellen, aktivieren Sie die gruppenbasierte Authentifizierung. Auf diese Weise kann jedes Mitglied der Azure Databricks-Gruppe sich mithilfe der Rolle der Gruppe bei Postgres authentifizieren, wodurch die Berechtigungsverwaltung vereinfacht wird.
Funktionsweise:
- Erstellen Sie eine Postgres-Rolle für eine Databricks-Gruppe mithilfe von
databricks_create_role('Group Name', 'GROUP'). - Gewähren von Datenbankberechtigungen für die Gruppenrolle in Postgres. Siehe "Berechtigungen verwalten".
- Jedes direkte oder indirekte Mitglied (Benutzer oder Dienstprinzipal) der Databricks-Gruppe kann eine Verbindung mit Postgres über sein einzelnes OAuth-Token herstellen.
- Beim Herstellen einer Verbindung verifiziert sich das Mitglied als Gruppenrolle und übernimmt alle Berechtigungen, die dieser Rolle gewährt werden.
Authentifizierungsfluss:
Wenn ein Gruppenmitglied eine Verbindung herstellt, geben sie den Rollennamen der Gruppe als Benutzernamen und ihr eigenes OAuth-Token als Kennwort an:
export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'
psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME
Wichtige Überlegungen:
- Überprüfung der Gruppenmitgliedschaft: Die Gruppenmitgliedschaft wird nur zur Authentifizierung überprüft. Wenn ein Mitglied nach dem Herstellen einer Verbindung aus der Azure Databricks-Gruppe entfernt wird, bleibt die Verbindung aktiv. Neue Verbindungsversuche von entfernten Mitgliedern werden abgelehnt.
- Arbeitsbereichsbereich: Nur Gruppen, die demselben Azure Databricks-Arbeitsbereich zugewiesen sind wie das Projekt, werden für die gruppenbasierte Authentifizierung unterstützt. Informationen zum Zuweisen von Gruppen zu einem Arbeitsbereich finden Sie unter "Verwalten von Gruppen".
-
Groß-/Kleinschreibung: Der verwendete
databricks_create_role()Gruppenname muss dem Gruppennamen genau entsprechen, wie er in Ihrem Azure Databricks-Arbeitsbereich angezeigt wird, einschließlich Groß-/Kleinschreibung. - Berechtigungsverwaltung: Das Verwalten von Berechtigungen auf Gruppenebene in Postgres ist effizienter als das Verwalten einzelner Benutzerberechtigungen. Wenn Sie berechtigungen für die Gruppenrolle erteilen, erben alle aktuellen und zukünftigen Gruppenmitglieder diese Berechtigungen automatisch.
Hinweis
Rollennamen dürfen 63 Zeichen nicht überschreiten, und einige Namen sind nicht zulässig. Weitere Informationen: Verwalten von Rollen
Erstellen einer nativen Postgres-Kennwortrolle
Sie können systemeigene Postgres-Kennwortrollen entweder mithilfe der Lakebase-BEnutzeroberfläche oder standardmäßigen SQL-Befehlen erstellen.
Verwenden der Benutzeroberfläche:
- Navigieren Sie in der Lakebase-App zur Übersichtsseite Ihrer Niederlassung und dann zur Registerkarte Rollen und Datenbanken der Niederlassung.
- Klicken Sie auf " Rolle hinzufügen ", und geben Sie einen Rollennamen an (beliebiger gültiger Postgres-Rollenname).
- Klicken Sie auf "Erstellen".
- Kopieren Sie das generierte Kennwort, und stellen Sie es sicher für den Benutzer bereit, der diese Rolle verwendet.
Die Lakebase UI generiert automatisch ein sicheres Kennwort mit 60-Bit-Entropie. Rollen, die über die Benutzeroberfläche erstellt werden, werden automatisch Mitgliedschaften in der databricks_superuser Rolle gewährt, die umfassende Datenbankberechtigungen bieten.
Verwenden von SQL:
Sie können auch systemeigene Postgres-Kennwortrollen mit standardmäßigen Postgres SQL-Befehlen erstellen:
CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';
Beim Erstellen von Rollen mit SQL sollte das Kennwort mindestens 12 Zeichen mit einer Mischung aus Kleinbuchstaben, Großbuchstaben, Zahlen und Symbolzeichen enthalten. Benutzerdefinierte Kennwörter werden zur Erstellungszeit überprüft, um die 60-Bit-Entropie sicherzustellen.
Anzeigen von Postgres-Rollen
Benutzeroberfläche
Um alle Postgres-Rollen in Ihrem Projekt anzuzeigen, navigieren Sie in der Lakebase-App zur Registerkarte Ihrer Branch "Rollen und Datenbanken". Alle in der Verzweigung erstellten Rollen, mit Ausnahme von Systemrollen, werden aufgeführt, einschließlich nativer Postgres-Rollen mit Kennwortauthentifizierung.
PostgreSQL
Alle Rollen mit \du Befehl anzeigen:
Sie können alle Postgres-Rollen, einschließlich Systemrollen, mithilfe des \du Metabefehls von jedem Postgres-Client (z psql. B. ) oder dem Lakebase SQL-Editor anzeigen:
\du
List of roles
Role name | Attributes
-----------------------------+------------------------------------------------------------
cloud_admin | Superuser, Create role, Create DB, Replication, Bypass RLS
my.user@databricks.com | Create role, Create DB, Bypass RLS
databricks_control_plane | Superuser
databricks_gateway |
databricks_monitor |
databricks_reader_12345 | Create role, Create DB, Replication, Bypass RLS
databricks_replicator | Replication
databricks_superuser | Create role, Create DB, Cannot login, Bypass RLS
databricks_writer_12345 | Create role, Create DB, Replication, Bypass RLS
Dadurch werden alle Rollen und ihre Attribute angezeigt (Superuser, Rolle erstellen, DB erstellen usw.).
Ablegen einer Postgres-Rolle
Sie können sowohl identitätsbasierte Databricks-Rollen als auch systemeigene Postgres-Kennwortrollen ablegen.
Benutzeroberfläche
Das Löschen einer Rolle ist eine dauerhafte Aktion, die nicht rückgängig gemacht werden kann. Sie können keine Rolle löschen, die eine Datenbank besitzt. Die Datenbank muss gelöscht werden, bevor die Rolle gelöscht wird, die die Datenbank besitzt.
So löschen Sie eine beliebige Postgres-Rolle mithilfe der Benutzeroberfläche:
- Navigieren Sie in der Lakebase-App zur Registerkarte «Rollen und Datenbanken» Ihrer Branch.
- Wählen Sie im Menü " Rolle löschen" aus, und bestätigen Sie den Löschvorgang.
PostgreSQL
Sie können jede Postgres-Rolle mit standardmäßigen Postgres-Befehlen ablegen. Ausführliche Informationen finden Sie in der PostgreSQL-Dokumentation zum Ablegen von Rollen.
Eine Rolle ablegen:
DROP ROLE role_name;
Nachdem eine identitätsbasierte Azure Databricks-Rolle gelöscht wurde, ist diese Identität nicht mehr in der Lage, sich unter Verwendung von OAuth-Tokens zu authentifizieren, bis eine neue Rolle erstellt wird.
Vorab erstellte Rollen
Nachdem ein Projekt erstellt wurde, erstellt Azure Databricks automatisch Postgres-Rollen für die Projektverwaltung und erste Schritte.
| Rolle | Description | Geerbte Berechtigungen |
|---|---|---|
<project_owner_role> |
Die Azure Databricks-Identität des Projekterstellers (z. B my.user@databricks.com. ). Diese Rolle besitzt die Standarddatenbank databricks_postgres und kann sich anmelden und das Projekt verwalten. |
Mitglied von databricks_superuser |
databricks_superuser |
Eine interne administrative Rolle. Wird verwendet, um den Zugriff im gesamten Projekt zu konfigurieren und zu verwalten. Dieser Rolle werden umfassende Berechtigungen gewährt. | Erbt von pg_read_all_data, pg_write_all_dataund pg_monitor. |
Erfahren Sie mehr über die spezifischen Funktionen und Berechtigungen dieser Rollen: Vordefinierte Rollenfunktionen
Von Azure Databricks erstellte Systemrollen
Azure Databricks erstellt die folgenden Systemrollen, die für interne Dienste erforderlich sind. Sie können diese Rollen anzeigen, indem Sie einen \du Befehl von psql oder vom Lakebase SQL-Editor ausgeben.
| Rolle | Zweck |
|---|---|
cloud_admin |
Superuser-Rolle, die für die Verwaltung der Cloudinfrastruktur verwendet wird |
databricks_control_plane |
Superuser-Rolle, die von internen Databricks-Komponenten für Verwaltungsvorgänge verwendet wird |
databricks_monitor |
Wird von internen Metriksammlungsdiensten verwendet |
databricks_replicator |
Wird für Datenbankreplikationsvorgänge verwendet |
databricks_writer_<dbid> |
Datenbankspezifische Rolle zur Erstellung und Verwaltung von synchronisierten Tabellen |
databricks_reader_<dbid> |
Pro-Datenbank-Rolle, die zum Lesen von in Unity-Katalog registrierten Tabellen verwendet wird |
databricks_gateway |
Wird für interne Verbindungen für verwaltete Datendienste verwendet |
Um zu erfahren, wie Rollen, Berechtigungen und Rollenmitgliedschaften in Postgres funktionieren, verwenden Sie die folgenden Ressourcen in der Dokumentation zu Postgres: