Создание ledger-таблицы, чтение истории изменений и проверка целостности
SQL ServerБезопасностьКоманда
USE [Musteri];
-- Ledger verification requires snapshot isolation:
ALTER DATABASE [Musteri] SET ALLOW_SNAPSHOT_ISOLATION ON;
-- Updatable ledger table (history table maintained automatically):
CREATE TABLE dbo.Hesap (
HesapId int NOT NULL PRIMARY KEY,
Bakiye decimal(18,2) NOT NULL
)
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.Hesap_History), LEDGER = ON);
-- Append-only ledger (UPDATE/DELETE are blocked):
CREATE TABLE dbo.IslemLog (Id bigint IDENTITY, Mesaj nvarchar(400))
WITH (LEDGER = ON (APPEND_ONLY = ON));
-- Who changed what, and when:
SELECT t.commit_time, t.principal_name, l.HesapId, l.Bakiye, l.ledger_operation_type_desc
FROM dbo.Hesap_Ledger l
JOIN sys.database_ledger_transactions t ON t.transaction_id = l.ledger_transaction_id
ORDER BY t.commit_time DESC;
-- Take a digest (store it somewhere trusted outside) and verify:
EXEC sys.sp_generate_database_ledger_digest;
EXEC sys.sp_verify_database_ledger
N'{"database_name":"Musteri","block_id":0,"hash":"0x...","last_transaction_commit_time":"...","digest_time":"..."}';Что делает
Создаёт ledger-таблицу, которая записывает изменения строк в криптографическую цепочку хешей; представление _Ledger показывает, кто и когда выполнил каждый INSERT/UPDATE/DELETE, а проверка по сохранённому дайджесту доказывает, что данные не изменялись задним числом (в том числе DBA).
Когда использовать
Для данных, неизменность которых должна быть доказуема: финансовые записи, журналы аудита, записи о договорах/согласованиях.
Внимание
Ledger нельзя отключить после создания таблицы; ledger-таблицу нельзя превратить в обычную, а удалённая ledger-таблица сохраняется как dropped ledger table. Обновляемый ledger пишет строку истории при каждом изменении, и объём хранилища растёт. Если дайджесты не хранятся вне базы в неизменяемом хранилище (WORM, Azure immutable blob), проверка не имеет доказательной силы. sp_verify_database_ledger завершается ошибкой 37498 без snapshot isolation.
Связанные материалы
- Настройка TDE: главный ключ, сертификат, резервная копия сертификата и ход шифрования
- Настройка SQL Server Audit: входы, изменения разрешений и доступ к таблицам
- Поиск потерянных пользователей и их привязка к логинам (после восстановления / AG)
- Аудит логинов и разрешений: члены sysadmin, рискованные разрешения, слабые пароли