暗号化の使用

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

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

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

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

データベースが SQL Server のインスタンスにアタッチされている場合は、データベース マスター キーのパスワードを指定するか、 メソッドをAddServiceKeyEncryption実行して、データベース マスター キーの暗号化されていないコピーをサービス マスター キーで暗号化できるようにする必要があります。 データベース マスター キーを明示的に開く必要性を回避するには、この手順をお勧めします。

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

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

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

Visual C# での証明書の追加

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

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

PowerShell での証明書の追加

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

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

参照

暗号化キーの使用