Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Ledger,
Veritabanı doğrulama işlemi
Doğrulama işlemi tüm kayıt defteri ve geçmiş tablolarını tarar. Satırlarının SHA-256 karmalarını yeniden hesaplar ve doğrulama için kullanılan depolanmış prosedüre geçirilen veritabanı özeti dosyalarına karşılaştırır.
Kayıt defteri doğrulaması, veritabanındaki işlemler için tüm karmaları yeniden çözümlediğinden, büyük miktarda veriye sahip veritabanları için yoğun kaynak gerektiren bir işlem olabilir. Doğrulama maliyetini azaltmak için özellik, tek tek kayıt defteri tablolarını veya kayıt defteri tablolarının yalnızca bir alt kümesini doğrulama seçeneklerini kullanıma sunar.
Veritabanı doğrulamasını, otomatik özet depolama kullanmanıza veya özetleri el ile yönetmenize bağlı olarak, iki saklı yordam aracılığıyla gerçekleştirebilirsiniz.
Not
Doğrulama saklı yordamlarını çalıştırabilmeniz için ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneğinin veritabanında etkinleştirilmesi gerekir.
Otomatik özet depolama kullanan veritabanı doğrulaması
Veritabanı özetlerini oluşturmak ve depolamak için otomatik özet depolamayı kullanırken, özet depolamanın konumu sistem kataloğu görünümündedir sys.database_ledger_digest_locations JSON nesneleri olarak kullanılır. Veritabanı doğrulamasını çalıştırmak, sp_verify_database_ledger_from_digest_storage sistem saklı yordamının yürütülmesinden oluşur. Veritabanı özetlerinin depolanacak şekilde yapılandırıldığı sys.database_ledger_digest_locations sistem kataloğu görünümündeki JSON nesnelerini belirtin.
Otomatik özet depolamayı kullandığınızda, kayıt defteri tablolarının yaşam döngüsü boyunca depolama konumlarını değiştirebilirsiniz. Örneğin özet dosyalarınızı depolamak için Azure sabit depolamayı kullanarak başlıyorsanız ancak daha sonra bunun yerine Azure Gizli Kayıt Defteri'ni kullanmak istiyorsanız, bunu yapabilirsiniz. Bu konum değişikliği sys.database_ledger_digest_locationsiçinde depolanır.
Kayıt defteri doğrulamasını çalıştırdığınızda doğrulamada kullanılan özetlerin beklediğiniz konumlardan alındığından emin olmak için digest_locations konumunu inceleyin. Ayrıcalıklı bir kullanıcının özet depolamanın konumlarını yapılandırılmış ve kilitli bir değiştirilemezlik ilkesi olmadan Azure Depolama gibi korumasız bir depolama konumuna değiştirmediğinden emin olmak istiyorsunuz.
Birden çok özet depolama konumu kullandığınızda doğrulamayı çalıştırmayı basitleştirmek için aşağıdaki betik özetlerin konumlarını getirir ve bu konumları kullanarak doğrulamayı yürütür.
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
El ile özet depolama kullanan veritabanı doğrulaması
Manuel özet depolama kullanarak veritabanı özetleri oluşturup depolarken, ledger veritabanını doğrulamak için saklı yordam sp_verify_database_ledger kullanılır. Özetin JSON içeriği saklı tutulan prosedüre eklenir. Veritabanı doğrulamasını çalıştırırken, veritabanındaki tüm tabloları doğrulamayı veya belirli tabloları doğrulamayı seçebilirsiniz.
Aşağıda, doğrulama için iki özet verisi geçirerek sp_verify_database_ledger saklı yordamını çalıştırmanın bir örneği bulunmaktadır:
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"
}
]';
sp_verify_database_ledger ve sp_verify_database_ledger_from_digest_storage için dönüş kodları 0 (başarı) veya 1 (başarısızlık) olur.
Tavsiye
İdeal olarak, saldırının gerçekleştiği zaman ile algılandığı zaman arasındaki boşluğu en aza indirmek ve hatta ortadan kaldırmak istersiniz. Microsoft, tahrifat algılandıktan sonra veritabanının günler veya aylar önceki haline geri yüklenmesini önlemek içindüzenli olarak defter doğrulaması yapılmasını önerir. Doğrulama aralığı müşteri tarafından belirlenir, ancak kayıt defteri doğrulamasının kaynak tüketebileceğini unutmayın. Bunu bir bakım penceresi sırasında veya yoğun olmayan saatlerde çalıştırmanızı öneririz.
Azure SQL Veritabanı'nda veritabanı doğrulaması zamanlama işlemi Elastik İşler veya Azure Otomasyonu ile yapılabilir. Azure SQL Yönetilen Örneği ve SQL Server'da veritabanı doğrulamasını zamanlamak için SQL Server Aracısı'nı kullanabilirsiniz.
İzinler
Veritabanı doğrulaması için VIEW LEDGER CONTENT izni gerekir. Kayıt defteri tablolarıyla ilgili izinlerle ilgili ayrıntılar için bkz. İzinler.