Tutorial: Mulai menggunakan Always Encrypted dengan enklave VBS di Azure SQL Database
Berlaku untuk: Azure SQL Database
Tutorial ini mengajarkan Anda cara memulai Always Encrypted dengan enklave aman di Azure SQL Database menggunakan enklave keamanan berbasis virtualisasi (VBS). Ini akan menunjukkan kepada Anda:
- Cara membuat lingkungan untuk menguji dan mengevaluasi Always Encrypted dengan enklave VBS.
- Cara mengenkripsi data di tempat dan mengeluarkan kueri rahasia yang kaya terhadap kolom terenkripsi menggunakan SQL Server Management Studio (SSMS).
Prasyarat
- Langganan Azure aktif. Jika Anda tidak memilikinya, buat akun gratis. Anda harus menjadi anggota peran Kontributor atau peran Pemilik agar langganan dapat membuat sumber daya.
- Opsional, tetapi disarankan untuk menyimpan kunci master kolom Anda untuk Always Encrypted: 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:
Persyaratan alat
SQL Server Management Studio (SSMS) diperlukan untuk tutorial ini. Anda dapat memilih untuk menggunakan PowerShell atau Azure CLI untuk mengaktifkan enklave VBS.
Langkah 1: Membuat dan mengonfigurasi server dan database
Dalam langkah ini, Anda akan membuat server logis Azure SQL Database baru dan database baru.
Buka Mulai Cepat: Membuat database tunggal - Azure SQL Database dan ikuti instruksi di bagian Buat database tunggal untuk membuat server logis Azure SQL Database baru dan database baru.
Penting
Pastikan Anda membuat database kosong dengan nama ContosoHR (dan bukan database sampel).
Langkah 2: Aktifkan enklave VBS
Dalam langkah ini, Anda akan mengaktifkan enklave VBS dalam database, yang diperlukan untuk Always Encrypted dengan enklave aman. Untuk mengaktifkan enklave VBS dalam database Anda, Anda perlu mengatur properti database preferredEnclaveType ke VBS.
Buka portal Azure dan temukan database yang ingin Anda aktifkan enklave amannya.
Di pengaturan Keamanan, pilih Enkripsi Data.
Di menu Enkripsi Data, pilih tab Always Encrypted .
Atur Aktifkan enklave aman ke AKTIF. Jika sudah diatur ke AKTIF , lanjutkan dengan langkah berikutnya.
Pilih Simpan untuk menyimpan konfigurasi Always Encrypted Anda.
Langkah 3: Mengisi database Anda
Dalam langkah ini, Anda akan membuat tabel dan mengisinya dengan beberapa data yang nantinya akan Anda enkripsi dan kueri.
Buka SSMS dan sambungkan ke database ContosoHR di server logika Azure SQL yang Anda buat tanpa Always Encrypted diaktifkan dalam koneksi database.
Dalam dialog Sambungkan ke Server, tentukan nama server Anda yang sepenuhnya memenuhi syarat (misalnya, myserver135.database.windows.net), dan masukkan nama pengguna administrator serta kata sandi yang Anda tentukan saat membuat server.
Pilih Opsi >> dan pilih tab Properti Koneksi. Pastikan untuk memilih database ContosoHR (bukan default,
master
database).Pilih tab Always Encrypted.
Pastikan kotak centang Aktifkan Always Encrypted (enkripsi kolom) tidak dipilih.
Pilih Sambungkan.
Buat 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]; GO
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 4: Menyediakan kunci berkemampuan enklave
Dalam langkah ini, Anda akan membuat kunci master kolom dan kunci enkripsi kolom yang memungkinkan komputasi enklave.
Menggunakan instans SSMS dari langkah sebelumnya, di Object Explorer, perluas database Anda dan navigasi ke Keamanan>Kunci Always Encrypted.
Sediakan kunci master kolom baru yang berkemampuan enklave:
- Klik kanan Kunci Always Encrypted dan pilih Kunci Master Kolom Baru....
- Masukkan nama untuk kunci master kolom baru: CMK1.
- Verifikasi Perbolehkan komputasi enklave dipilih. (Ini dipilih secara default jika enklave aman diaktifkan untuk database - itu harus diaktifkan karena database Anda menggunakan konfigurasi perangkat keras seri DC.)
- Pilih Azure Key Vault (disarankan) atau Penyimpanan Sertifikat Windows (Pengguna Saat Ini atau Komputer Lokal).
- Jika Anda memilih Azure Key Vault, masuk ke Azure, pilih langganan Azure yang berisi brankas kunci yang ingin Anda gunakan, dan pilih brankas kunci Anda. Pilih Buat Kunci untuk membuat kunci baru.
- Jika Anda memilih Penyimpanan Sertifikat Windows, pilih tombol Buat Sertifikat untuk membuat sertifikat baru.
- Pilih OK.
Buat kunci enkripsi kolom berkemampuan enklave baru:
- Klik kanan Kunci Always Encrypted dan pilih Kunci Enkripsi Kolom Baru.
- Masukkan nama untuk kunci enkripsi kolom baru: CEK1.
- Di menu turun-bawah Kunci master kolom, pilih kunci master kolom yang Anda buat di langkah sebelumnya.
- Pilih OK.
Langkah 5: Mengenkripsi beberapa kolom di tempat
Dalam langkah ini, Anda akan mengenkripsi data yang disimpan di kolom SSN dan Gaji di dalam enklave sisi server, lalu menguji kueri SELECT pada data.
Buka SSMS instans baru dan sambungkan ke database Anda dengan Always Encrypted diaktifkan untuk koneksi database.
Mulai SSMS instans baru.
Dalam dialog Sambungkan ke Server, tentukan nama server Anda yang sepenuhnya memenuhi syarat (misalnya, myserver135.database.windows.net), dan masukkan nama pengguna administrator serta kata sandi yang Anda tentukan saat membuat server.
Pilih Opsi >> dan pilih tab Properti Koneksi. Pastikan untuk memilih database ContosoHR (bukan default,
master
database).Pilih tab Always Encrypted.
Pilih kotak centang Aktifkan Always Encrypted (enkripsi kolom).
Pilih Aktifkan enklave aman.
Atur Protokol ke Tidak Ada. Lihat tangkapan layar di bawah ini.
Pilih Sambungkan.
Jika Anda diminta untuk mengaktifkan Parameterisasi untuk kueri Always Encrypted, pilih Aktifkan.
Menggunakan instans SSMS yang sama (dengan Always Encrypted diaktifkan), buka jendela kueri baru dan enkripsi kolom SSN dan Gaji dengan menjalankan pernyataan di bawah ini.
ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Catatan
Pernyataan ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE menghapus cache rencana kueri untuk database dalam skrip di atas. Setelah Anda mengubah tabel, Anda perlu menghapus rencana untuk semua batch dan prosedur tersimpan yang mengakses tabel untuk menyegarkan informasi enkripsi parameter.
Untuk memverifikasi kolom SSN dan Gaji yang saat ini dienkripsi, buka jendela kueri baru di instans SSMS tanpa Always Encrypted diaktifkan untuk koneksi database dan jalankan pernyataan di bawah ini. Jendela kueri harus mengembalikan nilai terenkripsi di kolom SSN dan Gaji. Jika Anda menjalankan kueri yang sama menggunakan instans SSMS dengan Always Encrypted diaktifkan, Anda akan melihat data didekripsi.
SELECT * FROM [HR].[Employees];
Langkah 6: Jalankan kueri yang kaya terhadap kolom terenkripsi
Anda dapat menjalankan kueri yang kaya terhadap kolom terenkripsi. Beberapa pemrosesan kueri akan dilakukan di dalam enklave sisi server Anda.
Dalam instans SSMS dengan Always Encrypted diaktifkan, pastikan Parameterisasi untuk Always Encrypted juga diaktifkan.
- Pilih Alat dari menu utama SSMS.
- Pilih Opsi....
- Navigasi ke Kueri Eksekusi>SQL Server>Tingkat Lanjut.
- Pastikan bahwa Aktifkan Parameterisasi untuk Always Encrypted dicentang.
- Pilih OK.
Buka jendela kueri baru, tempelkan di kueri di bawah ini, dan jalankan. Kueri harus mengembalikan nilai teksbersih dan baris yang memenuhi kriteria pencarian yang ditentukan.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
Coba lagi kueri yang sama dalam instans SSMS yang tidak memiliki Always Encrypted diaktifkan. Kegagalan bisa terjadi.
Langkah berikutnya
Setelah menyelesaikan tutorial ini, Anda dapat membuka salah satu tutorial berikut:
- Tutorial: Mengembangkan aplikasi .NET menggunakan Always Encrypted dengan enklave aman
- Tutorial: Mengembangkan aplikasi .NET Framework menggunakan Always Encrypted dengan enklave aman
- Tutorial: Membuat dan menggunakan indeks pada kolom berkemampuan enklave menggunakan enkripsi acak