Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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.
- ALTER TABLE column_definition (Transact-SQL), enklav özellikli anahtarları kullanarak anında kriptografik işlemleri tetikleyen ifadeler. Daha fazla bilgi için bkz. Güvenilir ortamlarla Always Encrypted kullanarak yerinde sütun şifrelemesini yapılandırma.
- CREATE INDEX (Transact-SQL) ve ALTER INDEX (Transact-SQL), rastgele şifreleme kullanarak kapanım özellikli sütunlarda dizin oluşturan veya değiştiren deyimler. Daha fazla bilgi için bkz. Güvenli ortamlar kullanarak Always Encrypted ile sütunlarda dizin oluşturma ve kullanma.
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:
- Bir veya daha fazla Transact-SQL işleçlerini kullanan sorgular, güvenli karantina alanlarında desteklenir.
- Karşılaştırma İşleçleri
- ARASINDA (Transact-SQL)
- IN (Transact-SQL)
- GİBİ (Transact-SQL)
- DISTINCT
- Joins - SQL Server 2019 (15.x) yalnızca iç içe döngü birleşimlerini destekler. SQL Server 2022 (16.x) ve Azure SQL Veritabanı iç içe döngü, karma ve birleştirme birleşimlerini destekler
- SELECT - ORDER BY Yan Tümcesi (Transact-SQL). SQL Server 2022 (16.x) ve Azure SQL Veritabanı'nda desteklenir. SQL Server 2019'da (15.x) desteklenmez
- SELECT - GROUP BY Yan Tümcesi (Transact-SQL). SQL Server 2022 (16.x) ve Azure SQL Veritabanı'nda desteklenir. SQL Server 2019'da (15.x) desteklenmez
- Satır ekleyen, güncelleştiren veya silen sorgular; bu sorgular da enclave özellikli bir sütundaki bir dizine dizin anahtarı eklemeyi ve/veya dizin anahtarını kaldırmayı tetikler. Daha fazla bilgi için bkz. Güvenli kuşatmalarla Always Encrypted kullanarak sütunlarda dizin oluşturma ve kullanma
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.
- Güvenli kuşatmalarla Always Encrypted'ı destekleyen istemci sürücüleri hakkında bilgi için bkz. Güvenli kuşatmalarla Always Encrypted kullanarak uygulama geliştirme.
- Güvenli kuşatmalarla Always Encrypted'ı destekleyen araçlar hakkında bilgi için aşağıdaki bölümlere bakı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.
Sunucuya Bağlan iletişim kutusunda sunucu adınızı belirtin, bir kimlik doğrulama yöntemi seçin ve kimlik bilgilerinizi belirtin.
Seçenekler >>'i seçin ve Bağlantı Özellikleri sekmesini seçin. Veritabanınızın adını belirtin.
Always Encrypted sekmesini seçin.
Always Encrypted'ı etkinleştir (sütun şifrelemesi)seçin.
Güvenli alanları etkinleştirseçin.
Protokolü olarak ayarlayın:
- SQL Server kullanıyorsanız Konak Koruyucu Hizmeti .
- Microsoft Azure Kanıtlama, Intel SGX izgaralarıyla Azure SQL Veritabanı'nı kullanıyorsanız.
- Hiçbiri VBS güvenli bölgeleri ile Azure SQL Veritabanı kullanıyorsanız.
Enklav doğrulama URL'nizi belirtin. Protokol Noneolarak ayarlandığında geçerli değildir. Örneğin,
https://hgs.bastion.local/Attestationveyahttps://contososqlattestation.uks.attest.azure.net/attest/SgxEnclave.
kullanarak kanıtlama ile sunucuya bağlanmaseçinBağlan.
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.
Bağlantı iletişim kutusunda Gelişmiş...seçin.
Bağlantı için Always Encrypted'ı etkinleştirmek amacıyla, Always Encrypted alanını Etkinolarak ayarlayın.
Güvenli bölgelere izin vermek için Güvenli bölge alanını Etkinolarak ayarlayın.
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.
kullanarak kanıtlama ile sunucuya bağlanmaTamam 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
Tam eşleşme araması
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
Desen eşleştirme araması
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.
- Güvenli kuşatmalarla Always Encrypted ile ilgili yaygın sorunları giderme
- Güvenli kuşatmalarla Always Encrypted kullanmaya başlama
- Güvenli kuşatmalarla Always Encrypted kullanarak sütun şifrelemeyi yerinde yapılandırma
- Always Encrypted'i güvenli bölmelerle kullanarak sütunlar üzerinde dizin oluşturma ve kullanma