3/5 - (2 голоса)
Вот детальный план и чек-лист для проведения ИТ-аудита базы данных MSSQL с соответствующими скриптами для проверки:
- Проверка безопасности:
- Проверка наличия и правильной конфигурации учетных записей администратора базы данных:
- Скрипт:
SELECT name, type_desc, create_date, modify_date FROM sys.server_principals WHERE type = 'S' AND is_disabled = 0 AND name LIKE '%sysadmin%' ORDER BY name;
- Скрипт:
- Проверка уровня доступа пользователей:
- Скрипт:
SELECT DB_NAME() AS 'Database', [name] AS 'Username', [type_desc] AS 'Type', create_date AS 'Creation Date', modify_date AS 'Last Modified' FROM sys.database_principals WHERE type_desc NOT IN ('DATABASE_ROLE', 'EXTERNAL_USER') ORDER BY [name];
- Скрипт:
- Проверка наличия и использования сложных паролей:
- Скрипт:
SELECT name, is_disabled, create_date, modify_date FROM sys.sql_logins WHERE is_disabled = 0 AND password_hash IS NOT NULL ORDER BY name;
- Скрипт:
- Проверка наличия обновлений и патчей для СУБД:
- Проверьте официальный сайт Microsoft для получения информации о последних обновлениях и патчах.
- Проверка наличия и правильной конфигурации учетных записей администратора базы данных:
- Проверка производительности:
- Проверка настройки и использования индексов:
- Скрипт:
SELECT OBJECT_NAME(i.object_id) AS 'Table', i.name AS 'Index', i.type_desc AS 'Type', CASE WHEN i.is_disabled = 1 THEN 'Disabled' ELSE 'Enabled' END AS 'Status', s.avg_fragmentation_in_percent AS 'Fragmentation %' FROM sys.indexes i INNER JOIN sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'LIMITED') s ON i.object_id = s.object_id AND i.index_id = s.index_id WHERE i.index_id > 0 ORDER BY OBJECT_NAME(i.object_id), i.index_id;
- Скрипт:
- Проверка запросов, занимающих много ресурсов:
- Скрипт:
SELECT TOP 10 qs.creation_time AS 'Creation Time', DB_NAME(qt.dbid) AS 'Database', SUBSTRING(qt.text, qs.statement_start_offset/2, (CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) AS 'Query Text', qs.total_elapsed_time AS 'Total Elapsed Time', qs.execution_count AS 'Execution Count', qs.total_logical_reads AS 'Total Logical Reads', qs.total_physical_reads AS 'Total Physical Reads', qs.total_worker_time AS 'Total Worker Time' FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt WHERE qt.dbid = DB_ID() -- Добавьте идентификатор базы данных, для которой вы хотите выполнить проверку ORDER BY qs.total_elapsed_time DESC;
- Скрипт:
- Проверка настройки и использования индексов:
- Проверка размера базы данных и ее файлов:
- Скрипт:
SELECT DB_NAME(database_id) AS 'Database', type_desc AS 'File Type', name AS 'Logical Name', physical_name AS 'Physical Name', size/128 AS 'Size in MB', max_size/128 AS 'Max Size in MB', growth AS 'Growth', is_percent_growth AS 'Percent Growth' FROM sys.master_files WHERE type = 0 -- Data files ORDER BY DB_NAME(database_id), type_desc;
- Скрипт:
- Проверка целостности данных:
- Проверка наличия и состояния баз данных:
- Скрипт:
SELECT name AS 'Database', state_desc AS 'State', recovery_model_desc AS 'Recovery Model', compatibility_level AS 'Compatibility Level' FROM sys.databases;
- Скрипт:
- Проверка наличия и состояния файлов баз данных:
- Скрипт:
SELECT DB_NAME(database_id) AS 'Database', name AS 'File', type_desc AS 'Type', state_desc AS 'State' FROM sys.master_files WHERE type = 0 -- Data files ORDER BY DB_NAME(database_id), type_desc;
- Скрипт:
- Проверка наличия и состояния таблиц:
- Скрипт:
SELECT OBJECT_NAME(object_id) AS 'Table', type_desc AS 'Type', create_date AS 'Creation Date', modify_date AS 'Last Modified' FROM sys.tables;
- Скрипт:
- Проверка наличия и состояния баз данных:
- Проверка резервного копирования и восстановления:
- Проверка расписания резервного копирования:
- Скрипт:
SELECT database_name AS 'Database', backup_type AS 'Backup Type', backup_start_date AS 'Backup Start Date', backup_finish_date AS 'Backup Finish Date', backup_size/1024/1024 AS 'Backup Size (MB)' FROM msdb.dbo.backupset ORDER BY database_name, backup_start_date DESC;
- Скрипт:
- Проверка последних успешных восстановлений:
- Скрипт:
SELECT destination_database_name AS 'Database', restore_date AS 'Restore Date', user_name AS 'Restored By', restore_type AS 'Restore Type' FROM msdb.dbo.restorehistory WHERE restore_type = 'D' -- Database restore ORDER BY destination_database_name, restore_date DESC;
- Скрипт:
- Проверка расписания резервного копирования:
- Проверка общей информации о базе данных:
- Скрипт:
SELECT name AS 'Database', compatibility_level AS 'Compatibility Level', recovery_model_desc AS 'Recovery Model', state_desc AS 'State', user_access_desc AS 'User Access', create_date AS 'Creation Date', collation_name AS 'Collation' FROM sys.databases WHERE name = 'Название базы данных'; -- Замените 'Название базы данных' на имя конкретной базы данных, которую вы хотите проверить
- Скрипт:
Это лишь некоторые примеры скриптов для проверки базы данных MSSQL в рамках ИТ-аудита. В зависимости от конкретных требований и контекста, вам может потребоваться внести дополнительные проверки или настроить скрипты под вашу среду.