Разверните OpenClaw в облаке в один клик
Вход/ Регистрация
На главную
Облачные сервисы

Настройка ролей

Пользователь с привилегией CREATE ROLE может:

  • создавать новых пользователей (CREATE USER);
  • создавать роли (CREATE ROLE);
  • управлять членством в ролях (GRANT ... TO ...).

Создание пользователя

Пользователь — это роль, которой разрешено авторизовываться в базе. Такая роль может подключаться к базе с логином и паролем.

Создать пользователя с паролем можно при помощи запроса:

    
CREATE USER someuser WITH PASSWORD 'password';

Где someuser — логин пользователя, password — пароль.

Новый пользователь отобразится в панели управления DBaaS через некоторое время после создания.

Scr 20250830 Nmbu

Создание роли и назначение ее пользователю

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

Создадим две роли: одна с правами только на чтение, вторая — с правами на чтение и запись.

Роль с правами только на чтение:

    
CREATE ROLE app_reader;

Роль с правами на чтение и запись:

    
CREATE ROLE app_writer;

Назначим роль пользователю:

    
GRANT app_writer TO someuser;

Настройка схемы

По умолчанию все таблицы в PostgreSQL создаются в схеме public. Для выдачи грантов необходимо создать новую схему:

    
CREATE SCHEMA app_data;

Создадим таблицы и явно укажем новую схему:

    
CREATE TABLE app_data.users ( id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL ); CREATE TABLE app_data.orders ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES app_data.users(id), order_date TIMESTAMP DEFAULT now() );

Теперь можем выдать права на схему для ранее созданных ролей:

    
GRANT USAGE ON SCHEMA app_data TO app_reader; GRANT USAGE ON SCHEMA app_data TO app_writer;

И право на создание объектов в схеме:

    
GRANT CREATE ON SCHEMA app_data TO app_writer;

Установка прав на таблицы

Выдадим права на чтение всех существующих таблиц в схеме:

    
GRANT SELECT ON ALL TABLES IN SCHEMA app_data TO app_reader;

И права на запись:

    
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA app_data TO app_writer;

Настроим права для новых таблиц, которые будут устанавливаться по умолчанию:

    
ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT SELECT ON TABLES TO app_reader; ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_writer;

И права по умолчанию для новых последовательностей:

    
ALTER DEFAULT PRIVILEGES IN SCHEMA app_data GRANT USAGE, SELECT ON SEQUENCES TO app_writer;
Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев