1,010 を超えるグループのメンバーであるユーザー アカウントにログオンすると、Windows Server ベースのコンピューターで失敗する可能性があります

この記事では、1,010 を超えるグループのメンバーであるユーザー アカウントのログオンが失敗する問題を解決します。

適用対象: Windows Server 2008 R2 Service Pack 1
元の KB 番号: 328889

現象

ユーザーがローカル コンピューター アカウントまたはドメイン ユーザー アカウントを使用してコンピューターにログオンしようとすると、ログオン要求が失敗する可能性があります。 次のエラー メッセージが表示されます。

ログオン メッセージ: システムは、ログオンの試行中に、ユーザーのセキュリティ コンテキストが多すぎるセキュリティ ID を蓄積したため、ログオンできません。 もう一度やり直すか、システム管理者にお問い合わせください。

この問題は、ログオン ユーザーが約 1,010 以上のセキュリティ グループの明示的または推移的なメンバーである場合に発生します。

アプリケーションとセキュリティ イベント ログ ID 4625 には、次のエラー コードが表示されることがあります。

0xc000015a

エラーは STATUS_TOO_MANY_CONTEXT_IDS

原因

ユーザーがコンピューターにログオンすると、ローカル セキュリティ機関 (LSA、ローカル セキュリティ機関サブシステムの一部) によってアクセス トークンが生成されます。 トークンは、ユーザーのセキュリティ コンテキストを表します。 アクセス トークンは、ユーザーがメンバーになっているすべてのグループの一意のセキュリティ識別子 (SID) で構成されます。 これらの SID には、ユーザーとグループ アカウントの SIDHistory からの推移的なグループと SID 値が含まれます。

アクセス トークン内のユーザーのグループ メンバーシップの SID を含む配列には、1,024 個以下の SID を含めることができます。 LSA はトークンから SID を削除できません。 そのため、SID が増える場合、LSA はアクセス トークンの作成に失敗し、ユーザーはログオンできなくなります。

SID の一覧がビルドされると、LSA は、ユーザーのグループ メンバーシップの SID (推移的に評価) に加えて、いくつかの汎用の既知の SID も挿入します。 そのため、ユーザーが約 1,010 個を超えるカスタム セキュリティ グループのメンバーである場合、SID の合計数は 1,024 SID の制限を超える可能性があります。

重要

  • 管理者アカウントと管理者以外のアカウントの両方のトークンは、制限の対象となります。
  • カスタム SID の正確な数は、ログオンの種類 (対話型、サービス、ネットワークなど) と、トークンを作成するドメイン コントローラーとコンピューターのオペレーティング システムバージョンによって異なります。
  • 認証プロトコルとして Kerberos または NTLM を使用しても、アクセス トークンの制限には影響しません。
  • Kerberos クライアント設定 MaxTokenSize については、「ユーザーが 多数のグループに属している場合の Kerberos 認証に関する問題」で説明されています。 Kerberos コンテキストのトークンは、Windows Kerberos ホストによって受信されたチケットのバッファーを指します。 チケットのサイズ、SID の種類、SID 圧縮が有効かどうかに応じて、バッファーはアクセス トークンに収まる数よりも少ない SID またはそれ以上の SID を保持できます。

カスタム SID の一覧には、次のものが含まれます。

  • ユーザー/コンピューターのプライマリ SID と、アカウントがメンバーであるセキュリティ グループ。
  • ログオンのスコープ内のグループの SIDHistory 属性の SID。

SIDHistory 属性には複数の値を含めることができるため、アカウントが複数回移行された場合、1,024 SID の制限にすばやく到達できます。 アクセス トークン内の SID の数は、次の状況でユーザーがメンバーになっているグループの合計数より少なくなります。

  • ユーザーは、SIDHistory と SID がフィルター処理される信頼されたドメインからのユーザーです。
  • ユーザーは、SID が検疫される信頼全体の信頼されたドメインからのユーザーです。 その後、ユーザーと同じドメインの SID のみが含まれます。
  • リソースのドメインからのドメイン ローカル グループ SID のみが含まれます。
  • リソース サーバーからのサーバー ローカル グループ SID のみが含まれます。

これらの違いにより、ユーザーは 1 つのドメイン内のコンピューターにログオンできますが、別のドメイン内のコンピューターにはログオンできない可能性があります。 ユーザーは、ドメイン内の 1 つのサーバーにログオンできますが、同じドメイン内の別のサーバーにはログオンできない場合もあります。

NTDSUTIL を使用して、影響を受けるユーザーのドメイン グループ メンバーシップについて確認できます。 また、フォレストの境界を越えて機能するグループ メンバーシップ評価ツールがあります。 このツールは、次のユーザーにも機能します。

  • 1,024 SID の制限を十分に超えているユーザー
  • 65,535 バイトのバッファーでも Kerberos がチケット取得に失敗するグループが非常に多いユーザー

次の手順を実行します。

  1. AD 管理ツールを持つコンピューター (ドメイン コントローラーまたは RSAT を持つコンピューター) でコマンド プロンプトを開きます。

  2. ツールに gro mem eva 切り替えて、次のスクリーンショットとして使用可能なコマンドを取得します。

    gro mem eva コマンドを実行した後の出力のスクリーンショット。

  3. 評価に必要な DC に接続します。

    • アカウント DC %s の設定 - ユーザーのドメインの DC
    • グローバル カタログ %s - ユーザーのフォレストの GC を設定する
    • リソース DC %s - リソース ドメインの DC を設定する
    • 必要に応じて資格情報を設定するか、結果が正しくないと思われる場合やコレクションが失敗した場合は詳細ログを設定します。
  4. 次のように評価を実行します (例: の管理contoso.com)。

    Run contoso.com Admin

  5. 実行では、手順 1 から 2 のユーザーの詳細、手順 3 のリソース ドメイン グループの詳細を収集し、手順 4 と 5 でレポートをコンパイルします。

  6. 結果は、次のスクリーンショットのように、現在のディレクトリの TSV ファイルに格納されます。

    スクリーンショットは、結果が現在のディレクトリの TSV ファイルに格納されることを示しています。

TSV ファイルを読み取る場合は、次のガイドを参照してください。

  • SID の種類: グループ/ユーザーまたは SIDHistory のプライマリ SID かどうかを通知します。
  • SID 履歴の数: SIDHistory の SID の数は、このアカウントによって導入されますか?
  • 1 レベルの MemberOf Count: このエントリは、1 つのレベル (エントリのメンバー) でコレクションに追加される SID の数を示します。
  • MemberOf Count の合計数: このエントリはコレクションに合計でいくつの SID を追加しますか?
  • グループ所有者: 委任されたグループ管理を持つ環境の場合、ユーザー ログオンを 攻撃 するためにグループを使用する方法に関するヒントが得られる場合があります。
  • グループの種類: Sid の種類。 WellKnown、ユーザー SID、グローバル、ユニバーサル セキュリティ グループは、このユーザー用に作成されたすべてのトークンに含まれます。 ドメイン ローカル セキュリティ グループは、このリソース ドメイン内にのみ存在します。 ユーザーが特定のリソース ドメインでのみログオンの問題を抱えている場合に重要な場合があります。
  • メンバー WhenChanged (UTC): グループ メンバーシップに対する最新の変更。 これは、ユーザーが最初にログオンの問題を報告した時刻と関連付けるのに役立ちます。

変更の対象となるグループを見つけるためのヒント:

  • SIDHistory を持つグループには、SID の数を減らすのに役立つ優れた活用があります。

  • 入れ子に他の多くのグループを導入するグループには、SID の数を減らす優れた活用があります。

  • グループ名の手がかりを探して、グループが使用されなくなったかどうかを判断します。 たとえば、ソフトウェア展開ソリューションでアプリケーションごとにグループを持つお客様がいました。 office2000 または access2000含むグループが見つかりました。

  • グループ リストのレポートをサービス管理者とアプリケーション管理者に渡します。 不要になったグループを特定します(この部署のこのユーザーのみ)。

制限事項:

  • このツールには、この記事で以下に示す特殊な SID や WellKnown SID は含まれていません。 そのため、ユーザーが正常にログオンするには、レポートの 1,024 からいくつかの SID をクリアする必要があります。

  • このツールでは、サーバーローカル グループについても説明しません。 リソース ドメインの特定のサーバーでのみ問題が発生した場合は、ユーザーまたはそのグループの一部がサーバー ローカル グループのメンバーである可能性があります。

サーバー ローカル グループとそのメンバーの一覧を取得するには:

注:

管理者特権のコマンド プロンプトで管理者として実行します。

Net localgroup | findstr * > %computername%-grouplist.txt

ドメインからメンバーの一覧を取得するには:

Md server-groups

For /f "delims=*" %d in (%computername%-grouplist.txt) do Net localgroup %d | findstr \ > server-groups\%d-domain-memberlist.txt**

そこで報告されたグループを NTDSUTIL のユーザー レポートと組み合わせて一致させます。

解決方法

この問題を解決するには、状況に応じて、次のいずれかの方法を使用します。

方法 1

この解決策は、次の状況に適用されます。

  • ログオン エラーが発生したユーザーは管理者ではありません。
  • 管理者は、コンピューターまたはドメインに正常にログオンできます。

この解決は、ユーザーのグループ メンバーシップを変更するアクセス許可を持つ管理者が実行する必要があります。 管理者は、ユーザーが約 1,010 を超えるセキュリティ グループのメンバーでなくなったことを確認するために、ユーザーのグループ メンバーシップを変更する必要があります。 推移的なグループ メンバーシップとローカル グループ メンバーシップを検討してください。

ユーザー トークン内の SID の数を減らすオプションには、次のようなものがあります。 NTDSUTIL からのデータ収集は、変更または削除のスコープ内のグループを確認するのに役立ちます。

  • 十分な数のセキュリティ グループからユーザーを削除します。

  • 未使用のセキュリティ グループを配布グループに変換します。 配布グループは、アクセス トークンの制限に対してカウントされません。 変換されたグループが必要な場合は、配布グループをセキュリティ グループに変換できます。

  • セキュリティ プリンシパルがリソース アクセスに SID 履歴に依存しているかどうかを判断します。 そうでない場合は、これらのアカウントから SIDHistory 属性を削除します。 権限のある復元を使用して属性値を取得できます。

注:

ユーザーがメンバーにできるセキュリティ グループの最大数は 1,024 ですが、ベスト プラクティスとして、その数を 1,010 未満に制限します。 この数値は、LSA によって挿入される汎用 SID の領域を提供するため、トークンの生成が常に成功することを確認します。

方法 2

この解決策は、管理者アカウントがコンピューターにログオンできない状況に適用されます。

グループ メンバーシップが多すぎるためにログオンが失敗したユーザーが Administrators グループのメンバーである場合、管理者アカウントの資格情報を持つ管理者 (つまり、既知の相対識別子 [RID] が 500 のアカウント) を持つ管理者は、[ セーフ モード ] スタートアップ オプション (または [セーフ モード とネットワークスタートアップ] オプションを選択) を選択してドメイン コントローラーを再起動する必要があります。 セーフ モードでは、管理者アカウントの資格情報を使用してドメイン コントローラーにログオンする必要があります。

Microsoft はトークン生成アルゴリズムを変更しました。 LSA は、管理者アカウントのアクセス トークンを作成して、管理者アカウントがメンバーである推移的なグループまたは推移的なグループの数に関係なくログオンできるようにします。 これらのセーフ モードのスタートアップ オプションのいずれかを使用すると、管理者アカウント用に作成されるアクセス トークンには、すべての組み込みグループと、管理者アカウントがメンバーであるすべてのドメイン グローバル グループの SID が含まれます。

通常、これらのグループには次のものが含まれます。

  • Everyone (S-1-1-0)
  • BUILTIN\Users (S-1-5-32-545)
  • BUILTIN\Administrators (S-1-5-32-544)
  • NT AUTHORITY\INTERACTIVE (S-1-5-4)
  • NT AUTHORITY\Authenticated Users (S-1-5-11)
  • LOCAL (S-1-2-0)
  • Domain\Domain Users (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-513)
  • Domain\Domain Admins (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-512)
  • BUILTIN\Pre-Windows 2000 互換性のあるアクセス (S-1-5-32-554) (全員がこのグループのメンバーの場合)
  • ドメイン コントローラーが Windows Server 2003 を実行している場合、NT AUTHORITY\This Organization (S-1-5-15)

注:

セーフ モードのスタートアップ オプションを使用する場合、Active Directory ユーザーとコンピューター スナップイン ユーザー インターフェイス (UI) は使用できません。 Windows Server 2003 では、管理者は[セーフ モードとネットワーク] スタートアップ オプションを選択してログオンすることもできます。このモードでは、Active Directory ユーザーとコンピュータースナップイン UI を使用できます。

管理者は、セーフ モードのスタートアップ オプションのいずれかを選択し、管理者アカウントの資格情報を使用してログオンした後、ログオン 拒否サービスの原因となったセキュリティ グループのメンバーシップを特定して変更する必要があります。

この変更が行われた後、ドメインのレプリケーション待機時間と等しい期間が経過した後、ユーザーは正常にログオンできるようになります。

方法 3

このオプションは、特定のサーバー セットで使用されるリソースへのアクセスを許可するために作成されたグループが多数あり、他の多くのサーバーに関連しない場合に最大の魅力を持ちます。 ユーザーのアクセス トークンには、常にユーザー、グローバル、およびユニバーサル グループの SID が含まれます。 ただし、リソース サーバーがあるドメインの Domain-Local グループの SID のみが含まれています。 したがって、ユーザーがメンバーになっている 600 グループから、400 は 2 つのサーバー グループ上のファイル サーバー リソースへのアクセスを提供するのに役立ち、次のアイデアが実現可能な場合があります。

  • Domain-Local グループの数ごとにサーバーを複数のグループに分割します。
  • すべてのグループとサーバーを持つ 1 つのリソース ドメインではなく、必要なサーバーを含むグループのみが定義されている複数のドメインがあります。
  • ドメイン ローカル グループが少し必要なサーバーには、別のドメインがあります。 たとえば、Exchange はユニバーサル グループに対して強い優先設定を持つ Exchange サーバーです。

詳細

アカウントの汎用 SID には、多くの場合、次のものが含まれます。

  • Everyone (S-1-1-0)
  • BUILTIN\Users (S-1-5-32-545)
  • BUILTIN\Administrators (S-1-5-32-544)
  • NT AUTHORITY\Authenticated Users (S-1-5-11)
  • ログオン セッション Sid (S-1-5-5-X-Y)
  • BUILTIN\Pre-Windows 2000 互換アクセス (S-1-5-32-554) ユーザーがこのグループのメンバー (入れ子になっている) の場合

重要

ツール Whoami は、多くの場合、アクセス トークンの検査に使用されます。 このツールでは、ログオン セッション SID は表示されません。

ログオン セッションの種類に応じた SID の例:

  • LOCAL (S-1-2-0)
  • コンソール ログオン (S-1-2-1)
  • NT AUTHORITY\NETWORK (S-1-5-2)
  • NT AUTHORITY\SERVICE (S-1-5-6)
  • NT AUTHORITY\INTERACTIVE (S-1-5-4)
  • NT AUTHORITY\TERMINAL SERVER USER (S-1-5-13)
  • NT AUTHORITY\BATCH (S-1-5-3)

よく使用されるプライマリ グループの SID:

  • Domain\Domain Computers (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-515)
  • Domain\Domain Users (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-513)
  • Domain\Domain Admins (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzzzz-512)

ログオン セッションの検証方法を文書化した SID(次のいずれかの値)。

  • 認証機関によってアサートされた ID (S-1-18-1)
  • サービス アサート ID (S-1-18-2)

トークン のコンテキストと要求の詳細に関する詳細情報を提供する SID。複数の可能な場合があります。

  • 使用されているデバイス要求 (S-1-5-21-0-0-0-496)
  • 使用されているユーザー要求 (S-1-5-21-0-0-0-497)
  • この組織証明書 (S-1-5-65-1)
  • トークンは PKI 検証 ID の助けを借りて構築されました (S-1-18-4)
  • トークンは MFA アプローチを使用して構築されました (S-1-18-5)
  • Credential Guard が使用されました (S-1-18-6)

トークンの整合性レベルを記述する SID(最も一般的な例:

  • 中必須レベル (S-1-16-8192)
  • 高い必須レベル (S-1-16-12288)

アクセス トークンには、ユーザー/コンピューターの配信元に対する SID が含まれています。次のいずれかの値です。

  • NT AUTHORITY\OTHER_ORGANIZATION (S-1-5-1000)
  • NT AUTHORITY\This Organization (S-1-5-15) アカウントがコンピューターと同じフォレストからの場合。

注:

  • SID エントリ ログオン セッション SID に関するメモでわかるように、ツール出力の一覧に SID をカウントせず、すべてのターゲット コンピューターとログオンの種類に対して完了していると想定してください。 アカウントに 1,000 を超える SID がある場合、この制限に達する危険性があると考える必要があります。 トークンが作成されるコンピューターによっては、サーバーまたはワークステーションのローカル グループも追加できることも忘れないでください。
  • xxxxxxxx-yyyyyyyy-zzzzzzzz は、SID のドメインまたはワークステーション コンポーネントを示します。

次の例は、ユーザーがドメイン内のコンピューターにログオンするときに、ユーザーのトークンに表示されるドメイン ローカル セキュリティ グループを示しています。

この例では、Joe が ドメイン A に属し、ドメイン ローカル グループ Domain A\Chicago Users のメンバーであるとします。 Joe は、ドメイン ローカル グループ Domain B\Chicago Users のメンバーでもあります。 Joe がドメイン A に属するコンピューター (ドメイン A\Workstation1 など) にログオンすると、コンピューター上の Joe に対してトークンが生成され、トークンには、すべてのユニバーサルおよびグローバル グループ メンバーシップに加えて、ドメイン A\シカゴ ユーザーの SID も含まれます。 Joe がログオンしたコンピューター (ドメイン A\Workstation1) がドメイン A に属しているため、ドメイン B\シカゴ ユーザーの SID は含まれません。

同様に、Joe が ドメイン B に属するコンピューター (ドメイン B\Workstation1 など) にログオンすると、コンピューター上の Joe に対してトークンが生成され、トークンには、すべてのユニバーサルおよびグローバル グループ メンバーシップに加えて、ドメイン B\シカゴ ユーザーの SID も含まれます。Joe がログオンしたコンピューター (ドメイン B\Workstation1) がドメイン B に属しているため、ドメイン A\シカゴ ユーザーの SID は含まれません。

ただし、Joe が ドメイン C に属するコンピューター (ドメイン C\Workstation1 など) にログオンすると、Joe のユーザー アカウントのすべてのユニバーサル グループ メンバーシップとグローバル グループ メンバーシップを含むログオン コンピューターで Joe のトークンが生成されます。 ドメイン A\シカゴ ユーザーの SID もドメイン B\シカゴ ユーザーの SID もトークンに表示されません。Joe がメンバーであるドメイン ローカル グループは、Joe がログオンしたコンピューター (ドメイン C\Workstation1) とは異なるドメインにあるためです。 逆に、Joe がドメイン C に属するドメイン ローカル グループのメンバー (ドメイン C\シカゴ ユーザーなど) の場合、コンピューター上の Joe に対して生成されるトークンには、すべてのユニバーサル グループ メンバーシップとグローバル グループ メンバーシップに加えて、ドメイン C\シカゴ ユーザーの SID も含まれます。

関連情報