Manajemen digest

Berlaku untuk: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed Instance

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 dari 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. Saat titik akhir adalah Azure Blob Storage, server logis untuk Azure SQL Database atau Azure SQL Managed Instance 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. Untuk informasi selengkapnya, 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 imutabilitas 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 atau Azure SQL Managed Instance, pastikan server logis atau instans terkelola (Identitas Sistem) Anda memiliki izin kontrol akses berbasis peran (RBAC) yang memadai untuk menulis hash dengan menambahkannya ke peran Kontributor Data Blob Penyimpanan. Jika Anda menggunakan replikasi geografis aktif atau grup failover otomatis, pastikan bahwa replika sekunder memiliki izin RBAC yang sama di akun Azure Storage.

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 kontainer sqldbledgerdigests 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 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 atau Azure SQL Managed Instance, pastikan server logis atau instans terkelola (Identitas Sistem) Anda memiliki izin yang memadai untuk menulis hash dengan menambahkannya ke peran Kontributor . Untuk melakukan ini, ikuti langkah-langkah untuk manajemen pengguna Azure Confidential Ledger.

Catatan

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

Mengonfigurasi aturan NSG Azure SQL Managed Instance agar berfungsi dengan Azure Confidential Ledger

Jika Anda menggunakan Azure SQL Managed Instance, pastikan Anda mengonfigurasi aturan jaringan virtual Azure SQL Managed Instance Anda untuk berkomunikasi dengan Azure Confidential Ledger. Untuk informasi selengkapnya, lihat Mengonfigurasi aturan NSG Azure SQL Managed Instance agar berfungsi dengan Azure Confidential Ledger.

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.

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

Izin

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

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 ke belakang dipulihkan. Karena data ini ditulis dalam penyimpanan yang tidak dapat diubah, informasi ini juga dilindungi.

Catatan

Jika Anda melakukan pemulihan asli cadangan database di Azure SQL Managed Instance, Anda perlu mengubah jalur hash secara manual menggunakan Portal Microsoft Azure, PowerShell, atau Azure CLI.

Replikasi geografis aktif dan grup ketersediaan AlwaysOn

Replikasi geografis aktif atau grup failover otomatis dapat dikonfigurasi untuk Azure SQL Database atau Azure SQL Managed Instance. Replikasi di seluruh wilayah geografis tidak sinkron karena alasan performa dan, dengan demikian, memungkinkan database sekunder sedikit tertinggal dibandingkan dengan yang 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. Dalam grup failover, database primer dan sekunder akan memiliki jalur hash yang sama. Bahkan ketika Anda melakukan failover, jalur hash tidak berubah untuk database primer dan sekunder.

Jika grup failover dihapus atau Anda menghilangkan tautan, kedua database akan berpura-pura sebagai database utama. Pada saat itu jalur hash database sekunder sebelumnya akan berubah dan kita akan menambahkan folder RemovedSecondaryReplica ke jalur.

Saat database Anda adalah bagian dari grup ketersediaan AlwaysOn atau tautan Instans Terkelola di SQL Server, prinsip yang sama dengan replikasi geografis aktif digunakan. Unggahan hash hanya dilakukan jika semua transaksi telah direplikasi ke replika sekunder.