Verwenden von Verschlüsselung

In SMO wird der Diensthauptschlüssel durch das ServiceMasterKey-Objekt dargestellt. Hierauf wird von der ServiceMasterKey-Eigenschaft des Server-Objekts verwiesen. Er wird durch die Verwendung der Regenerate-Methode erneut generiert.

Der Datenbank-Hauptschlüssel wird durch das MasterKey-Objekt dargestellt. Die IsEncryptedByServer-Eigenschaft gibt an, ob der Datenbank-Hauptschlüssel durch den Diensthauptschlüssel verschlüsselt ist oder nicht. Die verschlüsselte Kopie in der Hauptdatenbank wird immer dann automatisch aktualisiert, wenn der Datenbank-Hauptschlüssel geändert wird.

Es ist möglich, die Verschlüsselung des Dienstschlüssels durch die DropServiceKeyEncryption-Methode zu verwerfen und den Datenbank-Hauptschlüssel mit einem Kennwort zu verschlüsseln. In diesem Fall müssen Sie den Datenbank-Hauptschlüssel explizit öffnen, bevor Sie auf die privaten Schlüssel zugreifen, die von diesem gesichert wurden.

Wenn eine Datenbank an eine Instanz von SQL Server angehängt wird, müssen Sie entweder das Kennwort für den Datenbank-Hauptschlüssel bereitstellen oder die AddServiceKeyEncryption-Methode ausführen, um eine unverschlüsselte Kopie des Datenbank-Hauptschlüssels für die Verschlüsselung mit dem Diensthauptschlüssel verfügbar zu machen. Dieser Schritt wird empfohlen, um zu vermeiden, dass der Datenbank-Hauptschlüssel explizit geöffnet werden muss.

Die Regenerate-Methode generiert den Datenbank-Hauptschlüssel neu. Wenn der Datenbank-Hauptschlüssel neu generiert wird, werden alle Schlüssel, die durch den Datenbank-Hauptschlüssel verschlüsselt wurden, entschlüsselt. Daraufhin werden diese mit dem neuen Datenbank-Hauptschlüssel verschlüsselt. Die DropServiceKeyEncryption-Methode löscht die Verschlüsselung des Datenbank-Hauptschlüssels durch den Diensthauptschlüssel. AddServiceKeyEncryption bewirkt, dass eine Kopie des Hauptschlüssels mithilfe des Diensthauptschlüssels verschlüsselt und sowohl in der aktuellen Datenbank als auch in der Hauptdatenbank gespeichert wird.

In SMO werden Zertifikate durch das Certificate-Objekt dargestellt. Das Certificate-Objekt verfügt über Eigenschaften, die den öffentlichen Schlüssel, den Namen des Betreffs, die Gültigkeitsdauer und Informationen über den Aussteller festlegen. Die Berechtigung, auf das Zertifikat zuzugreifen, wird über die Methoden Grant, Revoke und Deny gesteuert.

Beispiel

Für das folgende Codebeispiel müssen Sie die Programmierungsumgebung, die Programmiervorlage und die Programmiersprache auswählen, um Ihre Anwendung zu erstellen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines Visual Basic-SMO-Projekts in Visual Studio .NET und Vorgehensweise: Erstellen eines Visual C#-SMO-Projekts in Visual Studio .NET.

Hinzufügen eines Zertifikats in Visual Basic

Im Codebeispiel wird ein einfaches Zertifikat mit einem Verschlüsselungskennwort erstellt. Im Gegensatz zu anderen Objekten verfügt die Create-Methode über mehrere Überladungen. Die im Beispiel verwendete Überladung erstellt ein neues Zertifikat mit einem Verschlüsselungskennwort.

'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")

Hinzufügen eines Zertifikats in Visual C#

Im Codebeispiel wird ein einfaches Zertifikat mit einem Verschlüsselungskennwort erstellt. Im Gegensatz zu anderen Objekten verfügt die Create-Methode über mehrere Überladungen. Die im Beispiel verwendete Überladung erstellt ein neues Zertifikat mit einem Verschlüsselungskennwort.

//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"); 
} 

Siehe auch

Konzepte