1

SQL Server 2008 R2 の SYMMETRIC KEY に関する 3 つの質問があります。

  1. SYMMETRIC KEY を使用して ENCRYPT/DECRYPT の機能にアクセスするアカウントを 1 つだけ制限するにはどうすればよいですか?
  2. データが SQL Server に渡されるとき、データは "in-the-clear" で渡され、ストアド プロシージャとアドホック クエリの両方で渡すことができます。上記のアカウントと SYMMETRIC KEY を使用して挿入されているため、暗号化が必要な列を更新するためのトリガーを使用できますか?
  3. 1 年後には、会社のポリシーにより、キーをローテーションして変更する必要があります。キーを簡単にローテーションする方法はありますか、それとも (古いキーで復号化し、新しいキーで暗号化する) スクリプトが必要ですか?

参考までに、SQL Server 2008 R2 Standard を使用しており、TDE の利点はありません。:(

返信ありがとうございます。:)

4

1 に答える 1

1

暗号化は通常、アクセス制御 (のみ) ではなく、暗号化階層を制御することによって制御されます。つまり、ユーザーは、復号化/暗号化キー(具体的には、キーを保護するパスワード)を知ることで、データを暗号化および復号化できます。すべての優れた暗号化スキームは、キー階層を使用します。典型的な単純な階層は次のとおりです。

  • データは対称鍵で暗号化されます
  • 対称鍵は証明書で暗号化されています
  • 証明書に関連付けられた秘密鍵はパスワードで暗号化されます
  • 許可されたユーザーは、データにアクセスするために秘密鍵の復号化パスワードを提供します

使用する証明書に明示的な許可/拒否/取り消しのアクセス許可を追加することもできます。GRANT 証明書のアクセス許可を参照してください。質問に戻ります。

SYMMETRIC KEY を使用して ENCRYPT/DECRYPT の機能にアクセスするアカウントを 1 つだけ制限するにはどうすればよいですか?

この機能は、対称キー自体ではなく、対称キーを暗号化する証明書に適用する必要があります。このレベルの間接化により、データにアクセスできる各ユーザーの証明書を作成し、各ユーザーに自分のアクセス パスワードだけを知ってもらうことができます。アクセスの取り消しは、他のユーザーのアクセスに影響を与えることなく、その特定のユーザーの証明書をドロップするのと同じくらい簡単です。新しいユーザーを追加することは、新しい証明書を追加し、この新しい証明書の暗号化をデータを暗号化する対称キーに追加することを意味します。つまり、データへのアクセスを事実上許可します。ユーザーがアクセス パスワードを共有するという代替手段は、社会的な理由により、実際には機能しません。

上記のアカウントと SYMMETRIC KEY を使用して挿入されているため、暗号化が必要な列を更新するためのトリガーを使用できますか?

理想的には、アプリケーション層は、挿入前にデータを明示的に暗号化するデータ操作用のストアド プロシージャを呼び出す必要があります。INSTEAD OF トリガーを使用して、貧弱な「透明な」ソリューションをロールバックできます。計算列は、復号化されたデータを公開できます。最初に復号化証明書を適切に開かなかったすべてのユーザー (セッション) には NULL が表示されます。

キーをローテーションして変更する必要があります

対称キー自体ではなく、対称キーを暗号化する証明書をローテーションします。対称鍵も定期的に変更する必要がありますが、ローテーションは行わないでください。単純に新しい対称鍵を追加し、それを新しいデータと古いデータの更新に使用して、ブルート フォースの範囲を制限し、誕生日攻撃の可能性を減らします。その正当な理由は、保管中のデータを再暗号化すると、法外にコストがかかることが多いからです。ほとんどの暗号化スキームは、データの暗号化に使用される実際の対称キーではなく、暗号化階層 (つまり、上記の証明書) の上位にキーをローテーションします。

于 2012-11-20T06:16:38.110 に答える