Aracılığıyla paylaş


Güvenli ortamlar kullanarak Transact-SQL deyimlerini çalıştırın

Şunlar için geçerlidir: Windows Azure SQL Veritabanı'nda SQL Server 2019 (15.x) ve sonraki sürümleri

Güvenli bölgelerle Always Encrypted bazı Transact-SQL (T-SQL) deyimlerinin sunucu tarafındaki güvenli bölgede şifrelenmiş veritabanı sütunlarında gizli hesaplamalar gerçekleştirmesine olanak tanır.

Güvenli enklavlar kullanan ifadeler

Aşağıdaki T-SQL deyimi türleri güvenli kuşatmalar kullanır.

Güvenli bölgeler kullanan DDL ifadeleri

Aşağıdaki Veri Tanımlama Dili (DDL) deyim türleri güvenli kuşatmalar gerektirir.

Güvenli alanlar kullanan DML deyimleri

Aşağıdaki Veri İşleme Dili (DML) deyimleri veya rastgele şifreleme kullanan kapanım özellikli sütunlara yönelik sorgular güvenli kuşatmalar gerektirir:

Not

Rastgele şifreleme kullanan enklav desteği olan sütunlarda, dizinler üzerindeki işlemler ve enklav kullanan gizli DML sorguları yalnızca desteklenmektedir. Belirleyici şifreleme desteklenmez.

Veritabanının uyumluluk düzeyi SQL Server 2022 (160) veya üzeri olarak ayarlanmalıdır.

Azure SQL Veritabanı'nda ve SQL Server 2022'de (16.x) bir karakter dizesi sütununda (char, nchar) kuşatmalar kullanan gizli sorgular, sütunun ikili kod noktası (_BIN2) harmanlama veya UTF-8 harmanlamakullanmasını gerektirir. SQL Server 2019'da (15.x), a_BIN2 harmanlama gerekir.

Güvenli bölgeler kullanan DBCC komutları

DBCC (Transact-SQL) dizinlerin bütünlüğünü denetlemeyi içeren yönetim komutları, veritabanı rastgele şifreleme kullanan kapanım özellikli sütunlarda dizinler içeriyorsa güvenli kuşatmalar da gerektirebilir. Örneğin DBCC CHECKDB (Transact-SQL) ve DBCC CHECKTABLE (Transact-SQL).

Bir komutu güvenli bölmeler kullanarak çalıştırmanın önkoşulları

Ortamınızın, güvenli bir alan kullanan deyimlerin yürütülmesini desteklemek için aşağıdaki gereksinimleri karşılaması gerekir.

  • SQL Server örneğiniz veya Azure SQL Veritabanı'ndaki veritabanı sunucunuz, varsa/gerekliyse kuşatma ve kanıtlamayı destekleyecek şekilde doğru yapılandırılmalıdır. Daha fazla bilgi için bkz. Güvenli alan ayarlama ve kanıtlama.

  • Veritabanınıza bir uygulamadan veya araçtan (SQL Server Management Studio gibi) bağlanırken şunları yaptığınızdan emin olun:

    • İstemci sürücüsü sürümünü veya güvenli kuşatmalarla Always Encrypted'ı destekleyen bir araç sürümü kullanın.

    • Veritabanı bağlantısı için Always Encrypted'i etkinleştirin.

    • Uygulamanızın veya aracınızın, enclave sorgularını göndermeden önce enclave'i kanıtlaması gerekip gerekmediğini ve hangi kanıtlama servisini kullanacağını belirleyen bir kanıtlama protokolü belirtin. Çoğu araç ve sürücü aşağıdaki kanıtlama protokollerini destekler:

      • Microsoft Azure Doğrulama - Microsoft Azure Doğrulama'yı kullanarak doğrulamayı zorlar.
      • Konak Koruyucu Hizmeti - Konak Koruyucu Hizmeti kullanarak doğrulamayı sağlar.
      • Hiçbiri - kanıtlama olmadan enklavların kullanılmasına imkan tanır.

      Aşağıdaki tablo, belirli SQL ürünleri ve kapanım teknolojileri için geçerli kanıtlama protokollerini belirtir:

      Ürün Kapanım teknolojisi Desteklenen kanıtlama protokolleri
      SQL Server 2019 (15.x) ve üzeri VBS enklavları Konak Koruyucu Hizmeti, Yok
      Azure SQL Veritabanı SGX kuşatmaları (DC serisi veritabanlarında) Microsoft Azure Kanıtlama
      Azure SQL Veritabanı VBS enklavları Hiç kimse
  • Kanıtlama kullanıyorsanız ortamınız için geçerli bir kanıtlama URL'si belirtin.

    • Eğer SQL Server ve Konak Koruyucu Hizmet (HGS) kullanıyorsanız, HGS kanıtlama URL'sini belirlemek ve paylaşmak için 'a ve'e bakın.
    • Azure SQL Veritabanı'nı Intel SGX enkılar ile ve Microsoft Azure Doğrulama ile kullanıyorsanız, bkz. Doğrulama ilkenizin kanıtlama URL'sini belirleme.

SSMS'de kuşatmalar kullanarak T-SQL deyimlerini çalıştırma önkoşulları

SQL Server Management Studio'nun (SSMS) en son sürümünü yükleyin.

İfadelerinizi, Always Encrypted ve doğrulama parametrelerinin doğru yapılandırıldığı bir bağlantı kullanan bir sorgu penceresinden çalıştırdığınızdan emin olun.

  1. Sunucuya Bağlan iletişim kutusunda sunucu adınızı belirtin, bir kimlik doğrulama yöntemi seçin ve kimlik bilgilerinizi belirtin.

  2. Seçenekler >>'i seçin ve Bağlantı Özellikleri sekmesini seçin. Veritabanınızın adını belirtin.

  3. Always Encrypted sekmesini seçin.

  4. Always Encrypted'ı etkinleştir (sütun şifrelemesi)seçin.

  5. Güvenli alanları etkinleştirseçin.

  6. Protokolü olarak ayarlayın:

    1. SQL Server kullanıyorsanız Konak Koruyucu Hizmeti .
    2. Microsoft Azure Kanıtlama, Intel SGX izgaralarıyla Azure SQL Veritabanı'nı kullanıyorsanız.
    3. Hiçbiri VBS güvenli bölgeleri ile Azure SQL Veritabanı kullanıyorsanız.
  7. Enklav doğrulama URL'nizi belirtin. Protokol Noneolarak ayarlandığında geçerli değildir. Örneğin, https://hgs.bastion.local/Attestation veya https://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.

    SSMS kullanarak kanıtlama ile sunucuya bağlanma

  8. seçinBağlan.

  9. Always Encrypted sorguları için Parametreleştirmeyi Etkinleştirmeniz istendiğinde, 'yi etkinleştir seçeneğini seçin.

Daha fazla bilgi için bkz. Veritabanı bağlantısı için Always Encrypted'ı etkinleştirme ve devre dışı bırakma.

Azure Data Studio'da kuşatmalar kullanarak T-SQL deyimlerini çalıştırma önkoşulları

Önerilen en düşük sürüm 1,23 veya üzeri önerilir. Deyimlerinizi Always Encrypted etkinleştirilmiş ve hem doğru kanıtlama protokolü hem de kanıtlama URL'si yapılandırılmış bir bağlantı kullanan bir sorgu penceresinden çalıştırdığınızdan emin olun.

  1. Bağlantı iletişim kutusunda Gelişmiş...seçin.

  2. Bağlantı için Always Encrypted'ı etkinleştirmek amacıyla, Always Encrypted alanını Etkinolarak ayarlayın.

  3. Güvenli bölgelere izin vermek için Güvenli bölge alanını Etkinolarak ayarlayın.

  4. Kanıtlama protokolunu ve kanıtlama URL'sini belirtin.

    • SQL Server kullanıyorsanız, Kanıtlama Protokolü'nü Ana Bilgisayar Koruyucu Hizmeti olarak ayarlayın ve Enclave Kanıtlama URL'si alanına Ana Bilgisayar Koruyucu Hizmeti kanıtlama URL'nizi girin.
    • Azure SQL Veritabanı'nda Intel SGX ile bir DC serisi veritabanı kullanıyorsanız, Kanıtlama Protokolü'ni Azure Kanıtlama olarak ayarlayın ve Microsoft Azure Kanıtlama'daki politikanıza atıfta bulunarak kanıtlama URL'sini Enclave Kanıtlama URL'si alanına girin.
    • Azure SQL Veritabanı'nda VBS kuşatmalarının etkinleştirildiği bir veritabanı kullanıyorsanız, Kanıtlama Protokolü'yi Hiçbiriolarak ayarlayın.

    Azure Data Studio kullanarak kanıtlama ile sunucuya bağlanma

  5. Tamam seçeneğini seçin ve Gelişmiş Özelliklerkapatın.

Daha fazla bilgi için bkz. Veritabanı bağlantısı için Always Encrypted'ı etkinleştirme ve devre dışı bırakma.

Parametreli DML sorguları çalıştırmayı planlıyorsanız, Always Encrypted içinParametreleştirmeyi de etkinleştirmeniz gerekir.

Örnekler

Bu bölüm kuşatma kullanan DML sorgularının örneklerini içerir.

Örneklerde aşağıdaki şema kullanılır.

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

Aşağıdaki sorgu, şifrelenmiş SSN dizesi sütununda tam eşleşme araması gerçekleştirir.

DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO

Aşağıdaki sorgu, şifrelenmiş SSN dizesi sütununda bir desen eşleştirme araması yapar ve sosyal güvenlik numarasının belirtilen son dört rakamına sahip çalışanları arar.

DECLARE @SSN char(11) = '795-73-9838';
SELECT * FROM [HR].[Employees] WHERE [SSN] = @SSN;
GO

Aralık karşılaştırması

Aşağıdaki sorgu, şifrelenmiş Salary sütununda aralık karşılaştırması gerçekleştirir ve belirtilen aralıkta maaşları olan çalışanları arar.

DECLARE @MinSalary money = 40000;
DECLARE @MaxSalary money = 45000;
SELECT * FROM [HR].[Employees] WHERE [Salary] > @MinSalary AND [Salary] < @MaxSalary;
GO

Katıldı

Aşağıdaki sorgu, şifrelenmiş Employees sütununu kullanarak Jobs ve Salary tabloları arasında birleştirme gerçekleştirir. Sorgu, belirli bir iş için maaş aralığının dışında kalan maaşları olan çalışanları getirir.

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

Sıralama

Aşağıdaki sorgu, çalışan kayıtlarını şifrelenmiş Salary sütununa göre sıralar ve en yüksek maaşa sahip 10 çalışanı alır.

Not

Şifrelenmiş sütunları sıralama SQL Server 2022 (16.x) ve Azure SQL Veritabanı'nda desteklenir, ancak SQL Server 2019'da (15.x) desteklenmez.

SELECT TOP(10) * FROM [HR].[Employees]
ORDER BY [Salary] DESC;
GO

Sonraki adımlar

Ayrıca bkz.