簡単に、私はあなたを許可します。セキュリティ..セキュリティは、データベース サーバーの物理的な場所とはほとんど関係ありません。
ただし、3つの質問に到達するには:
- まず、データベース サーバーのセキュリティ モデルを使用してデータベース テーブルへのアクセスを制限する方法を確認します。つまり、アプリケーションがテーブルを削除する必要がない場合は、接続に使用するユーザーにその機能がないことを確認してください。次に、データベース サーバーとアプリケーション間の接続を暗号化する方法を調べます。Windows では、これは kerberos を介してかなり透過的であり、グループ ポリシー設定によって強制することもできますが、他のプラットフォームについては不明です。3 番目に、「保管中」のデータを暗号化するためにデータベースにどのような機能があるかを調べます。つまり、実際のデータ ファイル自体の暗号化をネイティブにサポートしていますか?
ここで重要なのは、アプリケーションはデータベース サーバー自体へのエントリ ポイントの 1 つにすぎないということです。アプリの資格情報を使用して、誰かがアプリケーションを経由せずに直接接続できたらどうなるか、自問してみてください。次に、SQL インジェクションの問題が見つかった場合に何が起こるかを尋ねます。また、誰かがアプリとサーバーの間を行き来する IP トラフィックを監視できる場合、どのような情報を収集できるかを自問してください。彼らはデータを識別できますか? 最後に、彼らがデータベース自体のコピーを取得したらどうなるでしょうか?
1 番目に必要な期間は、次のようないくつかの要因によって異なります。そして、理想的な解決策を思い付くのにどのくらいの時間がかかりますか?
スケーラビリティ: これは純粋に負荷の関数です。残念ながら、ほとんどのデータベース アプリケーションをスケーリングする唯一の方法は、スケール アップすることです。必要に応じて、より大きなデータベース サーバーを取得することを意味します。スタック オーバーフローがこれを経験したのは、それほど前のことではありません。一部のデータベース タイプ (nosql、mongodb など) は、シュレッディングまたはシャーディングと呼ばれる概念をサポートしています。MySql、PostGreSql などはそうではありません。代わりに、それを処理するアプリを特別に設計する必要があります。これは、自動増分キーなどを使用しないことを意味します。これはロイヤル PITA になる可能性があります。アプリケーションによっては、スケールアップがはるかに簡単になるのはそのためです。
「localhost」経由で別の VM にアクセスすることはできません。localhost は、現在のサーバーへのアクセスを定義します。そのサーバーが VM であるかどうかは重要ではありません。データベース サーバーを名前で参照する必要があります。これで、データベース VM を別の物理サーバーに移行しても、名前で参照しているため、影響はありません。それ以外の考慮事項はありません。