first commit
This commit is contained in:
32
database/sql/audit_grants.sql
Normal file
32
database/sql/audit_grants.sql
Normal file
@@ -0,0 +1,32 @@
|
||||
-- ============================================================================
|
||||
-- Права доступа к БД журнала аудита (мера ФСТЭК РСБ.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.
|
||||
Reference in New Issue
Block a user