2012-03-04 19 views
1

現在、接続文字列を使用してデータベースの資格情報を認証しています。成長とコンプライアンスのために、開発者はウェブサイトが使用するデータベースクレデンシャルを「見る」ことはもはや許されません。この問題に対する解決策は、統合認証を使用することです。 App Poolごとにユーザを設定し、そのユーザがデータベースにアクセスできるようにすることを計画しました。セキュリティ上の問題ASP.NET統合認証

私の質問です:このアプローチではセキュリティ上の懸念はありますか?接続文字列からDBの資格情報を削除するまでは、もっと簡単な方法がありますか?

答えて

0

接続文字列がweb.configファイルに格納されている場合、デverlopersが見ることができないファイルの別の製品バージョンを作成できます。これは、アプリケーションプールを使用した統合認証よりもテストと設定が簡単です。

警告の1つの言葉:開発者をあまり制限すると、変化の速度が遅くなります。残りの世界は動いているので、これは通常、アプリケーションが死んだレガシーパッケージになることで終了します。あなたが成長、改善、または拡大を計画しているなら、それは危険です。

+0

Sarboxという言葉では、開発者のアクセスを制限する以外に選択肢はありません。 –

+0

[Sarbanes-Oxley Act](http://en.wikipedia.org/wiki/Sarbanes-Oxley_Act)?どのようにして、あなたは開発者を制限するが、システム管理者のアクセス権を制限しないだろうか? – Andomar

+0

それは懸念の分離を強要します。開発者はデータベースへの管理アクセス権を持ちませんし、自分自身のコードを展開することもできません。少なくともErnst&Youngによると。 –

0

アプリケーションプールのIDの使用は、設定するにはかなり複雑になる可能性があります。trust and delegationの問題を考慮してください。 より良いオプションは、暗号化を使用してsecuring connection stringsにすることができます。

1

本番データベースへのアクセスを確保し、監査する必要がある場合は、Windows認証は、多くの理由からSQL認証よりも良い選択です:

  1. あなたがNTを介してデータベースにアクセスできるユーザーを厳密に制御することができますグループとパーミッションが含まれています。つまり、特にデータベースにアクセスできるユーザーが分かります。 SQL認証によるアクセスのプールは、パスワードを知っている人だけが制限します。パスワードを知っているn人の人を考えると、ある時点で誰が何をしたのかを追跡することは、それを考慮すると、より難しい(しかし、不可能ではない)。

  2. システム管理者のみがデータベースにアクセスできるNT IDのパスワードを知っている必要があります。実際には多くの設定はユーザ名のみを知ることしかできません

  3. ログインとアクセスは、SQL Serverログインよりはるかに簡単にドメインレベルで追跡できます。

何それは文句を言わないあなたを与えることである:開発者が本番データを見ることができないことを確実にする

  1. 能力 - 簡単にデータ

  2. を選択するために、いくつかの診断ルーチンを含むことができ、アプリを書き込み、誰が
  3. 実動データのみを実稼働状態に保つようにします。実働データベースのバックアップを作成する(テスト用にUAT環境に復元する)と、実動データが簡単に公開される可能性があります。

このアプローチの問題は、すでに他の記事で議論されています。特にASP.Netアプリケーションでは、偽装/委任(WebサーバーがNTユーザーとしてアクセスできるようにする)か、信頼できるユーザーモデル(特定のユーザーにアクセスする固定IDを構成する)を使用するかどうかを検討する必要がありますリソース)。

これは、使用しているIISバージョンによってさらに複雑になります。

+0

アプリケーションプールはユーザー固有ではなく、アプリケーション固有のものです。アプリケーションは引き続き1つのアカウントを使用してデータベースに接続します。エンドユーザーの資格情報でログオンするには、エンドユーザーを偽装する必要があります。偽装の副作用は、接続プーリングがもはや機能しなくなることです。 – Andomar

+0

「信頼できるユーザー」として実行されているアプリケーションの個々のアプリケーションプールを作成できますが、操作を実行するときにサイトにアクセスする現在のユーザーIDも取得します。接続プーリングについて真実ですが、それはユーザーごとに偽装され、共有できないからです。 SOXは、しばしば、あなたが何をしているのか、誰が何をすることができるのかを知っていることを確認することです。私の古い仕事場では、SQL Authを使ったアプリケーションはSOX認証に失敗しました。 – dash