54 lines
2.6 KiB
SQL
54 lines
2.6 KiB
SQL
|
|
-- =============================================================================
|
||
|
|
-- 00_create_roles.sql — создание 4 ролей PostgreSQL для Лидерры
|
||
|
|
-- =============================================================================
|
||
|
|
-- Версия: 1.0 (08.05.2026, фаза 1 backend multi-tenant фундамент)
|
||
|
|
-- Источник: schema.sql v8.5 §13 «Роли БД (CTO-5)» (закомментированные DDL)
|
||
|
|
-- =============================================================================
|
||
|
|
--
|
||
|
|
-- НАЗНАЧЕНИЕ: deployment-скрипт для production-окружения (Yandex Managed PG).
|
||
|
|
-- На **dev-машине** (этот скрипт) роли создавать НЕ требуется — schema.sql §13
|
||
|
|
-- разрешает использовать суперпользователя `postgres`. RLS-политики используют
|
||
|
|
-- `current_setting('app.current_tenant_id')::bigint` — работают для любого
|
||
|
|
-- пользователя БД (включая postgres).
|
||
|
|
--
|
||
|
|
-- ЗАПУСК (production):
|
||
|
|
-- psql -U postgres -h <host> -d postgres \
|
||
|
|
-- -v crm_app_password='<from-secrets>' \
|
||
|
|
-- -v crm_admin_password='<from-secrets>' \
|
||
|
|
-- -v crm_migrator_password='<from-secrets>' \
|
||
|
|
-- -v crm_audit_writer_password='<from-secrets>' \
|
||
|
|
-- -f db/00_create_roles.sql
|
||
|
|
--
|
||
|
|
-- ПОСЛЕ: запустить миграции под `crm_migrator` (BYPASSRLS, CREATEDB):
|
||
|
|
-- php artisan migrate --database=pgsql_migrator
|
||
|
|
--
|
||
|
|
-- ЗАТЕМ: запустить db/02_grants.sql под `crm_admin_user` (BYPASSRLS):
|
||
|
|
-- psql -U crm_admin_user -h <host> -d liderra -f db/02_grants.sql
|
||
|
|
--
|
||
|
|
-- ЗАВЕРШЕНИЕ: переключить .env приложения на `crm_app_user` (без BYPASSRLS).
|
||
|
|
-- =============================================================================
|
||
|
|
|
||
|
|
-- Роль приложения (tenant-уровень, RLS активна)
|
||
|
|
CREATE ROLE crm_app_user
|
||
|
|
LOGIN
|
||
|
|
PASSWORD :'crm_app_password';
|
||
|
|
|
||
|
|
-- Роль администрирования SaaS (BYPASSRLS для cross-tenant операций админки)
|
||
|
|
CREATE ROLE crm_admin_user
|
||
|
|
LOGIN
|
||
|
|
PASSWORD :'crm_admin_password'
|
||
|
|
BYPASSRLS;
|
||
|
|
|
||
|
|
-- Роль миграций (BYPASSRLS + CREATEDB для structural changes)
|
||
|
|
CREATE ROLE crm_migrator
|
||
|
|
LOGIN
|
||
|
|
PASSWORD :'crm_migrator_password'
|
||
|
|
BYPASSRLS
|
||
|
|
CREATEDB;
|
||
|
|
|
||
|
|
-- Роль append-only audit-журналирования (только INSERT, UPDATE/DELETE
|
||
|
|
-- блокируются триггерами audit_block_mutation, см. schema.sql §14)
|
||
|
|
CREATE ROLE crm_audit_writer
|
||
|
|
LOGIN
|
||
|
|
PASSWORD :'crm_audit_writer_password';
|