1

これが私のシナリオです:

  1. データベース R を QA SQL Server に復元し、名前を Rtest に変更しました。サーバー上にデータベース R の別のインスタンスがあります。
  2. 次のコマンドを実行して、暗号化を有効にしました。

    OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'
    RESTORE MASTER KEY FROM FILE = 'ThePath' 
    
    DECRYPTION BY PASSWORD = 'DEF'
    ENCRYPTION BY PASSWORD = 'GHI'
    

SysAdmin としてデータベースに接続すると、暗号化された列を復号化できます。クエリは問題なく動作します。

ローカル ユーザーとしてデータベースに接続すると、次のエラーが表示されます。

メッセージ 15581、レベル 16、状態 3、行 2
この操作を実行する前に、データベースでマスター キーを作成するか、セッションでマスター キーを開いてください。

ローカル ユーザーとしてログインしているときに、次を実行します。

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'

接続のクエリを実行できますが、新しい接続を開くとエラーが発生します。

クエリを一貫して実行できる唯一の方法は、暗号化された列へのアクセスが必要になるたびに次のコマンドを実行することです。

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'

基本的に、テーブルを選択、更新、または挿入するたびに、次のことを行う必要があります。

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'

select EncryptedColumn from TableA where x = 2

毎回マスター キーを開き続けなければならない理由を理解しようとしています。通常、コマンドを 1 回実行するだけで、それで終わりです。どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

1

DMK をシステム データベースに追加する必要があります。

OPEN MASTER KEY DECRYPTION BY PASSWORD = '@ これは 123 の強力なパスワードです';

ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY;

これにより、SQL サーバーは、必要に応じてデータベース マスター キーを自動的に開くことができます。

http://msdn.microsoft.com/en-us/library/ms186937(v=sql.90).aspx

于 2014-08-08T17:56:02.417 に答える