Utilisation du chiffrement
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
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 à 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 attachée à une instance de SQL Server, vous devez fournir le mot de passe de la clé principale de base de données ou exécuter la AddServiceKeyEncryption méthode pour rendre une copie non chiffrée de la clé principale de base de données disponible pour le chiffrement avec 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 les exemples de code suivants, 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 Créer un projet SMO Visual C# dans Visual Studio .NET.
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 = new Server();
//Reference the AdventureWorks2022 database.
Database db = srv.Databases["AdventureWorks2022"];
//Define a Certificate object variable by supplying the parent database and name in the constructor.
Certificate c = new Certificate(db, "Test_Certificate");
//Set the start date, expiry date, and description.
System.DateTime dt;
DateTime.TryParse("January 01, 2010", out dt);
c.StartDate = dt;
DateTime.TryParse("January 01, 2015", out dt);
c.ExpirationDate = dt;
c.Subject = "This is a test certificate.";
//Create the certificate on the instance of SQL Server by supplying the certificate password argument.
c.Create("pGFD4bb925DGvbd2439587y");
}
}
Ajout d'un certificat dans PowerShell
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.
# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2022
CD \sql\localhost\default\databases
$db = get-item AdventureWorks2022
#Create a certificate
$c = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Certificate -argumentlist $db, "Test_Certificate"
$c.StartDate = "January 01, 2010"
$c.Subject = "This is a test certificate."
$c.ExpirationDate = "January 01, 2015"
#Create the certificate on the instance of SQL Server by supplying the certificate password argument.
$c.Create("pGFD4bb925DGvbd2439587y")