CIFS の制約付き委任ACCESS_DENIEDエラーで失敗する
この記事は、中間層サーバーでネットワーク共有を使用するサービスにアクセスするときに発生する アクセス拒否 エラーを修正するのに役立ちます。
元の KB 番号: 2602377
現象
中間層サーバーでネットワーク共有を使用するサービスにアクセスすると、ユーザーは資格情報の入力を求め、最終的に access denied エラーが発生します。
シナリオの例
シナリオ 1
ユーザーは資格情報の入力を求められます。次の条件に該当する場合、アクセスは最終的にアクセス拒否エラーで失敗します。
- IIS Web サイトは、パススルー認証と CIFS 用に構成された制約付き委任を使用して、リモート共有を指すホーム ディレクトリで設定されます。
- その共有にアクセスする IIS アプリケーション プールは、サービス アカウントの ID で実行されています。
- ドメイン アカウントは、ファイル サーバー上の cifs サービスの委任に対して信頼されます。
- ファイル サーバーと Web サーバーは、[適用対象] セクションに一覧表示されているオペレーティング システムを実行しています。
シナリオ 2
- Web アプリがユーザーとしてファイル サーバーにアクセスしようとしています。
- その共有にアクセスする IIS アプリケーション プールは、サービス アカウントの ID で実行されています。 ドメイン アカウントは、ファイル サーバー上の cifs サービスの委任に対して信頼されます。
- CIFS 用に構成された制約付き委任は、ファイル サーバーのサービス アカウントで構成されます。
- ファイル サーバーと Web サーバーの種類は、[適用対象] セクションに一覧表示されます。
シナリオ 3:
- クライアントからアクセスされているサーバー側アプリケーションは、ユーザーとしてリモート共有にアクセスしています。
- サーバー側アプリケーションは、サービス アカウントのコンテキストで実行されています。
- サービス アカウントは委任に対して信頼され、ファイル サーバーの CIFS 委任用に構成されます。
- ファイル サーバーと Web サーバーの種類は、[適用対象] セクションに一覧表示されます。
原因
これは、制約付き委任が関係する場合の MrxSmb 2.0 と Kerberos の間の問題として識別されています。
回避策
回避策 1
CIFS の制約付き委任を実行するアプリケーションの ID として、サービス アカウントの代わりにマシン アカウントを使用します。 ドメインの機能レベルが Windows Server 2003、Windows Server 2008、または Windows Server 2008 R2 の場合は、制約付き委任を構成します。
Web サーバー ドメインのドメイン コントローラーでこれを行うには、次の手順に従います。
- [スタート]、[管理ツール] の順にクリックし、[Active Directory ユーザーとコンピュータ] をクリックします。
- ドメインを展開し、[コンピュータ] フォルダを展開します。
- 右側のウィンドウで、Web サーバーのコンピューター名を右クリックし、[プロパティ] を選択し、[委任] タブをクリックします。
- [指定したサービスへの委任に対してこのコンピューターを信頼する] チェック ボックスをオンにします。
- [Kerberos のみを使用する] が選択されていることを確認し、[OK] をクリックします。
- [追加] をクリックします。 [サービスの追加] ダイアログ ボックスで、[ユーザーまたはコンピューター] をクリックし、IIS からユーザーの資格情報を受け取るファイル サーバーの名前を参照または入力します。 OK をクリックします。
- [利用可能なサービス] ボックスの一覧で、CIFS サービスを選択します。 OK をクリックします。
回避策 2
サービス アカウントまたはドメイン アカウントとしてアプリケーションの ID を使用する必要がある場合は、次の回避策を使用します。
Note
この回避策は、コンピューター アカウントで認証プロトコルの委任を使用する必要があるため、推奨されません。 [認証プロトコルを使用する] オプションが選択されている場合、アカウントはプロトコル遷移で制約付き委任を使用します。
- [スタート]、[管理ツール] の順にクリックし、[Active Directory ユーザーとコンピュータ] をクリックします。
- ドメインを展開し、[コンピュータ] フォルダを展開します。
- 右側のウィンドウで、Web サーバーのコンピューター名を右クリックし、[プロパティ] を選択し、[委任] タブをクリックします。
- [指定したサービスへの委任に対してこのコンピューターを信頼する] チェック ボックスをオンにします。
- [任意の認証プロトコルを使用する] が選択されていることを確認し、[OK] をクリックします。
- [追加] をクリックします。 [サービスの追加] ダイアログ ボックスで、[ユーザーまたはコンピューター] をクリックし、IIS からユーザーの資格情報を受け取るファイル サーバーの名前を参照または入力します。 OK をクリックします。
- [利用可能なサービス] ボックスの一覧で、CIFS サービスを選択します。 OK をクリックします。
- 左側のウィンドウで、[ユーザー] フォルダーを展開します。
- 右側のウィンドウで、アプリケーション プールの ID であるサービス アカウントを右クリックし、[プロパティ] を選択して、[委任] タブをクリックします。
- [指定したサービスへの委任に対してこのコンピューターを信頼する] チェック ボックスをオンにします。
- [Kerberos のみを使用する] が選択されていることを確認し、[OK] をクリックします。
- [追加] をクリックします。 [サービスの追加] ダイアログ ボックスで、[ユーザーまたはコンピューター] をクリックし、IIS からユーザーの資格情報を受け取るファイル サーバーの名前を参照または入力します。 OK をクリックします。
- [利用可能なサービス] ボックスの一覧で、CIFS サービスを選択します。 [OK] をクリックします。