Ролі бази даних і контроль доступу

Проєктування баз даних

Lis Sulmont

Curriculum Manager

Надання й відкликання доступу до подання

GRANT privilege(s) або REVOKE privilege(s)

ON object

TO role або FROM role

  • Привілеї: SELECT, INSERT, UPDATE, DELETE тощо
  • Об'єкти: таблиця, подання, схема тощо
  • Ролі: користувач БД або група користувачів БД
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Проєктування баз даних

Ролі бази даних

  • Керуйте дозволами доступу до БД
  • Роль БД — це сутність, що містить інформацію, яка:
    • Визначає привілеї ролі
      • Чи можете ви входити?
      • Чи можете ви створювати бази даних?
      • Чи можете ви записувати в таблиці?
    • Взаємодіє з системою автентифікації клієнта
      • Пароль
  • Ролі можна призначати одному або кільком користувачам
  • Ролі глобальні в межах інсталяції кластера БД
Проєктування баз даних

Створення ролі

  • Порожня роль
CREATE ROLE data_analyst;
  • Ролі з деякими встановленими атрибутами
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
Проєктування баз даних

GRANT і REVOKE для ролей

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

Доступні привілеї в PostgreSQL:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE і USAGE
1 http://bit.ly/postgresql_privileges
Проєктування баз даних

Користувачі й групи (обидва — ролі)

  • Роль — це сутність, що може бути користувачем і/або групою
    • Ролі-користувачі
    • Ролі-групи

Графіка ролей: зовнішнє коло — роль-група, три внутрішні кола — ролі-користувачі

Проєктування баз даних

Користувачі й групи (обидва — ролі)

Роль-група

CREATE ROLE data_analyst;

Роль-користувач

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Проєктування баз даних

Користувачі й групи (обидва — ролі)

Роль-група

CREATE ROLE data_analyst;

Роль-користувач

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Проєктування баз даних

Поширені ролі PostgreSQL

Роль Дозволений доступ
pg_read_all_settings Читати всі змінні конфігурації, навіть зазвичай видимі лише суперкористувачам.
pg_read_all_stats Читати всі подання pg_stat_* і використовувати різні пов'язані зі статистикою розширення, навіть зазвичай видимі лише суперкористувачам.
pg_signal_backend Надсилати сигнали іншим бекендам (наприклад, скасувати запит, завершити).
More... More...
1 http://bit.ly/default_roles_postgresql
Проєктування баз даних

Переваги та ризики ролей

Переваги

  • Ролі лишаються після видалення користувачів
  • Ролі можна створювати до облікових записів
  • Заощаджують час DBA

Ризики

  • Інколи роль дає окремому користувачу забагато доступу
    • Потрібно уважно стежити
Проєктування баз даних

Давайте потренуємось!

Проєктування баз даних

Preparing Video For Download...