2012-05-04 11 views
4

これは私が持っている特定の問題ではありませんが、私はこのプロジェクトに多くの懸念を抱いているので、何かをクリアする必要があります。データベースのセキュリティを維持する

私は、英国のいくつかの大企業に展開されるWebアプリケーションを作成しています。もしこれが間違っていると、私たちは非常にコストがかかるでしょう!

各企業のデータを非常に安全に保つ必要があるので、各組織の新しいデータベースを作成することをお勧めします。この方法では、データは完全に分離されており、すべての組織が影響を受けないため、すべてのデータが侵害される前にセキュリティ問題に対処する時間が与えられます。私の質問は以下のとおりです。

  1. 本の短期および長期の利益が
  2. (もしあれば)どのようなものです(もしあれば)
  3. 本の短期および長期の欠点どのようなものがあり、この良い習慣です?
  4. 私は予想した方法でセキュリティの問題を解決することすらできますか?事前に

おかげで、ほぼ確実に

+4

サーバーごとに完全に別個のサーバーを使用すると、サーバーの妥協がすべての企業データへのアクセスを提供します – Anigel

+1

「デプロイ先」と言えば、サーバー上で実行していることを意味しますか、 「サービスとしてのソフトウェア」として? –

+0

もいくつですか?これが数回(多分数十)あれば、別々の環境でかなりうまく管理することができます。数百になると、おそらく問題が残るでしょう。 – Randy

答えて

4

これは、「サービスとしてのソフトウェア」スタイルアプリケーションの「マルチテナントアーキテクチャ」の構築に関する質問であるとしています。

最初の問題は、データベースを分離することが良い考えであるかもしれないし、そうでないかもしれないということです。しかし、それは最初の質問ではありません。この問題が発生しているレベルでデータベースにアクセスできる人は、すでにデータベースサーバー上で任意のコマンドを実行する可能性があります。つまり、1つのアカウントの損害だけでなく、インフラストラクチャ全体への損害にも対応しています。それは "消灯"の瞬間であり、あなたが回復している間はシステム全体をシャットダウンする必要があります。

データベースサーバーにシェルが設定されていない場合は、アプリケーション層のセキュリティの問題、つまりSQLインジェクション、または認証スキームの権限のエスカレーション方法があることを意味します。再び、どちらも「消灯」の瞬間です。

したがって、すべてのものが完全に覆われていることを確認してください。開発ライフサイクルにセキュリティテストを含める。継続的統合システムの一部として自動化された侵入テストツールを使用することを検討してください。インフラストラクチャのメンバーが環境全体を強化し、リリース候補に近づいたときに第三者のセキュリティ監査を受けることを検討してください。セキュリティ上の問題に焦点を当てたコードレビュープロセスを検討し、特定のセキュリティ上の考慮事項でコーディング標準に同意する。すべての開発者にクロスサイトスクリプティング、SQLインジェクションおよびその他のアプリケーションレベルの脆弱性について教えてください。

すべてを済ませたら、ドアをロックして窓をボルトで止めました。あなたのデータベース戦略は、ジュエリーを安全に保つ方法と同じです。

個別のデータベースにはセキュリティがいくつか追加されていますが、それにはユーザー管理に対応する戦略がある場合に限ります。ほとんどのWebアプリケーションでは、「admin」と「web app」の2種類しかありません。 "管理者"は、データベースの作成/変更(データベース、テーブル、ビューなどの作成)を行うことができ、通常はデータも変更できます。 "Webアプリケーション"にはデータ変更権限のみが必要ですが、データベースオブジェクトを変更する権限はありません。

意味をなすために、データベースを分割するために、あなたはそれを確認する必要があります。

  • 彼らができる場合は、有効なユーザー名とパスワードへのアクセスを得ることができないWebアプリケーションのファイルシステムへのアクセスを取得、またはすることができます攻撃者は、 1クライアントのみ。攻撃者は、「管理者」の資格情報

へのアクセスを得ることはできない

  • しかし、それはあなたのデータベースを分割することは理にかなって(セキュリティを越えて)他の理由があります。これは、人的ミスのリスクを軽減し、より細かいレベルでシステムを拡張することができます。また、さまざまなレベルのホスティング(「ゴールド」ユーザーは独自のサーバーを取得し、「シルバー」は独自のデータベース」、ブロンズ"彼らのチャンスを取る)。

    これを実現するために解決しなければならない大きな問題は、展開です。データベースに変更を加えて、新しいバージョンのコードをどのように展開しますか?これは、テストプロセスを複雑にする可能性があります。

  • 0

    別々のデータベース、。 @Anigelによれば、管理とコストはより複雑ですが、おそらく別々のサーバーであっても、正確な要件によって異なります。

    • 一つのメリットは、将来のある時点で、おそらく1つのクライアントのデータが大きくなるので、それは新しいサーバーに分割する方が簡単です、または多分彼らはあなたのプラットフォームのアップグレードを取得するが、別にはないということです。

    • で始まる名前のすべてのテーブルを選択するのではなく、データベース全体をダンプ/ロードすることができれば、バックアップと復元が簡単になります(clientX_)。

    • パフォーマンスの測定は、別々のデータベースで簡単になります。

    開始するにはいくつかの簡単なアイデアがあります。

    +0

    私は別のサーバーのコストが単一のサーバーのコストよりも大きいことに同意します。しかし、別々のサーバーのコストは、 "コストを大幅に上回ります!"彼らが侵害された場合。別のデータベースは、誰かがサーバーにアクセスした場合、またはすべてのデータベースで同じアクセス詳細が使用されている場合は保護されないことを覚えておいてください。 – Anigel

    +0

    したがって、「正確な要件に依存します。専用ノードのコストは、仮想化されたインフラストラクチャ上でLinux OSを実行している場合や、Rackspaceで専用の管理対象ホストサーバーを実行している場合は非常に高価な場合など、コストがかかる場合があります。 – Cylindric

    0

    @Lee Price、すべての会社のために別々のデータベースを維持することは素晴らしいことです。

    利点:

    • これは、テーブルのサイズはあなたの大幅なパフォーマンスが得られます単一の企業に限定されている長い時間では

    • を確保してデータベースを維持します。操作は高速になります。

    • データ会社を賢明に操作する。

      • すべての企業のためのスキーマ変更を追跡する必要が

      • 別々のデータベース

      • を維持:

      短所はサポートの面で

    • ヘルプアウト

    • 単一のデータベース

    と比較して

  • は、より多くのスペースを占有が、私は個人的には、各企業の個別のデータベースに行くことをお勧めします。別のバックアップを維持します

  • 関連する問題