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
Bu makalede , güvenli alanlarla Always Encrypted kullanılarak enclave destekli sütun şifreleme anahtarlarıyla şifrelenmiş sütunlarda dizin oluşturma ve kullanım yöntemleri açıklanmaktadır.
Güvenli kuşatmalarla Always Encrypted şu desteği destekler:
- Belirleyici şifreleme ve kapanım özellikli anahtarlar kullanılarak şifrelenen sütunlarda kümelenmiş ve kümelenmemiş dizinler.
- Bu tür dizinler şifre metnine göre sıralanır. Bu tür dizinler için dikkat edilmesi gereken özel noktalar yoktur. Bunları, belirlenimci şifreleme ve kapanım etkin olmayan anahtarlar (Always Encrypted'da olduğu gibi) kullanılarak şifrelenmiş sütunlardaki dizinlerle aynı şekilde yönetebilir ve kullanabilirsiniz.
- Rastgele şifreleme ve kapanım özellikli anahtarlar kullanılarak şifrelenen sütunlarda kümelenmemiş dizinler.
- Dizin veri yapısındaki (B ağacı) anahtar değerleri şifrelenir ve düz metin değerlerine göre sıralanır. Daha fazla bilgi için bkz. Enclave özellikli sütunlarda dizinler.
Uyarı
Bu makalenin geri kalanında rastgele şifreleme ve kapanım özellikli anahtarlar kullanılarak şifrelenmiş sütunlarda kümelenmemiş dizinler ele alınmaktadır.
Rastgele şifreleme kullanan bir sütundaki dizin ve kapanım özellikli bir sütun şifreleme anahtarı düz metin temelinde sıralanmış şifrelenmiş (şifreleme metni) veriler içerdiğinden, SQL Server Altyapısı aşağıdakiler de dahil olmak üzere dizin oluşturma, güncelleştirme veya arama işlemlerini içeren tüm işlemler için kapanım kullanmalıdır:
- Bir indeks oluşturma veya yeniden oluşturma.
- Bir tabloya satır ekleme, güncelleştirme veya silme (dizinlenmiş/şifrelenmiş sütun içeren) ve dizine dizin anahtarı eklemeyi ve/veya dizinden dizin anahtarını kaldırmayı tetikler.
-
DBCCgibi dizinlerin bütünlüğünü denetlemeyi içeren komutları çalıştırma. - SQL Server'ın dizinde yapılan değişiklikleri geri alması gerekiyorsa (örneğin, SQL Server başarısız olduktan ve yeniden başlatıldıktan sonra) veritabanı kurtarma (aşağıda daha ayrıntılı bilgi).
Yukarıdaki işlemlerin tümü, enclave'in dizine alınan sütun için sütun şifreleme anahtarına sahip olmasını gerektirir. Dizin anahtarlarının şifresini çözmek için anahtar gereklidir. Genel olarak, kapanım iki yoldan biriyle bir sütun şifreleme anahtarı alabilir:
- Doğrudan istemci uygulamasından.
- Sütun şifreleme anahtarlarının önbelleğinden.
Doğrudan istemci tarafından sağlanan sütun şifreleme anahtarlarıyla dizin oluşturma işlemlerini çağırma
Dizin oluşturma işlemlerini çağırmak için bu yöntemin çalışması için, bir dizinde işlemi tetikleyen bir sorgu veren uygulamanın (SQL Server Management Studio (SSMS) gibi bir araç dahil olmak üzere) aşağıdakiler gerekir:
- Always Encrypted ve enklav hesaplamaları etkinleştirilmiş olarak veritabanına bağlanın.
- Uygulamanın, dizine alınan sütun için sütun şifreleme anahtarını koruyan sütun ana anahtarına erişimi olmalıdır.
SQL Server Altyapısı uygulama sorgusunu ayrıştırdıktan ve sorguyu yürütmek için şifrelenmiş bir sütundaki dizini güncelleştirmesinin gerekeceğini belirledikten sonra, istemci sürücüsüne gerekli sütun şifreleme anahtarını güvenli bir kanal üzerinden kapanıma bırakmasını bildirir. Bu, dizin kullanmayan diğer sorguları işlemek için sütun şifreleme anahtarları ile kapanım sağlamak için kullanılan mekanizmayla tamamen aynıdır. Örneğin, yerinde şifreleme veya desen eşleştirme ve aralık karşılaştırmaları kullanan sorgular.
Bu yöntem, şifrelenmiş sütunlarda dizinlerin varlığının Always Encrypted ve kapanım hesaplamaları etkin olarak veritabanına zaten bağlı olan uygulamalar için saydam olmasını sağlamak için yararlıdır. Uygulama bağlantısı, sorgu işleme için enklav kullanabilir. Bir sütunda dizin oluşturduktan sonra, uygulamanızın içindeki sürücü dizin oluşturma işlemleri için güvenli alana kolon şifreleme anahtarlarını saydam bir şekilde sağlar. Dizinler oluşturmak, uygulamanın sütun şifreleme anahtarlarını enklava göndermesini gerektiren sorgu sayısını artırabilir.
Bu yöntemi kullanmak için, güvenli bir koruma alanı kullanarak deyimleri çalıştırmaya yönelik genel yönergeleri izleyin. - Güvenli koruma alanları kullanarak Transact-SQL deyimlerini çalıştırın.
Bu yöntemi kullanma hakkında adım adım yönergeler için bkz . Öğretici: Rastgele şifreleme kullanarak kapanım özellikli sütunlarda dizin oluşturma ve kullanma.
Önbelleğe alınmış sütun şifreleme anahtarlarını kullanarak dizin oluşturma işlemlerini çağırma
bir istemci uygulaması, kapanım hesaplamaları gerektiren herhangi bir sorguyu işlemek için kapanıma bir sütun şifreleme anahtarı gönderdikten sonra, kapanım, sütun şifreleme anahtarını iç önbellekte önbelleğe alır. Bu önbellek, kapanım içinde bulunur ve dışarıdan erişilemez.
Aynı veya başka bir kullanıcı tarafından kullanılan aynı veya başka bir istemci uygulaması, gerekli sütun şifrelemesini doğrudan sağlamadan bir dizinde işlemi tetiklerse, kapanım önbellekte sütun şifreleme anahtarını arar. Sonuç olarak, istemci uygulaması anahtarı sağlamamış olsa da dizin üzerindeki işlem başarılı olur.
Dizin oluşturma işlemlerini çağırmanın bu yönteminin çalışması için, uygulamanın bağlantı için Always Encrypted etkinleştirilmeden veritabanına bağlanması ve gerekli sütun şifreleme anahtarının kapanım içindeki önbellekte kullanılabilir olması gerekir.
Bu işlem çağırma yöntemi yalnızca diğer işlemler için sütun şifreleme anahtarı gerektirmeyen sorgular için desteklenir, dizinler ile ilgili değildir. Örneğin, şifreli sütun içeren bir INSERT tabloya deyimini kullanarak satır ekleyen bir uygulama, bağlantı dizesinde Always Encrypted'ın etkinleştirildiği veritabanına bağlanmak için gereklidir ve şifrelenmiş sütunda dizin olup olmadığına bakılmaksızın anahtarlara erişimi olmalıdır.
Bu yöntem şunlar için kullanışlıdır:
Rastgele şifreleme kullanan kapanım özellikli sütunlarda dizinlerin varlığının, anahtarlara ve verilere düz metin olarak erişimi olmayan uygulamalar ve kullanıcılar için saydam olduğundan emin olun.
Şifrelenmiş bir sütunda dizin oluşturmanın mevcut sorguları bozmadığını sağlar. Bir uygulama, anahtarlara erişime gerek kalmadan şifrelenmiş sütunlar içeren bir tabloda sorgu yayınlarsa, DBA bir dizin oluşturduğunda anahtarlara erişmeden çalışmaya devam edebilir. Örneğin, şifrelenmiş sütunlar içeren Çalışanlar tablosunda aşağıdaki sorguyu çalıştıran bir uygulamayı düşünün. DBA herhangi bir şifrelenmiş sütunda dizin oluşturmadı.
DELETE FROM [dbo].[Employees] WHERE [EmployeeID] = 1; GOUygulama sorguyu Always Encrypted ve enclave hesaplamaları etkinleştirilmeden bir bağlantı üzerinden gönderirse, sorgu başarılı olur. Sorgu, şifrelenmiş sütunlarda herhangi bir hesaplama tetiklemez. DBA şifrelenmiş sütunlarda bir dizin oluşturduğunda, sorgu dizin anahtarlarının dizinlerden kaldırılmasını tetikler. Bu durumda güvenli alanın sütun şifreleme anahtarlarına ihtiyacı vardır. Ancak, bir veri sahibi koruma alanına sütun şifreleme anahtarları sağladığı sürece, uygulama aynı sorguyu aynı bağlantı üzerinden çalıştırmaya devam edebilir.
Dizinleri yönetirken rol ayrımı elde etmek için, DTA'ların hassas verilere erişmeden şifrelenmiş sütunlarda dizin oluşturmasına ve değiştirmesine olanak tanır.
İpucu
sp_enclave_send_keys (Transact-SQL), dizinler için kullanılan tüm kapanım özellikli sütun şifreleme anahtarlarını kolayca kapanıma göndermenizi ve anahtar önbelleğini doldurmanızı sağlar.
Bu yöntemi kullanma hakkında adım adım yönergeler için bkz . Öğretici: Rastgele şifreleme kullanarak kapanım özellikli sütunlarda dizin oluşturma ve kullanma.
Sonraki Adımlar
- Güvenli bölgeler kullanarak Transact-SQL ifadesini çalıştırma