Tutorial: Mulai menggunakan Always Encrypted
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Tutorial ini mengajarkan Anda cara memulai Always Encrypted. Ini akan menunjukkan kepada Anda:
- Cara mengenkripsi kolom yang dipilih di database Anda.
- Cara mengkueri kolom terenkripsi.
Catatan
Jika Anda mencari informasi tentang Always Encrypted dengan enklave aman, lihat tutorial berikut:
Prasyarat
Untuk tutorial ini, Anda perlu:
- Database kosong di Azure SQL Database, Azure SQL Managed Instance, atau SQL Server. Instruksi di bawah ini mengasumsikan nama database adalah ContosoHR. Anda harus menjadi pemilik database (anggota peran db_owner ). Untuk informasi tentang cara membuat database, lihat Mulai Cepat: Membuat database tunggal - Azure SQL Database atau Membuat database di SQL Server.
- Opsional, tetapi direkomendasikan, terutama jika database Anda berada di Azure: brankas kunci di Azure Key Vault. Untuk informasi tentang cara membuat brankas kunci, lihat Mulai Cepat: Membuat brankas kunci menggunakan portal Azure.
- Jika brankas kunci Anda menggunakan model izin kebijakan akses, pastikan Anda memiliki izin kunci berikut di brankas kunci:
get
, ,list
,create
unwrap key
,wrap key
,verify
,sign
. Lihat Menetapkan kebijakan akses Key Vault. - Jika Anda menggunakan model izin kontrol akses berbasis peran Azure (RBAC), pastikan Anda adalah anggota peran Petugas Kripto Key Vault untuk brankas kunci Anda. Lihat Menyediakan akses ke kunci, sertifikat, dan rahasia Key Vault dengan kontrol akses berbasis peran Azure.
- Jika brankas kunci Anda menggunakan model izin kebijakan akses, pastikan Anda memiliki izin kunci berikut di brankas kunci:
- Versi terbaru SQL Server Management Studio (SSMS) atau versi terbaru modul SqlServer dan Az PowerShell. Modul Az PowerShell diperlukan hanya jika Anda menggunakan Azure Key Vault.
Langkah 1: Membuat dan mengisi skema database
Dalam langkah ini, Anda akan membuat skema SDM dan tabel Karyawan . Kemudian, Anda akan mengisi tabel dengan beberapa data.
Sambungkan ke database Anda. Untuk instruksi tentang cara menyambungkan ke database dari SQL Server Management Studio (SSMS), lihat Mulai Cepat: Menyambungkan dan mengkueri Azure SQL Database atau Azure SQL Managed Instance menggunakan SQL Server Management Studio (SSMS) atau Mulai Cepat: Menyambungkan dan mengkueri instans SQL Server menggunakan SQL Server Management Studio (SSMS).
Buka jendela kueri baru untuk database ContosoHR .
Tempel dan jalankan pernyataan di bawah ini untuk membuat tabel baru, bernama Karyawan.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL , [SSN] [char](11) NOT NULL , [FirstName] [nvarchar](50) NOT NULL , [LastName] [nvarchar](50) NOT NULL , [Salary] [money] NOT NULL ) ON [PRIMARY];
Tempel dan jalankan pernyataan di bawah ini untuk menambahkan beberapa catatan karyawan ke tabel Karyawan .
INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '795-73-9838' , N'Catherine' , N'Abel' , $31692 ); INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '990-00-6818' , N'Kim' , N'Abercrombie' , $55415 );
Langkah 2: Mengenkripsi kolom
Dalam langkah ini, Anda akan menyediakan kunci master kolom dan kunci enkripsi kolom untuk Always Encrypted. Kemudian, Anda akan mengenkripsi kolom SSN dan Gaji di tabel Karyawan .
SSMS menyediakan wizard yang membantu Anda mengonfigurasi Always Encrypted dengan mudah dengan menyiapkan kunci master kolom, kunci enkripsi kolom, dan mengenkripsi kolom yang dipilih.
Di Object Explorer, perluas Tabel ContosoHR>Database.>
Klik kanan tabel Karyawan dan pilih Enkripsi Kolom untuk membuka wizard Always Encrypted.
Pilih Berikutnya di halaman Pengenalan wizard.
Pada halaman Pilihan Kolom.
- Pilih kolom SSN dan Gaji . Pilih enkripsi deterministik untuk kolom SSN dan enkripsi acak untuk kolom Gaji . Enkripsi deterministik mendukung kueri, seperti pencarian titik yang melibatkan perbandingan kesetaraan pada kolom terenkripsi. Enkripsi acak tidak mendukung komputasi apa pun pada kolom terenkripsi.
- Biarkan CEK-Auto1 (Baru) sebagai kunci enkripsi kolom untuk kedua kolom. Kunci ini belum ada dan akan dihasilkan oleh wizard.
- Pilih Selanjutnya.
Pada halaman Konfigurasi Kunci Master, konfigurasikan kunci master kolom baru yang akan dihasilkan oleh wizard. Pertama, Anda perlu memilih di mana Anda ingin menyimpan kunci master kolom Anda. Wizard mendukung dua jenis penyimpanan kunci:
- Azure Key Vault - disarankan jika database Anda berada di Azure
- Toko sertifikat Windows
Secara umum, Azure Key Vault adalah opsi yang direkomendasikan, terutama jika database Anda berada di Azure.
Untuk menggunakan Azure Key Vault:
- Pilih Azure Key Vault.
- Pilih Masuk dan selesai masuk ke Azure.
- Setelah Anda masuk, halaman akan menampilkan daftar langganan dan brankas kunci, yang dapat Anda akses. Pilih langganan Azure yang berisi brankas kunci, yang ingin Anda gunakan.
- Pilih brankas kunci Anda.
- Pilih Selanjutnya.
Untuk menggunakan penyimpanan sertifikat Windows:
Pilih Penyimpanan sertifikat Windows.
Biarkan pilihan default Pengguna Saat Ini - ini akan menginstruksikan wizard untuk membuat sertifikat (kunci master kolom baru Anda) di penyimpanan Pengguna Saat Ini.
Pilih Selanjutnya.
Pada halaman Pengaturan Enkripsi Di Tempat, tidak ada konfigurasi tambahan yang diperlukan karena database tidak mengaktifkan enklave. Pilih Selanjutnya.
Pada halaman Jalankan Pengaturan , Anda akan ditanya apakah Anda ingin melanjutkan enkripsi atau membuat skrip PowerShell untuk dijalankan nanti. Biarkan pengaturan default dan pilih Berikutnya.
Pada halaman Ringkasan , wizard memberi tahu Anda tentang tindakan yang akan dijalankannya. Periksa semua informasi sudah benar dan pilih Selesai.
Pada halaman Hasil , Anda bisa memantau kemajuan operasi wizard. Tunggu hingga semua operasi berhasil diselesaikan dan pilih Tutup.
(Opsional) Jelajahi perubahan yang telah dibuat wizard di database Anda.
Perluas Kunci Always Encrypted Keamanan>ContosoHR>untuk menjelajahi objek metadata untuk kunci master kolom dan enkripsi kolom yang dibuat wizard.
Anda juga dapat menjalankan kueri di bawah ini terhadap tampilan katalog sistem yang berisi metadata kunci.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_values
Di Object Explorer, klik kanan tabel Karyawan dan pilih Tabel Skrip sebagai>BUAT Ke>Jendela Editor Kueri Baru. Ini akan membuka jendela kueri baru dengan pernyataan CREATE TABLE untuk tabel Karyawan . Perhatikan klausa ENCRYPTED WITH yang muncul dalam definisi kolom SSN dan Gaji.
Anda juga dapat menjalankan kueri di bawah ini terhadap sys.columns untuk mengambil metadata enkripsi tingkat kolom untuk dua kolom terenkripsi.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Langkah 3: Mengkueri kolom terenkripsi
Sambungkan ke database Anda dengan Always Encrypted dinonaktifkan untuk koneksi Anda.
- Buka jendela kueri baru.
- Klik kanan di mana saja di jendela kueri dan pilih Koneksi>Ubah Koneksi. Ini akan membuka dialog Sambungkan ke Mesin Database.
- Pilih Opsi <<. Ini akan menampilkan tab tambahan dalam dialog Sambungkan ke Mesin Database.
- Pilih tab Always Encrypted.
- Pastikan Aktifkan Always Encrypted (enkripsi kolom) tidak dipilih.
- Pilih Sambungkan.
Tempelkan dan jalankan kueri berikut. Kueri harus mengembalikan data terenkripsi biner.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Sambungkan ke database Anda dengan Always Encrypted diaktifkan untuk koneksi Anda.
- Klik kanan di mana saja di jendela kueri dan pilih Koneksi>Ubah Koneksi. Ini akan membuka dialog Sambungkan ke Mesin Database.
- Pilih Opsi <<. Ini akan menampilkan tab tambahan dalam dialog Sambungkan ke Mesin Database.
- Pilih tab Always Encrypted.
- Pilih Aktifkan Always Encrypted (enkripsi kolom).
- Pilih Sambungkan.
Jalankan ulang kueri yang sama. Karena Anda terhubung dengan Always Encrypted diaktifkan untuk koneksi database Anda, driver klien di SQL Server Management Directory akan mencoba mendekripsi data yang disimpan di kedua kolom terenkripsi. Jika Anda menggunakan Azure Key Vault, Anda mungkin diminta untuk masuk ke Azure.
Aktifkan Parameterisasi untuk Always Encrypted. Fitur ini memungkinkan Anda menjalankan kueri yang memfilter data menurut kolom terenkripsi (atau menyisipkan data ke kolom terenkripsi).
- Pilih Kueri dari menu utama SSMS.
- Pilih Opsi Kueri....
- Navigasi ke Eksekusi>Tingkat Lanjut.
- Pastikan Aktifkan Parameterisasi untuk Always Encrypted dicentang.
- Pilih OK.
Tempelkan dan jalankan kueri di bawah ini, yang memfilter data menurut kolom SSN terenkripsi. Kueri harus mengembalikan satu baris yang berisi nilai teks biasa.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSN
Secara opsional, jika Anda menggunakan Azure Key Vault yang dikonfigurasi dengan model izin kebijakan akses, ikuti langkah-langkah di bawah ini untuk melihat apa yang terjadi ketika pengguna mencoba mengambil data teks biasa dari kolom terenkripsi tanpa memiliki akses ke kunci master kolom yang melindungi data.
- Hapus izin kunci
unwrap
untuk diri Anda sendiri dalam kebijakan akses untuk brankas kunci Anda. Untuk informasi selengkapnya, lihat Menetapkan kebijakan akses Key Vault. - Karena driver klien di SQL Server Management Studio menyimpan kunci enkripsi kolom yang diperoleh dari brankas kunci selama 2 jam, tutup SSMS dan buka lagi. Ini akan memastikan cache kunci kosong.
- Sambungkan ke database Anda dengan Always Encrypted diaktifkan untuk koneksi Anda.
- Tempelkan dan jalankan kueri berikut. Kueri harus gagal dengan pesan kesalahan yang menunjukkan Bahwa Anda tidak memiliki izin yang diperlukan
unwrap
.
SELECT [SSN], [Salary] FROM [HR].[Employees]
- Hapus izin kunci
Langkah berikutnya
Lihat juga
- Dokumentasi Always Encrypted
- Always Encrypted dengan dokumentasi enklave aman
- Menyediakan kunci Always Encrypted menggunakan SQL Server Management Studio
- Mengonfigurasi Always Encrypted menggunakan PowerShell
- Wizard Always Encrypted
- Kolom kueri menggunakan Always Encrypted dengan SQL Server Management Studio