データベースのマスター キーを開くときに必要とされるパスワードを含む資格情報を追加または削除します。
構文
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)
注意
注