Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment créer des clés symétriques identiques sur deux serveurs différents dans SQL Server 2014 à l’aide de Transact-SQL. Pour déchiffrer le texte chiffré, vous avez besoin de la clé utilisée pour le chiffrer. Lorsque le chiffrement et le déchiffrement se produisent dans une base de données unique, la clé est stockée dans la base de données et elle est disponible, selon les autorisations, pour le chiffrement et le déchiffrement. Toutefois, lorsque le chiffrement et le déchiffrement se produisent dans des bases de données distinctes ou sur des serveurs distincts, la clé stockée dans une base de données n’est pas disponible pour une utilisation sur la deuxième base de données
Dans cette rubrique
Avant de commencer :
Pour créer des clés symétriques identiques sur deux serveurs différents, à l’aide de Transact-SQL
Avant de commencer
Limitations et restrictions
Lorsqu’une clé symétrique est créée, la clé symétrique doit être chiffrée à l’aide d’au moins l’un des éléments suivants : certificat, mot de passe, clé symétrique, clé asymétrique ou FOURNISSEUR. La clé peut avoir plusieurs chiffrements de chaque type. En d’autres termes, une clé symétrique unique peut être chiffrée à l’aide de plusieurs certificats, mots de passe, clés symétriques et clés asymétriques en même temps.
Lorsqu’une clé symétrique est chiffrée avec un mot de passe au lieu de la clé publique de la clé principale de base de données, l’algorithme de chiffrement TRIPLE DES est utilisé. En raison de cela, les clés créées avec un algorithme de chiffrement fort, comme AES, sont elles-mêmes sécurisées par un algorithme plus faible.
Sécurité
Autorisations
Nécessite l’autorisation ALTER ANY SYMMETRIC KEY sur la base de données. Si l’autorisation est spécifiée, nécessite l’autorisation IMPERSONATE sur l’utilisateur de base de données ou l’autorisation ALTER sur le rôle d’application. Si le chiffrement est par certificat ou clé asymétrique, nécessite l’autorisation VIEW DEFINITION sur le certificat ou la clé asymétrique. Seuls les connexions Windows, les connexions SQL Server et les rôles d’application peuvent posséder des clés symétriques. Les groupes et les rôles ne peuvent pas posséder de clés symétriques.
Utilisation de Transact-SQL
Pour créer des clés symétriques identiques sur deux serveurs différents
Dans l' Explorateur d'objets, connectez-vous à une instance du Moteur de base de données.
Dans la barre d'outils standard, cliquez sur Nouvelle requête.
Créez une clé en exécutant les instructions CREATE MASTER KEY, CREATE CERTIFICATE et CREATE SYMMETRIC KEY suivantes.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd'; GO CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection'; GO CREATE SYMMETRIC KEY [key_DataShare] WITH KEY_SOURCE = 'My key generation bits. This is a shared secret!', ALGORITHM = AES_256, IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret' ENCRYPTION BY CERTIFICATE [cert_keyProtection]; GOConnectez-vous à une instance de serveur distincte, ouvrez une autre fenêtre de requête et exécutez les instructions SQL ci-dessus pour créer la même clé sur le deuxième serveur.
Testez les clés en exécutant d’abord l’instruction OPEN SYMMETRIC KEY et l’instruction SELECT ci-dessous sur le premier serveur.
OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' ) GO -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3Sur le deuxième serveur, collez le résultat de l’instruction SELECT précédente dans le code suivant comme valeur
@blobet exécutez le code suivant pour vérifier que la clé dupliquée peut déchiffrer le texte chiffré.OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO DECLARE @blob varbinary(8000); SET @blob = SELECT CONVERT(varchar(8000), decryptbykey(@blob)); GOFermez la clé symétrique sur les deux serveurs.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Pour plus d’informations, consultez les rubriques suivantes :