Utilisation du chiffrement
Dans SMO, la clé principale du service est représentée par l'objet ServiceMasterKey. Elle est référencée par la propriété ServiceMasterKey de l'objet Server. Elle peut être régénérée par la méthode Regenerate.
La clé principale de la base de données est représentée par l'objet MasterKey. La propriété IsEncryptedByServer indique si la clé principale de la base de données est ou non chiffrée par la clé principale du service. La copie chiffrée dans la base de données master est automatiquement mise à jour à chaque modification de la clé principale de la base de données.
Il est possible de supprimer le chiffrement de la clé de service à l'aide de la méthode DropServiceKeyEncryption et de chiffrer la clé principale de base de données à l'aide d'un mot de passe. Dans cette situation, vous devrez ouvrir explicitement la clé principale de base de données avant d'accéder aux clés privées qu'elle sécurise.
Lorsqu'une base de données est associée à une instance de SQL Server, vous devez soit fournir le mot de passe de la clé principale de la base de données, soit exécuter la méthode AddServiceKeyEncryption pour réaliser une copie non chiffrée de la clé principale de la base de données, qui sera ensuite disponible pour un chiffrement à l'aide de la clé principale du service. Cette étape est recommandée pour éviter d'avoir à ouvrir explicitement la clé principale de base de données.
La méthode Regenerate régénère la clé principale de base de données. Lorsque la clé principale de base de données est régénérée, toutes les clés qu'elle a permis de chiffrer sont déchiffrées, puis elles sont à nouveau chiffrées au moyen de la nouvelle clé principale de base de données. La méthode DropServiceKeyEncryption supprime le chiffrement de la clé principale de la base de données par la clé principale du service. AddServiceKeyEncryption entraîne le chiffrement d'une copie de la clé principale à l'aide de la clé principale du service, puis le stockage de cette clé à la fois dans la base de données actuelle et dans la base de données master.
Dans SMO, les certificats sont représentés par l'objet Certificate. L'objet Certificate a des propriétés qui spécifient la clé publique, le nom du sujet, la période de validité et les informations sur l'émetteur. L'autorisation d'accès au certificat est contrôlée en utilisant les méthodes Grant, Revoke et Deny.
Exemple
Dans l'exemple de code suivant, vous devez sélectionner l'environnement, le modèle et le langage de programmation à utiliser pour créer votre application. Pour plus d'informations, consultez Procédure : créer un projet SMO Visual Basic dans Visual Studio .NET et Procédure : créer un projet SMO Visual C# dans Visual Studio .NET.
Ajout d'un certificat en Visual Basic
L'exemple de code crée un certificat simple avec un mot de passe de chiffrement. Contrairement à d'autres objets, la méthode Create a plusieurs surcharges. La surcharge utilisée dans l'exemple crée un certificat avec un mot de passe de chiffrement.
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks database.
Dim db As Database
db = srv.Databases("AdventureWorks")
'Define a Certificate object variable by supplying the parent database and name in the constructor.
Dim c As Certificate
c = New Certificate(db, "Test_Certificate")
'Set the start date, expiry date, and description.
c.StartDate = DateValue("January 01, 2007")
c.Subject = "This is a test certificate."
c.ExpirationDate = DateValue("January 01, 2008")
'Create the certificate on the instance of SQL Server by supplying the certificate password argument.
c.Create("pGFD4bb925DGvbd2439587y")
Ajout d'un certificat en Visual C#
L'exemple de code crée un certificat simple avec un mot de passe de chiffrement. Contrairement à d'autres objets, la méthode Create a plusieurs surcharges. La surcharge utilisée dans l'exemple crée un certificat avec un mot de passe de chiffrement.
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Reference the AdventureWorks database.
Database db = default(Database);
db = srv.Databases("AdventureWorks");
//Define a Certificate object variable by supplying the parent database and name in the constructor.
Certificate c = default(Certificate);
c = new Certificate(db, "Test_Certificate");
//Set the start date, expiry date, and description.
c.StartDate = DateValue("January 01, 2007");
c.Subject = "This is a test certificate.";
c.ExpirationDate = DateValue("January 01, 2008");
//Create the certificate on the instance of SQL Server by supplying the certificate password argument.
c.Create("pGFD4bb925DGvbd2439587y");
}