Acordarea permisiunilor în baza de date SQL Azure pentru PostgreSQL

Finalizat

Pentru a permite utilizatorilor accesul la bazele de date găzduite pe serverul Azure Database for PostgreSQL, trebuie să creați roluri (utilizatori) și să acordați sau să refuzați privilegii obiectelor bazei de date.

Crearea utilizatorilor bazei de date în Azure Database for PostgreSQL

  1. În Azure Data Studio (sau instrumentul client preferat), conectați-vă la serverul Azure Database for PostgreSQL cu acreditările de conectare de administrator.

  2. Cu baza de date relevantă ca bază de date curentă, utilizați CREATE ROLE cu opțiunile relevante pentru a crea un nou rol (utilizator).

  3. De exemplu, următoarea interogare:

    1. Creează o bază de date nouă numită testdb.
    2. Creează un utilizator nou cu o parolă puternică.
    3. Acordă privilegii de conectare la baza de date testdb.
    CREATE DATABASE testdb;
    CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
    GRANT CONNECT ON DATABASE testdb TO <db_user>;
    

    Pentru a încerca interogarea, puteți înlocui substituenții cu informațiile de utilizator.

  4. Apoi puteți acorda mai multe privilegii obiectelor din baza de date. De exemplu:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

Sintaxa pentru CREATE ROLE este:

CREATE ROLE name [ [ WITH ] option [ ... ] ]

Opțiunea WHERE poate fi:

SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]

Parametrii opționali sunt:

  • SUPERUTILIZATOR | NOSUPERUSER - Nu puteți atribui privilegii SUPERUSER în Azure Database for PostgreSQL. Dacă nu este specificat, NOSUPERUSER este implicit.
  • CREATB | NOCREATEDB - dacă rolul poate crea baze de date. Valoarea implicită este NOCREATEDB.
  • CREATEROL | NOCREATEROLE - dacă rolul poate crea roluri noi, adică executa CREATE ROLE. Dacă se acordă privilegiul CREATEROLE, rolul poate modifica și renunța la alte roluri. NOCREATEROLE este implicit.
  • MOȘTENEȘTE | NOINHERIT - indiferent dacă rolul moștenește privilegiile rolurilor din care este membru direct sau indirect. INHERIT este valoarea implicită.
  • AUTENTIFICARE | NOLOGIN - dacă un rol are permisiunea de a se conecta. Un rol cu atributul LOGIN este un utilizator al bazei de date. Rolurile fără atributul LOGIN pot fi utilizate pentru gestionarea privilegiilor bazei de date. NOLOGIN este implicit.
  • REPLICARE | NOREPLICATION - dacă un rol este un rol de replicare. Un rol trebuie să aibă acest atribut pentru a se conecta la server în modul de replicare și pentru a crea sau renunța la sloturi de replicare. Atributul REPLICATION este un rol privilegiat care trebuie utilizat numai pentru replicare. NOREPLICATION este valoarea implicită. Trebuie să fiți membru al azure_pg_admin pentru a crea acest rol.
  • OCOLIRE | NOBYPASSRLS - dacă un rol ocolește fiecare politică de securitate la nivel de rând (RLS).
  • CONNECTION LIMIT connlimit - specifică câte conexiuni simultane poate face un rol care se poate conecta. -1 este valoarea implicită. Acest parametru nu impune o limită pentru conexiunile simultane.
  • [ CRIPTAT ] PAROLĂ 'parolă'| PASSWORD NULL - setează parola rolului. O parolă este utilizată numai de rolurile cu atributul LOGIN. Dacă nu este specificată nicio parolă, parola este NULL și autentificarea prin parolă eșuează. Alternativ, indicați în mod explicit PASSWORD NULL.
  • VALID UNTIL "timestamp" - data și ora după care parola rolului nu mai este valabilă. Dacă este omis, nu există limită de timp pentru parolă.
  • ÎN ROL role_name - unul sau mai multe roluri la care noul rol este adăugat ca membru nou. Nu există o opțiune de a adăuga un nou rol ca administrator; utilizați comanda GRANT.
  • IN GROUP role_name o alternativă învechită la IN ROLE.
  • ROL role_name - unul sau mai multe roluri sunt adăugate ca membri ai noului rol. (Această schimbare de efect face ca noul rol să fie un grup.)
  • ADMIN role_name - clauza ADMIN este ca ROLE, dar rolurile denumite sunt adăugate la noul rol CU OPȚIUNEA ADMIN, oferindu-le dreptul de a acorda calitatea de membru în acest rol altora.

Notă

Puteți modifica atributele unui rol cu ALTER ROLE și puteți elimina un rol cu DROP ROLE.