Share via


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 のマスタ キー資格情報が検索されます。次に、一致した資格情報を順に使用してデータベースのマスタ キーの暗号化解除が試行されます。これは暗号化解除が成功するか、資格情報がなくなった時点で終了します。

ms182754.Caution(ja-jp,SQL.90).gif注意 :
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 を使用して、システム データベース mastermodelmsdb、または tempdb の資格情報を作成することはできません。

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

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

ms182754.note(ja-jp,SQL.90).gifメモ :
異なるサーバー インスタンスの 2 つのデータベースで、同じファミリ GUID を共有することができます。この場合、両方のデータベースの資格情報ストア内で同じマスタ キー レコードが共有されます。

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

権限

データベースに対する 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

参照

関連項目

セキュリティ ストアド プロシージャ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
sys.credentials (Transact-SQL)

その他の技術情報

暗号化されたミラー データベースの設定
資格情報

ヘルプおよび情報

SQL Server 2005 の参考資料の入手