Aracılığıyla paylaş


İki sunucuda aynı simetrik anahtarlar oluşturma

Şunlar için geçerlidir:SQL ServerAzure 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

  1. Nesne Gezgini, veritabanı motorunun bir örneğine bağlanın.

  2. Standart çubuğunda Yeni Sorguöğesine tıklayın.

  3. 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];  
    GO  
    
  4. Ayrı 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.

  5. İ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  
    
  6. İkinci sunucuda, önceki SELECT deyiminin sonucunu aşağıdaki koda @blob değ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));  
    GO  
    
  7. Her 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.
  • 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 ON olması 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.

Daha fazla bilgi için bkz:

Ayrıca bkz.