1

UPDATE ステートメントを使用して SQL Server 2005 の既存の列を暗号化し、古いコンテンツを新しい暗号化された列に移動したいと考えています。

したがって、対称と非対称の 2 つの選択肢があります。

私が抱えている問題は、対称キーを使用すると、次のような列を読み取るためにパスワードを SP に埋め込む必要があることです。

-- Create key (at some earlier point)
create symmetric key sk_user_profile with algorithm = aes_192 encryption by password = 'P@ssword!!';

-- Now encrypt the contents
-- open the key so that we can use it
open symmetric key sk_user_profile decryption by password = 'P@ssword!!';

UPDATE users
SET password_enc = encryptbykey(key_guid('sk_user_profile'), password_plain, 1, user_id)

close symmetric key sk_user_profile

データを選択したい場合でも、キーを再度開く必要があります

open symmetric key sk_user_profile decryption by password = 'P@ssword!!';

ストアド プロシージャ内にプレーンテキストのパスワードを埋め込んでいるので、これは重要な点ではありません。

いくつかの質問

  1. これを回避する方法はありますか?つまり、このパスワードを使用して証明書を作成し、代わりに証明書を参照しますか?
  2. この証明書は (SSL のように) 購入する必要がありますか、それとも独自に作成できますか?
  3. この方法は、フェールオーバー クラスター化されたデータベース全体で拡張可能ですか。つまり、暗号化はマシンに基づいておらず、提供されたパスワードのみに基づいています。したがって、フェイルオーバーは引き続きパスワードを読み取ることができます

ご協力いただきありがとうございます

4

1 に答える 1

1

基本的にあなたがする必要があるのはこれです:

create certificate MyEncryptionCertificate with subject = 'MyCertificate'

create symmetric key MySymmetricKey with algorithm = aes_256 encryption by certificate MyEncryptionCertificate

その後:

open symmetric key MySymmetricKey decryption by certificate MyEncryptionCertificate

select encryptbykey(key_guid('MySymmetricKey'), 'tada')) EncryptedMessage

このブログがその過程で役立つことを願っています。

SQL SERVER – SQL Server 暗号化の概要とスクリプトによる対称キー暗号化のチュートリアル

また、フェイルオーバー環境での証明書を具体的に扱っているこのブログ エントリもあります。

運用サーバーで証明書認証を使用するソリューション

于 2010-09-15T18:25:37.097 に答える