Databasroller och åtkomstkontroll

Databasdesign

Lis Sulmont

Curriculum Manager

Ge och återkalla åtkomst till en vy

GRANT privilege(s) or REVOKE privilege(s)

ON object

TO role or FROM role

  • Privilegier: SELECT, INSERT, UPDATE, DELETE, osv.
  • Objekt: tabell, vy, schema, osv.
  • Roller: en databasanvändare eller en grupp av databasanvändare
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Databasdesign

Databasroller

  • Hantera behörigheter för databasåtkomst
  • En databasroll är en entitet som innehåller information som:
    • Definierar rollens privilegier
      • Kan du logga in?
      • Kan du skapa databaser?
      • Kan du skriva till tabeller?
    • Interagerar med klientautentiseringssystemet
      • Lösenord
  • Roller kan tilldelas en eller flera användare
  • Roller är globala inom en databasklusterinstallation
Databasdesign

Skapa en roll

  • Tom roll
CREATE ROLE data_analyst;
  • Roller med vissa attribut inställda
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
Databasdesign

GRANT och REVOKE – privilegier för roller

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

Tillgängliga privilegier i PostgreSQL är:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE och USAGE
1 http://bit.ly/postgresql_privileges
Databasdesign

Användare och grupper (är båda roller)

  • En roll är en entitet som kan fungera som användare och/eller grupp
    • Användarroller
    • Grupproller

Rollgrafik där en yttre cirkel är en grupproll och tre inre cirklar inom den yttre cirkeln är användarroller

Databasdesign

Användare och grupper (är båda roller)

Grupproll

CREATE ROLE data_analyst;

Användarroll

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

Användare och grupper (är båda roller)

Grupproll

CREATE ROLE data_analyst;

Användarroll

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Databasdesign

Vanliga PostgreSQL-roller

Roll Tillåten åtkomst
pg_read_all_settings Läs alla konfigurationsvariabler, även de som normalt bara är synliga för superanvändare.
pg_read_all_stats Läs alla pg_stat_*-vyer och använd diverse statistikrelaterade tillägg, även de som normalt bara är synliga för superanvändare.
pg_signal_backend Skicka signaler till andra backends (t.ex. avbryt fråga, avsluta).
Mer... Mer...
1 http://bit.ly/default_roles_postgresql
Databasdesign

Fördelar och fallgropar med roller

Fördelar

  • Roller finns kvar även efter att användare tas bort
  • Roller kan skapas innan användarkonton
  • Sparar tid för DBA:er

Fallgropar

  • Ibland ger en roll en specifik användare alltför bred åtkomst
    • Det är viktigt att hålla koll på detta
Databasdesign

Nu kör vi en övning!

Databasdesign

Preparing Video For Download...