【解決策】Windows 10でCIFSの制約付き委任が失敗し「アクセスが拒否されました」エラーが発生する原因と対処法
ネットワーク共有を使用する中間層サーバー上のサービスにアクセスする際、ユーザーに対して資格情報の入力を求めるダイアログが表示され、最終的に「アクセスが拒否されました(ACCESS_DENIED)」というエラーが発生することがあります。本記事では、Windows 10環境においてCIFSの制約付き委任がACCESS_DENIEDエラーで失敗する典型的な事例を紹介し、その原因と有効な回避策を詳しく解説します。

共通インターネットファイルシステム(CIFS)は、ネットワークサーバー上のファイルやサービスへの要求を行うための、オープンかつクロスプラットフォームな仕組みを提供するファイル共有プロトコルです。CIFSは、インターネットおよびイントラネットでのファイル共有向けに拡張されたMicrosoftのServer Message Block(SMB)プロトコルをベースとしています。
WindowsでCIFSの制約付き委任が失敗する3つのシナリオ
ユーザーに資格情報の入力が求められ、その結果「アクセスが拒否されました」というエラーでアクセスに失敗する場合、以下の3つのシナリオのいずれかに該当している可能性があります。
シナリオ1:IISとパススルー認証の組み合わせ
- IIS Webサイトのホームディレクトリが、パススルー認証を使用してリモート共有を参照するよう設定されており、CIFSに対する制約付き委任が構成されている。
- 該当する共有にアクセスするIISアプリケーションプールが、サービスアカウントのIDで実行されている。
- ドメインアカウントが、ファイルサーバー上のCIFSサービスに対する委任を信頼するよう設定されている。
シナリオ2:Webアプリケーションからのユーザーアクセス
- Webアプリケーションが、ユーザーの権限でファイルサーバーにアクセスしようとしている。
- 該当する共有にアクセスするIISアプリケーションプールがサービスアカウントのIDで実行されており、ドメインアカウントがファイルサーバー上のCIFSサービスに対する委任を信頼するよう設定されている。
- ファイルサーバー用のサービスアカウントに対し、CIFS向けの制約付き委任が構成されている。
シナリオ3:サーバーサイドアプリケーションからのアクセス
- クライアントからアクセスされる任意のサーバーサイドアプリケーションが、ユーザーの権限でリモート共有にアクセスしている。
- そのサーバーサイドアプリケーションが、サービスアカウントのコンテキストで実行されている。
- サービスアカウントが委任に対して信頼されており、ファイルサーバー向けのCIFS委任が構成されている。
この問題は、制約付き委任が関係する環境におけるMrxSmb 2.0とKerberos間の不具合であることが確認されています。これを解消するため、Microsoftは2つの回避策を提示しています。
回避策1:コンピューターアカウントを使用する(推奨)
CIFSに対する制約付き委任を実行するアプリケーションのIDとして、サービスアカウントの代わりにマシン(コンピューター)アカウントを使用します。ドメインの機能レベルがWindows Server 2003、Windows Server 2008、またはWindows Server 2008 R2である場合に、この方法で制約付き委任を構成できます。
Webサーバーが所属するドメインのドメインコントローラー上で、以下の手順を実行してください。
- [スタート] > [管理ツール] > [Active Directory ユーザーとコンピューター]を開きます。
- ドメインを展開し、続いて[Computers]フォルダーを展開します。
- 右側のウィンドウでWebサーバーのコンピューター名を右クリックし、[プロパティ]を選択して[委任]タブを開きます。
- [指定されたサービスだけにこのコンピューターを委任する]チェックボックスをオンにします。
- [Kerberosのみ]が選択されていることを確認し、[OK]をクリックします。
- [追加]ボタンをクリックします。
- [サービスの追加]ダイアログボックスで[ユーザーまたはコンピューター]をクリックし、IISからユーザーの資格情報を受け取るファイルサーバーの名前を参照または入力します。
- [OK]をクリックします。
- [利用可能なサービス]の一覧からCIFSサービスを選択します。
- [OK]をクリックして完了です。
回避策2:プロトコル遷移を伴う委任(非推奨)
この回避策では、コンピューターアカウントに対して「任意の認証プロトコルを使う」委任を構成する必要があるため、推奨されません。[任意の認証プロトコルを使う]を選択した場合、そのアカウントはプロトコル遷移を伴う制約付き委任を使用することになります。
それでもアプリケーションのIDとしてサービスアカウントやドメインアカウントを使用しなければならない場合は、以下の手順を実行してください。
手順1:Webサーバーのコンピューターアカウントを設定する
- [スタート] > [管理ツール] > [Active Directory ユーザーとコンピューター]を開きます。
- ドメインを展開し、[Computers]フォルダーを展開します。
- 右側のウィンドウでWebサーバーのコンピューター名を右クリックし、[プロパティ]を選択して[委任]タブを開きます。
- [指定されたサービスだけにこのコンピューターを委任する]チェックボックスをオンにします。
- [任意の認証プロトコルを使う]が選択されていることを確認します。
- [OK]をクリックします。
- [追加]ボタンをクリックします。
- [サービスの追加]ダイアログボックスで[ユーザーまたはコンピューター]をクリックし、IISからユーザーの資格情報を受け取るファイルサーバーの名前を参照または入力します。
- [OK]をクリックします。
- [利用可能なサービス]の一覧からCIFSサービスを選択し、[OK]をクリックします。
手順2:アプリケーションプールのサービスアカウントを設定する
- 左側のウィンドウで[Users]フォルダーを展開します。
- 右側のウィンドウで、アプリケーションプールのIDとなっているサービスアカウントを右クリックし、[プロパティ]を選択して[委任]タブを開きます。
- [指定されたサービスだけにこのアカウントを委任する]チェックボックスをオンにします。
- [Kerberosのみ]が選択されていることを確認します。
- [OK]をクリックします。
- [追加]ボタンをクリックします。
- [サービスの追加]ダイアログボックスで[ユーザーまたはコンピューター]をクリックし、IISからユーザーの資格情報を受け取るファイルサーバーの名前を参照または入力します。
- [OK]をクリックします。
- [利用可能なサービス]の一覧からCIFSサービスを選択し、[OK]をクリックして完了です。
本記事が、CIFSの制約付き委任に関する「アクセスが拒否されました」エラーの解決に役立つことを願っています。
-
Windows 11でフォルダのアクセス拒否エラーを解決する6つの方法
Windows 11でフォルダにアクセスしようとした際、「アクセスが拒否されました」というエラーが表示されて困っていませんか?フォルダやファイルの中身を開けず、画面に警告が出てしまうケースは少なくありません。この記事では、Windows 11で発生するフォルダのアクセス拒否エラーを解決するための実用的な対処法を6つご紹介します。 アクセス拒否エラーが発生する主な原因 Windowsが特定のフォルダやファイルへのアクセス権限がないと通知してくる場合、主な原因として以下のようなものが考えられます。 管理者権限の制限や不適切な設定 フォルダのアクセス許可設定の誤り Googleドライブとの同期に
-
「プロセスを終了できません。アクセスが拒否されました」エラーの解決方法
「ブラウザを起動するたびにメモリを大量に消費して困っています。最近ではさらに悪化し、タスクマネージャーで『タスクの終了』を実行してもバックグラウンドプロセスを停止できません。どうすればいいのでしょうか?」— あるWindowsユーザーの悩み アプリケーションやサービスに関連するプロセスを終了できないという問題は、多くのWindowsユーザーが直面するよくあるトラブルです。「大した問題ではない」と思うかもしれませんが、上記の事例のように、ブラウザが必要以上にPCのメモリを消費しているケースもあります。さらに深刻なケースでは、安全でないソースからダウンロードした悪意のあるアプリケーションがコンピュ