sp_control_dbmasterkey_password (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 を使用してデータベース マスタ キーを開く際の注意書きを追加しました。 |