回答:
SQL認証を使用する正当な理由は2つしかないと思います。
提案しているシナリオ(Webサーバーのホストが完全に危険にさらされている)では、何もあなたを保護できません。ハッカーは、少なくともWebサーバーが実行できるすべてを DBサーバーで実行できます。そして、そのような場合の徹底的な防御は、損失を最小限に抑えることを教えてくれると思います:ur Webサーバーが使用するアカウントのDB権限を、最低限必要なものだけに制限します。次に、Webサーバーホストが侵害された場合、Webサーバーアカウントよりも高い権限を昇格するために使用できないことを確認します(つまり、WWWアカウントよりもDBで高い権限を持つ資格情報を使用するWWWホストには他のサービスはありません)。これらは基本的なセキュリティ原則であり、使用される認証スキームとは関係ありません。
sql認証とWindows認証はどちらのシナリオでも明確な利点はありませんが、考慮すべき他の問題があります。
最後の注意点:TDSプロトコルは、トラフィック上でクリアテキストでsql authパスワードを公開しますが、通常、トラフィックのSSL暗号化を要求することで軽減されます。
では、なぜweb.configにパスワードをクリアで保存するSQL認証WWWホストがまだ表示されるのですか?それらは悪い開発者/管理者です、彼らの一人ではありません。
msdn.microsoft.com/en-us/library/aa378326(VS.85).aspx
technet.microsoft.com/en-us/library/ms189067.aspx
SSPIを使用しない場合、ユーザー名とパスワードをソースファイルにハードコーディングしています。
ユーザー名とパスワードをソースファイルにハードコーディングしている場合、すべての従業員がアクセスできます。
これは比較的安全ではありません。不満を抱いた元従業員が情報を悪用する可能性があります。訪問者はどこかで画面上にコードを見るかもしれません。または、ソースコードが誤って公開される可能性があります。
SSPIの利点は、パスワードが平文のどこにも保存されないことです。
これまでの他の答えは良かったが、私は別の答えを投げ込む:管理。
遅かれ早かれ、おそらく複数のSQL Serverになってしまうでしょう。アプリと複数のSQL Serverの間でSQL認証を管理することは、特にセキュリティの問題に遭遇した場合、少し苦痛になります。Windows認証パスワードを一度変更すると、すべてのサーバーですぐに変更されます。SQL認証パスワードをローテーションする必要がある場合は、さらに苦痛になります。おそらく、まったくパスワードを使用しないでしょう。それはセキュリティ上のリスクです。
ここでは100%確信はありませんが、主なポイントは、SQL認証は安全ではないため、Windows認証を使用することをお勧めします。アプリのセットアップ方法に応じて、Windows認証を使用して、適切な資格情報を暗号化された形式でマシンに保存することもできます。SQL認証ではそれが本当に可能だとは思いません。難読化できますが、最終的には明確にする必要があります。
また、ハッカーがサーバーに侵入できるからといって、ゲームオーバーになるわけではありません。ハッカーは、権限のないプロセスを制御できますが、サーバー上で他の操作は実行できません。そのため、すべてを管理者またはシステムとして実行するのではなく、最小特権のサービスアカウントを使用することが重要です。
私は、あなたが内部プライベートネットワーク上の内部Webサーバーについて話していると仮定していると言って、これらすべての序文を述べます。
マシンのなりすましから始めましょう。アプリケーションプールIDがネットワークサービスであり、.NETアプリケーションに偽装がない場合、はい、Webアプリケーションはマシンのコンピューターアカウントを使用してバックエンドSQL Serverに接続します。そして、それはあなたがそのマシンアカウントへのアクセスを許可したことを意味します。MicrosoftのCRMはこのように機能します。
ただし、IDを指定した場合、そのユーザーアカウントはSQL Serverにアクセスする必要があります。攻撃者がWebサーバーを侵害した場合、IDアカウントと実質的に同じアクセス権を持っていることは間違いありませんが、実際のところ、SQL Serverログオンを使用してもここでは何も変わりません。アクセスが可能になったら、バックエンドSQL Serverでセキュリティが許可する最大値まで、Webアプリケーションを変更して必要な処理を実行できます。
次に、SSPIを使用する理由について説明します。何よりもまず、SQL Serverベースのログインを使用していません。つまり、Active Directoryはセキュリティの唯一のソースです。つまり、無効なアクセスを判断する通常の監査手段があるということです。第二に、それを必要とする他のアプリがない限り、SQL ServerをWindows認証のみのモードのままにしておくことができます。つまり、SQL Serverログインは許可されません。つまり、saに対する攻撃は開始される前に停止されます。そして最後に、回復が容易になります。SQL Serverベースのログインを使用する場合、SIDと暗号化されたパスワードでログインを抽出する必要があります。Windowsベースのユーザーアカウントを「サービスアカウント」として使用している場合、ログインを作成して新しいSQL Serverにアクセスすると、
質問はどちらが「良い」ですか?質問者のコンテキスト、価値、優先順位に依存しているため、答えることは困難です。
個人的には、SQL認証が好きです。
最後のポイント:接続マネージャークラスをコーディングして各接続文字列を試行します。これにより、構成内の最初のパスワードを変更し、変更をプッシュして、2番目の接続にフェールオーバーし、MSQLでパスワードを更新できます。最初のものが再び使用されます。2番目のパスワードを最初のパスワードと同じに設定し、次回の準備をするには、最終的な構成変更が必要です。