Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru di Windows
Azure SQL Database
Tutorial ini mengajarkan Anda cara membuat dan menggunakan indeks pada kolom yang mendukung fungsi enklave menggunakan enkripsi acak yang diperkenalkan di Always Encrypted dengan enclaves aman. Ini akan menunjukkan kepada Anda:
- Cara membuat indeks saat Anda memiliki akses ke kunci (kunci master kolom dan kunci enkripsi kolom) yang melindungi kolom.
- Cara membuat indeks saat Anda tidak memiliki akses ke kunci yang melindungi kolom.
Prasyarat
Instal versi terbaru SQL Server Management Studio (SSMS).
Pastikan Anda telah menyelesaikan salah satu tutorial Memulai dengan menggunakan Always Encrypted dan enklave aman sebelum mengikuti langkah-langkah dalam tutorial berikut.
Langkah 1: Aktifkan Pemulihan Database Dipercepat (ADR) di database Anda
Catatan
Langkah ini hanya berlaku untuk SQL Server. Jika Anda menggunakan Azure SQL Database atau Azure SQL Managed Instance, lewati langkah ini. ADR selalu diaktifkan di Azure SQL Database dan Azure SQL Managed Instance.
Microsoft sangat menyarankan Anda mengaktifkan ADR pada database Anda sebelum membuat indeks pertama pada kolom yang mendukung enklave dengan menggunakan enkripsi acak. Lihat bagian Pemulihan Database di Always Encrypted dengan enklave aman.
Tutup instans SSMS apa pun yang Anda gunakan di tutorial sebelumnya. Menutup SQL Server Management Studio (SSMS) akan menutup koneksi database yang telah Anda buka untuk mengaktifkan ADR.
Buka instans baru SSMS dan sambungkan ke instans SQL Server Anda sebagai sysadmin tanpa Always Encrypted diaktifkan untuk koneksi database.
- Mulai SQL Server Management Studio.
- Dalam dialog Sambungkan ke Server, tentukan nama server Anda, pilih metode autentikasi, dan tentukan kredensial Anda.
- Pilih Opsi >> dan pilih tab Always Encrypted .
- Pastikan kotak centang Aktifkan Always Encrypted (enkripsi kolom)tidak dipilih.
- Pilih Sambungkan.
Buka jendela kueri baru dan jalankan pernyataan di bawah ini untuk mengaktifkan ADR.
ALTER DATABASE ContosoHR SET ACCELERATED_DATABASE_RECOVERY = ON;
Langkah 2: Membuat dan menguji indeks tanpa pemisahan peran
Dalam langkah ini, Anda akan membuat dan menguji indeks pada kolom terenkripsi. Anda akan bertindak sebagai satu pengguna yang mengambil peran sebagai DBA, yang mengelola database, dan sebagai pemilik data yang memiliki akses ke kunci-kunci yang melindungi data.
Buka instans SSMS baru dan sambungkan ke instans SQL Server Anda dengan Always Encrypted diaktifkan untuk koneksi database.
- Mulai instans baru SSMS.
- Dalam dialog Sambungkan ke Server, tentukan nama server Anda, pilih metode autentikasi, dan tentukan kredensial Anda.
- Pilih Opsi >> dan pilih tab Always Encrypted .
- Pilih kotak centang Aktifkan Always Encrypted (enkripsi kolom) dan Aktifkan Enklave Aman
- Jika Anda menggunakan pengesahan untuk database Anda, pilih nilai Protokol Pengesahan Enklave yang mewakili layanan pengesahan Anda (Layanan Wali Host atau Microsoft Azure Attestation) dan isi URL pengesahan enklave. Jika tidak, pilih Tidak Ada.
- Pilih Sambungkan.
- Jika diminta untuk mengaktifkan parameterisasi untuk kueri Always Encrypted, pilih Aktifkan.
Jika Anda tidak diminta untuk mengaktifkan Parameterisasi untuk Always Encrypted, verifikasi bahwa parameter 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 dan jalankan pernyataan di bawah ini untuk mengenkripsi kolom LastName dalam tabel Karyawan . Anda akan membuat dan menggunakan indeks pada kolom tersebut di langkah selanjutnya.
ALTER TABLE [HR].[Employees] ALTER COLUMN [LastName] [nvarchar](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL; GO ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE; GOBuat indeks pada kolom LastName . Karena Anda tersambung ke database dengan Always Encrypted diaktifkan, driver klien di dalam SSMS memberikan dengan transparan CEK1 (kunci enkripsi untuk kolom, yang melindungi kolom LastName) kepada enklave, yang diperlukan untuk membuat indeks.
CREATE INDEX IX_LastName ON [HR].[Employees] ([LastName]) INCLUDE ([EmployeeID], [FirstName], [SSN], [Salary]); GOJalankan kueri kaya pada kolom LastName dan verifikasi SQL Server menggunakan indeks saat menjalankan kueri.
Di jendela kueri yang sama atau baru, pastikan tombol Sertakan Statistik Kueri Langsung pada toolbar aktif.
Jalankan kueri di bawah ini.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GODi tab Statistik Kueri Langsung, amati bahwa kueri menggunakan indeks.
Langkah 3: Membuat indeks dengan pemisahan peran
Dalam langkah ini, Anda akan membuat indeks pada kolom terenkripsi, berpura-pura menjadi dua pengguna yang berbeda. Satu pengguna adalah DBA, yang perlu membuat indeks, tetapi tidak memiliki akses ke kunci. Pengguna lain adalah pemilik data, yang memiliki akses ke kunci.
Menggunakan instans SSMS tanpa Always Encrypted diaktifkan, jalankan pernyataan di bawah ini untuk menghapus indeks pada kolom LastName.
DROP INDEX IX_LastName ON [HR].[Employees]; GOBertindak sebagai pemilik data (atau aplikasi yang memiliki akses ke kunci), isi cache di dalam enklave dengan CEK1.
Catatan
Kecuali Anda telah memulai ulang instans SQL Server setelah Langkah 2: Buat dan uji indeks tanpa pemisahan peran, langkah ini berlebihan karena CEK1 sudah ada di cache. Kami telah menambahkannya untuk menunjukkan bagaimana pemilik data dapat memberikan kunci ke enklave, jika belum tersedia di enklave.
Dalam instans SSMS dengan Always Encrypted diaktifkan, jalankan pernyataan di bawah ini di jendela kueri. Pernyataan mengirimkan semua kunci enkripsi kolom yang mendukung enklave ke enklave. Lihat sp_enclave_send_keys untuk detailnya.
EXEC sp_enclave_send_keys; GOSebagai alternatif untuk menjalankan prosedur tersimpan di atas, Anda dapat menjalankan kueri DML yang menggunakan enklave pada kolom LastName. Ini akan mengisi enklave hanya dengan CEK1.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GO
Bertindak sebagai DBA, buat indeks.
Dalam instans SSMS tanpa Always Encrypted yang diaktifkan, jalankan pernyataan di bawah ini di jendela kueri.
CREATE INDEX IX_LastName ON [HR].[Employees] ([LastName]) INCLUDE ([EmployeeID], [FirstName], [SSN], [Salary]); GO
Sebagai pemilik data, jalankan kueri kaya pada kolom LastName dan verifikasi SQL Server menggunakan indeks saat menjalankan kueri.
Dalam instans SSMS dengan Always Encrypted diaktifkan, pilih jendela kueri yang sudah ada atau buka jendela kueri baru, dan pastikan tombol Sertakan Statistik Kueri Langsung pada toolbar aktif.
Jalankan kueri di bawah ini.
DECLARE @LastNamePrefix NVARCHAR(50) = 'Aber%'; SELECT * FROM [HR].[Employees] WHERE [LastName] LIKE @LastNamePrefix; GODalam Statistik Kueri Langsung, perhatikan bahwa kueri menggunakan indeks.
Langkah berikutnya
- Tutorial: Mengembangkan aplikasi .NET menggunakan Always Encrypted dengan enklave aman
- Tutorial: Mengembangkan aplikasi .NET Framework menggunakan Always Encrypted dengan enklave aman