次の方法で共有


sp_control_dbmasterkey_password (Transact-SQL)

データベースのマスタ キーを開くときに必要とされるパスワードを含む資格情報を追加または削除します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_control_dbmasterkey_password @db_name = 'database_name' 
        , @password = 'master_key_password' 
        , @action = { 'add' | 'drop' }

引数

  • @db\_name = N'database_name'
    資格情報に関連付けられているデータベースの名前を指定します。システム データベースは指定できません。database_name のデータ型は nvarchar です。

  • @password = N'password'
    マスタ キーのパスワードを指定します。password のデータ型は nvarchar です。

  • @action = N'add'
    指定したデータベースの資格情報を、資格情報ストアに追加します。資格情報には、データベースのマスタ キーのパスワードが格納されます。@action に渡す値のデータ型は nvarchar です。

  • @action =N'drop'
    指定したデータベースの資格情報を、資格情報ストアから削除します。@action に渡す値のデータ型は nvarchar です。

説明

SQL Server で、キーの暗号化解除や暗号化にデータベースのマスタ キーが必要となる場合、SQL Server ではインスタンスのサービス マスタ キーを使用して、データベースのマスタ キーの暗号化解除が試行されます。暗号化解除が失敗した場合、SQL Server では資格情報ストア内で、マスタ キーが必要なデータベースと同じファミリ GUID のマスタ キー資格情報が検索されます。次に、一致した資格情報を順に使用してデータベースのマスタ キーの暗号化解除が試行されます。これは暗号化解除が成功するか、資格情報がなくなった時点で終了します。

注記注意

sa やその他の高位の権限を持つサーバー プリンシパルに対してデータベースへのアクセスを禁止する場合は、データベースのマスタ キー資格情報を作成しないでください。データベースを構成して、データベースのキー階層をサービス マスタ キーで暗号化解除できないように設定できます。この機能は、sa または高位の権限を持つサーバー プリンシパルに対して、データベースに含まれる暗号化情報へのアクセスを禁止するための、多重の防御としてサポートされているものです。このようなデータベースに対してマスタ キー資格情報を作成すると、この多重の防御が無効になり、sa およびその他の高位の権限を持つサーバー プリンシパルがデータベースの暗号化を解除できるようになります。

sp_control_dbmasterkey_password を使用して作成した資格情報は、sys.master_key_passwords カタログ ビューで確認できます。データベースのマスタ キー用に作成する資格情報の名前は、##DBMKEY_<database_family_guid>_<random_password_guid>## の形式で指定します。パスワードは資格情報のシークレットとして格納されます。sys.credentials には、資格情報ストアに追加されたパスワードごとに 1 行のデータが格納されます。

sp_control_dbmasterkey_password を使用して、システム データベース master、model、msdb、または tempdb の資格情報を作成することはできません。

sp_control_dbmasterkey_password では、指定したデータベースのマスタ キーをパスワードで開くことができるかどうかは検証されません。

指定したデータベースの資格情報に既に格納されているパスワードを指定した場合、sp_control_dbmasterkey_password は失敗します。

注意注意

異なるサーバー インスタンスの 2 つのデータベースで、同じファミリ GUID を共有することができます。この場合、両方のデータベースの資格情報ストア内で同じマスタ キー レコードが共有されます。

sp_control_dbmasterkey_password に渡されるパラメータは、トレースには表示されません。

注意注意

sp_control_dbmasterkey_password を使用して追加された資格情報を使ってデータベース マスタ キーを開く場合、そのデータベース マスタ キーはサービス マスタ キーによって再暗号化されます。データベースが読み取り専用モードの場合、再暗号化操作は失敗し、データベース マスタ キーは暗号化されません。それ以降、データベース マスタ キーにアクセスする場合は、OPEN MASTER KEY ステートメントおよびパスワードを使用する必要があります。パスワードの使用を避けるには、データベースを読み取り専用モードに移行する前に、資格情報を作成するようにしてください。

権限

データベースに対する CONTROL 権限が必要です。

A. AdventureWorks マスタ キーの資格情報を作成する

次の例では、AdventureWorks データベースのマスタ キーの資格情報を作成し、マスタ キーのパスワードをシークレットとして資格情報に保存します。sp_control_dbmasterkey_password に渡されるすべてのパラメータは nvarchar 型であることが必要です。したがって、テキスト文字列はキャスト演算子 N で変換されます。

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'add';
GO

B. データベースのマスタ キーの資格情報を削除する

次の例では、例 A で作成した資格情報を削除します。ここではパスワードを含め、すべてのパラメータが必須です。

EXEC sp_control_dbmasterkey_password @db_name = N'AdventureWorks', 
    @password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4', @action = N'drop';
GO

変更履歴

変更内容

sp_control_dbmasterkey_password を使用してデータベース マスタ キーを開く際の注意書きを追加しました。