Управление правами пользователей

YMatrix использует подход к управлению правами на основе ролей, чтобы упростить администрирование прав доступа. С помощью ролей, когда группе пользователей требуются одинаковые наборы прав, не нужно выдавать разрешения индивидуально каждому пользователю. Вместо этого необходимо выдать требуемые права роли, а затем назначить эту роль группе пользователей. Управление правами через роли обеспечивает централизованный контроль над разрешениями нескольких пользователей.

Роль может рассматриваться как база данных пользователя или как группа пользователей базы данных. Роли и пользователи по сути являются одной и той же сущностью; единственное различие заключается в том, предоставляется ли по умолчанию привилегия LOGIN при создании роли. Роль с привилегией LOGIN считается пользователем. Роли могут быть назначены пользователям, чтобы пользователи наследовали все права роли. Пользователь может принадлежать нескольким ролям и, следовательно, обладать комбинированными правами этих ролей. Роли также могут владеть объектами базы данных (такими как таблицы, схемы и последовательности) и предоставлять права на эти объекты другим ролям. Для назначения конкретных прав на объекты данных пользователям используйте инструкции GRANT и REVOKE.

  • Сокращения привилегий ACL
Привилегия Сокращение Применимые типы объектов
SELECT r ("read") LARGE OBJECT, SEQUENCE, TABLE (и объекты, подобные таблицам), столбец таблицы
INSERT a ("append") TABLE, столбец таблицы
UPDATE w ("write") LARGE OBJECT, SEQUENCE, TABLE, столбец таблицы
DELETE d TABLE
TRUNCATE D TABLE
REFERENCES x TABLE, столбец таблицы
TRIGGER t TABLE
CREATE C DATABASE, SCHEMA, TABLESPACE
CONNECT c DATABASE
TEMPORARY T DATABASE
EXECUTE X FUNCTION, PROCEDURE
USAGE U DOMAIN, FOREIGN DATA WRAPPER, FOREIGN SERVER, LANGUAGE, SCHEMA, SEQUENCE, TYPE
  • Обзор привилегий доступа
Тип объекта Все привилегии Привилегии PUBLIC по умолчанию Команда psql
DATABASE CTc Tc \l
DOMAIN U U \dD+
FUNCTION или PROCEDURE X X \df+
FOREIGN DATA WRAPPER U отсутствуют \dew+
FOREIGN SERVER U отсутствуют \des+
LANGUAGE U U \dL+
LARGE OBJECT rw отсутствуют
SCHEMA UC отсутствуют \dn+
SEQUENCE rwU отсутствуют \dp
TABLE (и объекты, подобные таблицам) arwdDxt отсутствуют \dp
Столбец таблицы arwx отсутствуют \dp
TABLESPACE C отсутствуют \db+
TYPE U U \dT+

Примеры

  • Пользователь miriam создает таблицу mytable и выполняет следующий набор операторов GRANT:
GRANT SELECT ON mytable TO PUBLIC;
GRANT SELECT, UPDATE, INSERT ON mytable TO admin;
GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;
  • Информация ACL для этой таблицы имеет следующий вид:
\dp mytable
                                 Access privileges
 Schema |  Name   | Type  |   Access privileges   |   Column privileges   | Policies
--------+---------+-------+-----------------------+-----------------------+----------
 public | mytable | table | miriam=arwdDxt/miriam+| col1:                +|
        |         |       | =r/miriam            +|   miriam_rw=rw/miriam |
        |         |       | admin=arw/miriam      |                       |