Role bazodanowe i kontrola dostępu

Projektowanie baz danych

Lis Sulmont

Curriculum Manager

Nadawanie i odbieranie dostępu do widoku

GRANT privilege(s) lub REVOKE privilege(s)

ON object

TO role lub FROM role

  • Uprawnienia: SELECT, INSERT, UPDATE, DELETE itd.
  • Obiekty: tabela, widok, schemat itd.
  • Role: użytkownik lub grupa użytkowników bazy danych
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Projektowanie baz danych

Role bazodanowe

  • Zarządzanie uprawnieniami dostępu do bazy danych
  • Rola bazodanowa to encja zawierająca informacje, które:
    • Definiują uprawnienia roli
      • Czy można się zalogować?
      • Czy można tworzyć bazy danych?
      • Czy można zapisywać do tabel?
    • Współdziałają z systemem uwierzytelniania klienta
      • Hasło
  • Role można przypisywać do jednego lub wielu użytkowników
  • Role mają zasięg globalny w ramach klastra bazy danych
Projektowanie baz danych

Tworzenie roli

  • Pusta rola
CREATE ROLE data_analyst;
  • Role z ustawionymi atrybutami
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
Projektowanie baz danych

GRANT i REVOKE – uprawnienia dla ról

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

Dostępne uprawnienia w PostgreSQL:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE i USAGE
1 http://bit.ly/postgresql_privileges
Projektowanie baz danych

Użytkownicy i grupy (to obie role)

  • Rola to encja, która może pełnić funkcję użytkownika i/lub grupy
    • Role użytkowników
    • Role grupowe

Grafika ról: zewnętrzny okrąg to rola grupowa, trzy wewnętrzne okręgi to role użytkowników

Projektowanie baz danych

Użytkownicy i grupy (to obie role)

Rola grupowa

CREATE ROLE data_analyst;

Rola użytkownika

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Projektowanie baz danych

Użytkownicy i grupy (to obie role)

Rola grupowa

CREATE ROLE data_analyst;

Rola użytkownika

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Projektowanie baz danych

Typowe role PostgreSQL

Rola Dozwolony dostęp
pg_read_all_settings Odczyt wszystkich zmiennych konfiguracyjnych, w tym widocznych tylko dla superużytkowników.
pg_read_all_stats Odczyt wszystkich widoków pg_stat_* i użycie rozszerzeń statystycznych, w tym zastrzeżonych dla superużytkowników.
pg_signal_backend Wysyłanie sygnałów do innych procesów (np. anulowanie zapytania, zakończenie).
Więcej... Więcej...
1 http://bit.ly/default_roles_postgresql
Projektowanie baz danych

Zalety i pułapki ról

Zalety

  • Role istnieją po usunięciu użytkowników
  • Role można tworzyć przed kontami użytkowników
  • Oszczędzają czas administratorów baz danych

Pułapki

  • Rola może przyznać użytkownikowi zbyt szeroki dostęp
    • Należy zachować ostrożność
Projektowanie baz danych

Czas na ćwiczenia!

Projektowanie baz danych

Preparing Video For Download...