Права доступа в PostgreSQL

Создание баз данных PostgreSQL

Darryl Reeves

Industry Assistant Professor, New York University

Роли и привилегии в PostgreSQL

  • Пользователи — это разновидность роли
  • Можно также определять групповые роли
  • Доступ к объектам базы данных назначается ролям
Создание баз данных PostgreSQL

Команда GRANT

  • Привилегии «выдаются» ролям владельцем объекта
  • Команда GRANT назначает привилегии
  • Можно выдавать различные привилегии, в том числе:
    • SELECT
    • DELETE
    • UPDATE
      GRANT p ON obj TO grantee;
      
Создание баз данных PostgreSQL

Пример: база данных личных финансов

CREATE TABLE account (
    id SERIAL PRIMARY KEY,
    short_name VARCHAR(25),
    provider_id INTEGER REFERENCES provider(id),
    balance DECIMAL
);
CREATE USER fin WITH PASSWORD '38\5)uk1+3&}*Y';
Создание баз данных PostgreSQL

Пример: база данных личных финансов

  • Пользователю fin нужен доступ к таблице account
  • Доступ для fin
    • Добавление новых счетов
    • Обновление счетов
    • Запрос данных по счетам
  • Суперпользователь выдаёт привилегии
    GRANT INSERT ON account TO fin;
    
GRANT UPDATE ON account TO fin;
GRANT SELECT ON account TO fin;
Создание баз данных PostgreSQL

Привилегии на изменение таблиц

  • Некоторые привилегии нельзя выдать
  • Изменение таблицы требует прав владельца
ALTER TABLE account ADD COLUMN date_opened DATE;
ALTER TABLE account RENAME COLUMN short_name

TO nickname;
ALTER TABLE account OWNER TO fin;
Создание баз данных PostgreSQL

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

Создание баз данных PostgreSQL

Preparing Video For Download...