Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memahami SQL Server Selalu Terenkripsi

Keamanan adalah salah satu persyaratan terpenting untuk sistem berbasis data. Enkripsi merupakan salah satu cara untuk mengamankan data. Wikipedia mendefinisikan enkripsi sebagai:

Enkripsi adalah proses penyandian pesan atau informasi sedemikian rupa sehingga hanya pihak yang berwenang yang dapat mengaksesnya dan mereka yang tidak berwenang tidak dapat.

Di SQL Server 2016, Microsoft memperkenalkan fitur enkripsi yang disebut Selalu Dienkripsi . Dalam artikel ini, kita akan melihat apa yang Selalu Dienkripsi adalah, dan bagaimana itu dapat digunakan untuk mengenkripsi dan mendekripsi data, dengan bantuan contoh sederhana.

Apa itu SQL Server Selalu Dienkripsi?

Selalu Dienkripsi adalah fitur keamanan yang memungkinkan aplikasi klien mengelola kunci enkripsi dan dekripsi, sehingga memastikan bahwa hanya aplikasi klien yang dapat mendekripsi dan menggunakan data sensitif.

Ada beberapa teknik enkripsi, namun tidak seaman Selalu Dienkripsi . Misalnya, enkripsi kunci simetris digunakan untuk mengenkripsi data di sisi database. Kelemahan dari pendekatan ini adalah jika administrator database lain memiliki kunci dekripsi, ia dapat mengakses data.

Sebaliknya, jika Selalu Dienkripsi , data dienkripsi di sisi klien dan server database menerima versi data yang di-cipher. Oleh karena itu, data tidak dapat diuraikan di ujung basis data. Hanya klien yang mengenkripsi data yang dapat mendekripsinya.

Jenis Kunci

Fitur SQL Server Always Encrypted menggunakan dua jenis kunci:

  • Kunci Enkripsi Kolom (CEK)

Itu selalu ditempatkan di server database. Data sebenarnya dienkripsi menggunakan kolom CEK. Namun, jika seseorang di sisi database memiliki akses ke CEK, dia dapat mendekripsi data.

  • Kunci Master Kolom (CMK)

Kunci ini ditempatkan di sisi klien atau penyimpanan pihak ketiga mana pun. CMK digunakan untuk melindungi CEK, menambahkan lapisan keamanan tambahan. Siapa pun yang memiliki akses ke CMK sebenarnya dapat mendekripsi CEK yang kemudian dapat digunakan untuk menguraikan data yang sebenarnya.

Jenis Enkripsi

  • Deterministik

Jenis enkripsi ini akan selalu menghasilkan teks terenkripsi serupa untuk jenis data yang sama. Jika Anda ingin menerapkan pencarian dan pengelompokan pada kolom tabel, gunakan enkripsi deterministik untuk kolom tersebut.

  • Diacak

Enkripsi Acak akan menghasilkan teks terenkripsi yang berbeda untuk jenis data yang sama, setiap kali Anda mencoba mengenkripsi data. Gunakan enkripsi acak jika kolom tidak digunakan untuk pengelompokan dan pencarian.

Mengonfigurasi Selalu Dienkripsi Menggunakan SSMS

Kita dapat mengonfigurasi SQL Server Always Encrypted melalui SSMS. Tapi sebelum itu, kita perlu membuat database dan menambahkan tabel ke database. Jalankan skrip berikut untuk melakukannya:

CREATE DATABASE School

Use School
CREATE TABLE Student  
(  
   StudentId int identity(1,1) primary key,  
   Name varchar(100),  
   Password varchar(100) COLLATE Latin1_General_BIN2 not null,  
   SSN varchar(20)  COLLATE Latin1_General_BIN2 not null
)

Pada script di atas, kita membuat database baru bernama School . Basis data memiliki empat kolom:StudentId , Nama , Kata sandi , dan SSN . Anda dapat melihat bahwa kolom Kata Sandi dan SSN memiliki COLLATE. Anda perlu menentukan COLLATE untuk kolom yang Anda inginkan Selalu Dienkripsi . Jenis enkripsi ditetapkan sebagai “Latin1_General_BIN2”.

Sekarang mari kita coba menambahkan dua record ke tabel Student.

insert into Student ( Name, Password, SSN)
VALUES ('John','abc123', '451236521478'),
('Mike','xyz123', '789541239654')

Saat ini, kami belum mengonfigurasi Selalu Dienkripsi pada salah satu kolom dalam tabel Siswa, oleh karena itu jika Anda mencoba untuk memilih catatan dari tabel Siswa, Anda akan melihat nilai data aktual daripada nilai terenkripsi. Jalankan kueri berikut untuk memilih catatan:

SELECT * FROM Student

Outputnya terlihat seperti ini:

Sekarang mari kita konfigurasikan SSMS untuk mengaktifkan Selalu Dienkripsi . Seperti yang kami katakan sebelumnya, Selalu Dienkripsi membuat kunci enkripsi kolom dan kunci master kolom.

Untuk melihat kunci enkripsi kolom dan kunci master kolom yang ada, untuk Database Sekolah, buka Database -> School -> Security -> Always Encrypted Keys seperti yang ditunjukkan pada gambar berikut:

Karena Anda tidak memiliki catatan terenkripsi dalam kumpulan data, Anda tidak akan melihat CEK atau CMK dalam daftar.

Sekarang mari kita aktifkan enkripsi pada kolom Password dan SSN pada tabel Student. Untuk melakukannya, Klik Kanan pada Database -> Sekolah. Dari menu tarik-turun, pilih Enkripsi Kolom pilihan seperti yang ditunjukkan pada gambar di bawah ini:

Klik Berikutnya tombol pada Pengantar jendela. Dari Pilihan Kolom jendela, periksa kolom Kata Sandi dan SSN. Untuk kolom Kata Sandi, pilih jenis enkripsi sebagai Acak . Untuk kolom SSN, pilih Deterministik . Ini ditunjukkan pada tangkapan layar berikut:

Klik Berikutnya tombol pada Konfigurasi Kunci Utama jendela. Secara default, kunci master disimpan di mesin klien seperti yang ditunjukkan di bawah ini:

Klik Berikutnya tombol pada Jalankan Pengaturan dan Ringkasan jendela. Jika semuanya berjalan dengan baik, Anda akan melihat Hasil berikut ini jendela.

Sekarang jika Anda kembali ke Database -> School -> Security -> Always Encrypted Keys, Anda akan melihat CEK dan CMK yang baru dibuat seperti yang ditunjukkan pada gambar berikut:

Sekarang coba pilih record dari tabel Student.

SELECT * FROM Student

Outputnya terlihat seperti ini.

Dari output, Anda dapat melihat bahwa kolom Password dan SSN telah dienkripsi.

Mengambil Data yang Didekripsi

Kueri SELECT mengembalikan data terenkripsi. Bagaimana jika Anda ingin mengambil data dalam bentuk dekripsi? Untuk melakukannya, buat Jendela Permintaan Baru di SSMS, lalu klik tombol Ubah Koneksi ikon di bagian atas Object Explorer seperti yang ditunjukkan pada gambar berikut:

Jendela koneksi SQL Server akan muncul. Pilih Opsi tombol dari kanan bawah seperti yang ditunjukkan di bawah ini:

Dari jendela yang muncul, klik Parameter Koneksi Tambahan tab dari kiri atas dan masukkan "Pengaturan Enkripsi Kolom =Diaktifkan" di kotak teks seperti yang ditunjukkan pada tangkapan layar berikut. Terakhir, klik tombol Hubungkan tombol.

Sekarang jalankan lagi kueri SELECT berikut:

SELECT * FROM Student

Pada hasilnya, Anda akan melihat catatan yang dikembalikan dalam bentuk dekripsi seperti yang ditunjukkan di bawah ini:

Kesimpulan

Selalu E dienkripsi adalah salah satu fitur keamanan terbaru dari SQL Server. Dalam artikel ini, kami mengulas secara singkat apa yang Selalu E dienkripsi adalah dan bagaimana mengaktifkannya menggunakan SQL Server Management Studio. Kami juga melihat contoh dasar enkripsi dan dekripsi data menggunakan Selalu E dienkripsi fitur.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 Cara Mendaftar Semua Prosedur Tersimpan di Database SQL Server

  2. Bagaimana cara memeriksa apakah prosedur tersimpan ada sebelum membuatnya

  3. Perintah SQL INSERT berfungsi tetapi data tidak muncul di tabel

  4. COS() Contoh di SQL Server

  5. Setiap ekspresi GROUP BY harus berisi setidaknya satu kolom yang bukan referensi luar