Mengaktifkan enkripsi data transparan pada SQL Managed Instance yang diaktifkan oleh Azure Arc (pratinjau)

Artikel ini menjelaskan cara mengaktifkan dan menonaktifkan enkripsi data transparan (TDE) saat tidak aktif pada SQL Managed Instance yang diaktifkan oleh Azure Arc. Dalam artikel ini, istilah instans terkelola mengacu pada penyebaran SQL Managed Instance yang diaktifkan oleh Azure Arc dan mengaktifkan/menonaktifkan TDE akan berlaku untuk semua database yang berjalan pada instans terkelola.

Untuk informasi selengkapnya tentang TDE, silakan merujuk ke Enkripsi data transparan.

Mengaktifkan fitur TDE melakukan hal berikut:

  • Semua database yang ada sekarang akan dienkripsi secara otomatis.
  • Semua database yang baru dibuat akan dienkripsi secara otomatis.

Catatan

Sebagai fitur pratinjau, teknologi yang tersaji dalam artikel ini tunduk pada Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Pembaruan terbaru tersedia dalam catatan rilis.

Prasyarat

Sebelum melanjutkan artikel ini, Anda harus mengaktifkan SQL Managed Instance oleh sumber daya Azure Arc yang dibuat dan menyambungkannya.

Batasan

Batasan berikut berlaku saat Anda mengaktifkan TDE otomatis:

  • Hanya Tingkat Tujuan Umum yang didukung.
  • Grup failover tidak didukung.

Membuat instans terkelola dengan TDE diaktifkan (Azure CLI)

Contoh berikut membuat SQL Managed Instance yang diaktifkan oleh Azure Arc dengan satu replika, TDE diaktifkan:

az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s

Mengaktifkan TDE pada instans terkelola

Ketika TDE diaktifkan pada SQL Managed Instance dengan dukungan Arc, layanan data secara otomatis melakukan tugas-tugas berikut:

  1. Menambahkan kunci master database yang dikelola layanan dalam master database.
  2. Menambahkan pelindung sertifikat yang dikelola layanan.
  3. Menambahkan Kunci Enkripsi Database (DEK) terkait pada semua database pada instans terkelola.
  4. Mengaktifkan enkripsi pada semua database pada instans terkelola.

Anda dapat mengatur SQL Managed Instance yang diaktifkan oleh Azure Arc TDE dalam salah satu dari dua mode:

  • Dikelola layanan
  • Dikelola Pelanggan

Dalam mode yang dikelola layanan, TDE memerlukan instans terkelola untuk menggunakan kunci master database yang dikelola layanan serta sertifikat server yang dikelola layanan. Kredensial ini secara otomatis dibuat saat TDE yang dikelola layanan diaktifkan.

Dalam mode yang dikelola pelanggan, TDE menggunakan kunci master database yang dikelola layanan dan menggunakan kunci yang Anda berikan untuk sertifikat server. Untuk mengonfigurasi mode yang dikelola pelanggan:

  1. Membuat sertifikat.
  2. Simpan sertifikat sebagai rahasia di namespace Layanan Kubernetes yang sama dengan instans.

Aktifkan

Bagian berikut menjelaskan cara mengaktifkan TDE dalam mode yang dikelola layanan.

Untuk mengaktifkan TDE dalam mode terkelola layanan, jalankan perintah berikut:

az sql mi-arc update --tde-mode ServiceManaged

Menonaktifkan TDE pada instans terkelola

Ketika TDE dinonaktifkan pada SQL Managed Instance dengan dukungan Arc, layanan data secara otomatis melakukan tugas-tugas berikut:

  1. Menonaktifkan enkripsi pada semua database pada instans terkelola.
  2. Menghilangkan DEK terkait pada semua database pada instans terkelola.
  3. Menghilangkan pelindung sertifikat yang dikelola layanan.
  4. Menghilangkan kunci master database yang dikelola layanan dalam master database.

Untuk menonaktifkan TDE:

az sql mi-arc update --tde-mode Disabled

Mencadangkan kredensial TDE

Saat Anda mencadangkan kredensial dari instans terkelola, kredensial akan disimpan dalam kontainer. Untuk menyimpan kredensial pada volume yang persisten, tentukan jalur pemasangan dalam kontainer. Contohnya, var/opt/mssql/data. Contoh berikut ini mencadangkan sertifikat dari instans terkelola:

Catatan

Jika perintah kubectl cp dijalankan dari Windows, perintah mungkin gagal saat menggunakan jalur Windows absolut. Gunakan jalur relatif atau perintah yang telah ditentukan di bawah ini.

  1. Cadangkan sertifikat dari kontainer ke /var/opt/mssql/data.

    USE master;
    GO
    
    BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    

    Contoh:

    USE master;
    GO
    
    BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    
  2. Salin sertifikat dari kontainer ke sistem file Anda.

    kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
    

    Contoh:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
    

  1. Salin kunci privat dari kontainer ke sistem file Anda.

     kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
    

    Contoh:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
    

  1. Hapus sertifikat dan kunci privat dari kontainer.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Contoh:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Memulihkan kredensial TDE ke instans terkelola

Serupa dengan yang atas, pulihkan kredensial dengan menyalinnya ke dalam kontainer dan menjalankan T-SQL yang sesuai setelahnya.

Catatan

Jika perintah kubectl cp dijalankan dari Windows, perintah mungkin gagal saat menggunakan jalur Windows absolut. Gunakan jalur relatif atau perintah yang telah ditentukan di bawah ini. Untuk memulihkan cadangan database yang telah diambil sebelum mengaktifkan TDE, Anda harus menonaktifkan TDE pada SQL Managed Instance, memulihkan cadangan database dan mengaktifkan TDE lagi.

  1. Salin sertifikat dari sistem file Anda ke kontainer.

    type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
    

    Contoh:

    type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
    

  1. Salin kunci privat dari sistem file Anda ke kontainer.

    type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
    

    Contoh:

    type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
    
  2. Buat sertifikat menggunakan jalur file dari /var/opt/mssql/data.

    USE master;
    GO
    
    CREATE CERTIFICATE <certicate-name>
    FROM FILE = '<certificate-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    

    Contoh:

    USE master;
    GO
    
    CREATE CERTIFICATE MyServerCertRestored
    FROM FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    
  3. Hapus sertifikat dan kunci privat dari kontainer.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Contoh:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Enkripsi data transparan