web-dev-qa-db-ja.com

テーブルの特定の列を暗号化する必要があるが、並べ替えや検索もできる

ユーザーが入力した機密データを保存する必要があるWebアプリがあります。現在、AWSでPostgreSQLを調査しています。私はpgcrytoを知っており、特定の列の内容をハッシュできることを知っています(すべてを暗号化する必要があるわけではないため)ただし、これらの列を検索してソートを実行できる必要もあります。データを暗号化すると、これら2つは制限のようです。

並べ替えと検索もサポートする必要がある場合、現時点ではどのような選択肢がありますか?ソリューションは高性能でなければならないことを覚えておいてください。

3
strangetimes

特定の列を暗号化したくない場合は、データベースが書き込まれるファイルシステムと、作成したデータベースのバックアップを暗号化する必要があります。 AWSは、これらの両方を実行するための機能( RDS暗号化リソース および S3サーバー側の暗号化 )を提供します。または、ecryptfsを使用してマウントされたLVMボリュームを使用して自分で実行できます。

基本的に、コンテンツを復号化しないと、暗号化された列を検索またはソートすることはできません。暗号化が効果的である場合、並べ替えまたはインデックス作成プロセスはそれを意味不明なものと見なし、それが効果的でない場合は、なぜそれを気にするのですか?

考慮すべきもう1つの考慮事項は、データに関連付けられた脅威モデルとリスクモデルです。特定のクラスのデータを扱う場合は、必須のセキュリティプロトコルに従うことにより、機密情報を管理する必要があります。医療情報についてはHIPAA、支払い情報についてはPCI DSS。これらのプロトコルを実装するための詳細なガイドが利用可能であり、それらのいずれかでカバーされている場合は、それに従ってください。

暗号化とデータ保護は、創造力を発揮すべき分野ではありません。正しく理解するのは難しく、間違えた場合は一口噛みます。

2
Larry