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:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Bu konu başlığında Transact-SQL kullanarak SQL Server'daki iki farklı sunucuda aynı simetrik anahtarların nasıl oluşturulacağı açıklanmaktadır. Şifre metninin şifresini çözmek için şifrelemek için kullanılan anahtara ihtiyacınız vardır. Tek bir veritabanında hem şifreleme hem de şifre çözme gerçekleştiğinde anahtar veritabanında depolanır ve hem şifreleme hem de şifre çözme için izinlere bağlı olarak kullanılabilir. Ancak şifreleme ve şifre çözme işlemi ayrı veritabanlarında veya ayrı sunucularda gerçekleştiğinde, bir veritabanında depolanan anahtar ikinci veritabanında kullanılamaz.
Başlamadan önce
Sınırlamalar ve kısıtlamalar
Simetrik anahtar oluşturulduğunda simetrik anahtar aşağıdakilerden en az biri kullanılarak şifrelenmelidir: sertifika, parola, simetrik anahtar, asimetrik anahtar veya SAĞLAYıCı. Anahtar, her türden birden fazla şifrelemeye sahip olabilir. Başka bir deyişle, tek bir simetrik anahtar aynı anda birden çok sertifika, parola, simetrik anahtar ve asimetrik anahtar kullanılarak şifrelenebilir.
Bir simetrik anahtar, veritabanı ana anahtarının ortak anahtarı yerine parolayla şifrelendiğinde TRIPLE DES şifreleme algoritması kullanılır. Bu nedenle, AES gibi güçlü bir şifreleme algoritmasıyla oluşturulan anahtarların güvenliği daha zayıf bir algoritmayla sağlanır.
Güvenlik
İzinler
Veritabanında herhangi bir simetrik anahtarı değiştirme izni gerektirir. YETKILENDIRME belirtilirse, veritabanı kullanıcısı üzerinde TAKLİT izni veya uygulama rolünde ALTER izni gerektirir. Şifreleme sertifikaya veya asimetrik anahtara göreyse, sertifika veya asimetrik anahtar üzerinde VIEW DEFINITION izni gerekir. Yalnızca Windows oturum açma bilgileri, SQL Server oturum açma bilgileri ve uygulama rolleri simetrik anahtarlara sahip olabilir. Gruplar ve roller simetrik anahtarlara sahip olamaz.
Transact-SQL kullanma
İki farklı sunucuda aynı simetrik anahtarlar oluşturmak için
Nesne Gezgini, veritabanı motorunun bir örneğine bağlanın.
Standart çubuğunda Yeni Sorguöğesine tıklayın.
Aşağıdaki CREATE MASTER KEY, CREATE CERTIFICATE ve CREATE SYMMETRIC KEY deyimlerini çalıştırarak bir anahtar oluşturun.
<password>geçerli bir parolayla değiştirin.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; GO CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection'; GO CREATE SYMMETRIC KEY [key_DataShare] WITH KEY_SOURCE = 'My key generation bits. This is a shared secret!', ALGORITHM = AES_256, IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret' ENCRYPTION BY CERTIFICATE [cert_keyProtection]; GOAyrı bir sunucu örneğine bağlanın, farklı bir Sorgu Penceresi açın ve ikinci sunucuda aynı anahtarı oluşturmak için yukarıdaki SQL deyimlerini çalıştırın.
İlk sunucuda open SYMMETRIC KEY deyimini ve aşağıdaki SELECT deyimini çalıştırarak anahtarları test edin.
OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' ) GO -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3İkinci sunucuda, önceki SELECT deyiminin sonucunu aşağıdaki koda
@blobdeğeri olarak yapıştırın ve yinelenen anahtarın şifre metninin şifresini çözebildiğini doğrulamak için aşağıdaki kodu çalıştırın.OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO DECLARE @blob varbinary(8000); SELECT CONVERT(varchar(8000), decryptbykey(@blob)); GOHer iki sunucuda da simetrik anahtarı kapatın.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
SQL Server 2017 CU2'de şifreleme değişiklikleri
SQL Server 2016, şifreleme çalışması için SHA1 karma algoritmasını kullanır. SQL Server 2017'den başlayarak SHA2 kullanılır. Bu, SQL Server 2017 yüklemenizin SQL Server 2016 tarafından şifrelenen öğelerin şifresini çözmesini sağlamak için ek adımlar gerekebileceği anlamına gelir. Ek adımlar şunlardır:
- SQL Server 2017'nizin en az Toplu Güncelleştirme 2'ye (CU2) güncelleştirildiğinden emin olun.
- Önemli ayrıntılar için bkz. SQL Server 2017 için Toplu Güncelleştirme 2 .
- CU2'yi yükledikten sonra SQL Server 2017'de izleme bayrağı 4631'i açın:
DBCC TRACEON(4631, -1);- İzleme bayrağı 4631, SQL Server 2017'de yenidir. SQL Server 2017'de anahtar, sertifika veya simetrik anahtarı oluşturmadan önce 4631 izleme bayrağının küresel olarak
ONolması gerekir. Bu, oluşturulan bu öğelerin SQL Server 2016 ve önceki sürümlerle birlikte çalışabilmesini sağlar. Bu izleme bayrağı yalnızca SHA2 türetilmiş anahtarlarla verilerin yeniden şifrelenmesini sağlamak için geçici olarak açılmalıdır.
- İzleme bayrağı 4631, SQL Server 2017'de yenidir. SQL Server 2017'de anahtar, sertifika veya simetrik anahtarı oluşturmadan önce 4631 izleme bayrağının küresel olarak
Daha fazla bilgi için bkz:
- DÜZELTME: SQL Server 2017, aynı simetrik anahtar kullanarak SQL Server'ın önceki sürümleri tarafından şifrelenen verilerin şifresini çözemiyor