次の方法で共有


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

注記注意

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. AdventureWorks2012 マスター キーの資格情報を作成する

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

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

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

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

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

関連項目

参照

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

システム ストアド プロシージャ (Transact-SQL)

sys.credentials (Transact-SQL)

概念

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

資格情報 (データベース エンジン)