IBM Cloud Docs
Gestione di utenti, ruoli e privilegi

Gestione di utenti, ruoli e privilegi

PostgreSQL usa un sistema di ruoli per gestire le autorizzazioni del database. I ruoli vengono utilizzati per fornire a un singolo utente o a un gruppo di utenti una serie di privilegi. Determina ruoli, gruppi e privilegi nella distribuzione utilizzando il psql comando \du.

Quando esegui il provisioning di una nuova distribuzione in IBM Cloud, ti viene automaticamente fornito un utente admin per accedere e gestire PostgreSQL.

L'utente admin

Quando esegui il provisioning di una nuova distribuzione in IBM Cloud, ti viene automaticamente fornito un utente admin per accedere e gestire PostgreSQL. Una volta impostata la password amministratore, utilizzarla per connettersi alla tua distribuzione.

Quando admin crea una risorsa in un database, come una tabella, admin possiede tale oggetto. Le risorse create da admin non sono accessibili da altri utenti, a meno che non si concedano espressamente le autorizzazioni.

La differenza maggiore tra l'utente admin e qualsiasi altro utente che aggiungi alla tua distribuzione è rappresentata dai ruoli pg_monitor e pg_signal_backend. Il ruolo pg_monitor fornisce una serie di autorizzazioni che rendono l'utente amministratore appropriato per il monitoraggio del server di database. Il ruolo pg_signal_backend fornisce all'utente amministratore la possibilità di inviare segnali per annullare query e connessioni avviate da altri utenti. Non è in grado di inviare segnali ai processi di proprietà dei superutenti.

È anche possibile utilizzare l'utente admin per concedere questi due ruoli ad altri utenti nella distribuzione.

Per esporre la capacità di annullare query ad altri utenti del database, concedi il ruolo pg_signal_backend all'utente admin. Utilizzare un comando come:

GRANT pg_signal_backend TO joe;

Per consentire all'utente joe di annullare i backend, concedi pg_signal_backend a tutti gli utenti con il ruolo ibm-cloud-base-user con un comando come:

GRANT pg_signal_backend TO "ibm-cloud-base-user";

Questo privilegio consente all'utente o agli utenti di terminare qualsiasi connessione al database.

Per impostare un utente di monitoraggio specifico, mary, utilizzare un comando come:

GRANT pg_monitor TO mary;

Concedi pg_signal_backend a tutti gli utenti con il ruolo ibm-cloud-base-user con un comando come:

GRANT pg_monitor TO "ibm-cloud-base-user";

Impostazione della password di amministrazione nell'interfaccia utente

Impostare la password di amministrazione tramite l'interfaccia utente selezionando l'istanza dall'elenco delle risorse nella IBM Cloud Dashboard. Quindi, selezionare Impostazioni. Quindi, nella sezione Modifica della password dell'amministratore del database digitate una nuova password e fate clic su Modifica della password.

Impostazione della password di amministrazione nella CLI

Utilizzare il comando cdb user-password da Plug-in CLI Cloud Databases per impostare la password admin.

Ad esempio, per impostare la password admin per una distribuzione denominata example-deployment, utilizzare il seguente comando:

ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>

Impostazione della password di amministrazione nell'API

L'endpoint di fondazione mostrato nella sezione Dettagli dell'installazione del pannello Panoramica del vostro servizio fornisce la base URL per accedere a questa installazione tramite l'API. Utilizzarlo con l'endpoint Imposta password dell'utente specificato per impostare la password dell'amministratore.

curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \

Credenziale di servizio utenti

Gli utenti che creare attraverso il pannello Credenziali di servizio sono membri di ibm-cloud-base-user. Sono in grado di accedere, creare utenti e creare database.

Quando un utente in un gruppo crea una risorsa in un database, come una tabella, tutti gli utenti che si trovano nello stesso gruppo hanno accesso a tale risorsa. Le risorse create da uno qualsiasi degli utenti in ibm-cloud-base-user sono accessibili ad altri utenti in ibm-cloud-base-user, incluso l'utente amministratore.

Utenti creati tramite la CLI

Gli utenti che crei tramite il plug-in CLICloud Databases sono anche membri di ibm-cloud-base-user. Sono in grado di accedere, creare utenti e creare database.

Quando un utente crea una risorsa in un database, come una tabella, tutti gli utenti che si trovano nello stesso gruppo hanno accesso a tale risorsa. Le risorse create da uno qualsiasi degli utenti in ibm-cloud-base-user sono accessibili ad altri utenti in ibm-cloud-base-user, incluso l'utente admin.

Gli utenti creati direttamente dall'API e dalla CLI non vengono visualizzati in Credenziali del servizio, ma puoi aggiungerli se lo scegli.

Utenti creati tramite l'API

Gli utenti che crei tramite l'Cloud Databases sono anche membri di ibm-cloud-base-user. Sono in grado di accedere, creare utenti e creare database.

Quando un utente crea una risorsa in un database, come una tabella, tutti gli utenti che si trovano nello stesso gruppo hanno accesso a tale risorsa. Le risorse create da uno qualsiasi degli utenti in ibm-cloud-base-user sono accessibili ad altri utenti in ibm-cloud-base-user, incluso l'utente amministratore.

Gli utenti creati direttamente dall'API e dalla CLI non vengono visualizzati in Credenziali del servizio, ma puoi aggiungerli se lo scegli.

L'utente di sola lettura

ibm-cloud-base-user-ro gestisce i privilegi per gli utenti creati per accedere alle replica di sola lettura. Per ulteriori informazioni, vedere Configurazione delle repliche di sola lettura.

L'utente repl

L'utente repl dispone dei privilegi di replica e viene utilizzato se si abilita il plug-in wal2json sulla propria distribuzione. Mentre si abilita wal2json, impostare la password dell'utente repl, che consente al plugin wal2json di utilizzarla.

Altri utenti ibm

Se esegui il comando \du con il tuo account admin, potresti notare che gli utenti sono denominati ibm, ibm-cloud-base-user, ibm-replication e ibm-rewind.

ibm-cloud-base-user viene utilizzato come modello per gestire i ruoli gruppo per altri utenti. Viene utilizzato per gestire gli utenti creati tramite la CLI e l'API e per abilitare l'integrazione con la creazione utente Credenziali del servizio su IBM Cloud. Un utente che è un membro di ibm-cloud-base-user eredita il ruolo di creazione e crea gli attributi del database da ibm-cloud-base-user. ibm-cloud-base-user non è in grado di accedere.

L'account ibm è l'unico superutente nella distribuzione. Non è possibile utilizzare un account di superutente. Questo utente è un account amministrativo interno che gestisce la stabilità della tua distribuzione.

Utenti creati con psql

Puoi ignorare completamente la creazione di utenti tramite IBM Cloud e creare utenti direttamente in PostgreSQL con psql. Ciò consente di utilizzare PostgreSQL's di ruoli e utenti. Gli utenti/ruoli creati in psql devono avere tutti i relativi privilegi impostati manualmente, nonché i privilegi per gli oggetti creati.

Gli utenti creati direttamente in PostgreSQL non appaiono in Credenziali di servizio, ma è possibile aggiungerli se si desidera.

Si noti che questi utenti non sono integrati con i controlli IAM, anche se aggiunti a Credenziali di servizio.

Utenti aggiuntivi e stringhe di connessione

L'accesso alla tua distribuzione Databases for PostgreSQL non si limita all'utente admin. Aggiungere gli utenti nell'interfaccia utente in Credenziali del servizio, con il Cloud Databases CLI plug-in, o con l'Cloud Databases API.

Tutti gli utenti della tua distribuzione possono utilizzare le stringhe di connessione, incluse le stringhe di connessione per endpoint pubblici o privati.

Quando si crea un utente, gli vengono assegnati determinati ruoli e privilegi del database. Questi privilegi includono la capacità di accedere, creare database e creare altri utenti.

Creazione di utenti nell'interfaccia utente

  1. Accedere al cruscotto del servizio per il proprio servizio.
  2. Fare clic su Credenziali di servizio per aprire Credenziali di servizio.
  3. Fai clic su New credential.
  4. Scegliere un nome descrittivo per la nuova credenziale.
  5. Facoltativo Specificare se le nuove credenziali devono utilizzare un endpoint pubblico o privato. Usare { "service-endpoints": "public" } / { "service-endpoints": "private" } nel campo Aggiungi parametri di configurazione in linea per generare stringhe di connessione usando l'endpoint specificato. L'utilizzo dell'endpoint non viene applicato, ma controlla solo quali nomi host si trovano nelle stringhe di connessione. Gli endpoint privati sono generati per impostazione predefinita.
  6. Fare clic su Aggiungi per eseguire il provisioning delle nuove credenziali. Vengono generati automaticamente un nome utente e una password e un utente associato al database PostgreSQL.

Le nuove credenziali appaiono nella tabella e le stringhe di connessione sono disponibili come JSON in un campo da copiare con un clic sotto Vedi credenziali.

Creazione di utenti dalla CLI

Se gestisci il tuo servizio tramite la CLI IBM Cloud e il plug-in dei database cloud, puoi creare un nuovo utente con cdb user-create. Ad esempio, per creare un nuovo utente per una "example-deployment", utilizzare il seguente comando:

ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>

Una volta terminata l'attività, è possibile recuperare le stringhe di connessione del nuovo utente con il comando ibmcloud cdb deployment-connections.

Creare utenti dall'API

L' endpoint Foundation mostrato nel pannello Panoramica Dettagli dell'installazione client del servizio fornisce la base URL per accedere all'installazione client tramite l'API. Per creare e gestire gli utenti, utilizzare la base URL con l'endpoint /users.

curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'

Al termine dell'attività, richiamare le stringhe di connessione del nuovo utente dall'endpoint /users/{userid}/connections.

Aggiunta di utenti a Credenziali del servizio

La creazione di un nuovo utente dalla CLI o dall'API non comporta il popolamento automatico delle stringhe di connessione dell'utente in Credenziali del servizio. Per aggiungerli, creare una nuova credenziale con le informazioni utente esistenti.

Immettere il nome utente e la password nel campo JSON Aggiungi parametri di configurazione in linea, oppure specificare un file in cui sono memorizzate le informazioni JSON. Ad esempio, inserendo {"existing_credentials":{"username":"Robert","password":"supersecure"}} nel campo si generano Credenziali del servizio con il nome utente "Robert" e la password "supersecure" inseriti nelle stringhe di connessione.

La generazione delle credenziali da un utente esistente non verifica o crea tale utente.