Ringkasan manajemen kunci untuk Always Encrypted

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Always Encrypted menggunakan dua jenis kunci kriptografi untuk melindungi data Anda - satu kunci untuk mengenkripsi data Anda, dan kunci lain untuk mengenkripsi kunci yang mengenkripsi data Anda. Kunci enkripsi kolom mengenkripsi data Anda, kunci master kolom mengenkripsi kunci enkripsi kolom. Artikel ini memberikan gambaran umum terperinci untuk mengelola kunci enkripsi ini.

Saat membahas kunci Always Encrypted dan manajemen kunci, penting untuk memahami perbedaan antara kunci kriptografi aktual, dan objek metadata yang menjelaskan kunci. Kami menggunakan istilah kunci enkripsi kolom dan kunci master kolom untuk merujuk ke kunci kriptografi aktual, dan kami menggunakan metadata kunci enkripsi kolom dan metadata kunci master kolom untuk merujuk ke deskripsi kunci Always Encrypted dalam database.

  • Kunci enkripsi kolom adalah kunci enkripsi konten yang digunakan untuk mengenkripsi data. Seperti namanya, Anda menggunakan kunci enkripsi kolom untuk mengenkripsi data di kolom database. Anda dapat mengenkripsi satu atau beberapa kolom dengan kunci enkripsi kolom yang sama, atau Anda dapat menggunakan beberapa kunci enkripsi kolom tergantung pada persyaratan aplikasi Anda. Kunci enkripsi kolom sendiri dienkripsi, dan hanya nilai terenkripsi dari kunci enkripsi kolom yang disimpan dalam database (sebagai bagian dari metadata kunci enkripsi kolom). Metadata kunci enkripsi kolom disimpan dalam tampilan katalog sys.column_encryption_keys (Transact-SQL) dan sys.column_encryption_key_values (Transact-SQL ). Kunci enkripsi kolom yang digunakan dengan algoritma AES-256 panjangnya 256-bit.

  • Kunci master kolom adalah kunci yang melindungi kunci yang digunakan untuk mengenkripsi kunci enkripsi kolom. Kunci master kolom harus disimpan di penyimpanan kunci tepercaya, seperti Windows Certificate Store, Azure Key Vault, atau modul keamanan perangkat keras. Database hanya berisi metadata tentang kunci master kolom (jenis penyimpanan kunci dan lokasi). Metadata kunci master kolom disimpan dalam tampilan katalog sys.column_master_keys (Transact-SQL ).

Penting untuk dicatat bahwa metadata kunci dalam sistem database tidak berisi kunci master kolom teks biasa atau kunci enkripsi kolom teks biasa. Database hanya berisi informasi tentang jenis dan lokasi kunci master kolom, dan nilai terenkripsi kunci enkripsi kolom. Ini berarti bahwa kunci teks biasa tidak pernah terekspos ke sistem database yang memastikan bahwa data yang dilindungi menggunakan Always Encrypted aman, bahkan jika sistem database disusupi. Untuk memastikan sistem database tidak dapat memperoleh akses ke kunci teks biasa, pastikan untuk menjalankan alat manajemen kunci Anda pada komputer yang berbeda dari yang menghosting database Anda - tinjau bagian Pertimbangan Keamanan untuk Manajemen Kunci di bawah ini untuk detailnya.

Karena database hanya berisi data terenkripsi (di kolom yang dilindungi Always Encrypted), dan tidak dapat mengakses kunci teks biasa, database tidak dapat mendekripsi data. Ini berarti bahwa mengkueri kolom Always Encrypted hanya akan mengembalikan nilai terenkripsi, sehingga aplikasi klien yang perlu mengenkripsi atau mendekripsi data yang dilindungi harus dapat mengakses kunci master kolom, dan kunci enkripsi kolom terkait. Untuk detailnya, lihat Mengembangkan Aplikasi menggunakan Always Encrypted.

Tugas Manajemen Kunci

Proses pengelolaan kunci dapat dibagi menjadi tugas tingkat tinggi berikut:

  • Provisi kunci - Membuat kunci fisik di penyimpanan kunci tepercaya (misalnya, di Penyimpanan Sertifikat Windows, Azure Key Vault, atau modul keamanan perangkat keras), mengenkripsi kunci enkripsi kolom dengan kunci master kolom, dan membuat metadata untuk kedua jenis kunci dalam database.

  • Rotasi kunci - Secara berkala mengganti kunci yang ada dengan kunci baru. Anda mungkin perlu memutar kunci jika kunci telah disusupi, atau untuk mematuhi kebijakan organisasi Anda atau peraturan kepatuhan yang mengamanatkan kunci kriptografi harus diputar.

Peran Manajemen Kunci

Ada dua peran berbeda dari pengguna yang mengelola kunci Always Encrypted; Administrator Keamanan dan Administrator Database (DBA):

  • Administrator Keamanan - menghasilkan kunci enkripsi kolom dan kunci master kolom dan mengelola penyimpanan kunci yang berisi kunci master kolom. Untuk melakukan tugas-tugas ini, Administrator Keamanan harus dapat mengakses kunci dan penyimpanan kunci, tetapi tidak memerlukan akses ke database.
  • DBA - mengelola metadata tentang kunci dalam database. Untuk melakukan tugas manajemen kunci, DBA harus dapat mengelola metadata kunci dalam database, tetapi tidak memerlukan akses ke kunci atau penyimpanan kunci yang memegang kunci master kolom.

Mempertimbangkan peran di atas, ada dua cara berbeda untuk melakukan tugas manajemen kunci untuk Always Encrypted; dengan pemisahan peran, dan tanpa pemisahan peran. Bergantung pada kebutuhan organisasi Anda, Anda dapat memilih proses manajemen kunci yang paling sesuai dengan kebutuhan Anda.

Mengelola Kunci dengan Pemisahan Peran

Saat kunci Always Encrypted dikelola dengan pemisahan peran, orang yang berbeda dalam organisasi mengambil peran Administrator Keamanan dan DBA. Proses manajemen kunci dengan pemisahan peran memastikan DBA tidak memiliki akses ke kunci atau penyimpanan kunci yang memegang kunci aktual, dan Administrator Keamanan tidak memiliki akses ke database yang berisi data sensitif. Mengelola kunci dengan pemisahan peran disarankan jika tujuan Anda adalah memastikan DBA di organisasi Anda tidak dapat mengakses data sensitif.

Catatan: Administrator Keamanan menghasilkan dan bekerja dengan kunci teks biasa, sehingga mereka tidak boleh melakukan tugas mereka di komputer yang sama yang menghosting sistem database, atau komputer yang dapat diakses oleh DBA atau siapa pun yang mungkin menjadi calon pembela.

Mengelola Kunci tanpa Pemisahan Peran

Ketika kunci Always Encrypted dikelola tanpa pemisahan peran, satu orang dapat mengasumsikan peran Administrator Keamanan dan DBA, yang menyiratkan bahwa orang tersebut harus dapat mengakses dan mengelola kunci/penyimpanan kunci dan metadata kunci. Mengelola kunci tanpa pemisahan peran dapat direkomendasikan untuk organisasi yang menggunakan model DevOps, atau jika database dihosting di cloud dan tujuan utamanya adalah membatasi administrator cloud (tetapi bukan DBA lokal), agar tidak mengakses data sensitif.

Alat untuk Mengelola Kunci Always Encrypted

Kunci Always Encrypted dapat dikelola menggunakan SQL Server Management Studio (SSMS) dan PowerShell:

Pertimbangan Keamanan untuk Manajemen Kunci

Tujuan utama Always Encrypted adalah untuk memastikan data sensitif yang disimpan dalam database aman, bahkan jika sistem database atau lingkungan hostingnya disusupi. Contoh serangan keamanan di mana Always Encrypted dapat membantu mencegah kebocoran data sensitif meliputi:

  • Pengguna database dengan hak istimewa tinggi yang berbahaya, seperti DBA, mengkueri kolom data sensitif.
  • Administrator nakal komputer yang menghosting instans SQL Server, memindai memori proses SQL Server, atau file cadangan proses SQL Server.
  • Operator pusat data berbahaya yang mengkueri database pelanggan, memeriksa file cadangan SQL Server, atau memeriksa memori komputer yang menghosting data pelanggan di cloud.
  • Malware yang berjalan di komputer yang menghosting database.

Untuk memastikan Always Encrypted efektif dalam mencegah jenis serangan ini, proses manajemen kunci Anda harus memastikan kunci master kolom dan kunci enkripsi kolom, dan kredensial ke penyimpanan kunci yang berisi kunci master kolom, tidak pernah diungkapkan kepada penyerang potensial. Berikut adalah beberapa panduan, Anda harus mengikuti:

  • Jangan pernah membuat kunci master kolom atau kunci enkripsi kolom di komputer yang menghosting database Anda. Sebagai gantinya, hasilkan kunci di komputer terpisah, yang didedikasikan untuk manajemen kunci, atau merupakan aplikasi hosting mesin yang akan membutuhkan akses ke kunci. Ini berarti Bahwa Anda tidak boleh menjalankan alat yang digunakan untuk menghasilkan kunci di komputer yang menghosting database Anda karena jika penyerang mengakses komputer yang digunakan untuk menyediakan atau memelihara kunci Always Encrypted Anda, penyerang berpotensi mendapatkan kunci Anda, bahkan jika kunci hanya muncul dalam memori alat untuk waktu yang singkat.
  • Untuk memastikan proses manajemen kunci Anda tidak secara tidak sengaja mengungkapkan kunci master kolom atau kunci enkripsi kolom, sangat penting untuk mengidentifikasi potensi ancaman keamanan dan iklan sebelum mendefinisikan dan menerapkan proses manajemen kunci. Misalnya, jika tujuan Anda adalah memastikan DBA tidak memiliki akses ke data sensitif, maka DBA tidak dapat bertanggung jawab untuk menghasilkan kunci. Namun, DBA dapat mengelola metadata kunci dalam database, karena metadata tidak berisi kunci teks biasa.

Langkah berikutnya