8

したがって、Web サーバー アプリはデータベースに接続する必要があり、他の一部のアプリには、起動時に実行されるスタートアップ スクリプトがあります。

これらのアプリケーションの名前/パスワードを保存する最良の方法は何ですか?

  • セキュリティ。たとえば、システム管理者にデータベースのパスワードを知られたくない場合があります。
  • 保守性。たとえば、パスワードが変更されたときに構成を簡単に変更できるようにするなど。

Windows と Linux の両方のソリューションに感謝します。

4

7 に答える 7

10

パスワードを保護する最善の方法は、パスワードの使用をやめることです。信頼できる接続を使用する: 方法:ASP.NET2.0でWindows認証を使用してSQLServerに接続します。次に、隠すものは何もありません。web.configとソースを世界中に公開しても、データベースにアクセスすることはできません。

それでも問題が解決しない場合は、ASP.NETに組み込まれている構成暗号化システムを使用してください。

于 2008-08-14T09:03:47.627 に答える
5

PostgreSQLは、この種の状況に対する優れたソリューションをドキュメントで提供しています。基本的に、sshを使用して、マシンのポートをリモートマシンのPostgreSQLサーバーポートにブリッジします。これには、認証の3つの段階があります。

  1. 特定のユーザーのみに接続させるなど、ローカルポートへのアクセスを制限します。
  2. 特定のユーザーとしてsshを使用してPostgreSQLホストへのパスワードなしの接続を設定します。
  3. ユーザーにssh接続を許可して、パスワードなしでPostgreSQLにローカルアクセスできるようにします。

これにより、ユーザーアカウントが保護され、ssh構成が適切であり、どこにでもパスワードを保存する必要がないかどうかのセキュリティが低下します。

編集:これはTCP/IPポートをリッスンするすべてのデータベースで機能することを追加する必要があります。たまたまPostgreSQLで説明されています。また、iptables(またはLinux以外の同等のもの)にポート制限を実行させる必要があります。これを参照してください。

于 2010-05-25T07:01:51.893 に答える
3

私は lomaxx に同意します: 誰かがすでにサーバー上にいるか、(システム管理者のように) サーバーに広範囲にアクセスできる場合、ゲームはほぼ終了です。したがって、必要な程度に安全であると信頼できるサーバーを使用するという考えになります。具体的には:

  • システム管理者を信頼する必要があります
  • 同じサーバーでコードを実行している他の人を信頼する必要があります(これが、共有ホスティングが私にとって大きな問題である理由です)

それを超えて、環境変数は、これらのタイプの資格情報を保存するための一般的な選択肢のようです。これは、ソースへのアクセスのみ (たとえば、開発ボックスを侵害することによって) が直接明らかにされず、適切にローカライズできることを意味するためです。各サーバー (開発、テストなど)。

于 2008-08-14T06:41:12.330 に答える
1

ほとんどの場合、パスワードをプレーンテキストファイル(base64など)で難読化するだけで十分だと思います。保存されたパスワードをrootアクセス権を持つ決定されたシステム管理者から完全に保護することはできないため、実際に試す必要はありません。ただし、単純な難読化は、ショルダーサーファーに誤ってパスワードを公開することを防ぎます。

より複雑な代替手段は、次のいずれかの専用の安全なパスワードサーバーを設定することです。

  • パスワード復号化サービスを提供します
  • 安全性の低い他のサーバーで使用するためのパスワードを実際に保存します

使用するネットワークプロトコルによっては、tcpdumpを使用した不正なシステム管理者から保護できない場合があります。また、デバッガーを使用して決定されたシステム管理者からも保護されない可能性があります。その時点で、Kerberosチケットのようなものを検討する時期かもしれません。

于 2008-08-14T07:13:19.597 に答える
1

プレーンテキスト?それらがあなたのサーバー上にある場合、サーバーが不正アクセスを許可しないように十分に安全であることを願っています. 人々がサーバー上の設定ファイルにアクセスできる場合、何か問題がずっと前に発生しています。

于 2008-08-14T06:12:31.013 に答える
1

明確化: セキュリティ、保守性の観点から (たとえば、ログインを変更する必要がある場合、後で見つけることができるかなど)

@lomax: おそらく、物理サーバーにアクセスできるすべての人 (sysadmins など) にパスワードを見せたくないかもしれません。

ありがとう!

于 2008-08-14T06:20:30.187 に答える
0

対称暗号化キーをバイナリに焼き付け、そのバイナリが起動時にディスク上のファイルから暗号化されたユーザー名/パスワードを読み取るようにすることができます。

ただし、コードはどこかのソース リポジトリに格納されている可能性が高いため、これは難読化以上のものではありません。

ファイアウォールとプライベート ネットワーク バブルを使用して物理的およびネットワーク経由でサーバーへのアクセスを制御し、アクセス許可がロックされたディスクにパスワードを平文 (または base-64 エンコード) で保存することをお勧めします。 Web アプリの実行ユーザーに。

また、データベース サーバーをロックダウンして、IP による Web アプリ マシンからの接続のみを受け入れるようにすることもできます。

最終的に問題となるのは、キー (DB のユーザー名とパスワードのペア) を Web アプリでプログラムによって無人で使用できるようにする必要があることです。

于 2008-08-14T06:39:42.627 に答える