これは、この質問が通常尋ねられる方法とは少し逆です。次を使用して、データベース マスター キー、証明書、および対称キーを作成しました。
証明書/キーを作成する方法は次のとおりです(明らかに実際のパスワードを使用):
CREATE MASTER KEY ENCRYPTION
BY PASSWORD = '123456'
CREATE CERTIFICATE EncryptionCert
WITH SUBJECT = 'EncryptionCert'
CREATE SYMMETRIC KEY SymmetricKey
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE EncryptionCert;
次に、そのキーを使用して一部のデータを暗号化し、データベースをバックアップして、別のボックスに復元しました。
最初に古いボックスからサービス マスター キーを移行するまでデータを復号化できないと思っていましたが、実際には、証明書やパスワードを 1 つも提供しなくても、復元後すぐに復号化できました。
Amazon EC2 イメージを使用してボックスを作成していたため、これが発生していると推測したため、そのイメージから作成されたすべてのボックスが同じサービス マスター キーを持っていると想定しています。
サービス キーを強制的に変更するために、次のコマンドを実行しました。
alter service master key regenerate
両方のボックスに。
新しいデータベース、新しいキー/証明書などで最初からやり直しましたが、今回はバックアップを新しいボックスに移動したとき、データを自動的に読み取ることができませんでしたが、最初にデータベースのパスワードを提供する必要がありました私が作成したマスターキー。それができたら、データにアクセスできました。
私が読んだすべてのことから、最初にサービス マスター キーを移動しないと、マスター キーを復号化できないと思っていたでしょう。
サービス マスター キーが必要ないのは、まだテスト環境がおかしいためではないかと心配しています。
ここで何が起こっているのかを明らかにできる人はいますか? サービス マスター キーの移動が不要になるような SQL の変更がありましたか、それとも移動が不要になるような方法でデータベース マスター キーを作成しましたか? それとも、間違っている可能性のある結果を返していますか?