2008-09-29 8 views
7

J'ai une base de données SQL Server 2005 existante qui contient des données cryptées à l'aide d'une clé symétrique. La clé symétrique est ouverte à l'aide d'un mot de passe. Je travaille sur une mise à niveau vers les applications frontales qui utilisent cette base de données, qui incluent l'ajout de dizaines de nouvelles tables, procédures stockées, UDF, etc. et des dizaines de modifications apportées aux tables et aux objets de base de données existants. À cette fin, je fais une copie de la base de données de développement existante, de sorte que le système actuel puisse être soutenu, maintenu et mis à jour de façon indépendante pendant que de nouveaux développements ont lieu.Comment transférer des données cryptées SQL entre des bases de données SQL Server 2005?

Quelle est la meilleure façon de copier la base de données? Normalement, je voudrais prendre une sauvegarde de la base de données existante, puis le restaurer dans la nouvelle base de données. Cependant, cela sera-t-il possible compte tenu des données cryptées? Serai-je toujours capable de crypter et plus important encore de déchiffrer des données dans la nouvelle base de données en utilisant la clé symétrique et le mot de passe existants? Je pourrais plutôt utiliser DTS pour transférer le schéma existant seulement. Créez une nouvelle clé/mot de passe symétrique dans la nouvelle base de données. Ensuite, écrivez des requêtes ad hoc pour transférer les données, décrypter en utilisant la clé/mot de passe existant, et crypter en utilisant nouvelle clé/mot de passe dans la nouvelle base de données.

Je suppose qu'au cœur de ceci, les clés symétriques sont-elles bonnes pour crypter/décrypter des données dans une base de données unique ou dans de nombreuses bases de données sur le même serveur?

Répondre

3

Les clés symétriques auxquelles vous faites référence sont des clés principales de base de données (DMK). Ils sont conservés au niveau de la base de données, donc une sauvegarde/restauration vers un autre serveur SQL devrait fonctionner (avec l'avertissement de différents comptes de service, auxquels thread fait allusion)

Avant de faire quoi que ce soit, assurez-vous d'avoir une sauvegarde de vos clés (vous avez probablement déjà fait):

USE myDB 
GO 
BACKUP MASTER KEY TO FILE = 'path_to_file' 
    ENCRYPTION BY PASSWORD = 'password' 
GO 

de cette article:

Lorsque vous créez un master Key Database, une copie est cryptée avec le fourni mot de passe et stocké dans la base de données actuelle. Une copie est également chiffrée avec la clé principale de service et enregistrée dans la base de données master. La copie de le DMK permet au serveur de décrypter automatiquement le DMK , une fonctionnalité connue sous le nom de "gestion de clé automatique ". Sans une gestion automatique clé, vous devez utiliser l'instruction OPEN MASTER KEY et fournir un mot de passe chaque fois que vous souhaitez crypter et/ou décrypter des données en utilisant certificats et les clés qui dépendent du DMK pour la sécurité. Avec la gestion automatique de clé , l'instruction OPEN MASTER KEY et le mot de passe ne sont pas requis.

+0

Merci Mitch, très utile. Et oui, la restauration de la sauvegarde à la nouvelle base de données a fonctionné. J'ai pu déchiffrer des données dans la nouvelle base de données précédemment cryptée dans l'ancienne base de données. – Jon

Questions connexes