Files
laravel-gost-template/database/sql/audit_grants.sql
2026-06-24 17:20:43 +09:00

33 lines
2.2 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- Права доступа к БД журнала аудита (мера ФСТЭК РСБ.3)
-- Учётная запись приложения может ТОЛЬКО добавлять и читать записи журнала,
-- но не изменять и не удалять их — это обеспечивает неизменяемость журнала.
--
-- Применять в отдельной БД журнала (AUDIT_DB_DATABASE) под суперпользователем.
-- PostgreSQL.
-- ============================================================================
-- 1. Роль приложения для записи журнала (укажите пароль из секрет-хранилища).
-- CREATE ROLE app_audit_writer LOGIN PASSWORD '***';
-- 2. Подключение и схема.
GRANT CONNECT ON DATABASE app_audit TO app_audit_writer;
GRANT USAGE ON SCHEMA public TO app_audit_writer;
-- 3. Только добавление и чтение записей журнала (никаких UPDATE/DELETE/TRUNCATE).
GRANT INSERT, SELECT ON TABLE audit_log TO app_audit_writer;
GRANT USAGE, SELECT ON SEQUENCE audit_log_id_seq TO app_audit_writer;
-- 4. Явный запрет изменения и удаления (на случай наследуемых прав).
REVOKE UPDATE, DELETE, TRUNCATE ON TABLE audit_log FROM app_audit_writer;
-- 5. Очистку по сроку хранения (команда audit:purge, мера РСБ.8) выполняет
-- ОТДЕЛЬНАЯ привилегированная роль по регламенту, не роль приложения:
-- CREATE ROLE audit_retention LOGIN PASSWORD '***';
-- GRANT DELETE ON TABLE audit_log TO audit_retention;
--
-- В этом случае запускайте artisan audit:purge под соединением с этой ролью.
-- 6. Рекомендация (РСБ.3): включить аудит самой СУБД и физически выносить
-- журнал на отдельный сервер/хранилище с репликацией в SIEM.