11 KiB
Возможности пользователя
Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса Cloud PostgreSQL, а также перечень административных операций, доступных ему для самостоятельного выполнения.
При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL.
Общая информация о пользователе
При инициализации сервиса автоматически создаётся пользователь:
client
Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL.
Он предназначен для самостоятельного управления в пределах выданных привилегий:
- базами данных;
- ролями;
- правами доступа.
Выданные права и ограничения
Пользователю client назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных.
Атрибуты роли
Пользователь создаётся со следующими атрибутами:
CREATEDB— разрешено создание и удаление баз данных;CREATEROLE— разрешено создание ролей и пользователей, а также управление их.
Атрибут SUPERUSER пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует.
Права на системную базу postgres:
К стандартной базе данных postgres пользователю предоставлено только право подключения — CONNECT
Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются.
Мониторинг и системные представления
Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены:
- членство в роли
pg_monitor; - право
SELECTна системное представление:
pg_catalog.pg_stat_replication
Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно.
Изменение пароля
После первого подключения к базе данных пользователь client обязан выполнить изменения пароля.
Изменить пароля можно:
- в открытом виде (с передачей нового значения пароля);
- с указанием заранее сгенерированного хэша.
На сервере используется алгоритм шифрования паролей:
scram-sha-256
При использовании SCRAM применяется следующий формат хэша:
$<iterations>:<salt>$<storedkey>:<serverkey>
| Операция | Описание | Команда SQL |
|---|---|---|
| Смена пароля в открытом виде | Для смены пароля в открытом виде | ALTER USER client WITH PASSWORD 'new_strong_password'; |
| Смена пароля с указанием хэша | Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище | ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...'; |
| Создание новой базы данных | Для создания базы данных | CREATE DATABASE app_db; |
| Создание базы данных с указанием владельца | Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает | CREATE DATABASE app_db OWNER client; |
Создание пользователей и ролей
Пользователь client имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа.
| Операция | Описание | Команда SQL |
|---|---|---|
| Создание роли без логина | Для входа в базу данных (например, для организации прав доступа) | CREATE ROLE app_role; |
| Создание пользователя с паролем | Для создания пользователя с паролем. После выполнения этой команды новый пользователь app_user будет иметь возможность входа в базу данных, используя указанный пароль. |
CREATE USER app_user WITH PASSWORD 'app_password'; |
| Назначение роли пользователю | Для назначения роли пользователю. Данная команда позволяет управлять правами пользователя в рамках определённой роли. После выполнения этой команды пользователь app_user станет членом роли app_role, и будет наследовать все права, связанные с этой ролью. |
GRANT app_role TO app_user; |
Управление правами доступа
После создания пользователей и ролей необходимо назначить им соответствующие права доступа.
| Операция | Описание | Команда SQL |
|---|---|---|
| Передача владельца базы данных | Для передачи прав владения базой данных другому пользователю. После выполнения этой команды база данных app_db будет принадлежать пользователю app_user, и он будет иметь полный контроль над ней. |
ALTER DATABASE app_db OWNER TO app_user; |
| Выдача прав на подключение к базе данных | Для предоставления прав к подключению к базе данных. После выполнения этой команды пользователь может app_user подключаться к базе данных app_db. |
GRANT CONNECT ON DATABASE app_db TO app_user; |
| Предоставление прав на схему public | Для предоставления прав на использование схемы public. После выполнения этой команды пользователь app_user может использовать объекты в схеме public, а также создавать новые объекты внутри неё. |
GRANT USAGE, CREATE ON SCHEMA public TO app_user; |
| Предоставление прав на существующие таблицы | Для предоставления доступа пользователю к существующим таблицам в схеме public. После выполнения этой команды пользователь app_user может выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы public. |
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user; |
| Предоставление прав на будущие таблицы | Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме public. После выполнения этой команды все будущие таблицы, создаваемые в схеме public, будут автоматически иметь права для пользователя app_user на чтение, вставку, обновление и удаление данных. |
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user; |
Мониторинг репликации
Пользователь client имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL.
| Операция | Описание | Команда SQL |
|---|---|---|
| Просмотр состояния репликации | Для просмотра текущего статуса репликации. Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. | SELECT * FROM pg_stat_replication; |
::: warning Ограничения доступа реплкации
Пользователь client имеет доступ к данным в представлении pg_stat_replication только в режиме read-only. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации.
:::