Роли в базе данных и управление доступом

Проектирование баз данных

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 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 Отправка сигналов другим бэкендам (например: отмена запроса, завершение сеанса).
Другие... Другие...
1 http://bit.ly/default_roles_postgresql
Проектирование баз данных

Преимущества и недостатки ролей

Преимущества

  • Роли сохраняются после удаления пользователей
  • Роли можно создавать до создания учётных записей
  • Экономят время администраторов баз данных

Недостатки

  • Роль может предоставить конкретному пользователю избыточный доступ
    • Это требует внимательного контроля
Проектирование баз данных

Давайте потренируемся!

Проектирование баз данных

Preparing Video For Download...