Aracılığıyla paylaş


Nasıl yapılır: İki sunucularda aynı simetrik anahtarlar oluşturmak

Şifreli metin şifresini çözmek için dosyayı şifrelemek için kullanılan anahtar gerekir.Tek bir veritabanında gerçekleştiğinde, hem şifreleme hem de şifre çözme anahtar veritabanında saklanır ve bağlı, izinleri, şifreleme ve şifre çözme için kullanılabilir.Ancak, şifreleme ve şifre çözme ayrı veritabanlarında veya ayrı sunucularda oluştuğu takdirde, bir veritabanında depolanan anahtar ikinci veritabanı üzerinde kullanılmak üzere kullanılamaz.Bu konuda iki ayrı sunuculara veritabanları için paylaşılan bir simetrik anahtar sağlamak nasıl gösterir.

Genel Bakış

Aynı simetrik anahtarlar oluşturmak zor değildir.Aynı key_source, ALGORİTMA ve IDENTITY_VALUE anahtar seçenekleriyle oluşturulmuş simetrik anahtarlar aynı olacaktır.Simetrik anahtar oluşturmadan önce doğrulamalısınız SQL Server Anahtar Yönetimi mekanizmaları başlatıldı.Bunlar zaten yoksa, otomatik anahtar yönetimi ve bir sertifika ile şifrelemek etkinleştirmek için veritabanı ana anahtar oluşturmanız gerekir simetrik anahtar.İsteğe bağlı olarak, simetrik anahtar parola ile koruyabilirsiniz.Daha fazla bilgi için bkz: SİMETRİK anahtar (Transact-sql) oluştur.

Örnek

Bu örnek iki sunucularda aynı simetrik anahtarlar oluşturur.Bu örnek AES_256 şifreleme algoritması kullanır.Windows xp veya Windows Server 2000'e aes şifreleme algoritması desteklenmiyor; Bu tür TRIPLE_DES başka bir algoritmayı belirtmeniz gerekebilir.

  1. Anahtarlar her iki sunucularda aşağıdaki ana anahtarı oluşturmak ve oluşturduğunuz sertifika SİMETRİK anahtar oluşturma deyimleri çalıştırarak oluşturun.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd';
    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
    
  2. Anahtarlar ilk açık SİMETRİK anahtar deyim ve deyim tek bir sunucuda çalıştırarak 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
    
  3. İkinci sunucuda önceki seçim sonucunu yapıştırın deyim değeri olarak aşağıdaki koda @blob ve emin yinelenen anahtar şifresini doğrulamak için aşağıdaki kodu çalıştırınhaline.

    OPEN SYMMETRIC KEY [key_DataShare] 
        DECRYPTION BY CERTIFICATE cert_keyProtection;
    GO
    DECLARE @blob varbinary(8000);
    SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob));
    GO
    
  4. Simetrik anahtar her iki sunucularda kapatın.

    CLOSE SYMMETRIC KEY [key_DataShare];
    GO