1. ホーム
  2. database

[解決済み] データベースとWebサーバーを同じマシンに置くことが推奨されないのはなぜですか?

2022-05-08 18:40:55

質問

Scott HanselmanのStack Overflowチームへのインタビューを聴く( パート1 2 ) 、SQLサーバーとアプリケーションサーバーは別々のマシンに置くべきだと頑強に主張しました。 これは、片方のサーバーが危険にさらされても、両方のシステムにアクセスできないようにするためだけなのでしょうか? 特に小さなアプリケーションで、どちらのサーバーもCPUやメモリをあまり使っていない場合、セキュリティ上の懸念は2つのサーバーの複雑さ(余分なコスト、2つのサーバー間の専用ネットワーク接続、より多くのメンテナンスなど)を上回るか? 2つのサーバーがあっても、1つのサーバーが危険にさらされれば、攻撃者はデータベースを削除したり、アプリケーションのコードをいじったりして、重大な損害を与える可能性があるのです。

パフォーマンスが問題でなければ、なぜこのような大きな問題になるのでしょうか?

どうすれば解決するの?

  1. セキュリティ あなたのウェブサーバーはDMZに住んでいて、公共のインターネットからアクセスでき、匿名のユーザーから信頼できない入力を受けています。ウェブサーバーが危険にさらされた場合、DBに接続する際に最小特権ルールに従っていれば、データベースAPIを通じてアプリができることが最大限の露出となります。その間にビジネス層がある場合、攻撃者とデータの間にもう1つのステップが存在することになります。一方、データベースが同じサーバー上にある場合、攻撃者はデータとサーバーへのルート・アクセス権を持つことになります。
  2. スケーラビリティ。ウェブサーバをステートレスにしておくと、ウェブサーバの水平方向の拡張をかなり楽に行うことができます。これは 非常に データベースサーバーを水平方向に拡張することは困難です。
  3. パフォーマンス 2箱=CPU2倍、RAM2倍、ディスクアクセス用スピンドル2倍。

とはいえ、そのようなことはどうでもいいという合理的なケースもありますね。