Criar uma ledger table, ler seu histórico de alterações e verificar a integridade
SQL ServerSegurançaComando
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":"..."}';O que faz
Cria uma ledger table que registra as alterações de linhas em uma cadeia de hashes criptográficos; a view _Ledger mostra quem fez cada INSERT/UPDATE/DELETE e quando, e a verificação contra um digest armazenado prova que os dados não foram alterados depois (inclusive por DBAs).
Quando usar
Para dados cuja imutabilidade precisa ser comprovável: registros financeiros, trilhas de auditoria, registros de contratos/aprovações.
Atenção
O ledger não pode ser desligado depois que a tabela é criada; uma ledger table não pode ser convertida em tabela comum, e uma ledger table removida é mantida como dropped ledger table. O updatable ledger grava uma linha de histórico a cada alteração e o armazenamento cresce. A menos que os digests sejam armazenados fora do banco em armazenamento imutável (WORM, Azure immutable blob), a verificação não tem valor probatório. sp_verify_database_ledger falha com o erro 37498 sem snapshot isolation.
Relacionados
- Configurar TDE: master key, certificado, backup do certificado e progresso da criptografia
- Configurar o SQL Server Audit: logins, mudanças de permissão e acesso a tabelas
- Encontrar usuários órfãos e remapeá-los para logins (após restore / AG)
- Auditoria de logins e permissões: membros de sysadmin, permissões arriscadas, senhas fracas