web-dev-qa-db-ja.com

中央データベースなし

非常に機密性の高いデータ(銀行/カードの詳細よりも機密性が高い)を扱うWebサイト/モバイルアプリ/デスクトップアプリの作成を検討しているクライアントがいます。データは機密性が高いため、中央データベースに保存したくありませんが、アプリを同期させたいと思います(モバイルアプリにデータを追加するとします。次に、デスクトップアプリと同じデータを参照してください)。

私はこれを行うための素晴らしい、信頼できる方法を考えることはできません。それが私がここにいる理由です。私がこのデータを処理する方法を誰かが知っていますか?

私が考えていた1つの解決策は、各アプリにクライアント側のデータベースを配置して、アプリ間で何らかの方法で同期することでした。

31
user2424495

多くの機密情報がデータベースに保存されます。実際、中央データベースがこのデータを保存するためのおそらく最も安全な方法です。大規模なエンタープライズデータベースには、機密情報の暗号化、アクセスしたユーザーの監査、DBAを含むユーザーによるデータの表示の制限または防止などを行うための多くの機能があります。専門のセキュリティ専門家が環境を監視し、専門のDBAがバックアップを監視することができます。データを失わないこと。適切に設計されたセキュリティインフラストラクチャに侵入して適切な中央データベースを危険にさらすよりも、ランダムユーザーのモバイルデバイスやラップトップに保存されたデータを危険にさらす方がはるかに簡単です。

暗号化されたデータのみを保存し、ユーザーの秘密鍵をユーザーのデバイスに保存する中央データベースを使用してシステムを設計できます。そうすれば、中央データベースが完全に危険にさらされても、データはユーザーだけが使用できます。もちろん、これは、ユーザーがキーを紛失した場合、ユーザーのデータを復元できないことを意味します(たとえば、コピーが電話にあり、電話が破損していた場合)。そして、誰かが鍵とおそらくは自分のログイン資格情報を侵害した場合、彼らはデータを見ることができます。

60
Justin Cave

いくつかの手順をバックアップし、クライアントと相談して 脅威モデル を計算する必要があります。 (はい、これは600ページのブックへのリンクです。はい、すべてを読むことを強くお勧めします。)

脅威モデルは次のような質問をすることから始まります

  • アプリがこの機密データを最初から保存する必要があるのはなぜですか?
    • まったく保管しないでください。
    • すぐに捨てられますか?
    • 本当に複数のデバイスからアクセスできる必要がありますか?
    • アクセス可能が複数のデバイス上になければならない場合、storedを複数のデバイス上に置く必要がありますか?
  • 各ユーザーの機密データの閲覧を許可されているのは誰ですか?
    • このリストを短くできますか?
  • 仕事をしようとしているときに各ユーザーの機密データに接触する可能性があるが、それを知る必要がない人は誰ですか?
    • thisリストを短くできますか?
    • 仕事をする能力を損なうことなく、データにアクセスできないようにすることはできますか?
    • アクセスできない場合は、少なくとも理解不能にすることができますか? (これは、抽象化では暗号化が行うことです。データを理解しにくくします。)
  • wantで機密データを見たいが、許可されていない人は誰ですか?
    • データを入手するためにどのような機会が必要ですか?
    • データを取得したら、データをどのように処理したいですか?
    • 彼らが望むものを手に入れなければ、彼らはどれほど怒るか?
    • 彼らはどれだけのお金、時間、CPUサイクル、そして人間の努力を費やして喜んでいますか?
    • 知っている彼らがデータを見たことがあるかどうか、彼らは気にしますか?
    • 特定のユーザー機密データにアクセスしたいですか、それとも誰かがアクセスしますか?
    • 彼らはすでに何を知っていますか?
    • 彼らはすでに何にアクセスできますか?

これらの質問への答えがわかったら、何をすべきかを理解するのにはるかに良い場所になります。

一連の質問、特に攻撃者(機密データを必要とするが、機密データの持ち込みを許可されていない人)に対処する質問には、複数の回答がある場合があることに注意してください。動機、目標、およびリソースが異なり、少なくとも6ダースdifferentの典型的な攻撃者について考えることができない場合は、おそらく何かを見逃しているでしょう。

あなた(および/またはクライアント)を最もトラブルさせる攻撃者は、攻撃が成功した場合、または最大の攻撃を行った場合、メディアに巨大なスプラッシュを発生させる可能性が最も高いことに注意してください。 aggregateダメージの量、おそらく攻撃が成功した場合に個人のユーザーに最大の被害を与える攻撃者ではないでしょう。クライアントの会社は、総合的な損害については合理的に気にしますが、ユーザーは自分自身への害については合理的に気にします。

38
zwol

同期を行う1つのオプションは、ピアツーピアで行うことです。これには依然として中央サーバーが必要ですが、そのサーバーはどのデータも処理しません。

デバイスがオンラインになると、中央サーバーはユーザーIDを含む通知を受け取ります。同じユーザーの2番目のデバイスがオンラインになると、サーバーは両方のデバイスに他方のIPアドレスを送信します。その後、デバイスはデータを直接交換できます。警告:1台のデバイスがサーバーとして機能する必要があるため、少なくとも1台はNATルーターの背後に置くことはできません。

通知メカニズムとピアツーピア交換の両方に強力な認証と暗号化が必要になることを忘れないでください。

8
Philipp

それを誰かの問題にしてください。

データを各アプリにローカルに保存し、サードパーティのサービス(Dropbox、Googleドライブなど)と独自のアカウントを使用して同期を有効にするオプションをユーザーに提供します。また、サードパーティのサービスにアップロードされたデータを暗号化することを検討してください(これには長所と短所があります)。

これにより、ユーザーはデータ同期をオプトインする必要があるため、ユーザーは自分のデータを所有するappearanceが得られます。共有を望まない人にとって、アプリは便利です。そして、共有データを安全に保つという継続的な頭痛の責任を他の誰かに(技術的、そして潜在的には合法的に)負わせます。

5
James Mason

クライアントの懸念は、このデータの可視性にあるようです。お客様に最初に尋ねる質問は、データが暗号化されているかどうか、どこに保存できるかということです。次に、データを復号化して処理する前に、顧客にどのような種類のアクセス制御が必要かを尋ねます-復号化キーはどこに保存できますか?ユーザーごとに別のキーは何ですか?等...

顧客がデータをどこにも保存したくない場合、ユーザーは毎回私の手でデータを入力する必要がありますか?

1
Michael Shaw