共用方式為


在 Windows Server 型電腦上登入超過 1,010 個群組的用戶帳戶可能會失敗

本文解決了登入超過 1,010 個群組成員的用戶帳戶失敗的問題。

適用於: Windows Server 2016、Windows Server 2019、Windows Server 2022、Windows Server 2025
原始 KB 編號: 328889

徵兆

當用戶嘗試使用本機計算機帳戶或網域用戶帳戶登入計算機時,登入要求可能會失敗。 您會收到下列錯誤訊息:

登入訊息:系統因下列錯誤而無法登入:在登入嘗試期間,使用者的安全性內容累積了太多安全性標識符。 請再試一次,或洽詢您的系統管理員。

當登入用戶是大約 1,010 個或更多安全組的明確或可轉移成員時,就會發生此問題。

應用程式和安全性事件記錄檔識別碼 4625 可能會顯示此錯誤碼:

0xc000015a

錯誤STATUS_TOO_MANY_CONTEXT_IDS

原因

當使用者登入計算機時,Local Security Authority (LSA, Local Security Authority 子系統的一部分) 會產生存取令牌。 令牌代表使用者的安全性內容。 存取令牌是由使用者所屬每個群組的唯一安全性識別碼 (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 和帳戶所屬的安全組。
  • 登入範圍內群組之 SIDHistory 屬性中的 SID

由於 SIDHistory 屬性可以包含多個值,因此如果帳戶移轉多次,就可以快速達到 1,024 個 SID 的限制。 存取權杖中的 SID 數目將小於使用者在下列情況下所屬的群組總數:

  • 用戶來自受信任的網域,其中 SIDHistory 和 SID 已篩選掉。
  • 用戶來自隔離 SID 之信任的受信任網域。 然後,只會包含來自與使用者相同網域的 SID。
  • 只包含來自資源網域的網域本地組 SID。
  • 只包含來自資源伺服器的伺服器本地組 SID。

由於這些差異,使用者可以登入某個網域中的計算機,但無法登入另一個網域中的計算機。 使用者也可以登入網域中的一部伺服器,但無法登入相同網域中的另一部伺服器。

您可以使用 NTDSUTIL 瞭解受影響使用者的網域群組成員資格。 它具有群組成員資格評估工具,也可跨樹系界限運作。 此工具也適用於下列使用者:

  • 遠高於 1,024 個 SID 限制的使用者
  • 在這麼多群組中,Kerberos 即使有 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 類型: 告知您是否是 Group/User 或 SIDHistory 的主要 SID。
  • SID 歷程記錄計數:此帳戶引進的 SIDHistory 有多少個 SID?
  • 一個層級成員計數:此專案在單一層級新增至集合中有多少個SID(項目的成員)?
  • Total MemberOf Count:此專案總共新增至集合多少個 SID?
  • 群組擁有者:對於具有委派群組管理的環境,您可能會收到如何使用太多群組攻擊使用者登入的提示。
  • 群組類型:Sid 的種類。 WellKnown、使用者 SID、全域和通用安全組會位於為此使用者建立的所有令牌中。 網域本機安全組只會在此資源網域中。 當使用者只在特定資源網域中出現登入問題時,就可能很重要。
  • Member WhenChanged (UTC):群組成員資格的最新變更。 這有助於與使用者第一次回報登入問題的時間相互關聯。

尋找要鎖定變更之群組的提示:

  • 具有 SIDHistory 的群組有很好的利用,可協助減少 SID 計數。

  • 透過巢狀結構引進許多其他群組的群組有很好的利用來減少 SID 計數。

  • 尋找組名中的線索,以判斷群組是否不再使用。 例如,我們有一個客戶在其軟體部署解決方案中具有每個應用程式的群組。 我們發現包含 office2000access2000 的群組。

  • 將群組清單的報表傳遞至您的服務和應用程式管理員。 識別不再需要的群組,可能只針對此業務單位或部門中的這個使用者。

限制:

  • 此工具不包含本文下面所列的一些特殊/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 群組的成員時,具有系統管理員帳戶認證的系統管理員(也就是具有 500 個已知相對識別碼 [RID] 的帳戶)必須選取 [安全模式啟動] 選項(或選取 [使用網络啟動的安全模式] 選項來重新啟動域控制器。 在安全模式中,系統管理員必須使用系統管理員帳戶認證登入域控制器。

請參閱 在本機重新啟動目錄服務還原模式中的域控制器

Microsoft已變更令牌產生演算法。 LSA 可以建立系統管理員帳戶的存取令牌,讓系統管理員能夠登入,而不論系統管理員帳戶所屬的可轉移群組或傳輸群組數目。 使用其中一個安全模式啟動選項時,針對系統管理員帳戶建立的存取令牌會包含系統管理員帳戶所屬之所有內建和所有網域全域群組的 SID。

這些群組通常包括:

  • 每個人 (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\已驗證的使用者 (S-1-5-11)
  • 當地 (S-1-2-0)
  • Domain\Domain Users (S-1-5-21-xxxxxxxx-yyyyyy-zzzzzz-513)
  • Domain\Domain Admins (S-1-5-21-xxxxxxxx-yyyyyy-zzzzzz-512)
  • BUILTIN\Pre-Windows 2000 Compatible Access(S-1-5-32-554) 如果 Everyone 是此群組的成員
  • NT AUTHORITY\此組織(S-1-5-15)如果域控制器正在執行 Windows Server 2003

注意

如果使用安全模式啟動選項,則無法使用 Active Directory 使用者和電腦 嵌入式管理單元使用者介面 (UI) 。 在 Windows Server 中,系統管理員也可以選取 [使用網路啟動的安全模式] 選項來登入;在此模式中,Active Directory 使用者和電腦 嵌入式管理單元 UI 可供使用。

在系統管理員藉由選取其中一個安全模式啟動選項並使用系統管理員帳戶的認證來登入之後,系統管理員必須識別並修改造成拒絕登入服務的安全組成員資格。

進行這項變更之後,用戶應該能夠在與網域複寫延遲相等的時間周期之後成功登入。

方法 3

如果您有許多群組建立來授與特定伺服器上所用資源的存取權,而且它們與許多其他伺服器無關,這個選項具有最大的吸引力。 使用者的存取令牌一律包含使用者、全域和通用群組的SID。 不過,它只會包含資源伺服器所在網域的 Domain-Local 群組 SID。 因此,用戶所屬的 600 個群組中,有 400 個正在協助存取兩組伺服器上的檔伺服器資源,然後下列想法可能可行:

  • 根據網域本地組數目,將您的伺服器分割成多個群組。
  • 除了擁有所有群組和伺服器的一個資源網域,還有多個網域,其中只有定義包含所需伺服器之群組。
  • 針對需要網域本地組的伺服器,有個別網域網域。 其中一個範例可能是 Exchange 伺服器,因為 Exchange 具有通用群組的強式喜好設定。

其他相關資訊

帳戶的泛型 SID 通常包括:

  • 每個人 (S-1-1-0)
  • BUILTIN\Users (S-1-5-32-545)
  • BUILTIN\Administrators (S-1-5-32-544)
  • NT AUTHORITY\已驗證的使用者 (S-1-5-11)
  • 登入工作階段 Sid (S-1-5-5-X-Y)
  • 如果使用者是此群組的成員,BUILTIN\Pre-Windows 2000 Compatible Access(S-1-5-32-554)

重要

工具 Whoami 通常用來檢查存取令牌。 此工具不會顯示登入會話 SID。

根據登入工作階段類型的 SID 範例:

  • 當地 (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:

  • 網域\網域計算機 (S-1-5-21-xxxxxxxx-yyyyyyy-zzzzzz-515)
  • Domain\Domain Users (S-1-5-21-xxxxxxxx-yyyyyy-zzzzzz-513)
  • Domain\Domain Admins (S-1-5-21-xxxxxxxx-yyyyyy-zzzzzz-512)

記錄登入會話如何驗證的 SID,下列其中一個值:

  • 驗證授權單位判斷提示的身分識別 (S-1-18-1)
  • 服務判斷提示身分識別 (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 驗證身分識別的協助建置的 (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-yyy-zzzzzzzz 表示 SID 的網域或工作站元件。

下列範例說明當使用者登入網域中的計算機時,哪些網域本機安全組會顯示在使用者的令牌中。

在此範例中,假設 Joe 屬於 網域 A ,而且是網域本地組 Domain A\Chicago Users 的成員。 Joe 也是網域本地組 Domain B\Chicago Users 的成員。 當 Joe 登入屬於網域 A 的電腦時(例如,網域 A\Workstation1),系統會為電腦上的 Joe 產生令牌,且令牌包含,除了所有通用和全域群組成員資格之外,也會包含網域 A\Chicago Users 的 SID。 它不會包含網域 B\芝加哥使用者的 SID,因為 Joe 登入的電腦 (網域 A\Workstation1) 屬於網域 A。

同樣地,當 Joe 登入屬於 網域 B 的電腦(例如網域 B \Workstation1)時,系統會為電腦上的 Joe 產生令牌,而且令牌包含除了所有通用和全域群組成員資格之外,網域 B\芝加哥使用者的 SID;它不會包含網域 A\芝加哥使用者的 SID,因為 Joe 登入的電腦 (網域 B\Workstation1) 屬於網域 B。

不過,當 Joe 登入屬於 網域 C 的電腦(例如網域 C \Workstation1)時,會在登入電腦上產生 Joe 的令牌,其中包含 Joe 使用者帳戶的所有通用和全域群組成員資格。 網域 A\芝加哥使用者的 SID 和網域 B\芝加哥使用者的 SID 都不會出現在令牌中,因為 Joe 所屬的網域本地組與 Joe 登入的電腦位於不同的網域中(網域 C\Workstation1)。 相反地,如果 Joe 是屬於網域 C 的一些網域本地組的成員(例如網域 C\芝加哥使用者),則電腦上 Joe 產生的令牌除了所有通用和全域群組成員資格之外,還會包含網域 C\芝加哥使用者的 SID。

參考資料