Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje
usługi Azure SQL Database
Azure SQL Managed Instance
Rejestr zapewnia formę integralności danych o nazwie integralność przekazywania, która zapewnia dowody na manipulowanie danymi w tabelach rejestru. Proces weryfikacji bazy danych przyjmuje jako dane wejściowe co najmniej jeden wcześniej wygenerowany skrót bazy danych. Następnie ponownie oblicza skróty przechowywane w rejestrze bazy danych w oparciu o aktualny stan tabel rejestru. Jeśli obliczone skróty nie są zgodne z skrótami wejściowymi, weryfikacja zakończy się niepowodzeniem. Błąd wskazuje, że dane zostały naruszone. Proces weryfikacji zgłasza wszystkie wykryte niespójności.
Proces weryfikacji bazy danych
Proces weryfikacji skanuje wszystkie tabele rejestrów i historii. Ponownie skompiluje skróty SHA-256 wierszy i porównuje je z plikami skrótów bazy danych przekazanymi do procedury składowanej weryfikacji.
Ponieważ weryfikacja rejestru ponownie oblicza wszystkie skróty dla transakcji w bazie danych, może to być proces zasobochłonny dla baz danych o dużych ilościach danych. Aby zmniejszyć koszt weryfikacji, funkcja uwidacznia opcje weryfikowania poszczególnych tabel rejestru lub tylko podzestawu tabel rejestru.
Weryfikacja bazy danych odbywa się za pomocą dwóch procedur składowanych, w zależności od tego, czy używasz automatycznego magazynu skrótów , czy ręcznie zarządzasz skrótami.
Uwaga / Notatka
Opcja bazy danych ALLOW_SNAPSHOT_ISOLATION musi być włączona w bazie danych, zanim będzie można uruchomić procedury weryfikacyjne.
Weryfikacja bazy danych korzystająca z automatycznego przechowywania skrótów
W przypadku używania automatycznego przechowywania skrótów do generowania i przechowywania skrótów bazy danych, lokalizacja przechowywania skrótów znajduje się w widoku katalogu systemowego sys.database_ledger_digest_locations jako obiekty JSON. Uruchamianie weryfikacji bazy danych polega na wykonaniu systemowej procedury składowanej sp_verify_database_ledger_from_digest_storage. Określ obiekty JSON z widoku katalogu systemu sys.database_ledger_digest_locations , w którym mają być przechowywane skróty bazy danych.
Gdy korzystasz z automatycznego magazynowania skrótów, możesz zmieniać lokalizacje przechowywania w całym cyklu życia tabel rejestru. Jeśli na przykład zaczniesz używać niezmiennego magazynu platformy Azure do przechowywania plików zbioru kontrolnego, ale później chcesz skorzystać z poufnego rejestru platformy Azure, możesz to zrobić. Ta zmiana lokalizacji jest przechowywana w sys.database_ledger_digest_locations.
Podczas uruchamiania weryfikacji rejestru, przeanalizuj lokalizację digest_locations, aby upewnić się, że skróty używane w weryfikacji są pobierane z przewidywanych lokalizacji. Chcesz upewnić się, że uprzywilejowany użytkownik nie zmienił lokalizacji magazynu skrótu na niechronioną lokalizację magazynu, taką jak Azure Storage, bez skonfigurowanej i zablokowanej polityki niezmienności.
Aby uprościć uruchamianie weryfikacji w przypadku korzystania z wielu lokalizacji magazynu skrótów, poniższy skrypt pobierze lokalizacje skrótów i wykona weryfikację przy użyciu tych lokalizacji.
DECLARE @digest_locations NVARCHAR(MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES);
SELECT @digest_locations as digest_locations;
BEGIN TRY
EXEC sys.sp_verify_database_ledger_from_digest_storage @digest_locations;
SELECT 'Ledger verification succeeded.' AS Result;
END TRY
BEGIN CATCH
THROW;
END CATCH
Weryfikacja bazy danych korzystająca ze składnicy ręcznie zarządzanych skrótów
W przypadku używania magazynu szyfrującego ręcznego do generowania i przechowywania skrótów bazy danych procedura składowana sp_verify_database_ledger jest używana do weryfikowania bazy danych rejestru. W procedurze składowanej dołączana jest zawartość JSON podsumowania. Po uruchomieniu weryfikacji bazy danych możesz zweryfikować wszystkie tabele w bazie danych lub zweryfikować określone tabele.
Poniższy kod to przykład uruchomienia procedury składowanej sp_verify_database_ledger przez przekazanie dwóch skrótów na potrzeby weryfikacji:
EXECUTE sp_verify_database_ledger N'
[
{
"database_name": "ledgerdb",
"block_id": 0,
"hash": "0xDC160697D823C51377F97020796486A59047EBDBF77C3E8F94EEE0FFF7B38A6A",
"last_transaction_commit_time": "2020-11-12T18:01:56.6200000",
"digest_time": "2020-11-12T18:39:27.7385724"
},
{
"database_name": "ledgerdb",
"block_id": 1,
"hash": "0xE5BE97FDFFA4A16ADF7301C8B2BEBC4BAE5895CD76785D699B815ED2653D9EF8",
"last_transaction_commit_time": "2020-11-12T18:39:35.6633333",
"digest_time": "2020-11-12T18:43:30.4701575"
}
]';
Kody zwracane dla sp_verify_database_ledger i sp_verify_database_ledger_from_digest_storage to 0 (powodzenie) lub 1 (niepowodzenie).
Rekomendacja
W idealnym przypadku chcesz zminimalizować lub nawet wyeliminować przerwę między czasem wystąpienia ataku a czasem wykrycia. Firma Microsoft zaleca regularne planowanie weryfikacji rejestru, aby uniknąć przywracania bazy danych z dni lub miesięcy temu po wykryciu naruszenia. Przedział weryfikacji powinien być ustalany przez klienta, ale należy pamiętać, że weryfikacja rejestru może być zasobożerna. Zalecamy uruchomienie tej czynności w oknie obsługi lub poza godzinami szczytu.
Weryfikację bazy danych w usłudze Azure SQL Database można zaplanować za pomocą zadań elastycznych lub usługi Azure Automation. Aby zaplanować weryfikację bazy danych w usłudze Azure SQL Managed Instance i programie SQL Server, możesz użyć agenta programu SQL Server.
Permissions
Weryfikacja bazy danych wymaga VIEW LEDGER CONTENT uprawnienia. Aby uzyskać szczegółowe informacje na temat uprawnień związanych z tabelami rejestru, zobacz Uprawnienia.