Manajemen digest

Berlaku untuk: Database Azure SQL Pratinjau SQL Server 2022 (16.x)

Hash database

Hash blok terbaru dalam ledger database disebut hash database. Ini merepresentasikan status semua tabel ledger dalam database pada saat blok dihasilkan. Menghasilkan hash database merupakan tindakan yang efisien, karena hanya melibatkan komputasi hash blok yang baru-baru ini ditambahkan.

Hash database dapat dihasilkan secara otomatis oleh sistem atau secara manual oleh pengguna. Anda dapat menggunakannya nanti untuk memverifikasi integritas database.

Hash database dihasilkan dalam format dokumen JSON yang berisi hash blok terbaru, bersama dengan metadata untuk ID blok. Metadata mencakup waktu pembuatan hash dan tanda waktu penerapan transaksi terakhir di blok ini.

Proses verifikasi dan integritas database bergantung pada integritas hash input. Untuk tujuan ini, hash database yang diekstrak dari database perlu disimpan dalam penyimpanan tepercaya yang tidak dapat diubah oleh pengguna atau penyerang dengan hak istimewa tinggi dari database.

Pembuatan otomatis dan penyimpanan hash database

Catatan

Pembuatan otomatis dan penyimpanan hash database di SQL Server hanya mendukung akun Azure Storage.

Ledger terintegrasi dengan fitur penyimpanan yang tidak dapat diubah Azure Blob Storage dan Azure Confidential Ledger. Integrasi ini menyediakan layanan penyimpanan yang aman di Azure untuk membantu melindungi hash database dari potensi perubahan. Integrasi ini menyediakan cara yang sederhana dan hemat biaya bagi pengguna untuk mengotomatiskan manajemen hash tanpa harus khawatir tentang ketersediaan dan replikasi geografis mereka. Azure Confidential Ledger memiliki jaminan integritas yang lebih kuat bagi pelanggan yang mungkin khawatir tentang akses administrator istimewa ke hash. Tabel ini membandingkan fitur penyimpanan Azure Blob Storage yang tidak dapat diubah dengan Azure Confidential Ledger.

Anda dapat mengonfigurasi pembuatan otomatis dan penyimpanan has database melalui portal Azure, PowerShell, atau Azure CLI. Untuk informasi selengkapnya, lihat Mengaktifkan penyimpanan hash otomatis. Ketika Anda mengonfigurasi pembuatan dan penyimpanan otomatis, has database dihasilkan pada interval yang telah ditentukan selama 30 detik dan diunggah ke layanan penyimpanan yang dipilih. Jika tidak ada transaksi yang terjadi pada sistem dalam interval 30 detik, hash database tidak akan dihasilkan dan diunggah. Mekanisme ini memastikan bahwa hash database hanya dihasilkan ketika data telah diperbarui dalam database Anda. Ketika titik akhir adalah Azure Blob Storage, server database Azure SQL akan membuat kontainer baru, bernama sqldbledgerdigests dan menggunakan pola penamaan seperti: ServerName/DatabaseName/CreationTime. Waktu pembuatan diperlukan karena database dengan nama yang sama dapat dihilangkan dan dibuat ulang atau dipulihkan, memungkinkan "inkarnasi" database yang berbeda dengan nama yang sama. Lihat Pertimbangan Manajemen Hash.

Catatan

Untuk SQL Server, kontainer perlu dibuat secara manual oleh pengguna.

Kebijakan Kekekalan Akun Azure Storage

Jika Anda menggunakan akun Azure Storage untuk penyimpanan hash database, konfigurasikan kebijakan kekekalan pada kontainer Anda setelah provisi untuk memastikan bahwa hash database dilindungi dari perubahan. Pastikan kebijakan imutabilitas memungkinkan penulisan tambahan yang dilindungi untuk menambahkan blob dan bahwa kebijakan dikunci.

Izin akun Azure Storage

Jika Anda menggunakan Azure SQL Database, pastikan server logis Anda (Identitas Sistem) memiliki izin RBAC yang memadai untuk menulis hash dengan menambahkannya ke peran Kontributor Data Blob Penyimpanan.

Jika Anda menggunakan SQL Server, Anda harus membuat tanda tangan akses bersama (SAS) pada kontainer hash untuk memungkinkan SQL Server menyambungkan dan mengautentikasi terhadap akun Azure Storage.

  • Buat kontainer di akun Azure Storage, bernama sqldbledgerdigests.
  • Buat kebijakan pada kontainer dengan izin Baca, Tambahkan, Buat, Tulis, dan Daftar , dan buat kunci tanda tangan akses bersama.
  • Untuk setiap kontainer yang digunakan untuk penyimpanan file hash, buat kredensial SQL Server yang namanya cocok dengan jalur kontainer.

Contoh berikut mengasumsikan bahwa kontainer Azure Storage, kebijakan, dan kunci SAS telah dibuat. Ini diperlukan oleh SQL Server untuk mengakses file hash dalam kontainer.

Dalam cuplikan kode berikut, ganti <your SAS key> dengan kunci SAS. Kunci SAS akan terlihat seperti 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'.

CREATE CREDENTIAL [https://ledgerstorage.blob.core.windows.net/sqldbledgerdigests]  
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = '<your SAS key>'   

Izin Azure Confidential Ledger

Jika Anda menggunakan Azure SQL Database, pastikan server logis Anda (Identitas Sistem) memiliki izin RBAC yang memadai untuk menulis hash dengan menambahkannya ke peran Kontributor.

Catatan

Pembuatan otomatis dan penyimpanan hash database di SQL Server hanya mendukung akun Azure Storage.

Pembuatan otomatis dan penyimpanan hash database

Anda juga dapat menghasilkan hash database sesuai permintaan sehingga Anda dapat menyimpan hash secara manual di layanan atau perangkat apa pun yang Anda anggap sebagai tujuan penyimpanan tepercaya. Misalnya, Anda dapat memilih perangkat tulis sekali, baca banyak (WORM) lokal sebagai tujuan. Anda dapat membuat hash database secara manual dengan menjalankan prosedur tersimpan sys.sp_generate_database_ledger_digest di SQL Server Management Studio atau Azure Data Studio.

Penting

Menghasilkan hash database memerlukan izin BUAT HASH LEDGER. Untuk detail tentang izin yang terkait dengan tabel ledger, lihat Izin.

EXECUTE sp_generate_database_ledger_digest;

Hasil yang dikembalikan adalah satu baris data. Ini harus disimpan ke lokasi penyimpanan tepercaya sebagai dokumen JSON sebagai berikut:

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

Pertimbangan manajemen hash

Pemulihan database

Memulihkan database kembali ke titik waktu sebelumnya, juga dikenal sebagai Pemulihan Titik Waktu, adalah operasi yang sering digunakan ketika kesalahan terjadi dan pengguna perlu dengan cepat mengembalikan status database kembali ke titik waktu sebelumnya. Saat mengunggah hash yang dihasilkan ke Azure Storage atau Azure Confidential Ledger, waktu pembuatan database ditangkap yang dipetakan hash ini. Setiap kali database dipulihkan, database ditandai dengan waktu pembuatan baru dan teknik ini memungkinkan kita untuk menyimpan hash di berbagai "inkarnasi" database. Untuk SQL Server, waktu pembuatan adalah waktu UTC saat ini ketika unggahan hash diaktifkan untuk pertama kalinya. Ledger mempertahankan informasi mengenai kapan operasi pemulihan terjadi, memungkinkan proses verifikasi untuk menggunakan semua hash yang relevan di berbagai inkarnasi database. Selain itu, pengguna dapat memeriksa semua hash untuk waktu pembuatan yang berbeda untuk mengidentifikasi kapan database dipulihkan dan seberapa jauh database dipulihkan. Karena data ini ditulis dalam penyimpanan yang tidak dapat diubah, informasi ini juga akan dilindungi.

Replikasi geografis aktif dan Grup Ketersediaan AlwaysOn

Replikasi geografis aktif dapat dikonfigurasi untuk Database Azure SQL. Replikasi di seluruh wilayah geografis tidak sinkron karena alasan performa dan, dengan demikian, memungkinkan database sekunder sedikit tertinggal dibandingkan dengan database utama. Jika terjadi failover geografis, data terbaru apa pun yang belum direplikasi hilang. Ledger hanya akan mengeluarkan hash database untuk data yang telah direplikasi ke sekunder geografis untuk menjamin bahwa hash tidak akan pernah mereferensikan data yang mungkin hilang jika terjadi kegagalan geografis. Ini hanya berlaku untuk pembuatan otomatis dan penyimpanan hash database.

Menghilangkan tautan antara primer dan sekunder saat hash ledger dikonfigurasi tidak didukung. Anda harus terlebih dahulu menonaktifkan pengaturan Aktifkan database penyimpanan hash otomatis , menghapus sinkronisasi antara primer dan sekunder dan mengaktifkan kembali pengaturan Aktifkan database penyimpanan hash otomatis .

Saat database Anda adalah bagian dari Grup Ketersediaan AlwaysOn di SQL Server, prinsip yang sama dengan replikasi geografis aktif digunakan. Pengunggahan hash hanya dilakukan jika semua transaksi telah direplikasi ke replika sekunder.

Langkah berikutnya