Özet yönetimi ve veritabanı doğrulaması

ŞUNUN İÇİN GEÇERLİDİR: Azure SQL Database

Not

Azure SQL Veritabanı defteri şu anda genel önizlemededir ve Batı Avrupa, Brezilya Güney ve Orta Batı ABD kullanılabilir.

Azure SQL Veritabanı muhasebe, ileriye doğru bütünlük adlı bir veri bütünlüğü biçimi sağlar ve bu da, defter tablolarınızdaki veriler üzerinde yapılan verilerin üzerinde değişiklik bulmasını sağlar. Örneğin, bir Bakiyenin değere güncelleştirildiği bir muhasebe tablosunda bankacılık işlemi gerçekleşirse x ve bir saldırgan daha sonra verileri ' dan ' a değiştirerek verileri değiştirirse x y , veritabanı doğrulaması bu değişiklik yapılan etkinliği algılar.

Veritabanı doğrulama işlemi, önceden oluşturulmuş bir veya daha fazla veritabanı için giriş olarak alır. Daha sonra, genel muhasebe tablolarının geçerli durumuna bağlı olarak veritabanı defterinde depolanan karmaları yeniden hesaplar. Hesaplanan karmaları giriş özetleri ile eşleşmiyorsa, doğrulama başarısız olur. Hata, verilerin üzerinde oynandığını gösterir. Doğrulama işlemi algıladığı tüm tutarsızlıkları bildirir.

Veritabanı özetleri

Veritabanı defterindeki en son bloğun karmasını veritabanı Özeti olarak adlandırılır. Bu, blok oluşturulduğu sırada veritabanındaki tüm genel muhasebe tablolarının durumunu temsil eder. Veritabanı özetinin oluşturulması etkilidir, çünkü yalnızca son eklenen blokların karmalarını hesaplama içerir.

Veritabanı özetleri, sistem tarafından otomatik olarak veya Kullanıcı tarafından el ile oluşturulabilir. Daha sonra veritabanını bütünlüğünü doğrulamak için bunları kullanabilirsiniz.

Veritabanı özetleri, blok KIMLIĞI için meta verilerle birlikte en son bloğun karmasını içeren bir JSON belgesi biçiminde oluşturulur. Meta veriler, özetinin oluşturulduğu saati ve bu bloktaki son işlemin işleme zaman damgasını içerir.

Doğrulama işlemi ve veritabanının bütünlüğü, giriş özetleri bütünlüğünden bağımlıdır. bu amaçla, veritabanından ayıklanan veritabanlarının, yüksek ayrıcalıklı kullanıcıların veya Azure SQL Veritabanı sunucusunun saldırganların üzerinde oynanmasına neden olan güvenilen depolamada depolanması gerekir.

Veritabanı Özetleri otomatik oluşturma ve depolama

Azure SQL Veritabanı muhasebe, azure Blob Depolama ve azure gizli defteri 'nin sabit depolama özelliğiyle tümleştirilir. Bu tümleştirme, veritabanının olası izinsiz değişikliklere karşı korunmasına yardımcı olmak için Azure 'da güvenli depolama hizmetleri sağlar. Bu tümleştirme, kullanıcıların, kullanılabilirlik ve coğrafi çoğaltma konusunda endişelenmenize gerek kalmadan Özet yönetimi otomatikleştirmek için basit ve ekonomik bir yol sağlar.

Azure portal, PowerShell veya Azure CLı aracılığıyla veritabanı türlerini otomatik oluşturma ve depolamayı yapılandırabilirsiniz. Otomatik oluşturma ve depolamayı yapılandırdığınızda, veritabanı özetleri, önceden tanımlanmış 30 saniyelik bir aralıkta oluşturulur ve seçilen depolama hizmetine yüklenir. Sistemde 30 saniyelik aralıkta hiçbir işlem gerçekleşmemesi durumunda, bir veritabanı Özeti oluşturulmaz ve karşıya yüklenir. Bu mekanizma, veritabanının veritabanınızdaki verileri güncelleştirildiği sırada oluşturulmasını sağlar.

Özet depolamayı etkinleştirme seçimlerini gösteren ekran görüntüsü.

Önemli

Veritabanı önclarının izinsiz koruma altına aldığından emin olmak için, sağlamadan sonra, kapsayıcınıza karşı bir kullanılabilirlik ilkesi yapılandırın.

Veritabanı türlerini el ile oluşturma ve depolama

ayrıca, güvenilir bir depolama hedefini düşündüğünüz herhangi bir hizmette veya cihazda özeti el ile depolayabilmeniz için, isteğe bağlı bir veritabanı özeti oluşturmak üzere Azure SQL Veritabanı muhasebe 'yi de kullanabilirsiniz. Örneğin, bir kez şirket içi yazma seçebilirsiniz ve hedef olarak çok sayıda (solucan) cihazı okuyabilirsiniz. SQL Server Management Studio veya Azure Data Studio sys.sp_generate_database_ledger_digest saklı yordamını çalıştırarak el ile bir veritabanı özeti oluşturabilirsiniz.

Önemli

Veritabanı özetleri oluşturma, muhasebe Özeti oluştur iznine sahip olmalıdır. Muhasebe tablolarıyla ilgili izinler hakkında daha fazla bilgi için bkz. izinler.

EXECUTE sp_generate_database_ledger_digest

Döndürülen sonuç kümesi tek bir veri satırıdır. Bu, aşağıdaki gibi, bir JSON belgesi olarak güvenilir depolama konumuna kaydedilmelidir:

    {
        "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"
    }

Veritabanı doğrulaması

Doğrulama işlemi tüm genel muhasebe ve geçmiş tablolarını tarar. Kendi satırlarının SHA-256 karmalarını yeniden hesaplar ve doğrulama saklı yordamına geçirilen veritabanı Özet dosyalarına göre bunları karşılaştırır.

Büyük defter tabloları için veritabanı doğrulaması, Kaynak yoğunluklu bir işlem olabilir. Bunu yalnızca bir veritabanının bütünlüğünü doğrulamanız gerektiğinde kullanmanız gerekir.

Doğrulama işlemi, veritabanının bütünlüğünden sık izlenilmesi gereken durumlarda saat veya günlük olarak çalıştırılabilir. Ya da yalnızca verileri barındıran kuruluş bir denetim üzerinden geçtiğinde ve verilerin bütünlüğü hakkında şifreleme kanıtı sağlamak için ihtiyaç duyduğunda çalıştırılabilir. Doğrulama maliyetini azaltmak için, muhasebe, tek tek muhasebe tablolarını veya yalnızca bir alt küme tablolarının bir alt kümesini doğrulamak için seçenekler sunar.

Otomatik Özet depolama alanı kullanmanıza veya el ile el ile yönetilip yönetilmesinebağlı olarak, iki saklı yordam aracılığıyla veritabanı doğrulaması gerçekleştirirsiniz.

Önemli

Veritabanı doğrulaması, hesap görüntüleme Içeriğini görüntüle iznini gerektirir. Muhasebe tablolarıyla ilgili izinler hakkında daha fazla bilgi için bkz. izinler.

Otomatik Özet depolama kullanan veritabanı doğrulaması

Veritabanı türlerini oluşturmak ve depolamak için Otomatik Özet depolama kullanırken, Özet depolamanın konumu, JSON nesneleri olarak sys.database_ledger_digest_locations Sistem kataloğu görünümünde olur. Çalışan veritabanı doğrulaması, sp_verify_database_ledger_from_digest_storage sistem saklı yordamının yürütülmelerinden oluşur. Veritabanı dallarının depolanacak sys.database_ledger_digest_locations sistem katalog görünümündeki JSON nesnelerini belirtin.

Otomatik Özet depolama kullandığınızda, genel muhasebe 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 depolama 'yı kullanarak başlatırsanız, ancak bunun yerine Azure gizli defter muhasebeyi kullanmak istiyorsanız, bunu yapabilirsiniz. Konumdaki bu değişiklik sys.database_ledger_digest_locationsdepolanır.

Birden fazla Özet depolama konumu kullandığınızda doğrulamayı çalıştırmayı kolaylaştırmak için aşağıdaki betik, bu konumları kullanarak, özetleri konumlarını ve yürütme doğrulamasını getirir.

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ı

Veritabanı özetleri oluşturmak ve depolamak için el ile Özet depolama kullanırken, genel muhasebe veritabanını doğrulamak için aşağıdaki saklı yordam kullanılır. Özet JSON içeriği, saklı yordama eklenir. Veritabanı doğrulamasını çalıştırırken, veritabanındaki tüm tabloları doğrulamayı veya belirli tabloları doğrulamayı seçebilirsiniz.

Sp_verify_database_ledger saklı yordamının sözdizimi aşağıda verilmiştir:

sp_verify_database_ledger <JSON_document_containing_digests>, <table_name> 

Aşağıdaki kod, doğrulama için iki özetleri geçirerek sp_verify_database_ledger saklı yordamının çalıştırılmasına bir örnektir:

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"
    }
]
'

Ve için dönüş sp_verify_database_ledger kodları sp_verify_database_ledger_from_digest_storage 0 (başarılı) veya 1 (hata).

Sonraki adımlar