web-dev-qa-db-ja.com

重要なデータベースを開発者のラップトップに格納するための適切なセキュリティ対策は何ですか?

私たちはいくつかの与えられたものを持っています:

  1. 開発者は、マシンに本番データベースのレプリカを必要とします。
  2. 開発者は、App.configファイルで上記のデータベースへのパスワードを持っています。
  3. 上記のデータベースのデータが危険にさらされることを望まない。

いくつかの推奨されるソリューションとその欠点:

  1. フルディスク暗号化。これはすべての問題を解決しますが、ラップトップのパフォーマンスを低下させます。私たちは新興企業なので、パワーホースにお金をかける必要はありません。
  2. 暗号化されたハードディスクでVMを作成し、その上にデータベースを保存します。これはうまく機能しますが、Web.Configにパスワードがあるため、あまり役に立ちません。
  3. ソリューション番号2 +開発者が何かを実行するたびにデータベースのパスワードを入力する必要があります。これはすべての問題を解決しますが、アプリケーションを1分間に数回起動することがある開発者にとっては非常に面倒です。また、同じデータベースに接続する複数のアプリケーションがあり、パスワード画面の実装はそれぞれで異なる必要があります。

だから、私の質問は、そのような問題に対する一般的な解決策があるか、または上記の解決策のいずれかを実行可能にする方法に関する提案があるかどうかです。

33
Svarog

本番データベースのコピーが必要なだけでなく、実際には違法である可能性があります。たとえば、米国では、個人の健康データ、財務データ、さらには個人情報の盗難に使用される可能性のあるデータなどの規制情報が含まれている場合、本番環境から本番データを移動することはできません。そうした場合、罰金を科され、コンプライアンスの立場を失うため、より厳しい監査の対象となるか、訴訟で指名される可能性さえあります。

テストのために実稼働規模のデータが必要な場合は、いくつかのオプションがあります。

  1. すべてのダミーデータを生成します。これは思ったよりトリッキーです。賢明な架空のデータを生成するのは驚くほど難しく、労働集約的です。
  2. 本番データを匿名化します。これは簡単かもしれませんが、注意して進めてください。

オプション#2の場合

  • 本番環境では、承認されたデータベース管理者が本番データのコピーを作成します。
  • まだ本番環境では、同じ承認された管理者がすべての機密データを匿名化するルーチンを実行します。疑わしい場合は、匿名化してください。
  • その後、データを別の環境に移動する必要があります。
100
Corbin March

この作業のためにRDを使用できるデータセンターの開発者VMを少なくとも提供できますか?彼らは実際に非運用データで機能するはずですが、データは簡単に盗まれるラップトップに保存されないので、そこに到達するまで安全です。

9
Brian Knoblauch

可能な場合は作業方法を変更してください。

他の人が指摘したように:

  • 開発に本番データを使用することはお勧めできません。
  • パスワードをプレーンテキストで保存することはお勧めできません。

これらはどちらも重大なリスクにさらされるため、可能であれば変更する必要があります。これらの変更を行う場合のコストを少なくとも真剣に評価する必要があります。これが、変更する権限のない外部依存関係である場合は、その権限を持っている人は誰でも、これを懸念事項として取り上げることを検討してください。

しかし、現実の世界では、これを変更することは実際には不可能かもしれません。あなたがしていることが合法であると仮定すると、あなたは(少なくとも一時的に)この取り決めを守らなければならないかもしれません。

これが本当に必要な場合は、フルディスク暗号化を行うだけです。

リスクを考えると、利用可能な最高のセキュリティオプションを使用する必要があります。パフォーマンスヒットがある場合は、それと共存してください。機密データを処理するためのコストです。

私があなたの顧客である場合、ラップトップが少し遅くなるため、私のデータで利用可能な最高のセキュリティオプションを使用しないことに決めたことには感心しません。

8
user82096

どのデータベースと環境を指定する必要はありません。

統合セキュリティを使用できる場合、そのユーザーとしてログインしないとデータベースにアクセスできません。はい、データがハードディスクにある場合、ハッキングされる可能性がありますが、これは第1レベルの防御策です。

App.configは、これが.NETである可能性があると思います。設定をサムドライブに入れ、サムドライブから読み取ります。ドライブが存在しない場合は、ユーザーにパスワードを入力させます。

パスワードを初めて入力して全員が読み取るときに、パスワードをメモリに保存する方法はありますか?繰り返しますが、環境については述べていません。 メモリマップファイル

一部のTDEでは、別のデバイスにキーを保存して、データベースサーバーの起動時にキーを提供することができます。

1
paparazzo

コービンマーチの答えはかなり良いです。私は、追加の詳細を追加します。一般に、運用データベースには2つのデータクラスがあります。システム/アプリケーションメタデータ。およびクライアントユーザーデータ/トランザクションデータ。この後者は、「現状のまま」の開発環境では絶対に使用しないでください。

開発を行うために実際の本番クライアント情報が必要になることは非常にまれです。

ただし、OPがここで説明している問題に、営業秘密データや、顧客データを含まない独自の高度なシステムデータが含まれる場合、開発者はそれを必要とします...セキュリティアプローチには、リソースファイルのどこかにクリアテキストで保存されたdbパスワード。たとえば、ディスクに保存されていない、毎日のパスワードを再生成するメカニズムが必要です。

1
dwoz

可能なオプションの1つは、データベースのコピーを作成し、そのコピーをスクリプトでスクラブして、実際に運用されているものとは異なるデータになるようにすることです。最終的に本番環境と同じデータになるわけではありませんが、規模は同じになります。

0
Jason Crosby