ユーザーの個人的な病気に関する情報を含むデータベースを設計する必要があります。
DBのテーブルの列を実装するためのアプローチは何ですか?情報を暗号化する、2つの異なるDB内でデータを分離する、1つは機密データ用、もう1つは機密データ用ではない、または両方または別のアプローチですか?
ユーザーの個人的な病気に関する情報を含むデータベースを設計する必要があります。
DBのテーブルの列を実装するためのアプローチは何ですか?情報を暗号化する、2つの異なるDB内でデータを分離する、1つは機密データ用、もう1つは機密データ用ではない、または両方または別のアプローチですか?
回答:
Webアプリケーションに格納されているキーを使用してデータを暗号化し、暗号化された形式でデータベースからデータを読み書きできるようにすることができます。ただし、コードにアクセスできる人は誰でもキーにアクセスでき、キーがあれば暗号化されていないデータにアクセスできます。これは要件を解決します
dbaは、データベースのユーザーの病気に関する情報を表示できないようにする必要があります。
データベースの分離に使用する限り、それは必要ないと思います。暗号化されたデータを保存し、ユーザーごとのデータベース権限を使用している場合、テーブル(必要な場合でも)で十分です。余分なDBは、他にあまりない複雑さの層を追加すると思います。別の場所にある場合を除き、単一のデータベースシステムよりもわずかに改善される可能性があります。
オミナスの答えはあなたの最初の質問に対処します。2番目の質問への回答には、アプリケーションの詳細が必要な場合があります。
患者がデータベースにアクセスする必要がある場合のセキュリティをさらに強化した別のアプローチは、ユーザーごとに個別のデータベースを用意することです。このアプローチでは、マルチテナント、マルチデータベース機能を提供するフレームワークを使用できます。ただし、問題は、個別のアプリケーションユーザーと個別のデータベースユーザーがいる場合、これらのユーザーの同期が非常に困難になることです。しかし、患者はあなたのデータベースにアクセスする必要はないと思います。必要な場合は、ユーザーごとにキーを設定するのが最も安全です。
法的または契約上の要件に加えて、データベースを分離すると考えられるその他の理由としては、顧客がセキュリティを強化して販売を容易にするという認識、暗号化の破綻、(キー)の侵害の心配があります。
Briddmusの回答の中で、「医療情報だけでなく、それ以上の暗号化が必要である」と述べている部分については、これは、データベース内の全員が病状を持っている場合にのみ当てはまります。(私はこれが事実だと思います)。
注:この回答の一部はコメントとして適していますが、まだコメントを投稿するのに十分な担当者がいません。
このタイプのアプリケーションでは、データへのアクセスを誰に許可するかを考える必要があります。医療情報については、それを入力したユーザーと、閲覧を許可した人に制限されると思います。
DBAがデータを表示できないようにするには、DBAがアクセスできないコードを使用してデータを暗号化する必要があります。
また、アプリケーションプログラマーがアクセスできないように情報を暗号化する必要もあります。プログラマーが任意のユーザーとしてログインできる場合、DBAからの情報を暗号化しても意味がありません。
また、すべてのデータを同じコードで暗号化する必要はありません。ソフトウェアには、あるユーザーに別のユーザーの情報を表示するバグがある可能性があります。したがって、そのユーザーに固有のコードを使用して各ユーザーのデータを暗号化するのがおそらく最善でしょう。
医療情報以上のものを暗号化する必要があることに注意することが重要です。エンドユーザーとしては、私が病状であることはもちろん、それが何であるかを知っているとしても、DBAに望まないでしょう。したがって、ユーザーに関する個人情報も暗号化する必要があります。これには次のようなものが含まれます。