1

Je souhaite chiffrer une colonne existante dans SQL Server 2005 à l'aide d'une instruction UPDATE, en déplaçant l'ancien contenu dans la nouvelle colonne chiffrée.Comment utiliser le chiffrement sécurisé d'une colonne existante dans SQL Server 2005

J'ai donc 2 choix: Symétrique et Asymétrique.

La question que j'ai est que, avec une clé symétrique, je dois intégrer le mot de passe dans un SP afin de lire la colonne comme:

-- Create key (at some earlier point) 
create symmetric key sk_user_profile with algorithm = aes_192 encryption by password = '[email protected]!!'; 

-- Now encrypt the contents 
-- open the key so that we can use it 
open symmetric key sk_user_profile decryption by password = '[email protected]!!'; 

UPDATE users 
SET password_enc = encryptbykey(key_guid('sk_user_profile'), password_plain, 1, user_id) 

close symmetric key sk_user_profile 

Maintenant, si je veux sélectionner les données, je reste doivent rouvrir la clé avec

open symmetric key sk_user_profile decryption by password = '[email protected]!!'; 

ce qui est défaisant le point est pas, comme j'Embedding un mot de passe en clair dans une procédure stockée.

Quelques questions

  1. Y at-il moyen de contourner cela - à savoir la création d'un certificat avec ce mot de passe, puis se référant au certificat à la place?
  2. Est-ce que ce certificat doit être acheté (comme SSL) ou est-ce que je peux créer le mien?
  3. Cette méthode est-elle évolutive dans les bases de données en cluster avec basculement, c'est-à-dire que le chiffrement n'est pas basé sur la machine, seulement le mot de passe fourni. Par conséquent, le basculement peut toujours lire les mots de passe

Merci pour votre aide

+0

Il existe un chiffrement par certificat. –

Répondre

1

Fondamentalement, ce que vous devez faire est la suivante:

create certificate MyEncryptionCertificate with subject = 'MyCertificate' 

create symmetric key MySymmetricKey with algorithm = aes_256 encryption by certificate MyEncryptionCertificate 

Et puis:

open symmetric key MySymmetricKey decryption by certificate MyEncryptionCertificate 

select encryptbykey(key_guid('MySymmetricKey'), 'tada')) EncryptedMessage 

J'espère que cette blog vous aidera en cours de route.

SQL SERVER – Introduction to SQL Server Encryption and Symmetric Key Encryption Tutorial with Script

Et cette entrée de blog, qui traite spécifiquement des certificats dans un environnement de basculement.

Solution Using Certificates Authentication on Production Servers

+0

Pinal Dave !! Pourquoi je n'y ai pas pensé! J'espérais qu'il y avait un moyen de générer le certificat à partir d'un mot de passe. Cependant, cela fonctionnera-t-il dans des environnements en cluster. Donc Web -> Cluster de basculement -> (DB1/DB2) –

+0

@Dominic Zukiewicz Vous n'avez pas lu mon message à la fin. :) –