Condividi tramite


Creare ruoli Postgres

Importante

La scalabilità automatica di Lakebase si trova in Beta nelle aree seguenti: eastus2, westeurope, westus.

Lakebase Autoscaling è la versione più recente di Lakebase con calcolo autoscalante, riduzione a zero, ramificazione e ripristino istantaneo. Per il confronto delle funzionalità con Lakebase Provisioned, vedere scegliere tra le versioni.

Quando si crea un progetto, Lakebase crea diversi ruoli Postgres nel progetto:

  • Ruolo Postgres per l'identità di Azure Databricks del proprietario del progetto ,ad esempio user@databricks.com, proprietario del database predefinito databricks_postgres
  • Un databricks_superuser ruolo amministrativo

Il databricks_postgres database viene creato in modo da potersi connettere e provare Lakebase immediatamente dopo la creazione del progetto.

Vengono creati anche diversi ruoli gestiti dal sistema. Questi sono ruoli interni usati dai servizi di Azure Databricks per operazioni di gestione, monitoraggio e dati.

Annotazioni

I ruoli Postgres controllano l'accesso al database (chi può eseguire query sui dati). Per le autorizzazioni del progetto (che possono gestire l'infrastruttura), vedere Autorizzazioni di progetto. Per un'esercitazione sulla configurazione di entrambi, vedere Esercitazione: Concedere l'accesso al progetto e al database a un nuovo utente.

Vedere Ruoli pre-creati e Ruoli di sistema.

Creare ruoli Postgres

Lakebase supporta due tipi di ruoli Postgres per l'accesso al database:

  • Ruoli OAuth per le identità di Azure Databricks: Crearli usando l'estensione databricks_auth e SQL. Consente alle identità di Azure Databricks (utenti, entità servizio e gruppi) di connettersi usando token OAuth.
  • Ruoli password Postgres nativi: Crearli usando l'interfaccia utente di Lakebase o SQL. Usare qualsiasi nome di ruolo valido con l'autenticazione della password.

Per indicazioni sulla scelta del tipo di ruolo da usare, vedere Panoramica dell'autenticazione. Ognuno di essi è progettato per casi d'uso diversi.

Creare un ruolo OAuth per un'identità di Azure Databricks usando SQL

Per consentire alle identità di Azure Databricks (utenti, entità servizio o gruppi) di connettersi usando i token OAuth, è necessario creare i ruoli Postgres usando l'estensione databricks_auth . La creazione di un ruolo per un gruppo consente a tutti i membri del gruppo di eseguire l'autenticazione usando il ruolo del gruppo, semplificando la gestione delle autorizzazioni.

Per istruzioni dettagliate su come ottenere token OAuth nei flussi da utente a computer e da computer a computer, vedere Ottenere un token OAuth in un flusso da utente a computer e Ottenere un token OAuth in un flusso da computer a computer nella documentazione sull'autenticazione.

Prerequisiti:

  • Devi disporre delle autorizzazioni CREATE e CREATE ROLE sul database.
  • È necessario essere autenticati come identità di Azure Databricks con un token OAuth valido
  • Le sessioni autenticate native di Postgres non possono creare ruoli OAuth

Per creare un ruolo OAuth:

  1. Creare l'estensione databricks_auth . Ogni database Postgres deve avere una propria estensione.

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. Usare la databricks_create_role funzione per creare un ruolo Postgres per l'identità di Azure Databricks:

    SELECT databricks_create_role('identity_name', 'identity_type');
    

    Per un utente di Azure Databricks:

    SELECT databricks_create_role('myuser@databricks.com', 'USER');
    

    Per un principale del servizio di Azure Databricks:

    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');
    

    Per un gruppo di Azure Databricks:

    SELECT databricks_create_role('My Group Name', 'GROUP');
    

    Il nome del gruppo fa distinzione tra maiuscole e minuscole e deve corrispondere esattamente come appare nell'area di lavoro di Azure Databricks. Quando si crea un ruolo Postgres per un gruppo, qualsiasi membro diretto o indiretto (utente o entità servizio) di tale gruppo di Databricks può eseguire l'autenticazione in Postgres come ruolo del gruppo usando il proprio token OAuth individuale. In questo modo è possibile gestire le autorizzazioni a livello di gruppo in Postgres anziché mantenere le autorizzazioni per i singoli utenti.

  3. Concedere le autorizzazioni del database al ruolo appena creato.

La databricks_create_role() funzione crea un ruolo Postgres con solo l'autorizzazione LOGIN. Dopo aver creato il ruolo, è necessario concedere i privilegi e le autorizzazioni del database appropriati per database, schemi o tabelle specifici a cui l'utente deve accedere. Informazioni su come: Gestire le autorizzazioni

Autenticazione basata su gruppo

Quando si crea un ruolo Postgres per un gruppo di Azure Databricks, si abilita l'autenticazione basata su gruppo. Ciò consente a qualsiasi membro del gruppo di Azure Databricks di eseguire l'autenticazione in Postgres usando il ruolo del gruppo, semplificando la gestione delle autorizzazioni.

Funzionamento:

  1. Creare un ruolo Postgres per un gruppo di Databricks usando databricks_create_role('Group Name', 'GROUP').
  2. Concedi le autorizzazioni del database al ruolo di gruppo in Postgres. Vedere Gestire le autorizzazioni.
  3. Qualsiasi membro diretto o indiretto (utente o entità servizio) del gruppo Databricks può connettersi a Postgres usando il proprio singolo token OAuth.
  4. Durante la connessione, il membro esegue l'autenticazione come ruolo del gruppo ed eredita tutte le autorizzazioni concesse a tale ruolo.

Flusso di autenticazione:

Quando un membro del gruppo si connette, specifica il nome del ruolo Postgres del gruppo come nome utente e il proprio token OAuth come password:

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

Considerazioni importanti:

  • Convalida dell'appartenenza al gruppo: L'appartenenza al gruppo viene convalidata solo in fase di autenticazione. Se un membro viene rimosso dal gruppo Azure Databricks dopo aver stabilito una connessione, la connessione rimane attiva. I nuovi tentativi di connessione dai membri rimossi vengono rifiutati.
  • Ambito dell'area di lavoro: Solo i gruppi assegnati alla stessa area di lavoro di Azure Databricks del progetto sono supportati per l'autenticazione basata su gruppo. Per informazioni su come assegnare gruppi a un'area di lavoro, vedere Gestire i gruppi.
  • Distinzione tra maiuscole e minuscole: Il nome del gruppo usato in databricks_create_role() deve corrispondere esattamente al nome del gruppo come appare nell'area di lavoro di Azure Databricks, incluso il caso.
  • Gestione delle autorizzazioni: La gestione delle autorizzazioni a livello di gruppo in Postgres è più efficiente rispetto alla gestione delle singole autorizzazioni utente. Quando si concedono autorizzazioni al ruolo del gruppo, tutti i membri del gruppo corrente e futuro ereditano automaticamente tali autorizzazioni.

Annotazioni

I nomi dei ruoli non possono superare i 63 caratteri e alcuni nomi non sono consentiti. Altre informazioni: Gestire i ruoli

Creare un ruolo nativo con password di Postgres

È possibile creare ruoli password Postgres nativi usando l'interfaccia utente di Lakebase o i comandi SQL standard.

Uso dell'interfaccia utente:

  1. Nell'app Lakebase passare alla pagina di panoramica del ramo e quindi alla scheda Ruoli e database del ramo.
  2. Fare clic su Aggiungi ruolo e specificare un nome di ruolo (qualsiasi nome di ruolo Postgres valido).

Aggiungere un ruolo Postgres

  1. Clicca su Crea.
  2. Copiare la password generata e specificarla in modo sicuro all'utente che userà questo ruolo.

L'interfaccia utente di Lakebase genera automaticamente una password sicura con entropia a 60 bit. Ai ruoli creati tramite l'interfaccia utente viene concessa automaticamente l'appartenenza al databricks_superuser ruolo, che fornisce privilegi di database generali.

Uso di SQL:

È anche possibile creare ruoli password Postgres nativi usando i comandi STANDARD di Postgres SQL:

CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

Quando si creano ruoli con SQL, la password deve avere almeno 12 caratteri con una combinazione di caratteri minuscoli, maiuscoli, numeri e simboli. Le password definite dall'utente vengono convalidate in fase di creazione per garantire l'entropia a 60 bit.

Visualizzare i ruoli di Postgres

INTERFACCIA UTENTE

Per visualizzare tutti i ruoli Postgres nel progetto, passare alla scheda Ruoli e database del ramo nell'app Lakebase. Tutti i ruoli creati nel ramo, ad eccezione dei ruoli di sistema, sono elencati, inclusi i ruoli postgre nativi con l'autenticazione con password.

Visualizzare ruolo di Postgres

PostgreSQL

Visualizzare tutti i ruoli con \du il comando :

È possibile visualizzare tutti i ruoli postgres, inclusi i ruoli di sistema, usando il \du metacomcome da qualsiasi client Postgres (ad esempio psql) o dall'editor SQL di Lakebase:

\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

Vengono visualizzati tutti i ruoli e i relativi attributi (Utente con privilegi avanzati, Crea ruolo, Crea database e così via).

Eliminare un ruolo Postgres

È possibile eliminare sia i ruoli basati sull'identità di Databricks che i ruoli password nativi di Postgres.

INTERFACCIA UTENTE

L'eliminazione di un ruolo è un'azione permanente che non può essere annullata. Non è possibile eliminare un ruolo proprietario di un database. Il database deve essere eliminato prima di eliminare il ruolo proprietario del database.

Per eliminare qualsiasi ruolo Postgres usando l'interfaccia utente:

  1. Passare alla scheda Ruoli e database del ramo nell'app Lakebase.
  2. Selezionare Elimina ruolo dal menu del ruolo e confermare l'eliminazione.

PostgreSQL

È possibile eliminare qualsiasi ruolo Postgres usando i comandi Postgres standard. Per informazioni dettagliate, vedere la documentazione di PostgreSQL sull'eliminazione dei ruoli.

Eliminare un ruolo:

DROP ROLE role_name;

Dopo l'eliminazione di un ruolo basato sull'identità di Azure Databricks, tale identità non può più eseguire l'autenticazione a Postgres usando token OAuth fino a quando non viene creato un nuovo ruolo.

Ruoli creati in modo preliminare

Dopo aver creato un progetto, Azure Databricks crea automaticamente i ruoli Postgres per l'amministrazione del progetto e per iniziare.

Ruolo Description Privilegi ereditati
<project_owner_role> Identità di Azure Databricks dell'autore del progetto , ad esempio my.user@databricks.com. Questo ruolo è proprietario del database predefinito databricks_postgres e può accedere e amministrare il progetto. Membro di databricks_superuser
databricks_superuser Ruolo amministrativo interno. Usato per configurare e gestire l'accesso nel progetto. A questo ruolo vengono concessi privilegi generali. Eredita da pg_read_all_data, pg_write_all_data, e pg_monitor.

Scopri di più sulle funzionalità e i privilegi specifici di questi ruoli: funzionalità del ruolo predefinite

Ruoli di sistema creati da Azure Databricks

Azure Databricks crea i ruoli di sistema seguenti necessari per i servizi interni. È possibile visualizzare questi ruoli eseguendo un \du comando da psql o l'editor SQL di Lakebase.

Ruolo Scopo
cloud_admin Ruolo utente con privilegi avanzati usato per la gestione dell'infrastruttura cloud
databricks_control_plane Ruolo utente con privilegi avanzati usati dai componenti interni di Databricks per le operazioni di gestione
databricks_monitor Usato dai servizi di raccolta delle metriche interne
databricks_replicator Usato per le operazioni di replica del database
databricks_writer_<dbid> Ruolo per database usato per creare e gestire tabelle sincronizzate
databricks_reader_<dbid> Ruolo per database usato per leggere le tabelle registrate nel Catalogo Unity
databricks_gateway Usato per le connessioni interne per i servizi di gestione dei dati gestiti

Per informazioni sul funzionamento di ruoli, privilegi e appartenenze ai ruoli in Postgres, usare le risorse seguenti nella documentazione di Postgres:

Passaggi successivi