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 yang lebih baru - Hanya Windows
Azure SQL Database
Always Encrypted dengan enklave aman memungkinkan beberapa pernyataan Transact-SQL (T-SQL) untuk melakukan perhitungan rahasia pada kolom database terenkripsi di enklave aman di sisi server.
Pernyataan yang menggunakan enklave aman
Jenis pernyataan T-SQL berikut menggunakan enklave aman.
Pernyataan DDL menggunakan enklave aman
Jenis pernyataan Data Definition Language (DDL) berikut memerlukan enklave aman.
- Pernyataan ALTER TABLE column_definition (Transact-SQL) yang memicu operasi kriptografi lokal menggunakan kunci yang mendukung enklave. Untuk informasi selengkapnya, lihat Mengonfigurasi enkripsi kolom di tempat menggunakan Always Encrypted dengan enklave yang aman.
- Pernyataan CREATE INDEX (Transact-SQL) dan ALTER INDEX (Transact-SQL) yang membuat atau mengubah indeks pada kolom berkemampuan enklave menggunakan enkripsi acak. Untuk informasi selengkapnya, lihat Membuat dan menggunakan indeks pada kolom menggunakan Always Encrypted dengan enklave aman.
Pernyataan DML menggunakan enklave aman
Pernyataan atau kueri Data Manipulation Language (DML) berikut terhadap kolom yang diaktifkan dengan enklave menggunakan enkripsi acak memerlukan enklave aman:
- Kueri yang menggunakan satu atau beberapa operator Transact-SQL berikut yang didukung di dalam enklave aman:
- Operator perbandingan
- ANTARA (T-SQL)
- IN (Transact-SQL)
- LIKE (Transact-SQL)
- DISTINCT
- Join: SQL Server 2019 (15.x) hanya mendukung nested loop join. SQL Server 2022 (16.x) dan Azure SQL Database mendukung gabungan perulangan, hash, dan penggabungan berlapis
- SELECT - ORDER BY Clause (Transact-SQL). Didukung di SQL Server 2022 (16.x) dan Azure SQL Database. Tidak didukung di SQL Server 2019 (15.x)
- SELECT - GROUP BY Clause (Transact-SQL). Didukung di SQL Server 2022 (16.x) dan Azure SQL Database. Tidak didukung di SQL Server 2019 (15.x)
- Kueri yang menyisipkan, memperbarui, atau menghapus baris, yang pada gilirannya memicu penyisipan dan/atau menghilangkan kunci indeks ke/dari indeks pada kolom yang dienklave diaktifkan. Untuk informasi selengkapnya, lihat Membuat dan menggunakan indeks pada kolom menggunakan Always Encrypted dengan enklave aman
Catatan
Operasi pada indeks dan kueri DML rahasia dengan menggunakan enklave hanya didukung pada kolom yang diaktifkan oleh enklave yang menggunakan enkripsi acak. Enkripsi deterministik tidak didukung.
Tingkat kompatibilitas database harus diatur ke SQL Server 2022 (160) atau yang lebih tinggi.
Di Azure SQL Database dan SQL Server 2022 (16.x), kueri rahasia yang menggunakan enclaves pada kolom string karakter (char
, nchar
) mengharuskan kolom agar menggunakan pengurutan titik kode biner (_BIN2) atau pengurutan UTF-8. Di SQL Server 2019 (15.x), kolasi a_BIN2 diperlukan.
Perintah DBCC menggunakan enklave aman
Perintah administratif DBCC (Transact-SQL) yang melibatkan pemeriksaan integritas indeks mungkin juga memerlukan enklave aman jika database berisi indeks pada kolom yang diaktifkan enklave menggunakan enkripsi acak. Misalnya, DBCC CHECKDB (Transact-SQL) dan DBCC CHECKTABLE (Transact-SQL).
Prasyarat untuk menjalankan pernyataan menggunakan enklave aman
Lingkungan Anda perlu memenuhi persyaratan berikut untuk mendukung menjalankan perintah yang menggunakan enklave aman.
Instans SQL Server atau server database Anda di Azure SQL Database harus dikonfigurasi dengan benar untuk mendukung enklave dan pengesahan, jika berlaku/diperlukan. Untuk informasi selengkapnya, lihat Menyiapkan enklave aman dan validasi.
Saat Anda menyambungkan ke database dari aplikasi atau alat (seperti SQL Server Management Studio), pastikan untuk:
Gunakan versi driver klien atau versi alat yang mendukung Always Encrypted dengan enklave aman.
- Lihat Mengembangkan aplikasi menggunakan Always Encrypted dengan enklave terenkripsi untuk informasi tentang driver klien yang mendukung Always Encrypted dengan enklave terenkripsi.
- Lihat bagian berikut untuk informasi tentang alat yang mendukung Always Encrypted dengan enklave aman.
Aktifkan Always Encrypted untuk koneksi database.
Tentukan protokol atestasi, yang menentukan apakah aplikasi atau alat Anda harus melakukan atestasi terhadap enklave sebelum mengirimkan kueri enklave, dan layanan atestasi mana yang harus digunakan. Sebagian besar alat dan driver mendukung protokol pengesahan berikut:
- Microsoft Azure Attestation - memberlakukan pengesahan menggunakan Microsoft Azure Attestation.
- Host Guardian Service - memberlakukan pengesahan menggunakan Host Guardian Service.
- Tidak ada - memungkinkan penggunaan enklave tanpa pengesahan.
Tabel di bawah ini menentukan protokol pengesahan yang valid untuk produk SQL dan teknologi enklave tertentu:
Produk Teknologi Enklave Protokol pengesahan yang didukung SQL Server 2019 (15.x) dan yang lebih baru Enklave VBS Layanan Wali Host, Tidak Ada Azure SQL Database Enklave SGX di dalam basis data seri DC Microsoft Azure Attestation (Pengesahan Azure dari Microsoft) Database Azure SQL Enklave VBS Tidak
Tentukan URL pengesahan yang valid untuk lingkungan Anda jika Anda menggunakan pengesahan.
- Jika Anda menggunakan SQL Server dan Host Guardian Service (HGS), lihat Menentukan dan membagikan URL pengesahan HGS.
- Jika Anda menggunakan Azure SQL Database dengan enklave Intel SGX dan Microsoft Azure Attestation, lihat Menentukan URL pengesahan untuk kebijakan pengesahan Anda.
Prasyarat untuk menjalankan perintah T-SQL dengan enklave di SQL Server Management Studio
Unduh versi terbaru SQL Server Management Studio (SSMS).
Pastikan Anda menjalankan pernyataan dari jendela kueri yang menggunakan koneksi yang memiliki parameter Always Encrypted dan pengesahan yang dikonfigurasi dengan benar.
Dalam dialog Sambungkan ke Server, tentukan nama server Anda, pilih metode autentikasi, dan tentukan kredensial Anda.
Pilih Opsi >> dan pilih tab Properti Koneksi. Tentukan nama database Anda.
Pilih tab Always Encrypted.
Pilih Aktifkan Always Encrypted (enkripsi kolom).
Pilih Aktifkan enklave aman.
Atur Protokol ke:
- Host Guardian Service jika Anda menggunakan SQL Server.
- Microsoft Azure Attestation jika Anda menggunakan Azure SQL Database dengan enklave Intel SGX.
- Tidak ada jika Anda menggunakan Azure SQL Database dengan enklave VBS.
Tentukan URL pengesahan enklave Anda. Tidak berlaku ketika Protokol diatur ke Tidak Ada. Misalnya,
https://hgs.bastion.local/Attestation
atauhttps://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave
.Pilih Sambungkan.
Jika Anda diminta untuk mengaktifkan Parameterisasi untuk kueri Always Encrypted, pilih Aktifkan.
Untuk informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan Always Encrypted untuk koneksi database.
Prasyarat untuk menjalankan pernyataan T-SQL menggunakan enklave di Azure Data Studio
Disarankan minimum versi 1.23 atau yang lebih tinggi. Pastikan Anda menjalankan pernyataan dari jendela kueri yang menggunakan koneksi yang telah mengaktifkan Always Encrypted dan memiliki protokol atestasi serta URL atestasi yang dikonfigurasi dengan benar.
Dalam dialog Koneksi, pilih Tingkat Lanjut....
Untuk mengaktifkan Always Encrypted untuk koneksi, atur bidang Always Encrypted ke Diaktifkan.
Untuk mengaktifkan enklave aman, atur bidang Enklave Aman ke Diaktifkan.
Tentukan protokol pengesahan dan URL pengesahan.
- Jika Anda menggunakan SQL Server, atur Protokol Pengesahan ke Layanan Guardian Host dan masukkan URL Layanan Guardian Host pengesahan Anda di URL Pengesahan Enklave.
- Jika Anda menggunakan database seri DC dengan Intel SGX di Azure SQL Database, atur Protokol Pengesahan ke Azure Attestation dan masukkan URL pengesahan, merujuk kebijakan Anda di Microsoft Azure Attestation di bidang URL Pengesahan Enklave.
- Jika Anda menggunakan database dengan enklave VBS yang diaktifkan di Azure SQL Database, atur Protokol Attestasi ke Tidak Ada.
Pilih OK untuk menutup Properti Tingkat Lanjut.
Untuk informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan Always Encrypted untuk koneksi database.
Jika Anda berencana menjalankan kueri DML berparameter, Anda juga perlu mengaktifkan Parameterisasi untuk Always Encrypted.
Contoh
Bagian ini mencakup contoh kueri DML menggunakan enklave.
Contohnya menggunakan skema di bawah ini.
CREATE SCHEMA [HR];
GO
CREATE TABLE [HR].[Jobs](
[JobID] [int] IDENTITY(1,1) PRIMARY KEY,
[JobTitle] [nvarchar](50) NOT NULL,
[MinSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[MaxSalary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
);
GO
CREATE TABLE [HR].[Employees](
[EmployeeID] [int] IDENTITY(1,1) PRIMARY KEY,
[SSN] [char](11) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
[JobID] [int] NULL,
FOREIGN KEY (JobID) REFERENCES [HR].[Jobs] (JobID)
);
GO
Pencarian kecocokan tepat
Kueri di bawah ini melakukan pencarian yang sama persis pada kolom string terenkripsi SSN
.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
Pencarian pembanding pola
Kueri di bawah ini melakukan pencarian pencocokan pola pada kolom string terenkripsi SSN
, mencari karyawan dengan angka terakhir yang ditentukan untuk digit nomor jaminan sosial.
DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO
Perbandingan rentang
Kueri di bawah ini melakukan perbandingan rentang pada kolom terenkripsi Salary
, mencari karyawan dengan gaji dalam rentang yang ditentukan.
DECLARE @MinSalary money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO
Bergabung
Kueri di bawah ini melakukan gabungan antara Employees
dan Jobs
tabel menggunakan kolom terenkripsi Salary
. Kueri mengambil karyawan dengan gaji di luar rentang gaji untuk jabatan karyawan.
SELECT * FROM [HR].[Employees] e
JOIN [HR].[Jobs] j
ON e.[JobID] = j.[JobID] AND e.[Salary] > j.[MaxSalary] OR e.[Salary] < j.[MinSalary];
GO
Pengurutan
Kueri di bawah ini mengurutkan catatan karyawan berdasarkan kolom terenkripsi Salary
, mengambil 10 karyawan dengan gaji tertinggi.
Catatan
Pengurutan kolom terenkripsi didukung di SQL Server 2022 (16.x) dan Azure SQL Database, tetapi tidak di SQL Server 2019 (15.x).
SELECT TOP(10) * FROM [HR].[Employees]
ORDER BY [Salary] DESC;
GO
Langkah berikutnya
Lihat juga
- Memecahkan masalah umum untuk Always Encrypted dengan enclave aman
- Mulai menggunakan Always Encrypted dengan enklave aman
- Mengonfigurasi enkripsi kolom secara langsung menggunakan Always Encrypted dengan enklave aman
- Membuat dan menggunakan indeks pada kolom menggunakan Always Encrypted dengan enklave aman