SPN と UPN の一意性

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

作成者: Justin Turner、Windows グループ、シニア サポート エスカレーション エンジニア、

Note

この内容は Microsoft カスタマー サポート エンジニアによって作成され、TechNet が通常提供しているトピックよりも詳細な Windows Server 2012 R2 の機能やソリューションの技術的説明を求めている、経験豊かな管理者とシステム設計者を対象としています。 ただし、TechNet と同様の編集過程は実施されていないため、言語によっては通常より洗練されていない文章が見られる場合があります。

概要

Windows Server 2012 R2 のブロックの作成を実行しているドメイン コント ローラーには、サービス プリンシパル名 (SPN) とユーザー プリンシパル名 (UPN) が重複しています。 これには、復元または削除されたオブジェクトの復元またはオブジェクトの名前の変更の結果と重複してになる場合が含まれます。

背景

重複するサービス プリンシパル名 (SPN) がよく発生し認証エラーが発生し、LSASS の CPU 使用率が過剰につながる可能性があります。 重複する SPN または UPN の追加をブロックするインボックス メソッドはありません。 *

重複する UPN の値は、内部設置型の間で同期を中断 AD および Office 365 です。

*Setspn.exe では、一般的に新しい Spn を作成するために使用し、重複の確認を追加する Windows Server 2008 と共にリリースされたバージョンに組み込まれていた機能します。

SEQ テーブル アラビア語の 1: UPN と SPN の一意性

機能 コメント
UPN の一意性 重複する UPN があると、Office 365 などの Microsoft Entra ID ベースのサービスにより、オンプレミスの AD アカウントの同期が中断されます。
SPN の一意性 Kerberos では、相互認証用の Spn が必要です。 Spn が重複すると、認証エラーが発生します。

Upn と Spn の一意性の要件の詳細については、次を参照してください。 一意性制約します。

現象

8467 または 8468 のエラー コードのシンボリック 16 進数、または同等の文字列に記録されます様々 な画面に表示されるダイアログ ボックスとディレクトリ サービス イベント ログでイベント ID 2974 にします。 次の状況でのみが、重複する UPN または SPN を作成しようとすると、ブロックされます。

  • 書き込みは、Windows Server 2012 R2 の DC によって処理されます。

SEQ テーブル アラビア語の 2: UPN と SPN の一意性エラー コード

Decimal (10 進数型) Hex シンボル String
8647 21C 7 ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST 追加または変更のために指定される SPN 値がフォレスト全体で一意ではないため、操作が失敗しました。
8648 21C 8 ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST 追加または変更のために指定される UPN 値がフォレスト全体で一意ではないため、操作が失敗しました。

UPN が一意でない場合、新しいユーザーの作成が失敗する

DSA.msc

選択したユーザーのログオン名は既にこのエンタープライズで使用されています。 別のログオン名を選択してからやり直してください。

Screenshot that shows a message that says the logon name you have chosen is already in use.

既存のアカウントを変更します。

指定したユーザーのログオン名は、企業で既に存在します。 プレフィックスを変更するか、一覧から別のサフィックスを選択するか、新しいものを指定します。

Screenshot that shows a message that says the logon name you used already exists in the enterprise.

Active Directory 管理センター (DSAC.exe)

既に存在している UPN を使用して Active Directory 管理センターに新しいユーザーを作成しようとすると、次のエラーが返されます。

Screenshot that shows a message that says the new user was not created.

シーケンス図を図 アラビア語の 1 エラーが重複する UPN のために新しいユーザーの作成が失敗したときに、AD 管理センターで表示されます

イベント 2974 ソース: ActiveDirectory_DomainService

Screenshot that shows

シーケンス図を図 エラー 8648 アラビア語の 2 イベント ID 2974

イベント 2974 では、ブロックされていた値とその値がまだ含まれている (最大 10) 1 つまたは複数のオブジェクトの一覧を示します。 次の図では、そのdhunt@blue.contoso.com UPN 属性の値を確認できます 他の 4 つのオブジェクトに既に存在します。 これが Windows Server 2012 R2 の新機能であるため、ダウンレベルのドメイン コント ローラーの書き込み試行の処理時に混在環境で重複する UPN と Spn の偶発的な作成がまだ発生します。

Screenshot that shows ARABIC 2 Event ID 2974 with error 8648.

シーケンス図を図 アラビア 3 イベント 2974 が重複する UPN を含んでいるすべてのオブジェクトを表示します

ヒント

イベント ID 2974s を定期的に確認してください。

  • 重複する UPN または Spn を作成する試行を識別します。
  • 既にが重複しているオブジェクトを識別します。

8648 = "追加または変更のために指定される UPN 値がフォレスト全体で一意ではないため、操作が失敗しました。"

SetSPN:

使用する場合、Setspn.exe は、Windows Server 2008 のリリース以降に組み込み重複データの SPN の検出には、 "-S" オプション。 SPN の重複の検出をバイパスするにを使用して、 "-A" ただしオプションします。 SetSPN を使用するには、オプションを使用して Windows Server 2012 R2 DC を対象とする場合、重複する SPN の作成がブロックされます。 表示されるエラー メッセージが表示されている、-s オプションを使用する場合と同じ:"Duplicate SPN 見つかると、操作を中止しています"。

ADSIEDIT:

Operation failed. Error code: 0x21c8
The operation failed because UPN value provided for addition/modification is not unique forest-wide.
000021C8: AtrErr: DSID-03200BBA, #1: 0: 000021C8: DSID-03200BBA, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)

Screenshot that shows that the operation failed with error code 0x21c8.

シーケンス図を図 アラビア語の 4 エラー メッセージが重複する UPN の追加がブロックされたときに、ADSIEdit の表示

Windows PowerShell

Windows Server 2012 R2

Screenshot that shows a message indicating that the operation failed.

Windows Server 2012 R2 DC を対象とする、Server 2012 から実行されている PowerShell:

Screenshot that shows an unknown error.

Windows Server 2012 R2 の DC を対象とする Windows Server 2012 で実行されている DSAC.exe:

Screenshot that shows a user creation error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

シーケンス図を図 アラビア語の 5 DSAC ユーザー作成エラーの非-Windows Server 2012 R2 の Windows Server 2012 R2 DC を対象とするときに

Screenshot that shows a user modification error on non-Windows Server 2012 R2 while targeting Windows Server 2012 R2 DC.

シーケンス図を図 アラビア語の 6 DSAC ユーザー変更エラーの非-Windows Server 2012 R2 の Windows Server 2012 R2 DC を対象とするときに

重複する UPN になるオブジェクトの復元が失敗します。

Screenshot that shows how to restore an object.

Screenshot that shows that the operation failed because the UPN value provided for addition/modification is not unique forest-wide.

オブジェクトが重複する UPN のため復元に失敗した場合にイベントは記録されません/SPN。

オブジェクトの UPN は、復元するために一意である必要があります。

  1. ごみ箱内のオブジェクト上に存在する UPN を識別します。

  2. 同じ値を持つすべてのオブジェクトを識別します。

  3. 重複する UPN(s) を削除します。

削除された objectUsing repadmin.exe に競合する UPN を識別します。

Repadmin /showattr DCName "DN of deleted objects container" /subtree /filter:"(msDS-LastKnownRDN=<NAME>)" /deleted /atts:userprincipalname
repadmin /showattr DCName "CN=Deleted Objects,DC=blue,DC=contoso,DC=com" /subtree /filter:"(msDS-LastKnownRDN=Dianne Hunt2)" /deleted /atts:userprincipalname

C:\>repadmin /showattr winbluedc1 "cn=deleted objects,dc=blue,dc=contoso,dc=com" /subtree /filter:"(msds-lastknownrdn=Dianne Hunt2)" /deleted /atts:userprincipalname
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Object
s,DC=blue,DC=contoso,DC=com
    1> userPrincipalName: dhunt@blue.contoso.com

同じ UPN を持つすべてのオブジェクトを識別するために: を使用して Repadmin.exe

repadmin /showattr WinBlueDC1 "DC=blue,DC=contoso,DC=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN

C:\>repadmin /showattr winbluedc1 "dc=blue,dc=contoso,dc=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
DN: CN=Administrator,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser1,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser10,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser100,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt,OU=Marketing,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Objects,DC=blue,DC=contoso,DC=com

ヒント

以前ドキュメントに未記載 削除/ に削除されたオブジェクトを結果セットに含める repadmin.exe でパラメーターを使用

  • 開いて Active Directory 管理センターに移動して グローバル検索

  • 選択、 LDAP に変換 オプション ボタン

  • (userPrincipalName =ConflictingUPN)

    • 置換 ConflictingUPN 競合している実際の UPN を持つ
  • [適用] を選択します

Screenshot that shows the Global Search page.

Windows PowerShell を使用する

Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com

SPN and UPN uniqueness

オブジェクトを復元する必要がある場合は、重複する UPN を他のオブジェクトから削除する必要があります。 1 つのみのオブジェクトの場合、重複を削除するには ADSIEdit を使用すれば事足ります。 重複部分のオブジェクトが複数の場合は、Windows PowerShell はより優れたツールを使用するにする可能性があります。

Windows PowerShell を使用する UserPrincipalName 属性を null。

Screenshot that shows the operation failed with error code 0x21c7.

Note

UserPrincipalName 属性は単一値属性は、この手順は、重複する UPN だけを削除です。

重複する SPN

Screenshot that shows the error message displayed in ADSIEdit when addition of duplicate SPN is blocked.

シーケンス図を図 アラビア語の 8 エラー メッセージが重複する SPN の追加がブロックされたときに、ADSIEdit の表示

ディレクトリ サービス イベント ログに記録する ActiveDirectory_DomainService イベント ID 2974します。

Operation failed. Error code: 0x21c7
The operation failed
The attribute value provided is not unique in the forest or partition. Attribute:
servicePrincipalName Value=<SPN>
<Object DN> Winerror: 8467

Screenshot that shows the error logged when creation of duplicate SPN is blocked.

シーケンス図を図 アラビア語の 9 エラーが重複する SPN の作成がブロックされたときの記録

ワークフロー

  • if DC = = GC

    • Offbox 呼び出しは必要ありません、クエリはローカルで満たすことができます。

    • Upn

      • クエリ ローカル フォレスト全体の UPN インデックスの指定した UPN (userPrincipalName はグローバル インデックス)

        • エントリが返される場合は = = 0 ->が書き込みを処理します

        • エントリが返される場合は! = 0 - の> 書き込みが失敗します

          • イベントのログ記録

          • また拡張エラーが返されます。

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • SPN の場合

      • クエリ ローカル フォレスト全体の SPN インデックス指定された SPN に (サービス プリンシパル名はグローバル インデックス)

        • エントリが返される場合は = = 0 ->が書き込みを処理します

        • エントリが返される場合は! = 0 - の> 書き込みが失敗します

          • イベントのログ記録

          • また拡張エラーが返されます。

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

  • 場合 DC! = GC

    • Offbox 呼び出しは、望ましいものの、重要ではありません。つまり、これは、ベスト エフォートの一意性チェックということです

      • GC を検出できない場合にのみ、ローカル DIT に対してチェックを実行します

      • このようなを示すために記録されたイベント

    • Upn

      • 最も近い GC に対して LDAP クエリを送信するにはありますか。 指定した UPN のクエリの GC のフォレスト全体に関わる UPN インデックス (userPrincipalName はグローバル インデックス)

        • エントリが返される場合は = = 0 ->が書き込みを処理します

        • エントリが返される場合は! = 0 - の> 書き込みが失敗します

          • イベントのログ記録

          • また拡張エラーが返されます。

            • 8648:

              ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST

    • SPN の場合

      • 最も近い GC に対して LDAP クエリを送信するにはありますか。 指定された SPN にクエリ GC のフォレスト全体に関わる SPN インデックス (サービス プリンシパル名はグローバル インデックス)

        • エントリが返される場合は = = 0 ->が書き込みを処理します

        • エントリが返される場合は! = 0 - の> 書き込みが失敗します

          • イベントのログ記録

          • また拡張エラーが返されます。

            • 8647:

              ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST

削除されたオブジェクトが再アニメーション化されると、SPN 値または UPN 値の一意性についてチェックが実行されます。 重複が見つかった場合、要求は失敗します。

  • DNS ホスト名、SAM アカウントの名前などの特定の属性変更については、変更が行われると、それに応じて SPN が更新されます。 プロセスでは、古い Spn を削除し、新しい Spn が構築され、データベースに追加します。 このパスをトリガーする対象となる必須の属性の変更は次のとおりです。

    • ATT_DNS_HOST_NAME

    • ATT_MS_DS_ADDITIONAL_DNS_HOST_NAME

    • ATT_SAM_ACCOUNT_NAME

    • ATT_MS_DS_ADDITIONAL_SAM_ACCOUNT_NAME

    • ATT_SERVER_REFERENCE_BL

    • ATT_USER_ACCOUNT_CONTROL

重複する SPN の新しい値のいずれかの場合は、変更が失敗します。 上記の一覧の重要な属性は、ATT_DNS_HOST_NAME (コンピューター名) と ATT_SAM_ACCOUNT_NAME (SAM アカウント名) です。

SPN と UPN の一意性の表示にしてください。

これは、最初のいくつかの"実際に使ってみる"、モジュール内の活動です。 このモジュールには、別のラボ ガイドはありません。 「次のことを試してみてください」アクティビティは、自由な形式のアクティビティであり、ラボ環境でレッスンの内容を確認することができます。 次のプロンプトまたはスクリプトのオプションを独自のアクティビティを思い付くなりません。

注意

  • これは、最初のいくつかの"実際に使ってみる"アクティビティ。
  • このモジュールの別のラボ ガイドではありません。
  • 実際に使ってみる アクティビティは、本質的に自由に使用できるアクティビティがラボ環境のレッスンの内容を表示します。
  • 次のプロンプトまたはスクリプトのオプションを独自のアクティビティを思い付くなりません。
  • すべてのセクションではありますが、 実際に使ってみる プロンプトで、適切な場所は、演習のレッスンの内容を調査が推奨されます。

SPN と UPN の一意性をテストします。 これらの指示に従ってか、独自に完了します。

  1. UPN を持つ新しいユーザーを作成します。

  2. アカウントの Spn を作成します。

  3. 既に以前に定義された UPN を持つ新しいユーザーを作成するか、既存のアカウントの UPN を変更します。 別のアカウントの SPN に同じ操作を行います

    1. 既に使用されている UPN を持つ既存のユーザー アカウントを設定します。

      1. PowerShell、ADSIEDIT、または Active Directory 管理センター (DSAC.exe) を使用します。
    2. 既存のアカウントで既に使用されている SPN を設定します。

      1. Windows PowerShell、ADSIEDIT をまたは SetSPN
  4. エラーを確認します。

必要に応じて

  1. Active Directory 管理センターで "AD のごみ箱" を有効にしても問題がないことを、クラスルームの講師とともに確認します。 その場合は、次の手順に移動します。

  2. ユーザー アカウントの UPN を設定します。

  3. アカウントを削除する

  4. 削除されたアカウントとして同じ UPN を持つ別のアカウントを設定します。

  5. ごみ箱 GUI を使用して、アカウントを復元しようとしてください。

  6. 前の手順で確認したエラーが表示されていると想像してみてください。 (実行したステップの履歴は表示されていません) 目標は、アカウントの復元を完了することです。 手順などについては、ブックを参照してください。