この記事では、アプリケーションが Windows Server でアクセス チェックを実行するときに AuthZ がアクセス拒否エラーで失敗する問題の解決策を示します。
元の KB 番号: 4055652
現象
以下のシナリオについて考えてみます。
- Windows Server 2008 R2 以降のバージョンに基づく Active Directory 環境で作業している。
- Authorization (AuthZ) インターフェイスを使用するアプリケーションを実行します。 このようなアプリケーションには、Microsoft Exchange 2016 と Microsoft Exchange 2013 が含まれます。
このシナリオでは、アプリケーションがアクセス チェックを実行しようとすると、AuthZ は失敗し、アクセス拒否エラー メッセージを返します。
原因
この問題は、 Network アクセス: SAM へのリモート呼び出しを許可するクライアントを制限する ポリシーが有効になっているために発生します。 このポリシーでは、ローカルのセキュリティ アカウント マネージャー (SAM) データベースと Active Directory 内のユーザーとグループを列挙できるユーザーを制御します。
このポリシーは、次のバージョンの Windows または Windows 更新プログラムがインストールされた後に導入されます。
- Windows 10 バージョン 1607 以降のバージョン
- KB 4103198がインストールされている Windows 10 バージョン 1511
- KB 4012606がインストールされている Windows 10 バージョン 1507
- KB 4102219がインストールされている Windows 8.1
- KB 4012218がインストールされている Windows 7
- Windows Server 2016 RS1 以降のバージョン
- KB 4012219がインストールされている Windows Server 2012 R2
- KB 4012220がインストールされている Windows Server 2012
- KB 4012218がインストールされている Windows Server 2008 R2
ポリシー名とレジストリ名
名前 | 説明 |
---|---|
ポリシー名 | ネットワーク アクセス: SAM へのリモートの呼び出しを許可するクライアントを制限する |
Location | コンピューターの構成\Windows の設定\セキュリティ設定\ローカル ポリシー\セキュリティ オプション |
レジストリ サブキー | HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\RestrictRemoteSam |
レジストリの種類 | REG_SZ |
レジストリ値 | 展開するセキュリティ記述子の SDDL を含む文字列。 |
Windows Server 2016 管理ツールを使用してポリシーを定義する場合、既定では、管理者のみがこのインターフェイスへのアクセスを許可します。
「現象」セクションに記載されているエラーは、次の条件に該当する場合に発生します。
- ポリシーはドメイン コントローラーで有効になっています。
- Exchange Server を実行しているサーバーのアカウントは、インターフェイスの使用を許可されていません。
解決方法
この問題を解決するには、次のいずれかの方法を使用します。
方法 1: アクセスを許可するようにポリシーを更新する
グループでは、インターフェイスにアクセスする必要があるサーバーがメンバーとして追加されます。
たとえば、"Exchange サーバー" ユニバーサル グループには、このアクセスが必要です。
アプリケーションに必要なアカウントを含むグループがない場合は、そのようなグループを作成して管理する必要があります。 これは、タスクに固有のグループへのアクセスを提供するため、推奨されるソリューションです。
方法 2: ポリシーを無効にする
RestrictRemoteSAM レジストリ エントリをクリアするか、ポリシーを削除します。
Note
ドメイン コントローラーでは、オブジェクトごとのアクセス許可を定義して、アカウントの可視性を制御できます。 これらのアクセス許可は、リモート SAM RPC 呼び出しによって受け入れられます。 これは、メンバーまたはスタンドアロン コンピューターのアカウントに対しては実行できません。
その他の情報
詳しくは、次の資料を参照してください。
ネットワーク アクセス: SAM へのリモートの呼び出しを許可するクライアントを制限する
Exchange Server の問題の例
以下のシナリオについて考えてみます。
- Active Directory を Windows Server 2008 R2 以降のバージョンと共に実行している。
- 電子メール コラボレーション プラットフォームとして Microsoft Exchange 2016 または Microsoft Exchange 2013 を実行している。
Note
この例では Exchange Server を指定していますが、この問題は、この方法で AuthZ を使用する他のアプリケーションと同様に適用されます。
このシナリオでは、Exchange Server 2016 を実行しているサーバーでのオフライン アドレス帳 (OAB) の生成が失敗します。
また、次のようなイベント 17004 (ソース: MSExchange メールボックス アシスタント プロバイダー) のエントリも表示されます。 このエントリは、OAB の生成に使用される "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}" 調停メールボックスがマウントされているサーバー上のアプリケーション ログに記録されます。
OAB "\Default Offline Address Book" の生成に失敗しました。
Dn: CN=既定のオフライン アドレス帳、CN=オフライン アドレス一覧、CN=アドレス一覧
Container,CN=Companyname,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=company,DC=com ObjectGuid: 543b7f18-2750-4969-9afd-e333a0542406
統計:
S:Exp=Microsoft.Exchange.Security.Authorization.AuthzException: ユーザー SID の AuthzInitializeContextFromSid が失敗しました: S-1-5-21-.... ---> System.ComponentModel.Win32Exception: アクセスが拒否されました
--- 内部例外スタック トレースの終わり ---
at
Microsoft.Exchange.Security.Authorization.ClientSecurityContext.InitializeContextFromSecurityAccessToken(AuthzFlags flags)
at Microsoft.Exchange.Security.Authorization.ClientSecurityContext..ctor(ISecurityAccessToken securityAccessToken, AuthzFlags flags)
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.PropertyManager..ctor(OfflineAddressBook offlineAddressBook, SecurityIdentifier userSid, String userDomain, Boolean habEnabled, Boolean ordinalSortedMultivaluedProperties, Int32 httpHomeMdbFixRate, IOABLogger logger)
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.OABGenerator.Initialize()
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.OABGeneratorAssistant. BeginProcessingOAB(AssistantTaskContext assistantTaskContext)
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.OABGeneratorAssistant.<>c__DisplayClass12.<SafeExecuteOabTask>b__e()
at Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch(Action tryDelegate, Func'2 filterDelegate, Action'1 catchDelegate)
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.OABGeneratorAssistant.SafeExecuteOabTask(OABGeneratorTaskContext context)
at Microsoft.Exchange.MailboxAssistants.Assistants.OABGenerator.OABGeneratorAssistant.<>c__DisplayClassc.<ProcessAssistantStep>b__9()
at Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch(Action tryDelegate, Func'2 filterDelegate, Action'1 catchDelegate)
オフライン アドレス帳が生成されると、Exchange はメールボックス アシスタントがタスクの実行を許可されているかどうかを確認します。 SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c} システム メールボックスは、フォレスト ルート ドメインのユーザー コンテナーの無効なユーザー アカウントです。 Exchange では、このタスクに Windows の AuthZ エンジンが使用されます。
Exchange Server を実行しているサーバーのネットワーク トレースを調べると、次のような Kerberos S4U 要求が失敗していることがわかります。
KerberosV5 10.10.10.11 16268 10.10.10.10 Kerberos(88) KRB_TGS_REQ, Realm: AND.CORP、Sname: XXXXX
PADataType PA-FOR-USER (129) 12408 48 Int64
UserRealm AND 296 56 String
UserName SM_0ddc5cc213b943a5b 16 280 KerberosV5.PrincipalName
->これは、AuthZ が Kerberos S4U を試行していることを通知します。
2017-10-27T16:34:52.1334577 0,0041316 10772 15016 KerberosV5 10.10.10.10 Kerberos(88) 10.10.10.11 16268 KRB_ERROR、KDC_ERR_CLIENT_REVOKED: クライアント資格情報が取り消されました。 status:
STATUS_ACCOUNT_DISABLED->システム メールボックス アカウントが無効になっていると、この処理は無効になります。
AuthZ は、システム メールボックスの tokenGroupsGlobalAndUniversal 属性に対してクエリを実行し、ドメイン ローカル グループの列挙を続行することで、このエラーからの復旧を試みます。 LDAP セッションは暗号化されます。 そのため、結果がネットワーク トレースに表示されません。
次の手順では、ドメイン ローカル グループを取得します。 AuthZ は SAM RPC を使用してこれらのグループ メンバーシップを取得します。 プログラムがドメイン コントローラーに接続すると、次のようなエラー通知が表示されます。
12035 SAMR 10.10.10.11 6457 10.10.10.16 SMB(445) _SamrConnect5Request{ServerName =\\
Cont-DC1.company.com
,DesiredAccess=32,InVersion=1,InRevisionInfo=SAMPR_REVISION_INFO{V1=SAMPR_REVISION_INFO_V1{Revision=3,SupportedFeatures=0}}
FileId Persistent = 0x0000002800008761、Volatile = 0x0000002800000005 576 128 SMB2。SMB2Fileid
これは失敗し、次のメッセージが返されます。
12036 MSRPCE 0 10.10.10.16 SMB(445) 10.10.10.11 6457 RpcconnFaultHdrT, Call: 0x00000002, Context:
0x0001、状態: ERROR_ACCESS_DENIED、キャンセル: 0x00
SMB2 0 10.10.10.16 SMB(445) 10.10.10.11 6457 IoctlResponse, Status: Success, FileName:
samr@# 0x0000002800008761、CtlCode: FSCTL_PIPE_TRANSCEIVE
ドメイン コントローラーのシステム イベント ログには、次のようにイベント 16969 が記録されます。
ログ名: システム
ソース: Microsoft-Windows-Directory-Services-SAM
イベント ID: 16969
レベル: 警告
説明:
過去 900 秒間に 8 回の SAM データベースへのリモート呼び出しが拒否されました。
詳細については、 https://go.microsoft.com/fwlink/?LinkId=787651を参照してください。
調整が無効になっている場合は、アクセス拒否インシデントごとに 1 つの 16965 イベントとクライアント情報が表示されます。
データ収集
Microsoft サポートからのサポートが必要な場合は、グループ ポリシーの問題に TSS を使用して Gather 情報に記載されている手順に従って情報を収集することをお勧めします。