MySQL のフィールド (および/またはテーブル) の暗号化に関するガイダンスを探しています。まともなチュートリアルで解決しますが、暗号化されていないスキーマから暗号化されたフィールドを使用するスキーマへの移行を管理するための具体的なヒントが本当に欲しいです。ありがとう!
5 に答える
フィールドの AES_ENCRYPT とともに、機密情報を保存している場合は、ネットワーク上でSSL も有効にすることをお勧めします。また、機密性の高いデータベース マシンのネットワーク分離 (vlan) やその他の標準的なセキュリティ プラクティスも検討してください。キー ストレージは重要です (Web サーバー上ではなく、共有 aes キーがぶら下がっている場所です)。テーブル データの検索や結合は以前ほど単純ではなくなるため、インデックス/クエリへの影響を考慮してください。
実際には(少なくとも)2つのアプローチがあります。テーブルに保存されているデータを暗号化できます(たとえば、EAS / DES関数を使用してhttp://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html)
または、暗号化されたハードディスクパーティションを使用してデータフォルダを保存することもできます(たとえば、TrueCryptを使用)
フィールドレベルでデータベースを暗号化することの価値は何ですか?これは本当に必要なものですか、それともOSまたはSANレベルで暗号化するだけで十分ですか?キーをロールオーバーする予定ですか、それとも同じ暗号化キーを永久に保持する予定ですか?暗号化はテーブルのインデックス、参照、またはフィールドタイプを破壊しますか?データベースクラスター全体で暗号化キーをどのように共有しますか?
データベースの暗号化は通常、管理者が望んでいるものであるため、私はこれらの点を指摘しているだけですが、付加価値やその実装方法を実際に説明できる人は誰もいません...
暗号化で何を達成しようとしているのか考えてみてください。残念ながら、簡単で安全な解決策はありません。
暗号化に使用しているキーは、コードから取得できることに注意してください。したがって、ハッカーの観点からは、その暗号化を回避するのは非常に簡単です。あなたはあなたのアーキテクチャとインフラも考える必要があります。
まず第一に、データの暗号化だけでは答えになりません。
「誰がデータにアクセスしてアクセスできるか」を把握し、管理する必要があります。
データ自体を暗号化しても、攻撃者は暗号化されたデータを取得できます。これを防ぐには、アクセス権または権限を制御する必要があります。また、暗号化されたデータに誰がアクセスしたかを知っておく必要があります。最近では、外部ユーザーだけでなく内部ユーザーによってもデータが盗まれる可能性があるためです。
データを暗号化し、権限を制御し、誰がアクセスしたかを監査する必要があります。
当時、この3つの技術はそれぞれに発展してきました。ほとんどの企業は、各ソリューションを購入しています。
しかし、個人ユーザーにとっては、それを購入してその環境を構築すること自体が困難です。また、MySQL の暗号化機能はこれらの機能を提供していません。
これらの 3 つの機能を提供するこのリンクを確認したいと思います。
私の経験では、一定のセキュリティを提供できます (私は SME の CISO です)。