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, ALTER TABLE Deyimi/ALTER COLUMN ifadeleriyle güvenli bölgeler kullanılarak Always Encrypted ile sütunlarda yerinde kriptografik işlemlerin nasıl gerçekleştirileceği açıklanmaktadır. Yerinde şifreleme ve genel önkoşullar hakkında temel bilgiler için bkz. Güvenli kapsayıcılar ile Always Encrypted kullanarak anında sütun şifrelemeyi yapılandırma.
ALTER TABLE veya ALTER COLUMN deyimiyle bir sütun için hedef şifreleme yapılandırmasını ayarlayabilirsiniz. Deyimini yürüttüğünüzde, sunucu tarafındaki güvenli alan, deyimdeki sütun tanımında belirtilen geçerli ve hedef şifreleme yapılandırmasına bağlı olarak, sütunda depolanan verileri şifreler, yeniden şifreler veya şifresini çözer.
- Sütun şu anda şifrelenmemişse, sütun tanımında
ENCRYPTED WITHyan tümcesini belirtirseniz şifrelenir. - Sütun şu anda şifrelenmişse, sütun tanımında
ENCRYPTED WITHyan tümcesini belirtmezseniz, sütun şifresi çözülür (düz metin sütununa dönüştürülür). - Sütun şu anda şifrelenmişse,
ENCRYPTED WITHyan tümcesini belirtirseniz ve belirtilen sütun şifreleme türü veya sütun şifreleme anahtarı şu anda kullanılan şifreleme türünden veya sütun şifreleme anahtarından farklıysa yeniden şifrelenir.
Not
Tek bir ALTER TABLE/ALTER COLUMN deyiminde, sütunu NULL veya NOT NULLolarak değiştirmek ya da harmanlamayı değiştirmek dışında şifreleme işlemlerini diğer değişikliklerle birleştiremezsiniz. Örneğin, bir sütunu şifreleyemez VE tek bir ALTER TABLE/ALTER COLUMN Transact-SQL deyimindeki sütunun veri türünü değiştiremezsiniz. İki ayrı deyim kullanın.
Sunucu tarafı güvenli kapanım alanı kullanan herhangi bir sorgu, yerinde şifrelemeyi tetikleyen bir ALTER TABLE/ALTER COLUMN deyimini, Always Encrypted ve enclave hesaplamaları etkinleştirilmiş bir bağlantı üzerinden göndermelidir.
Bu makalenin geri kalanında SQL Server Management Studio'daki ALTER TABLE/ALTER COLUMN deyimi kullanılarak yerinde şifrelemenin nasıl tetikleneceği açıklanır. Alternatif olarak, Azure Data Studio'dan veya uygulamanızdan ALTER TABLE/ALTER COLUMN yayımlayabilirsiniz.
Not
Şu anda SqlServer PowerShell modülünde invoke-Sqlcmd cmdlet'ini ve sqlcmd yerinde şifreleme işlemleri için ALTER TABLE/ALTER COLUMN kullanılmasını desteklemez.
SSMS'de Transact-SQL ile yerinde şifreleme gerçekleştirme
Önkoşullar
- Önkoşullar, "Always Encrypted" ile güvenli bölümler kullanarak sütun şifrelemeyi yerinde yapılandırmabölümünde belirtilmiştir.
- SQL Server Management Studio'nun (SSMS) en son sürümünü yükleyin.
Adımlar
Veritabanı bağlantısında Always Encrypted ve enclave hesaplamaları etkinleştirilmiş olarak bir sorgu penceresi açın. Ayrıntılar için bkz. Veritabanı bağlantısı için Always Encrypted'ı etkinleştirme ve devre dışı bırakma.
Sorgu penceresinde şifrelemek, şifresini çözmek veya yeniden şifrelemek istediğiniz bir sütun için hedef şifreleme yapılandırmasını belirterek
ALTER TABLE/ALTER COLUMNdeyimini çalıştırın. Sütunu şifreliyor veya yeniden şifreliyorsanız,ENCRYPTED WITHyan tümcesini kullanın. Sütununuz bir dize sütunuysa (örneğin,char,varchar,nchar,nvarchar), harmanlamayı bin2 harmanlaması olarak da değiştirmeniz gerekebilir.Not
Sütun ana anahtarınız Azure Key Vault'ta depolanıyorsa Azure'da oturum açmanız istenebilir.
Tabloya erişen tüm toplu işlemler ve saklı yordamlar için plan önbelleğini temizleyerek parametre şifreleme bilgilerini yenileyin.
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;Not
Etkilenen sorgunun planını önbellekten kaldırmazsanız, şifrelemeden sonra sorgunun ilk yürütmesi başarısız olabilir.
Geçici sorgu performansında düşüşe neden olabileceğinden plan önbelleğini dikkatlice temizlemek için
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHEveyaDBCC FREEPROCCACHEkullanın. Önbelleği temizlemenin olumsuz etkisini en aza indirmek için, yalnızca etkilenen sorgular için planları seçmeli olarak kaldırabilirsiniz.sys.parameters içinde kalıcı olan ve sütunları şifreleyerek geçersiz kılınmış olabilecek her modülün parametrelerine (saklı yordam, işlev, görünüm, tetikleyici) ait meta verileri güncelleştirmek için sp_refresh_parameter_encryption çağırın.
Örnekler
Yerinde sütun şifreleme
Aşağıdaki örnekte şu varsayımlar yer alır:
-
CEK1, kapanım özellikli bir sütun şifreleme anahtarıdır. -
SSNsütunu düz metindir ve şu anda Latin1, BIN2 olmayan harmanlama gibi varsayılan veritabanı harmanlamasını kullanır (örneğin,Latin1_General_CI_AI_KS_WS).
Bu ifade, SSN sütununu belirleyici şifreleme ve enclave destekli sütun şifreleme anahtarını yerinde kullanarak şifreler. Ayrıca, karşılık gelen (aynı kod sayfasında) BIN2 harmanlaması ile varsayılan veritabanı harmanlamasının üzerine yazar.
İşlem çevrimiçi gerçekleştirilir (ONLINE = ON). Ayrıca sorgu planlarını yeniden oluşturan ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHEçağrısının tablo şeması değişikliğinden etkilendiğini unutmayın.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL
WITH
(ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Şifreleme türünü değiştirmek için sütunu yerinde yeniden şifreleme
Aşağıdaki örnekte şu varsayımlar yer alır:
-
SSNsütunu,CEK1belirleyici şifreleme ve kapanım özellikli bir sütun şifreleme anahtarı kullanılarak şifrelenir. - Geçerli sıralama, sütun düzeyinde ayarlanmış olarak
Latin1_General_BIN2.
Aşağıdaki deyim, rastgele şifreleme ve aynı anahtarı (CEK1) kullanarak sütunu yeniden şifreler
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1]
, ENCRYPTION_TYPE = Randomized
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Sütun şifreleme anahtarını döndürmek amacıyla sütunu yerinde yeniden şifreleyin.
Aşağıdaki örnekte şu varsayımlar yer alır:
-
SSNsütunu rastgele şifreleme veCEK1kapanım özellikli bir sütun şifreleme anahtarı kullanılarak şifrelenir. -
CEK2, güvenlik bölgesi etkin bir sütun şifreleme anahtarıdır (CEK1'den farklıdır). - Geçerli sıralama, sütun düzeyinde ayarlanmış olarak
Latin1_General_BIN2.
Aşağıdaki ifade, sütunu CEK2ile yeniden şifreleme yapar.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK2]
, ENCRYPTION_TYPE = Randomized
, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL;
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Bir sütunun şifresini yerinde çözme
Aşağıdaki örnekte şu varsayımlar yer alır:
-
SSNsütunu, kapanım özellikli bir sütun şifreleme anahtarı kullanılarak şifrelenir. - Geçerli sıralama, sütun düzeyinde ayarlanmış olarak
Latin1_General_BIN2.
Aşağıdaki ifade sütunun şifresini çözer ve sıralama düzenini değiştirmeden tutar. Alternatif olarak harmanlamayı değiştirmeyi de seçebilirsiniz. Örneğin, harmanlamayı aynı deyimde BIN2 olmayan bir harmanlama olarak değiştirin.
ALTER TABLE [dbo].[Employees]
ALTER COLUMN [SSN] [char](11) COLLATE Latin1_General_BIN2
WITH (ONLINE = ON);
GO
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
GO
Sonraki adımlar
- Güvenli bölgeler kullanarak Transact-SQL ifadeleri çalıştırma
- Güvenli kuşatmalarla Always Encrypted kullanarak sütunlarda dizin oluşturma ve kullanma
- Güvenli kuşatmalarla Always Encrypted kullanarak uygulama geliştirme
Ayrıca bkz.
- Güvenli kuşatmalarla Always Encrypted ile ilgili yaygın sorunları giderme
- Güvenli kuşatmalarla Always Encrypted kullanarak sütun şifrelemeyi yerinde yapılandırma
- Mevcut şifrelenmiş sütunlar için güvenli kuşatmalarla Always Encrypted'ı etkinleştirme
- Eğitim: Always Encrypted'ı güvenli bölgelerle kullanmaya başlama