4

System.Diagnostics Tracing を (乱用) 使用する Web アプリケーションがあります。いつものように、今週本番に入るまではすべて順調でしたが、リスナーの誰も被害を受けていませんでした。

少し調べてみると、明らかにユーザー アカウントの権限の問題でした。ApplicationPoolIdentityからLocalSystemに変更するとうまくいくようです。ただし、本番環境では、実行するユーザーを LocalSystem に変更することはできません。アンマネージ コードを実行するために必要なセキュリティ アクセス許可と関係があると思われます。

ApplicationPoolIdentity でトレースを機能させる別の方法はありますか? または (システム管理者が提案したように) その ApplicationPool を実行するためのカスタム アカウントを作成する必要がありますか?

4

1 に答える 1

4

TraceListeners がヒットしていないという証拠はありますか? 攻撃された可能性が高いようですが、必要なリソース (ファイルなど) にアクセスする権限がありませんでした。その場合、ソリューションは、適切なディスク フォルダーに対する ApplicationPoolIdentity アクセス許可を付与するのと同じくらい簡単です。

使用しているリスナーの詳細を投稿することをお勧めします (例: <system.diagnostics>web.config ファイルのセクションと、表示されている正確なエラーのセクション)。

アンマネージ コードを実行するために必要なセキュリティ アクセス許可と関係があると思われます。

アンマネージ コードを使用していると思われるトレース リスナーはどれですか?

ユーザーがアクセス許可を持つ必要があるフォルダーで EventLogTraceListener と TextWriterListener を試しました。

アプリケーション プール ID にアクセス許可を明示的に付与する必要がありますが、これには既定ではアクセス許可がありません。

「IIS AppPool\DefaultAppPool」または使用している任意のアプリケーション プール名に、TextWriterListener によって使用されるフォルダーへの読み取り/書き込みアクセス許可を付与します。

イベント ログに関しては、通常、非管理者はイベント ソースを作成する権限を持っていないため、アプリケーションのインストール中にイベント ソースを手動で作成するか、既存のイベント ソース (「 .NET ランタイム」)。

アンマネージ コードのアクセス許可が必要なのは特定のリスナーではなく、トレース機能全体だと思います。

ここで間違ったツリーを吠えています。アンマネージ コードを実行するためのアクセス許可はCode Access Securityアクセス許可であり、アプリケーションを実行するアカウントの影響を受けません。そして、LocalSystem アカウントで正常に動作すると言います。

于 2013-09-13T19:41:30.940 に答える