[解決済み] データベースとWebサーバーを同じマシンに置くことが推奨されないのはなぜですか?
2022-05-08 18:40:55
質問
Scott HanselmanのStack Overflowチームへのインタビューを聴く( パート1 と 2 ) 、SQLサーバーとアプリケーションサーバーは別々のマシンに置くべきだと頑強に主張しました。 これは、片方のサーバーが危険にさらされても、両方のシステムにアクセスできないようにするためだけなのでしょうか? 特に小さなアプリケーションで、どちらのサーバーもCPUやメモリをあまり使っていない場合、セキュリティ上の懸念は2つのサーバーの複雑さ(余分なコスト、2つのサーバー間の専用ネットワーク接続、より多くのメンテナンスなど)を上回るか? 2つのサーバーがあっても、1つのサーバーが危険にさらされれば、攻撃者はデータベースを削除したり、アプリケーションのコードをいじったりして、重大な損害を与える可能性があるのです。
パフォーマンスが問題でなければ、なぜこのような大きな問題になるのでしょうか?
どうすれば解決するの?
- セキュリティ あなたのウェブサーバーはDMZに住んでいて、公共のインターネットからアクセスでき、匿名のユーザーから信頼できない入力を受けています。ウェブサーバーが危険にさらされた場合、DBに接続する際に最小特権ルールに従っていれば、データベースAPIを通じてアプリができることが最大限の露出となります。その間にビジネス層がある場合、攻撃者とデータの間にもう1つのステップが存在することになります。一方、データベースが同じサーバー上にある場合、攻撃者はデータとサーバーへのルート・アクセス権を持つことになります。
- スケーラビリティ。ウェブサーバをステートレスにしておくと、ウェブサーバの水平方向の拡張をかなり楽に行うことができます。これは 非常に データベースサーバーを水平方向に拡張することは困難です。
- パフォーマンス 2箱=CPU2倍、RAM2倍、ディスクアクセス用スピンドル2倍。
とはいえ、そのようなことはどうでもいいという合理的なケースもありますね。
関連
-
MongoDBコマンド
-
MySql への JDBC 接続エラー com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException.MySQLSyntaxErrorException: 不明なデータベース 'test'
-
mysql データが長すぎて列 xxx の解決策にならない
-
[解決済み] データベースフィールドの標準的な長さのリスト
-
FOREIGN KEY制約の失敗
-
Net connection pool configuration Timeout expired. 操作の完了前にタイムアウト時間が経過したか、サーバーが応答していない。"
-
[解決済み】OAuth v2には、なぜアクセス・トークンとリフレッシュ・トークンの両方があるのでしょうか?
-
[解決済み】データベースの結合はいつ、なぜ高くつくのですか?
-
[解決済み】MySQLでカラムに同じ値を持つ行を検索する
-
[解決済み] ASP.NETの新しいセキュリティ脆弱性の深刻度と回避方法について教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MYSQL "Access denied; you need (at least one of) SUPER privilege(s) for this operation" 問題解決
-
解決策: テーブルの定義が正しくありません。
-
SSISエラーコード DTS_E_OLEDBERROR.an OLE DBエラーが発生しました。エラーコード 0x80040E21 備考
-
AttributeError: 'function' オブジェクトには 'cursor' という属性がありません。
-
sql common mistake of incorrect predicate orderConversion failed when converting varchar value 'abc' to data type int
-
PostgreSQLのリモートアクセスエラーを解決する サーバーに接続できませんでした:接続拒否(0x0000274D/10061)
-
ORA-01034 を解決する: ORACLE は利用できません ORA-27101: 共有メモリ領域が存在しない
-
[解決済み] データベースの水平方向と垂直方向の拡大縮小の違い【終了しました
-
[解決済み] データベースの項目はソース管理をしていますか?[クローズド]。
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?