同じマシンに2つのSQL Serverインスタンスがあります。 暗号化されたバックアップ をデータベースの1つに作成し、それを2番目のインスタンスに復元します。次の手順を実行しています。
証明書の暗号化に使用されるmaster
データベースにデータベースマスターキーを作成してバックアップします。
USE MASTER;
GO
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'MasterKey_Password';
GO
BACKUP MASTER KEY
TO FILE = 'E:\GKKeys\MASTER_KEY.key'
ENCRYPTION BY PASSWORD = 'MasterKey_BACKUP_Password';
GO
暗号化に使用する証明書を作成してバックアップします。
USE MASTER;
GO
-- създаваме сертификат, който ще използвам за криптиране на backup-a
CREATE CERTIFICATE BackupEncryptTestCert
WITH SUBJECT = 'smGK_BackupCertificate'
GO
BACKUP CERTIFICATE BackupEncryptTestCert
TO FILE = 'E:\GKKeys\SMGK_BACKUP_CERTIFICATE.cer'
WITH PRIVATE KEY
(
FILE = 'E:\GKKeys\SMGK_BACKUP_CERTIFICATE_PRIVATE_KEY.key'
,ENCRYPTION BY PASSWORD = 'smGK_BackupCertificate_BACKUP_Password'
);
バックアップの作成:
BACKUP DATABASE smGK
TO DISK = 'E:\GKKeys\smGKFULLEncrtypted.back'
WITH COMPRESSION, STATS = 10, ENCRYPTION (ALGORITHM = AES_256,SERVER CERTIFICATE = BackupEncryptTestCert)
ここで、2番目のインスタンスでmaster key
を復元したいのですが、許可されていません。
USE MASTER;
GO
RESTORE MASTER KEY
FROM FILE = 'E:\GKKeys\MASTER_KEY.key'
DECRYPTION BY PASSWORD = 'MasterKey_BACKUP_Password'
ENCRYPTION BY PASSWORD = 'smGK_MasterKeyPassword';
メッセージ15317、レベル16、状態2、行4マスターキーファイルが存在しないか、形式が無効です。
誰がこれを引き起こしているのか教えてもらえますか?
Microsoft SQL Server 2014-12.0.4100.1(X64) 2015年4月20日17:29:27 Copyright(c)Microsoft Corporation Enterprise Edition:Core-ベースのライセンス(64ビット) Windows NT 6.3(Build 9600:)(Hypervisor)
2番目のインスタンスで新しいマスターキーを作成します。つまり、最初のインスタンスから取得したバックアップから作成しないでください。次に、取得したバックアップから証明書を復元してから、試してください。私はあなたがマスターキーを必要としないと思います、そして、復元目的のために必要なのは証明書だけです。以下の手順に従ってください:
Step1:マスターキーを作成
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'MasterKey_Password';
Step2:証明書とpvtキーの権限を確認します
2番目のインスタンスのSQL Serverサービスアカウントに、作成した証明書とpvtキーに対する完全なアクセス許可があることを確認します。
Step3:バックアップから証明書を作成
CREATE CERTIFICATE BackupEncryptTestCert
FROM FILE = 'E:\GKKeys\SMGK_BACKUP_CERTIFICATE.cer'
WITH PRIVATE KEY
(
FILE = 'E:\GKKeys\SMGK_BACKUP_CERTIFICATE_PRIVATE_KEY.key' ,
DECRYPTION BY PASSWORD = 'smGK_BackupCertificate_BACKUP_Password'
)
Step4: DBを復元します
コメントはできませんが、この回答に少し詳細を追加したいと思います。
sQL Serverでは、すべてのキーは常にパスワードまたは暗号化階層内の別のキーのいずれかによって保護されます。これはバックアップファイルにも当てはまります。バックアップファイルはサイトに保存することを目的としているため、SQL Serverの暗号化階層を使用してそれらを保護することはできません。したがって、キーを保護するためにパスワードを提供する必要があります。