23

ポッドキャスト #19 を聞いています。Joel と Jeff が、IIS がインストールされているマシンと同じマシンで SQL Server を実行することについて議論しています。ジェフがジョエルにフォールドしたように聞こえると言わざるを得ませんが、どちらがどちらかを推測しているだけです。;)

それぞれの長所と短所は何ですか?どちらが良いですか?

私は通常、それらを別々に実行します (Joel の好み) が、Jeff の指摘によると、この 2 つが互いに接近していることがわかります。

4

4 に答える 4

46

セキュリティ上の理由から、Web マシンとデータベース マシンを分離し、できれば 2 つの間にファイアウォールを配置することをお勧めします。Web サーバーは一般に公開されています。残念なことに、これらのサーバーに含まれる情報を盗んだり、損傷したりすることに喜びを感じる人がいます。

次に、パフォーマンスの側面があります。SQL Server がメモリを好むことはよく知られています。IIS も同様です。特に、Web サイトがキャッシュとセッション情報を広範囲に使用している場合はそうです。したがって、ここでも競合が発生する可能性があります。SQL Server 専用のマシンを用意する方が、1 台のマシンですべての負荷を処理するよりも明らかに優れています。

次に、分離することで、チューニングの必要性と、個々のハードウェア コンポーネントをチューニングする機能を簡単に識別できます。

要約すると、稼働中の環境で IIS と SQL Server の両方の要求に対処できるほど強力なマシンは、各サーバーの特定の要件に対して指定された2 台のマシンよりも必ずしも安価ではありません。(Jeff Atwood は、ポッドキャストの 1 つで、1 台のマシンをアップグレードするのに 2 台目のマシンを購入するのと同じ費用がかかると述べました)

于 2008-11-08T15:58:34.827 に答える
12

@マークR

セキュリティは、SQL Server を別のボックスに移動することで確かに強化されます。これは、攻撃対象領域が露出しているためです。

Web サーバーは、インターネットからの悪意のあるアクセスにさらされています。決して起こらないことを願っていますが、ファイアウォールを通過する不正な形式のリクエストを介して悪用される可能性のある脆弱性がありました (そして将来発生する可能性があります)。

これらの脆弱性の 1 つを悪用すると、任意のコードが実行される可能性があります。

この方法で Web サーバーが侵害された場合、そのマシンで実行されている他のすべてのものが脆弱になり、エクスプロイト ソフトウェアが特権コンテキストで実行される可能性があります。侵害されたマシンの攻撃対象領域は、はるかに広範です。

SQL Server が同じマシンにインストールされている場合、どのデータベースも脆弱です。

現在、SQL Server が別のマシンにインストールされている場合、SQL Server 自体にはパブリック インターフェイスを介してのみアクセスできます。データベースのアタッチ サーフェスは、そのインターフェイスに限定されます。したがって、データベースを侵害するには、まず Web サービスを侵害し、次に SQL Server を侵害する必要があります。これは、同じマシンにそれらを配置するよりもはるかに困難です。

原則をさらに拡張すると、ストアド プロシージャの使用についての議論にもなります。Web サーバーがストアド プロシージャを使用してのみデータベース サーバーにアクセスできる場合、インターフェイス、つまり攻撃対象領域が大幅に制限されます。Web サーバーがデータベース サーバーに対して任意の SQL を実行できる場合、攻撃対象領域は必要以上に大きくなり、データに対するリスクが大幅に増加します。

データが価値のあるシステムでは、これらのリスクは比較的小さいものの非常に現実的であり、そのようなリスクがビジネスに及ぼす影響を判断することは、ソリューション設計の重要な側面です。

于 2008-11-08T21:04:59.453 に答える
11

それらを同じマシンに置く:

  • それらの間のレイテンシーを減らします - したがって、簡単なクエリがたくさんある場合、これによりパフォーマンスが向上する可能性があります
  • 単一のボックス (または VM) で実行できるため、開発とパフォーマンス テストが容易になります。

アプリケーションが冗長性を必要とせず、スケールアウトする必要がない場合、それらを同じボックスに配置することは間違いなく勝利です-維持するのがはるかに簡単です.

セキュリティの議論に重みがあるとは思いません。それらを分離することによるセキュリティ上の利点は見当たりません。いずれにせよ、Web サーバーは、データのすべてまたはほとんどを表示および変更するために、データベースへの十分なアクセス権を持っている必要があるため、完全に侵害された場合、SQL ボックスも実質的に侵害されます。

于 2008-11-08T16:35:28.997 に答える
6

For very sensitive sites, the advantage of separate servers with firewalls between them can be useful but it brings a number of issues.

  1. Performance of queries on split IIS - SQL servers can run very slow due to the need to pass data across the network, also DNS may still be a factor even with servers 2 feet apart, so there maybe some work to do to get an applications to work as well split.
  2. Management. It maybe obvious but its 2 servers, 2 windows licenses and the management that's involved and the complexity of traversing firewalls.

Split server recommendations:

  1. Install a gigabit LAN between servers.
  2. Optimised queries to run as stored procedures instead
  3. Optimise queries to only return the minimum amount of data.
  4. Make sure interserver addressing uses the IP address or effective DNS lookup.
  5. Give the SQL loads of memory sufficient for temporary results.
于 2011-09-27T14:52:13.380 に答える