Ответ
Да, такие операции выполнялись, но строго в рамках формализованного процесса изменений (Change Management) и только после всесторонней проверки в staging-среде.
Типичный процесс и меры предосторожности:
- Планирование и тестирование: Изменение (например, SQL-скрипт) сначала разрабатывалось и выполнялось в тестовой среде, идентичной PROD.
- Ревью и согласование: Скрипт проходил ревью командой (разработчик, DBA, тестировщик). Получалось formal approval.
- Резервное копирование (Backup): Перед выполнением на PROD обязательно создавался бэкап целевой базы данных или конкретных настроек прав.
- План отката (Rollback Plan): Всегда готовился и согласовывался откатный скрипт.
- Окно изменений: Выполнение происходило в запланированное время минимальной нагрузки, часто с мониторингом.
Пример создания роли только для чтения в PostgreSQL:
-- 1. Создание роли с паролем
CREATE ROLE analyst_readonly WITH LOGIN PASSWORD 'strong_password_here';
-- 2. Выдача прав на чтение всем таблицам в схеме public
GRANT CONNECT ON DATABASE my_database TO analyst_readonly;
GRANT USAGE ON SCHEMA public TO analyst_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst_readonly;
-- 3. Важно: Настройка прав для будущих таблиц
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO analyst_readonly;
После применения изменений проводилась проверка: подключение под новой ролью и попытка выполнить разрешенные и запрещенные операции (SELECT, INSERT, DELETE).