Bagikan melalui


Konsep enkripsi saat istirahat dan panduan konfigurasi

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk Kluster Big Data SQL Server 2019 akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung penuh pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan opsi Big data di platform Microsoft SQL Server.

Dimulai dengan Microsoft SQL Server 2019 CU8 Kluster Big Data, fitur enkripsi saat tidak aktif tersedia untuk menyediakan enkripsi tingkat aplikasi ke semua data yang disimpan dalam platform. Panduan ini menjelaskan konsep, arsitektur, dan konfigurasi untuk enkripsi saat tidak aktif yang ditetapkan untuk Kluster Big Data.

SQL Server Kluster Big Data menyimpan data di lokasi berikut:

  • SQL Server instans master.
  • HDFS. Digunakan oleh kumpulan Penyimpanan dan Spark.

Ada dua pendekatan untuk mengenkripsi data secara transparan dalam SQL Server Kluster Big Data:

  • Enkripsi volume. Platform Kubernetes mendukung pendekatan ini. Ini adalah praktik terbaik untuk penyebaran Kluster Big Data. Artikel ini tidak mencakup enkripsi volume. Lihat platform Kubernetes atau dokumentasi appliance Anda tentang cara mengenkripsi volume yang digunakan untuk SQL Server Kluster Big Data dengan benar.
  • Enkripsi tingkat aplikasi. Arsitektur ini mengacu pada enkripsi data oleh aplikasi yang menangani data sebelum ditulis ke disk. Jika volume terekspos, penyerang tidak akan dapat memulihkan artefak data di tempat lain, kecuali sistem tujuan juga telah dikonfigurasi dengan kunci enkripsi yang sama.

Kumpulan fitur enkripsi saat tidak aktif SQL Server Kluster Big Data mendukung skenario inti enkripsi tingkat aplikasi untuk komponen SQL Server dan HDFS.

Fitur ini menyediakan kemampuan berikut:

  • Enkripsi yang dikelola sistem saat tidak aktif. Kemampuan ini tersedia di CU8+.
  • Enkripsi yang dikelola pengguna saat tidak aktif, juga dikenal sebagai bring your own key (BYOK). Integrasi yang dikelola layanan diperkenalkan pada SQL Server 2019 CU8. Integrasi penyedia kunci eksternal diperkenalkan pada SQL Server 2019 CU11+.

Untuk informasi selengkapnya, lihat Versi Kunci di SQL Server Kluster Big Data.

Definisi kunci

  • SQL Server Kluster Big Data layanan manajemen kunci (KMS)

    Layanan yang dihosting pengontrol yang bertanggung jawab untuk mengelola kunci dan sertifikat untuk enkripsi saat tidak aktif yang ditetapkan untuk SQL Server Kluster Big Data. Layanan ini mendukung fitur-fitur berikut:

    • Manajemen dan penyimpanan kunci dan sertifikat yang aman yang digunakan untuk enkripsi saat tidak aktif.
    • Kompatibilitas Hadoop KMS. KMS bertindak sebagai layanan manajemen kunci untuk komponen HDFS pada Kluster Big Data.
    • SQL Server manajemen sertifikat Transparent Data Encryption (TDE).
  • Kunci yang dikelola sistem

    Layanan Kluster Big Data KMS mengelola semua kunci dan sertifikat untuk SQL Server dan HDFS

  • Kunci yang ditentukan pengguna

    Kunci yang ditentukan pengguna yang akan dikelola oleh Kluster Big Data KMS, umumnya dikenal sebagai bring your own key. SQL Server Kluster Big Data mendukung definisi kustom kunci yang akan digunakan untuk enkripsi pada komponen SQL Server dan HDFS. KMS Kluster Big Data mengelola kunci tersebut.

    Perhatian

    SQL Server instans master mewarisi fitur TDE SQL Server. Namun, memuat kunci kustom secara manual dari file ke dalam pod, mendaftarkannya di SQL Server, dan menggunakannya untuk TDE bukanlah skenario yang didukung. KMS Kluster Big Data tidak akan mengelola kunci tersebut. Situasi ini dapat menyebabkan database Anda tidak dapat dibaca. Untuk menggunakan kunci eksternal yang disediakan dengan benar, gunakan fitur "Penyedia eksternal" seperti yang dijelaskan dalam artikel ini.

  • Penyedia eksternal

    Solusi kunci eksternal yang kompatibel dengan Kluster Big Data KMS didukung untuk delegasi operasi enkripsi. Fitur ini didukung pada SQL Server 2019 CU11+. Dengan fitur ini diaktifkan, kunci akar enkripsi dihosting di luar pengontrol Kluster Big Data.

Enkripsi saat tidak aktif SQL Server Kluster Big Data

Layanan pengontrol Kluster Big Data KMS menyediakan dukungan untuk kunci yang dikelola sistem dan kunci yang dikontrol penyedia eksternal untuk mencapai enkripsi data saat tidak aktif di SQL Server dan HDFS.

Kunci dan sertifikat tersebut dikelola layanan. Artikel ini menyediakan panduan operasional tentang cara berinteraksi dengan layanan.

Set fitur memperkenalkan Kluster Big Data layanan pengontrol KMS untuk menyediakan kunci dan sertifikat yang dikelola sistem untuk enkripsi data saat tidak aktif di SQL Server dan HDFS. Kunci dan sertifikat tersebut dikelola layanan. Artikel ini menyediakan panduan operasional tentang cara berinteraksi dengan layanan.

  • SQL Server instans menggunakan fungsionalitas Transparent Data Encryption (TDE) yang ditetapkan.
  • HDFS menggunakan Hadoop KMS asli dalam setiap pod untuk berinteraksi dengan Kluster Big Data KMS pada pengontrol. Pendekatan ini memungkinkan zona enkripsi HDFS, yang menyediakan jalur aman pada HDFS.

SQL Server instans

  • Sertifikat yang dihasilkan sistem diinstal pada pod SQL Server yang akan digunakan dengan perintah TDE. Standar penamaan sertifikat yang dikelola sistem adalah TDECertificate + timestamp. Contohnya,TDECertificate2020_09_15_22_46_27.
  • Instans master Kluster Big Data database yang disediakan dan database pengguna tidak akan dienkripsi secara otomatis. Administrator database mungkin menggunakan sertifikat yang diinstal untuk mengenkripsi database apa pun.
  • Kumpulan komputasi dan kumpulan penyimpanan secara otomatis dienkripsi menggunakan sertifikat yang dihasilkan sistem.
  • Enkripsi kumpulan data, meskipun secara teknis dimungkinkan menggunakan perintah T-SQL EXECUTE AT , tidak disarankan dan tidak didukung saat ini. Menggunakan teknik ini untuk mengenkripsi database kumpulan data mungkin tidak efektif dan enkripsi mungkin tidak terjadi pada status yang diinginkan. Pendekatan ini juga membuat jalur peningkatan yang tidak kompatibel menuju rilis berikutnya.
  • SQL Server rotasi kunci dicapai menggunakan perintah administratif T-SQL standar. Untuk informasi selengkapnya, lihat SQL Server Kluster Big Data Panduan penggunaan Transparent Data Encryption (TDE) saat tidak aktif.
  • Pemantauan enkripsi terjadi melalui DMV SQL Server standar yang ada untuk TDE.
  • Mencadangkan dan memulihkan database yang diaktifkan TDE ke dalam kluster didukung.
  • Ketersediaan tinggi didukung. Jika database pada instans utama SQL Server dienkripsi, maka semua replika sekunder database juga dienkripsi.

Zona enkripsi HDFS

  • Integrasi Direktori Aktif diperlukan untuk mengaktifkan zona enkripsi untuk HDFS.
  • Kunci yang dihasilkan sistem disediakan di Hadoop KMS. Nama kuncinya adalah securelakekey. Pada CU8, kunci defaultnya adalah 256-bit dan kami mendukung enkripsi AES 256-bit.
  • Zona enkripsi default disediakan menggunakan kunci yang dihasilkan sistem di atas pada jalur bernama /securelake.
  • Pengguna dapat membuat kunci dan zona enkripsi lain menggunakan instruksi khusus yang disediakan dalam panduan ini. Pengguna dapat memilih ukuran kunci 128, 192, atau 256 selama pembuatan kunci.
  • Rotasi kunci Zona Enkripsi HDFS dicapai menggunakan azdata. Untuk informasi selengkapnya, lihat SQL Server Kluster Big Data panduan penggunaan Zona Enkripsi HDFS.
  • Pemasangan TINGKAT HDFS di atas zona enkripsi tidak didukung.

Administrasi enkripsi saat istirahat

Daftar berikut berisi kapabilitas administrasi untuk enkripsi saat tidak aktif:

Panduan konfigurasi

Selama penyebaran baru SQL Server Kluster Big Data, CU8 dan seterusnya, enkripsi saat tidak aktif akan diaktifkan dan dikonfigurasi secara default. Itu berarti:

  • Kluster Big Data komponen KMS disebarkan di pengontrol dan menghasilkan sekumpulan kunci dan sertifikat default.
  • SQL Server disebarkan dengan mengaktifkan TDE dan sertifikat diinstal oleh pengontrol.
  • Hadoop KMS untuk HDFS dikonfigurasi untuk berinteraksi dengan Kluster Big Data KMS untuk operasi enkripsi. Zona enkripsi HDFS dikonfigurasi dan siap digunakan.

Persyaratan dan perilaku default yang dijelaskan di bagian sebelumnya berlaku.

Jika melakukan penyebaran baru SQL Server Kluster Big Data CU8 dan seterusnya atau meningkatkan langsung ke CU9, tidak ada langkah lain yang diperlukan.

Meningkatkan skenario

Pada kluster yang ada, proses peningkatan tidak akan memberlakukan enkripsi baru atau enkripsi ulang pada data pengguna yang belum dienkripsi. Perilaku ini dirancang dan masalah berikut perlu dipertimbangkan per komponen:

  • SQL Server

    • SQL Server instans master. Proses peningkatan tidak akan memengaruhi database instans master dan sertifikat TDE yang diinstal. Kami menyarankan agar Anda mencadangkan database dan sertifikat TDE yang diinstal secara manual sebelum proses peningkatan. Kami juga menyarankan agar Anda menyimpan artefak tersebut di luar kluster big data.
    • Kumpulan komputasi dan penyimpanan. Database tersebut dikelola sistem, volatil, dan dibuat ulang dan dienkripsi secara otomatis pada peningkatan kluster.
    • Kumpulan data. Peningkatan tidak memengaruhi database di bagian instans SQL Server dari kumpulan data.
  • HDFS

    Proses peningkatan tidak akan menyentuh file dan folder HDFS di luar zona enkripsi.

Memutakhirkan ke CU9 dari CU8 atau yang lebih lama

Tidak ada langkah lain yang diperlukan.

Meningkatkan ke CU8 dari CU6 atau yang lebih lama

Perhatian

Sebelum meningkatkan ke SQL Server Kluster Big Data CU8, lakukan pencadangan lengkap data Anda.

Zona enkripsi tidak akan dikonfigurasi. Komponen Hadoop KMS tidak akan dikonfigurasi untuk menggunakan Kluster Big Data KMS. Untuk mengonfigurasi dan mengaktifkan zona enkripsi HDFS setelah peningkatan, ikuti instruksi di bagian berikutnya.

Aktifkan zona enkripsi HDFS setelah peningkatan ke CU8

Jika Anda meningkatkan kluster Anda ke CU8 (azdata upgrade) dan ingin mengaktifkan zona enkripsi HDFS, ada dua opsi:

  • Eksekusi Notebook Operasional Azure Data Studio bernama SOP0128 - Aktifkan zona Enkripsi HDFS di Kluster Big Data untuk melakukan konfigurasi.
  • Jalankan skrip, seperti yang dijelaskan di bawah ini.

Persyaratan:

  • Kluster terintegrasi Direktori Aktif.
  • Azure Data CLI (azdata) dikonfigurasi dan masuk ke kluster dalam mode AD.

Ikuti prosedur ini untuk mengonfigurasi ulang kluster dengan dukungan zona enkripsi.

  1. Setelah melakukan peningkatan dengan azdata, simpan skrip berikut.

    Persyaratan eksekusi skrip:

    • Kedua skrip harus terletak di direktori yang sama.
    • kubectl pada file konfigurasi PATH untuk Kubernetes di folder $HOME/.kube.

    Skrip ini harus diberi nama run-key-provider-patch.sh:

    #!/bin/bash
    
    if [[ -z "${BDC_DOMAIN}" ]]; then
      echo "BDC_DOMAIN environment variable with the domain name of the cluster is not defined."
      exit 1
    fi
    
    if [[ -z "${BDC_CLUSTER_NS}" ]]; then
      echo "BDC_CLUSTER_NS environment variable with the cluster namespace is not defined."
      exit 1
    fi
    
    kubectl get configmaps -n test
    
    diff <(kubectl get configmaps mssql-hadoop-storage-0-configmap -n $BDC_CLUSTER_NS -o json | ./updatekeyprovider.py) <(kubectl get configmaps mssql-hadoop-storage-0-configmap -n $BDC_CLUSTER_NS -o json | python -m json.tool)
    
    diff <(kubectl get configmaps mssql-hadoop-sparkhead-configmap -n $BDC_CLUSTER_NS -o json | ./updatekeyprovider.py) <(kubectl get configmaps mssql-hadoop-sparkhead-configmap -n $BDC_CLUSTER_NS -o json | python -m json.tool)
    
    # Replace the config maps.
    #
    kubectl replace -n $BDC_CLUSTER_NS -o json -f <(kubectl get configmaps mssql-hadoop-storage-0-configmap -n $BDC_CLUSTER_NS -o json | ./updatekeyprovider.py)
    
    kubectl replace -n $BDC_CLUSTER_NS -o json -f <(kubectl get configmaps mssql-hadoop-sparkhead-configmap -n $BDC_CLUSTER_NS -o json | ./updatekeyprovider.py)
    
    # Restart the pods which need to have the necessary changes with the core-site.xml
    kubectl delete pods -n $BDC_CLUSTER_NS nmnode-0-0
    kubectl delete pods -n $BDC_CLUSTER_NS storage-0-0
    kubectl delete pods -n $BDC_CLUSTER_NS storage-0-1
    
    # Wait for sometime for pods to restart
    #
    sleep 300
    
    # Check for the KMS process status.
    #
    kubectl exec -n $BDC_CLUSTER_NS -c hadoop nmnode-0-0 -- bash -c 'ps aux | grep kms'
    kubectl exec -n $BDC_CLUSTER_NS -c hadoop storage-0-0 -- bash -c 'ps aux | grep kms'
    kubectl exec -n $BDC_CLUSTER_NS -c hadoop storage-0-1 -- bash -c 'ps aux | grep kms'
    

    Skrip ini harus diberi nama updatekeyprovider.py:

    #!/usr/bin/env python3
    
    import json
    import re
    import sys
    import xml.etree.ElementTree as ET
    import os
    
    class CommentedTreeBuilder(ET.TreeBuilder):
        def comment(self, data):
            self.start(ET.Comment, {})
            self.data(data)
            self.end(ET.Comment)
    
    domain_name = os.environ['BDC_DOMAIN']
    
    parser = ET.XMLParser(target=CommentedTreeBuilder())
    
    core_site = 'core-site.xml'
    j = json.load(sys.stdin)
    cs = j['data'][core_site]
    csxml = ET.fromstring(cs, parser=parser)
    props = [prop.find('value').text for prop in csxml.findall(
        "./property/name/..[name='hadoop.security.key.provider.path']")]
    
    kms_provider_path=''
    
    for x in range(5):
        if len(kms_provider_path) != 0:
            kms_provider_path = kms_provider_path + ';'
        kms_provider_path = kms_provider_path + 'nmnode-0-0.' + domain_name
    
    if len(props) == 0:
        prop = ET.SubElement(csxml, 'property')
        name = ET.SubElement(prop, 'name')
        name.text = 'hadoop.security.key.provider.path'
        value = ET.SubElement(prop, 'value')
        value.text = 'kms://https@' + kms_provider_path + ':9600/kms'
        cs = ET.tostring(csxml, encoding='utf-8').decode('utf-8')
    
    j['data'][core_site] = cs
    
    kms_site = 'kms-site.xml.tmpl'
    ks = j['data'][kms_site]
    
    kp_uri_regex = re.compile('(<name>hadoop.kms.key.provider.uri</name>\s*<value>\s*)(.*)(\s*</value>)', re.MULTILINE)
    
    def replace_uri(match_obj):
        key_provider_uri = 'bdc://https@hdfsvault-svc.' + domain_name
        if match_obj.group(2) == 'jceks://file@/var/run/secrets/keystores/kms/kms.jceks' or match_obj.group(2) == key_provider_uri:
            return match_obj.group(1) + key_provider_uri + match_obj.group(3)
        return match_obj.group(0)
    
    ks = kp_uri_regex.sub(replace_uri, ks)
    
    j['data'][kms_site] = ks
    print(json.dumps(j, indent=4, sort_keys=True))
    

    Jalankan run-key-provider-patch.sh dengan parameter yang sesuai.

Konfigurasi penyedia eksternal

Seperti disebutkan di bagian sebelumnya, penyebaran Kluster Big Data CU8+ 2019 SQL Server 2019 memungkinkan fungsionalitas enkripsi tidak aktif dengan kunci yang dikelola sistem secara default. Untuk mengaktifkan penyedia kunci eksternal untuk mengamankan kunci akar enkripsi SQL Server dan HDFS, lihat Penyedia Kunci Eksternal di SQL Server Kluster Big Data.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang cara versi kunci digunakan pada SQL Server Kluster Big Data, lihat Versi Kunci di SQL Server Kluster Big Data.

Untuk mempelajari selengkapnya tentang cara menggunakan enkripsi saat tidak aktif secara efektif SQL Server Kluster Big Data lihat artikel berikut ini:

Untuk mempelajari selengkapnya tentang SQL Server Kluster Big Data, lihat gambaran umum berikut ini: