Bagikan melalui


Jalankan pernyataan T-SQL menggunakan enklave yang aman

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 komputasi rahasia pada kolom database terenkripsi di enklave aman sisi server.

Pernyataan 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 DML menggunakan enklave aman

Pernyataan atau kueri Data Manipulation Language (DML) berikut terhadap kolom yang diaktifkan enklave menggunakan enkripsi acak memerlukan enklave aman:

Catatan

Operasi pada indeks dan kueri DML rahasia menggunakan enklave hanya didukung pada kolom berkemampuan 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 di SQL Server 2022 (16.x), kueri rahasia menggunakan enklave pada kolom string karakter (char, nchar) mengharuskan kolom menggunakan kolase titik kode biner (_BIN2) atau kolase UTF-8. Di SQL Server 2019 (15.x), kolase 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 pernyataan eksekusi 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 dan pengesahan aman.

  • 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.

    • Aktifkan Always Encrypted untuk koneksi database.

    • Tentukan protokol pengesahan, yang menentukan apakah aplikasi atau alat Anda harus membuktikan enklave sebelum mengirimkan kueri enklave, dan layanan pengesahan 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
      Database Azure SQL Enklave SGX (dalam database seri DC) Microsoft Azure Attestation
      Database Azure SQL Enklave VBS Tidak
  • Tentukan URL pengesahan yang valid untuk lingkungan Anda jika Anda menggunakan pengesahan.

Prasyarat untuk menjalankan pernyataan T-SQL menggunakan enklave di SQL Server Management Directory

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.

  1. Dalam dialog Sambungkan ke Server, tentukan nama server Anda, pilih metode autentikasi, dan tentukan kredensial Anda.

  2. Pilih Opsi >> dan pilih tab Properti Koneksi. Tentukan nama database Anda.

  3. Pilih tab Always Encrypted.

  4. Pilih Aktifkan Always Encrypted (enkripsi kolom).

  5. Pilih Aktifkan enklave aman.

  6. Atur Protokol ke:

    1. Layanan Wali Host jika Anda menggunakan SQL Server.
    2. Microsoft Azure Attestation jika Anda menggunakan Azure SQL Database dengan enklave Intel SGX.
    3. Tidak ada jika Anda menggunakan Azure SQL Database dengan enklave VBS.
  7. Tentukan URL pengesahan enklave Anda. Tidak berlaku ketika Protokol diatur ke Tidak Ada. Misalnya, https://hgs.bastion.local/Attestation atau https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.

    Menyambungkan ke server dengan pengesahan menggunakan SQL Server Management Directory

  8. Pilih Sambungkan.

  9. 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 mengaktifkan Always Encrypted dan protokol pengesahan yang benar dan URL pengesahan yang dikonfigurasi.

  1. Dalam dialog Koneksi, pilih Tingkat Lanjut....

  2. Untuk mengaktifkan Always Encrypted untuk koneksi, atur bidang Always Encrypted ke Diaktifkan.

  3. Untuk mengaktifkan enklave aman, atur bidang Enklave Aman ke Diaktifkan.

  4. Tentukan protokol pengesahan dan URL pengesahan.

    • Jika Anda menggunakan SQL Server, atur Protokol Pengesahan ke Layanan Wali Host dan masukkan URL pengesahan Layanan Wali Host Anda di bidang 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 Pengesahan ke Tidak Ada.

    Menyambungkan ke server dengan pengesahan menggunakan Azure Data Studio

  5. 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

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

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

Gabungan

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 pekerjaan 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