2015-06-17 15 views
10

Eski bir SQL Server 2008R2 örneğinden ve bir SQL Server 2012 AlwaysOn kümesine taşınan bir veritabanım var. Veritabanı içinde SQL Server yerleşik şifreleme özellikleri (ana anahtar, sertifika, simetrik anahtar.)Bir AlwaysOn kümesiyle şifreleme

kullanılarak şifrelenen çeşitli alanlar vardır. QA AO örneğimde şu komutları çalıştırdım.) eski sunucuda çalıştırın: Bu komutu çalıştırdığınızda

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' 
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY 

sonra deşifre tüm verilerin bakın::

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password' 

CREATE CERTIFICATE myCert 
    WITH SUBJECT = 'password' 

CREATE SYMMETRIC KEY myKeyName  
    WITH ALGORITHM = TRIPLE_DES 
    ENCRYPTION BY CERTIFICATE myCert 

Ayrıca eğer doğru verilerin şifresini çözmek için aşağıdaki komutları çalıştırmak zorunda

Şimdiye kadar çok iyi. Benim üretim AO kümesinde bu sorguyu aynı adımları çalıştırmak Ancak,:

select TOP 1000 userid, CONVERT(nVARCHAR(255),DECRYPTBYKEY(password)) from users 

döner şifre NULL. Bu benim QA örneği üzerinde çalışmak neden

OPEN SYMMETRIC KEY myKeyName 
DECRYPTION BY CERTIFICATE myCert 

SELECT TOP 1000 
    userid, 
    CONVERT(nVARCHAR(255),DECRYPTBYKEY(password)) 
FROM users 

SELECT TOP 1000 
    userid, 
    CONVERT(nVARCHAR(255),DECRYPTBYKEY(password)) 
FROM PRODUCTIONAO.prod_database.dbo.users 

CLOSE SYMMETRIC KEY myKeyName 

Emin değilim ama: Bu biraz daha çıldırtıcı hale getirmek için, (KG ortamı bağlamında çalıştırın) bu açıklama sadece iyi hem veritabanlarından her şeyi çözer üretim örneğimde değil. Herhangi bir yardım büyük takdir edilecektir!

+0

QA kutunuz ile Prod kutunuz arasında herhangi bir fark var mı? Hepsi aynı donanımda mı? Aynı işletim sistemi? Aynı Servis Paketi vb? –

+0

Sizin için başka bir cevap eklendi. –

+0

Bunlar farklı AO Kümeleridir, ancak her kümedeki iki makine aynıdır. Makineler sanal. – dparsons

cevap

-1

Bir veritabanı ana anahtarı oluşturulduğunda, sunucu 2 anahtar sürümü kaydeder. Bir sürüm ana servis anahtarı tarafından şifrelenir ve varsayılan olarak sunucu tarafından kullanılır. İkinci sürüm, veritabanı ana anahtarını oluşturduğunuzda sunucuya sağladığınız parola ile şifrelenir. Bu sürüm genellikle kullanılmaz. Veritabanınızı farklı bir ortama taşıdığınızda (sizin durumunuzdaki üretim), yeni sunucu farklı bir ana servis anahtarına sahiptir. Veritabanının ana anahtarını şifrelemek için kullanılan hizmet anahtarı olmadığından, veritabanının ana anahtarını açmak için kullanılamaz. Şifrenizle şifrelenmiş sürümü kullanmanız gereken yer burasıdır. Parolanızı kullanarak ana anahtarı açmanız, ardından yeni hizmet anahtarını kullanarak şifrelemeniz ve kapatmanız gerekir. Bunu yaptıktan sonra, veritabanının ana anahtarı ana hizmet anahtarı ile çalışabilir, böylece tekrar yapmanız gerekmez.

adım/kod: şifre ile

açık ana anahtar şifre çözme = 'WriteYouOriginalPasswordHere'

alter ana anahtar

yakın ana anahtar

+0

Yukarıda söylediğim gibi bu komutları zaten çalıştırdım. – dparsons

3

nedeni, son anahtar servis usta tarafından şifreleme eklemek Sorgu çalışmaları, üretim verilerinin çözülmesini yapmak için QA örneğinin anahtarını/sertifikasını kullandığınızdan kaynaklanır.

eşya olarak
 
Service Master Key (QA) 
    Database Master Key (QA) 
    Certificate (QA) 
     Symmetric Key (QA) 
     Data (Prod) 

, sadece bu yüzden farklı bir SMK vardır: QA olarak bunun aşağıdaki gibi QA hizmet ana anahtar (SMK) tarafından şifrelenen beri veritabanı ana anahtar (DMK) ile sertifika otomatik şifresini çözebilir DMK'yı açma seçeneği şifreyi kullanmaktır., Sen DMK için SMK şifreleme eklemek için gerekli

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' 
OPEN SYMMETRIC KEY myKeyName 
DECRYPTION BY CERTIFICATE myCert 
select TOP 1000 userid, CONVERT(nVARCHAR(255),DECRYPTBYKEY(password)) from users 
CLOSE SYMMETRIC KEY myKeyName 

bu verileri döndürürse:

/* Add service master key encryption to the database master key */ 
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password' 
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY 

eşya bu deneyin: QA ortamında aşağıdaki ancak eşya koştu görünüyor üretimde (ilk senaryo). Diğer seçenek SMK'yı kaynak örneğinden yedekleyip ikincilde geri yüklemektir. Bunu yalnızca, örneklerin başarısız ortaklar olduğu ve her ikisinin de aynı ortamda olduğu HA kullanım durumlarında tavsiye ediyorum. QA ve prod arasında SMK'lerin paylaşılması kötü bir uygulamadır.