SQL Server dan kunci enkripsi database (Database Engine)

Berlaku untuk:SQL Server

SQL Server menggunakan kunci enkripsi untuk membantu mengamankan data, kredensial, dan informasi koneksi yang disimpan dalam database server. SQL Server memiliki dua jenis kunci: simetris dan asimetris. Kunci simetris menggunakan kata sandi yang sama untuk mengenkripsi dan mendekripsi data. Kunci asimetris menggunakan satu kata sandi untuk mengenkripsi data (disebut kunci publik ) dan yang lain untuk mendekripsi data (disebut kunci privat ).

Di SQL Server, kunci enkripsi mencakup kombinasi kunci publik, kunci privat, dan kunci simetris yang digunakan untuk melindungi data sensitif. Kunci simetris dibuat selama inisialisasi SQL Server saat Anda pertama kali memulai instans SQL Server. SQL Server menggunakan kunci untuk mengenkripsi data sensitif yang disimpan di SQL Server. Sistem operasi menciptakan kunci publik dan privat, dan kunci tersebut melindungi kunci simetris. Pasangan kunci publik dan privat dibuat untuk setiap instans SQL Server yang menyimpan data sensitif dalam database.

Aplikasi untuk SQL Server dan kunci database

SQL Server memiliki dua aplikasi utama untuk kunci: kunci master layanan (SMK) yang dihasilkan di dan untuk instans SQL Server, dan kunci master database (DMK) yang digunakan untuk database.

Kunci master layanan

Kunci master layanan adalah akar hierarki enkripsi SQL Server. SQL Server menghasilkan SMK saat instance pertama kali dimulai, dan menggunakannya untuk mengenkripsi kata sandi linked server, kredensial, dan kunci master database di setiap database.

SMK dienkripsi menggunakan kunci mesin lokal atau Windows Data Protection API (DPAPI). DPAPI menggunakan kunci yang berasal dari kredensial Windows dari akun layanan SQL Server. Karena kunci dilindungi oleh dua mekanisme, kunci master layanan dapat dibuka oleh akun layanan yang digunakan saat kunci tersebut dibuat, atau oleh principal yang memiliki akses ke kredensial mesin.

SQL Server menggunakan algoritma enkripsi AES untuk melindungi kunci master layanan dan kunci master basis data. AES menggantikan algoritma 3DES yang digunakan pada versi sebelum SQL Server 2012 (11.x). Setelah Anda meng-upgrade instance Database Engine dari salah satu versi sebelumnya, regenerasikan SMK dan DMK untuk meningkatkan kunci master ke AES. Untuk informasi selengkapnya tentang membuat ulang SMK, lihat ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) dan ALTER MASTER KEY (Transact-SQL).

Kunci master database

Kunci master basis data adalah kunci simetris yang melindungi kunci privat dari sertifikat dan kunci asimetris yang ada dalam basis data. Ini juga dapat mengenkripsi data, tetapi memiliki keterbatasan panjang yang membuatnya kurang praktis untuk data dibandingkan kunci asimetris. Untuk mengaktifkan dekripsi otomatis kunci master database, salinan kunci dienkripsi menggunakan SMK. SQL Server menyimpan salinan tersebut baik di database tempat kunci digunakan maupun di master database sistem.

Salinan DMK yang disimpan di master database sistem diperbarui secara diam-diam setiap kali DMK berubah. Anda dapat mengubah default ini dengan menggunakan opsi DROP ENCRYPTION BY SERVICE MASTER KEY dari ALTER MASTER KEY (Transact-SQL). DMK yang tidak dienkripsi oleh kunci master layanan harus dibuka menggunakan OPEN MASTER KEY (Transact-SQL) dan kata sandi.

Mengelola kunci SQL Server dan database

Mengelola kunci enkripsi melibatkan pembuatan kunci database baru, mencadangkan server dan kunci database, serta mengetahui kapan dan bagaimana memulihkan, menghapus, atau mengubah kunci tersebut.

Untuk mengelola kunci simetris, gunakan alat yang disertakan di SQL Server untuk melakukan tugas-tugas berikut:

  • Cadangkan salinan kunci server dan database agar Anda dapat menggunakannya untuk memulihkan instalasi server atau sebagai bagian dari migrasi yang direncanakan.
  • Pulihkan kunci yang disimpan sebelumnya ke database. Memulihkan kunci memungkinkan instance server baru mengakses data yang sudah ada yang sebelumnya tidak dienkripsi olehnya.
  • Hapus data terenkripsi dalam database jika Anda tidak dapat lagi mengakses data terenkripsi.
  • Buat ulang kunci dan enkripsi ulang data jika kunci tersebut terkompromi. Sebagai praktik terbaik keamanan, buat ulang kunci secara berkala, misalnya setiap beberapa bulan, untuk melindungi server dari serangan yang mencoba menguraikan kunci.
  • Menambahkan atau menghapus instans server dari penyebaran peluasan skala server di mana beberapa server berbagi database tunggal dan kunci yang menyediakan enkripsi yang dapat dibalik untuk database tersebut.

Informasi keamanan penting

Untuk mengakses objek yang diamankan oleh kunci master layanan, Anda memerlukan akun layanan SQL Server yang Anda gunakan untuk membuat kunci atau akun komputer (mesin) yang terhubung ke sistem tempat Anda membuat kunci tersebut. Anda dapat mengubah akun layanan SQL Server atau akun komputer tanpa kehilangan akses ke kunci. Namun, jika Anda mengubah kedua akun, Anda kehilangan akses ke kunci master layanan. Jika Anda kehilangan akses ke kunci master layanan tanpa salah satu dari dua elemen ini, Anda tidak dapat mendekripsi data dan objek yang dienkripsi oleh kunci asli.

Anda tidak bisa memulihkan koneksi yang aman dengan kunci master layanan kecuali Anda memiliki kunci tersebut.

Untuk mengakses objek dan data yang diamankan dengan kunci master database, Anda hanya perlu kata sandi yang membantu mengamankan kunci tersebut.

Perhatian

Jika Anda kehilangan semua akses ke kunci yang dijelaskan dalam artikel ini, Anda kehilangan akses ke objek, koneksi, dan data yang diamankan oleh kunci tersebut. Anda dapat memulihkan kunci master layanan seperti yang dijelaskan dalam Pulihkan kunci master layanan, atau Anda dapat kembali ke sistem enkripsi asli untuk memulihkan akses. Tidak ada cara alternatif untuk memulihkan akses.