Bagikan melalui


Transparent Data Encryption

Anda dapat mengambil beberapa tindakan pencegahan untuk membantu mengamankan database seperti merancang sistem yang aman, mengenkripsi aset rahasia, dan membangun firewall di sekitar server database. Namun, untuk skenario di mana media fisik (seperti drive atau kaset cadangan) dicuri, pihak berbahaya hanya dapat memulihkan atau melampirkan database dan menelusuri data. Salah satu solusinya adalah mengenkripsi data sensitif dalam database dan melindungi kunci yang digunakan untuk mengenkripsi data dengan sertifikat. Ini mencegah siapa pun tanpa kunci menggunakan data, tetapi perlindungan semacam ini harus direncanakan terlebih dahulu.

Enkripsi data transparan (TDE) melakukan enkripsi I/O real time dan dekripsi data dan file log transaksi dan file log PDW khusus. Enkripsi menggunakan kunci enkripsi database (DEK), yang disimpan dalam catatan boot database untuk ketersediaan selama pemulihan. DEK adalah kunci konten yang diamankan dengan menggunakan sertifikat yang disimpan dalam database master SQL Server PDW. TDE melindungi data "tidak aktif", yang berarti data dan file log. Ini memberikan kemampuan untuk mematuhi banyak undang-undang, peraturan, dan pedoman yang ditetapkan di berbagai industri. Fitur ini memungkinkan pengembang perangkat lunak mengenkripsi data dengan menggunakan algoritma enkripsi AES dan 3DES tanpa mengubah aplikasi yang ada.

Penting

TDE tidak menyediakan enkripsi untuk data yang bepergian antara klien dan PDW. Untuk informasi selengkapnya tentang cara mengenkripsi data antara klien dan SQL Server PDW, lihat Memprovisikan sertifikat.

TDE tidak mengenkripsi data saat sedang bergerak atau sedang digunakan. Lalu lintas internal antara komponen PDW di dalam SQL Server PDW tidak dienkripsi. Data yang disimpan sementara dalam buffer memori tidak dienkripsi. Untuk mengurangi risiko ini, kontrol akses fisik dan koneksi ke SQL Server PDW.

Setelah diamankan, database dapat dipulihkan dengan menggunakan sertifikat yang benar.

Catatan

Saat membuat sertifikat untuk TDE, Anda harus segera mencadangkannya, bersama dengan kunci privat terkait. Jika sertifikat menjadi tidak tersedia atau jika Anda harus memulihkan atau melampirkan database di server lain, Anda harus memiliki cadangan sertifikat dan kunci privat atau Anda tidak akan dapat membuka database. Sertifikat enkripsi harus dipertahankan meskipun TDE tidak lagi diaktifkan pada database. Meskipun database tidak dienkripsi, bagian dari log transaksi mungkin masih tetap dilindungi, dan sertifikat mungkin diperlukan untuk beberapa operasi sampai pencadangan penuh database dilakukan. Sertifikat yang telah melebihi tanggal kedaluwarsanya masih dapat digunakan untuk mengenkripsi dan mendekripsi data dengan TDE.

Enkripsi file database dilakukan di tingkat halaman. Halaman dalam database terenkripsi dienkripsi sebelum ditulis ke disk dan didekripsi saat dibaca ke dalam memori. TDE tidak meningkatkan ukuran database terenkripsi.

Ilustrasi berikut menunjukkan hierarki kunci untuk enkripsi TDE:

Displays the hierarchy

Menggunakan Enkripsi Data Transparan

Untuk menggunakan TDE, ikuti langkah-langkah ini. Tiga langkah pertama hanya dilakukan sekali, saat menyiapkan SQL Server PDW untuk mendukung TDE.

  1. Buat kunci master di database master.

  2. Gunakan sp_pdw_database_encryption untuk mengaktifkan TDE pada SQL Server PDW. Operasi ini memodifikasi database sementara untuk memastikan perlindungan data sementara di masa mendatang, dan akan gagal jika dicoba ketika ada sesi aktif yang memiliki tabel sementara. sp_pdw_database_encryption mengaktifkan masking data pengguna di log sistem PDW. (Untuk informasi selengkapnya tentang masking data pengguna di log sistem PDW, lihat sp_pdw_log_user_data_masking.)

  3. Gunakan sp_pdw_add_network_credentials untuk membuat kredensial yang dapat mengautentikasi dan menulis ke berbagi tempat cadangan sertifikat akan disimpan. Jika kredensial sudah ada untuk server penyimpanan yang dimaksudkan, Anda dapat menggunakan kredensial yang ada.

  4. Di database master, buat sertifikat yang dilindungi oleh kunci master.

  5. Cadangkan sertifikat ke berbagi penyimpanan.

  6. Dalam database pengguna, buat kunci enkripsi database dan lindungi dengan sertifikat yang disimpan dalam database master.

  7. ALTER DATABASE Gunakan pernyataan untuk mengenkripsi database menggunakan TDE.

Contoh berikut mengilustrasikan enkripsi AdventureWorksPDW2012 database menggunakan sertifikat bernama MyServerCert, dibuat di SQL Server PDW.

Pertama: Aktifkan TDE pada SQL Server PDW. Tindakan ini hanya diperlukan sekali.

USE master;  
GO  
  
-- Create a database master key in the master database  
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';  
GO  
  
-- Enable encryption for PDW  
EXEC sp_pdw_database_encryption 1;  
GO  
  
-- Add a credential that can write to the share  
-- A credential created for a backup can be used if you wish  
EXEC sp_pdw_add_network_credentials 'SECURE_SERVER', '<domain>\<Windows_user>', '<password>';  

Kedua: Membuat dan mencadangkan sertifikat di database master. Tindakan ini hanya diperlukan sekali. Anda bisa memiliki sertifikat terpisah untuk setiap database (disarankan), atau Anda dapat melindungi beberapa database dengan satu sertifikat.

-- Create certificate in master  
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';  
GO  
  
-- Back up the certificate with private key  
BACKUP CERTIFICATE MyServerCert   
    TO FILE = '\\SECURE_SERVER\cert\MyServerCert.cer'  
    WITH PRIVATE KEY   
    (   
        FILE = '\\SECURE_SERVER\cert\MyServerCert.key',  
        ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'   
    )   
GO  

Terakhir: Buat DEK dan gunakan ALTER DATABASE untuk mengenkripsi database pengguna. Tindakan ini diulang untuk setiap database yang dilindungi oleh TDE.

USE AdventureWorksPDW2012;  
GO  
  
CREATE DATABASE ENCRYPTION KEY  
WITH ALGORITHM = AES_128  
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;  
GO  
  
ALTER DATABASE AdventureWorksPDW2012 SET ENCRYPTION ON;  
GO  

Operasi enkripsi dan dekripsi dijadwalkan pada utas latar belakang oleh SQL Server. Anda dapat melihat status operasi ini menggunakan tampilan katalog dan tampilan manajemen dinamis dalam daftar yang muncul nanti di artikel ini.

Perhatian

File cadangan database yang mengaktifkan TDE juga dienkripsi dengan menggunakan kunci enkripsi database. Akibatnya, ketika Anda memulihkan cadangan ini, sertifikat yang melindungi kunci enkripsi database harus tersedia. Ini berarti bahwa selain mencadangkan database, Anda harus memastikan bahwa Anda mempertahankan cadangan sertifikat server untuk mencegah kehilangan data. Kehilangan data akan mengakibatkan sertifikat tidak lagi tersedia.

Perintah dan Fungsi

Sertifikat TDE harus dienkripsi oleh kunci master database untuk diterima oleh pernyataan berikut.

Tabel berikut ini menyediakan tautan dan penjelasan tentang perintah dan fungsi TDE.

Perintah atau fungsi Tujuan
MEMBUAT KUNCI ENKRIPSI DATABASE Membuat kunci yang digunakan untuk mengenkripsi database.
MENGUBAH KUNCI ENKRIPSI DATABASE Mengubah kunci yang digunakan untuk mengenkripsi database.
DROP DATABASE ENCRYPTION KEY Menghapus kunci yang digunakan untuk mengenkripsi database.
ALTER DATABASE Menjelaskan opsi UBAH DATABASE yang digunakan untuk mengaktifkan TDE.

Tampilan Katalog dan Tampilan Manajemen Dinamis

Tabel berikut ini memperlihatkan tampilan katalog TDE dan tampilan manajemen dinamis.

Tampilan katalog atau tampilan manajemen dinamis Tujuan
sys.databases Tampilan katalog yang menampilkan informasi database.
sys.certificates Tampilan katalog yang memperlihatkan sertifikat dalam database.
sys.dm_pdw_nodes_database_encryption_keys Tampilan manajemen dinamis yang menyediakan informasi untuk setiap simpul, tentang kunci enkripsi yang digunakan dalam database, dan status enkripsi database.

Izin

Setiap fitur dan perintah TDE memiliki persyaratan izin individual, yang dijelaskan dalam tabel yang ditunjukkan sebelumnya.

Melihat metadata yang terlibat dengan TDE memerlukan CONTROL SERVER izin.

Pertimbangan

Saat pemindaian enkripsi ulang untuk operasi enkripsi database sedang berlangsung, operasi pemeliharaan ke database dinonaktifkan.

Anda dapat menemukan status enkripsi database menggunakan tampilan manajemen dinamis sys.dm_pdw_nodes_database_encryption_keys . Untuk informasi selengkapnya, lihat bagian Tampilan Katalog dan Tampilan Manajemen Dinamis sebelumnya di artikel ini.

Batasan

Operasi berikut tidak diizinkan selama CREATE DATABASE ENCRYPTION KEYpernyataan , , ALTER DATABASE ENCRYPTION KEYDROP DATABASE ENCRYPTION KEY, atau ALTER DATABASE...SET ENCRYPTION .

  • Menghilangkan database.

  • ALTER DATABASE Menggunakan perintah.

  • Memulai pencadangan database.

  • Memulai pemulihan database.

Operasi atau kondisi berikut akan mencegah CREATE DATABASE ENCRYPTION KEYpernyataan , , ALTER DATABASE ENCRYPTION KEYDROP DATABASE ENCRYPTION KEY, atau ALTER DATABASE...SET ENCRYPTION .

  • Perintah ALTER DATABASE sedang dijalankan.

  • Pencadangan data apa pun sedang berjalan.

Saat membuat file database, inisialisasi file instan tidak tersedia saat TDE diaktifkan.

Area Tidak Dilindungi oleh TDE

TDE tidak melindungi tabel eksternal.

TDE tidak melindungi sesi diagnostik. Pengguna harus berhati-hati untuk tidak mengkueri dengan parameter sensitif saat sesi diagnostik sedang digunakan. Sesi diagnostik yang mengungkapkan informasi sensitif harus dihilangkan segera setelah tidak lagi diperlukan.

Data yang dilindungi oleh TDE didekripsi saat ditempatkan dalam memori SQL Server PDW. Cadangan memori dibuat ketika masalah tertentu terjadi pada appliance. File cadangan mewakili konten memori pada saat tampilan masalah dan dapat berisi data sensitif dalam bentuk yang tidak terenkripsi. Konten cadangan memori harus ditinjau sebelum dibagikan dengan orang lain.

Database master tidak dilindungi oleh TDE. Meskipun database master tidak berisi data pengguna, database tersebut berisi informasi seperti nama login.

Enkripsi Data Transparan dan Log Transaksi

Mengaktifkan database untuk menggunakan TDE memiliki efek nol dari bagian yang tersisa dari log transaksi virtual untuk memaksa log transaksi virtual berikutnya. Ini menjamin bahwa tidak ada teks yang jelas yang tersisa dalam log transaksi setelah database diatur untuk enkripsi. Anda dapat menemukan status enkripsi file log pada setiap simpul PDW dengan melihat encryption_state kolom dalam sys.dm_pdw_nodes_database_encryption_keys tampilan, seperti dalam contoh ini:

WITH dek_encryption_state AS   
(  
    SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id, encryption_state  
    FROM sys.dm_pdw_nodes_database_encryption_keys AS dek  
        INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map  
           ON dek.database_id = node_db_map.database_id AND dek.pdw_node_id = node_db_map.pdw_node_id  
        LEFT JOIN sys.pdw_database_mappings AS db_map  
            ON node_db_map .physical_name = db_map.physical_name  
        INNER JOIN sys.dm_pdw_nodes AS nodes  
            ON nodes.pdw_node_id = dek.pdw_node_id  
    WHERE dek.encryptor_thumbprint <> 0x  
)  
SELECT TOP 1 encryption_state  
       FROM dek_encryption_state  
       WHERE dek_encryption_state.database_id = DB_ID('AdventureWorksPDW2012 ')  
       ORDER BY (CASE encryption_state WHEN 3 THEN -1 ELSE encryption_state END) DESC;  

Semua data yang ditulis ke log transaksi sebelum perubahan kunci enkripsi database akan dienkripsi dengan menggunakan kunci enkripsi database sebelumnya.

Log Aktivitas PDW

SQL Server PDW mempertahankan sekumpulan log yang dimaksudkan untuk pemecahan masalah. (Catatan, ini bukan log transaksi, log kesalahan SQL Server, atau log peristiwa Windows.) Log aktivitas PDW ini dapat berisi pernyataan lengkap dalam teks yang jelas, beberapa di antaranya dapat berisi data pengguna. Contoh umumnya adalah pernyataan INSERT dan UPDATE . Masking data pengguna dapat diaktifkan atau dinonaktifkan secara eksplisit dengan menggunakan sp_pdw_log_user_data_masking. Mengaktifkan enkripsi pada SQL Server PDW secara otomatis mengaktifkan masking data pengguna dalam log aktivitas PDW untuk melindunginya. sp_pdw_log_user_data_masking juga dapat digunakan untuk menutupi pernyataan saat tidak menggunakan TDE, tetapi itu tidak disarankan karena secara signifikan mengurangi kemampuan Tim Dukungan Microsoft untuk menganalisis masalah.

Enkripsi Data Transparan dan Database Sistem tempdb

Database sistem tempdb dienkripsi saat enkripsi diaktifkan dengan menggunakan sp_pdw_database_encryption. Ini diperlukan sebelum database apa pun dapat menggunakan TDE. Ini mungkin memiliki efek performa untuk database yang tidak terenkripsi pada instans PDW SQL Server yang sama.

Manajemen Kunci

Kunci enkripsi database (DEK) dilindungi oleh sertifikat yang disimpan dalam database master. Sertifikat ini dilindungi oleh kunci master database (DMK) database master. DMK perlu dilindungi oleh kunci master layanan (SMK) agar dapat digunakan untuk TDE.

Sistem dapat mengakses kunci tanpa memerlukan intervensi manusia (seperti menyediakan kata sandi). Jika sertifikat tidak tersedia, sistem akan menghasilkan kesalahan yang menjelaskan bahwa DEK tidak dapat didekripsi sampai sertifikat yang tepat tersedia.

Saat memindahkan database dari satu appliance ke appliance lainnya, sertifikat yang digunakan untuk melindungi DEK-nya harus dipulihkan terlebih dahulu di server tujuan. Kemudian database dapat dipulihkan seperti biasa. Untuk informasi selengkapnya, lihat dokumentasi SQL Server standar, di Memindahkan Database yang Dilindungi TDE ke SQL Server Lain.

Sertifikat yang digunakan untuk mengenkripsi DEK harus dipertahankan selama ada cadangan database yang menggunakannya. Pencadangan sertifikat harus menyertakan kunci privat sertifikat, karena tanpa kunci privat sertifikat tidak dapat digunakan untuk pemulihan database. Cadangan kunci privat sertifikat tersebut disimpan dalam file terpisah, dilindungi oleh kata sandi yang harus disediakan untuk pemulihan sertifikat.

Memulihkan Database master

Database master dapat dipulihkan menggunakan DWConfig, sebagai bagian dari pemulihan bencana.

  • Jika simpul kontrol belum berubah, yaitu jika database master dipulihkan pada appliance yang sama dan tidak berubah tempat cadangan database master diambil, DMK dan semua sertifikat akan dapat dibaca tanpa tindakan tambahan.

  • Jika database master dipulihkan pada appliance yang berbeda, atau jika simpul kontrol telah diubah sejak pencadangan database master, langkah tambahan akan diperlukan untuk meregenerasi DMK.

    1. Buka DMK:

      OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';  
      
    2. Tambahkan enkripsi oleh SMK:

      ALTER MASTER KEY   
          ADD ENCRYPTION BY SERVICE MASTER KEY;  
      
    3. Hidupkan ulang appliancenya.

Meningkatkan dan Mengganti Komputer Virtual

Jika DMK ada pada appliance tempat Peningkatan atau Penggantian VM dilakukan, kata sandi DMK harus disediakan sebagai parameter.

Contoh tindakan peningkatan. Ganti ********** dengan kata sandi DMK Anda.

setup.exe /Action=ProvisionUpgrade ... DMKPassword='**********'

Contoh tindakan untuk mengganti komputer virtual.

setup.exe /Action=ReplaceVM ... DMKPassword='**********'

Selama peningkatan, jika DB pengguna dienkripsi dan kata sandi DMK tidak disediakan, tindakan peningkatan akan gagal. Selama penggantian, jika kata sandi yang benar tidak disediakan ketika DMK ada, operasi akan melewati langkah pemulihan DMK. Semua langkah lain akan diselesaikan di akhir tindakan ganti VM, namun tindakan akan melaporkan kegagalan di akhir untuk menunjukkan bahwa langkah-langkah tambahan diperlukan. Dalam log penyiapan (terletak di \ProgramData\Microsoft\Microsoft SQL Server Parallel Data Warehouse\100\Logs\Setup\\<time-stamp>\Detail-Setup), peringatan berikut akan ditampilkan di dekat akhir.

*** WARNING \*\*\* DMK is detected in master database, but could not be recovered automatically! The DMK password was either not provided or is incorrect!

Jalankan pernyataan ini secara manual di PDW dan mulai ulang appliance setelah itu untuk memulihkan DMK:

OPEN MASTER KEY DECRYPTION BY PASSWORD = '<DMK password>';  
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;  

Gunakan langkah-langkah dalam memulihkan paragraf Database master untuk memulihkan database, lalu mulai ulang appliance.

Jika DMK ada sebelumnya tetapi tidak dipulihkan setelah tindakan, pesan kesalahan berikut akan dinaikkan saat database dikueri.

Msg 110806;  
A distributed query failed: Database '<db_name>' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.

Dampak Performa

Dampak performa TDE bervariasi menurut jenis data yang Anda miliki, cara penyimpanannya, dan jenis aktivitas beban kerja pada SQL Server PDW. Ketika dilindungi oleh TDE, I/O membaca dan kemudian mendekripsi data atau mengenkripsi dan kemudian menulis data adalah aktivitas intensif CPU dan akan berdampak lebih ketika aktivitas intensif CPU lainnya terjadi pada saat yang sama. Karena TDE mengenkripsi tempdb, TDE dapat memengaruhi performa database yang tidak dienkripsi. Untuk mendapatkan gagasan performa yang akurat, Anda harus menguji seluruh sistem dengan data dan aktivitas kueri Anda.

Tautan berikut berisi informasi umum tentang cara SQL Server mengelola enkripsi. Artikel ini dapat membantu Anda memahami enkripsi SQL Server, tetapi artikel ini tidak memiliki informasi khusus untuk SQL Server PDW dan membahas fitur yang tidak ada di SQL Server PDW.

Lihat Juga

ALTER DATABASE
CREATE MASTER KEY
MEMBUAT KUNCI ENKRIPSI DATABASE
SERTIFIKAT CADANGAN
sp_pdw_database_encryption
sp_pdw_database_encryption_regenerate_system_keys
sp_pdw_log_user_data_masking
sys.certificates
sys.dm_pdw_nodes_database_encryption_keys