暗号化の使用

SMO では、サービス マスタ キーは ServiceMasterKey オブジェクトで表現します。これは、Server オブジェクトの ServiceMasterKey プロパティによって参照されます。Regenerate メソッドを使用して、再生成することができます。

データベース マスタ キーは、MasterKey オブジェクトによって表されます。IsEncryptedByServer プロパティでは、データベース マスタ キーがサービス マスタ キーによって暗号化されるのかどうかが示されます。マスタ データベース内の暗号化されたコピーは、データベース マスタ キーが変更されるたびに自動的に更新されます。

DropServiceKeyEncryption メソッドを使用してサービス キー暗号化を削除し、パスワードを使ってデータベース マスタ キーを暗号化することが可能です。この場合、セキュリティで保護された秘密キーにアクセスする前に、データベース マスタ キーを明示的に開く必要があります。

データベースを SQL Server のインスタンスにアタッチする際には、データベース マスタ キーのパスワードを指定するか、サービス マスタ キーでの暗号化に使用できるデータベース マスタ キーの非暗号化コピーを作成するための AddServiceKeyEncryption メソッドを実行する必要があります。データベース マスタ キーを明示的に開く必要性を回避するには、この手順をお勧めします。

Regenerate メソッドは、データベース マスタ キーを再生成します。データベース マスタ キーが再生成されると、このデータベース マスタ キーで暗号化されたすべてのキーの暗号化が解除され、これらのキーが新しいデータベース マスタ キーで暗号化されます。DropServiceKeyEncryption メソッドは、サービス マスタ キーを使用してデータベース マスタ キーの暗号化を削除します。AddServiceKeyEncryption は、サービス マスタ キーを使用して暗号化されたマスタ キーをコピーし、現在のデータベースとマスタ データベースの両方に格納します。

SMO では、証明書は Certificate オブジェクトで表現します。Certificate オブジェクトには、公開キー、サブジェクト名、有効期間、および発行者に関する情報を指定するプロパティがあります。証明書にアクセスする権限は、Grant メソッド、Revoke メソッド、および Deny メソッドを使用して制御されます。

次のコード例では、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。詳細については、「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。

Visual Basic での証明書の追加

コード例では、暗号化パスワードを持つ簡単な証明書を作成します。他のオブジェクトと異なり、Create メソッドには複数のオーバーロードがあります。この例で使用するオーバーロードは、暗号化パスワードを持つ新しい証明書を作成しています。

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

Visual C# での証明書の追加

コード例では、暗号化パスワードを持つ簡単な証明書を作成します。他のオブジェクトと異なり、Create メソッドには複数のオーバーロードがあります。この例で使用するオーバーロードは、暗号化パスワードを持つ新しい証明書を作成しています。

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

関連項目

概念