Share via


暗号化の使用

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

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

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

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

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

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 AdventureWorks2008R2 database.
Dim db As Database
db = srv.Databases("AdventureWorks2008R2")
'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 = new Server();

                //Reference the AdventureWorks2008R2 database. 
                Database db = srv.Databases["AdventureWorks2008R2"];

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

PowerShell での証明書の追加

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

# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2008R2
CD \sql\localhost\default\databases
$db = get-item AdventureWorks2008R2

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

関連項目

概念