1

統合セキュリティを使用してリモート SQL Server 2005 に接続する必要がある (セキュリティ チームによって規定された) asp.net アプリ (アクセスに Windows 認証を使用) があります。カスタム アカウント (元の発信者になりすますことはできません) 経由:

<identity impersonate = "true" userName="domainname\user" password="password" />

これはうまくいきます。問題は、私のアプリが SSRS サーバーに接続して、ReportViewer コントロールを使用してレポートのニーズを報告することです。レポート サーバーは別のサーバー上にあり、セキュリティ チームは、このサーバーへのすべての呼び出しが監査目的で元のウィンドウのアカウントを使用する必要があることを義務付けています。私の唯一の選択肢は、アプリをフォルダーに分けて、web.config で「場所」タグを使用し、別の ID タグを使用することだったようです。そのような:

 <location path="Reporting">
    <system.web>
      <identity impersonate = "true"/>
    </system.web>
  </location>

注: ユーザー名とパスワードが指定されていないため、元の発信者になりすます必要があります。

ただし、問題をさらに複雑にするために、私のアプリはマスターページ/コンテンツ ページ アプリです。マスター ページは、SQL を呼び出してメニューなどを設定します。肝心なのは、デュアル偽装トラックが機能していないということです。私は手を上げて、これはできないと宣言する準備ができています。SSRS監査のニーズを満たしながら、カスタムドメインアカウントとしてSQLサーバーに接続する元の呼び出し元をアプリに偽装させる方法があった場合。SQL 認証を使用できません: 許可されていませんが、この問題は解決します。

4

2 に答える 2

1

次の設定を試しましたか。

  1. 偽装を true に設定します。これは、アプリケーションへの認証と、現在ログインしているユーザーを使用するための SSRS へのアクセスに必要です。

  2. 統合セキュリティが true に設定されている SSRS への 1 つの接続文字列を使用して、偽装されたユーザーがそのまま通過できるようにします。

  3. カスタム ユーザー名とパスワードを接続文字列にハード コーディングして、2 番目の接続文字列を使用します。web.config の接続文字列セクションを暗号化して、人間の目には見えないようにすることができますが、フレームワークは、接続の作成時にこれをオンザフライで自動的に復号化します。

同様の状況があり (特定のデータを取得するには特定のアカウントが必要ですが、残りのサービス機能の一般的な偽装が必要です)、このセットアップは機能しています。

編集: コマンド プロンプトから web.config を暗号化するための一般的な構文は次のとおりです。

aspnet_regiis -pef "connectionStrings" [PhysicalPathToApplication] -prov "DataProtectionConfigurationProvider"

暗号化はマシンごとに実行されるため、暗号化は特定のサーバーで実行する必要があります。必要に応じて、これに関するドキュメントをさらに引き出すことができます。

于 2009-06-18T16:41:47.977 に答える
0

偽装のオンとオフを切り替えることができるはずなので、サイトを実行しているデフォルトのアカウントを使用することに戻ることができます. 私は確認する必要があります。私がそれを行ってからしばらく経ちました。

これは、それを行う方法の始まりのように見えます:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = 
    ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

//Insert your code that runs under the security context of the authenticating user here.

impersonationContext.Undo();

基本的に、必要な呼び出しに対して適切なユーザーになりすまして、コンテキストを「元に戻して」オフにします。その後、デフォルトのユーザーに戻ります。

Windows ID クラスへのリンクは次のとおりです。

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx

于 2009-06-18T16:39:51.723 に答える