J'ai deux instances SQL Server sur la même machine. Je veux créer une sauvegarde cryptée sur l'une des bases de données, puis la restaurer sur la deuxième instance. Je fais les étapes suivantes:
Créer et sauvegarder la clé principale de la base de données dans la base de données master
qui va être utilisée pour crypter nos certificats
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
Créez et sauvegardez le certificat qui sera utilisé pour le chiffrement:
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'
);
Création de la sauvegarde:
BACKUP DATABASE smGK
TO DISK = 'E:\GKKeys\smGKFULLEncrtypted.back'
WITH COMPRESSION, STATS = 10, ENCRYPTION (ALGORITHM = AES_256,SERVER CERTIFICATE = BackupEncryptTestCert)
Maintenant, sur la deuxième instance, je veux restaurer le master key
mais je ne suis pas autorisé:
USE MASTER;
GO
RESTORE MASTER KEY
FROM FILE = 'E:\GKKeys\MASTER_KEY.key'
DECRYPTION BY PASSWORD = 'MasterKey_BACKUP_Password'
ENCRYPTION BY PASSWORD = 'smGK_MasterKeyPassword';
Msg 15317, niveau 16, état 2, ligne 4 Le fichier de clé principale n'existe pas ou a un format non valide.
Quelqu'un pourrait-il dire ce qui cause cela?
Microsoft SQL Server 2014 - 12.0.4100.1 (X64) 20 avril 2015 17:29:27 Copyright (c) Microsoft Corporation Enterprise Edition: Core- Licence basée sur (64 bits) sur Windows NT 6.3 (Build 9600:) (Hyperviseur)
Créez une nouvelle clé principale sur votre deuxième instance. c'est-à-dire ne le créez pas à partir de la sauvegarde que vous avez prise de la première instance. Restaurez ensuite le certificat à partir de la sauvegarde effectuée, puis essayez. Je suppose que vous n'avez pas besoin de clé principale et que seul un certificat est requis à des fins de restauration. Suivez les étapes ci-dessous:
Étape 1: Créer une clé principale
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'MasterKey_Password';
Step2: Vérifiez les autorisations sur les clés cert et pvt
Assurez-vous que le compte de service SQL Server de la deuxième instance dispose des autorisations complètes sur les clés cert et pvt que vous avez créées.
Étape3: Créer un certificat à partir de la sauvegarde
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: Restaurer la base de données
Je ne peux pas commenter mais je voudrais ajouter un peu de détails à cette réponse.
publication SQLITY sur la sauvegarde des certificats
dans SQL Server, toutes les clés sont à tout moment protégées par un mot de passe ou par une autre clé dans la hiérarchie de chiffrement. Cela s'étend également aux fichiers de sauvegarde. Étant donné que les fichiers de sauvegarde sont destinés à être stockés sur le site, la hiérarchie de chiffrement SQL Server n'est pas disponible pour les protéger. Par conséquent, nous devons fournir un mot de passe pour protéger la clé.