33 lines
2.2 KiB
SQL
33 lines
2.2 KiB
SQL
-- ============================================================================
|
||
-- Права доступа к БД журнала аудита (мера ФСТЭК РСБ.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.
|