Ruoli del database e controllo degli accessi

Progettazione di database

Lis Sulmont

Curriculum Manager

Come dare e togliere l'accesso a una vista

GRANT privilege(s) o REVOKE privilege(s)

ON object

TO role o FROM role

  • Privilegi: SELECT, INSERT, UPDATE, DELETE, ecc.
  • Oggetti: tabella, vista, schema, ecc.
  • Ruoli: un utente del database o un gruppo di utenti del database
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Progettazione di database

Ruoli del database

  • Gestisci i permessi di accesso al database
  • Un ruolo di database è un'entità che contiene informazioni che:
    • Definisci i privilegi del ruolo
      • Riesci a fare il login?
      • Sai creare database?
      • Si può scrivere sulle tavole?
    • Interagisci con il sistema di autenticazione del cliente
      • Password
  • I ruoli possono essere assegnati a uno o più utenti.
  • I ruoli sono globali in un'installazione di cluster di database.
Progettazione di database

Crea un ruolo

  • Ruolo vuoto
CREATE ROLE data_analyst;
  • Ruoli con alcuni attributi impostati
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
Progettazione di database

GRANT e i privilegi " REVOKE " dai ruoli

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

I privilegi che puoi usare in PostgreSQL sono:

  • SELECT e INSERT
1 http://bit.ly/postgresql_privileges
Progettazione di database

Utenti e gruppi (sono entrambi ruoli)

  • Un ruolo è un'entità che può fare da utente e/o gruppo.
    • Ruoli degli utenti
    • Ruoli di gruppo

Grafico dei ruoli in cui il cerchio esterno rappresenta un ruolo di gruppo e i tre cerchi interni al cerchio esterno rappresentano i ruoli degli utenti

Progettazione di database

Utenti e gruppi (sono entrambi ruoli)

Ruolo nel gruppo

CREATE ROLE data_analyst;

Ruolo dell'utente

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Progettazione di database

Utenti e gruppi (sono entrambi ruoli)

Ruolo nel gruppo

CREATE ROLE data_analyst;

Ruolo dell'utente

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Progettazione di database

Ruoli comuni in PostgreSQL

Ruolo Accesso consentito
pg_read_all_settings Legge tutte le variabili di configurazione, anche quelle che di solito sono visibili solo ai superutenti.
pg_read_all_stats Leggi tutte le viste pg_stat_* e usa varie estensioni relative alle statistiche, anche quelle che di solito sono visibili solo ai superutenti.
pg_signal_backend Invia segnali ad altri backend (ad esempio: annulla query, termina).
Altro... Altro...
1 http://bit.ly/default_roles_postgresql
Progettazione di database

Vantaggi e svantaggi dei ruoli

Vantaggi

  • I ruoli continuano a esistere anche dopo che gli utenti sono stati cancellati.
  • I ruoli possono essere creati prima degli account utente.
  • Risparmia tempo ai DBAs

Insidie

  • A volte un ruolo dà a un utente specifico troppi permessi
    • Devi stare attento
Progettazione di database

Passiamo alla pratica!

Progettazione di database

Preparing Video For Download...