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:
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.
Buat kunci master di database master.
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.)
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.
Di database master, buat sertifikat yang dilindungi oleh kunci master.
Cadangkan sertifikat ke berbagi penyimpanan.
Dalam database pengguna, buat kunci enkripsi database dan lindungi dengan sertifikat yang disimpan dalam database master.
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 KEY
pernyataan , , ALTER DATABASE ENCRYPTION KEY
DROP 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 KEY
pernyataan , , ALTER DATABASE ENCRYPTION KEY
DROP 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.
Buka DMK:
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
Tambahkan enkripsi oleh SMK:
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;
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.
Konten Terkait
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk