SPN と UPN の一意性
作成者: 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
選択したユーザーのログオン名は既にこのエンタープライズで使用されています。 別のログオン名を選択してからやり直してください。
既存のアカウントを変更します。
指定したユーザーのログオン名は、企業で既に存在します。 プレフィックスを変更するか、一覧から別のサフィックスを選択するか、新しいものを指定します。
Active Directory 管理センター (DSAC.exe)
既に存在している UPN を使用して Active Directory 管理センターに新しいユーザーを作成しようとすると、次のエラーが返されます。
シーケンス図を図 アラビア語の 1 エラーが重複する UPN のために新しいユーザーの作成が失敗したときに、AD 管理センターで表示されます
イベント 2974 ソース: ActiveDirectory_DomainService
シーケンス図を図 エラー 8648 アラビア語の 2 イベント ID 2974
イベント 2974 では、ブロックされていた値とその値がまだ含まれている (最大 10) 1 つまたは複数のオブジェクトの一覧を示します。 次の図では、そのdhunt@blue.contoso.com UPN 属性の値を確認できます 他の 4 つのオブジェクトに既に存在します。 これが Windows Server 2012 R2 の新機能であるため、ダウンレベルのドメイン コント ローラーの書き込み試行の処理時に混在環境で重複する UPN と Spn の偶発的な作成がまだ発生します。
シーケンス図を図 アラビア 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)
シーケンス図を図 アラビア語の 4 エラー メッセージが重複する UPN の追加がブロックされたときに、ADSIEdit の表示
Windows PowerShell
Windows Server 2012 R2
Windows Server 2012 R2 DC を対象とする、Server 2012 から実行されている PowerShell:
Windows Server 2012 R2 の DC を対象とする Windows Server 2012 で実行されている DSAC.exe:
シーケンス図を図 アラビア語の 5 DSAC ユーザー作成エラーの非-Windows Server 2012 R2 の Windows Server 2012 R2 DC を対象とするときに
シーケンス図を図 アラビア語の 6 DSAC ユーザー変更エラーの非-Windows Server 2012 R2 の Windows Server 2012 R2 DC を対象とするときに
重複する UPN になるオブジェクトの復元が失敗します。
オブジェクトが重複する UPN のため復元に失敗した場合にイベントは記録されません/SPN。
オブジェクトの UPN は、復元するために一意である必要があります。
ごみ箱内のオブジェクト上に存在する UPN を識別します。
同じ値を持つすべてのオブジェクトを識別します。
重複する 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 を持つ
[適用] を選択します
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
オブジェクトを復元する必要がある場合は、重複する UPN を他のオブジェクトから削除する必要があります。 1 つのみのオブジェクトの場合、重複を削除するには ADSIEdit を使用すれば事足ります。 重複部分のオブジェクトが複数の場合は、Windows PowerShell はより優れたツールを使用するにする可能性があります。
Windows PowerShell を使用する UserPrincipalName 属性を null。
注意
UserPrincipalName 属性は単一値属性は、この手順は、重複する UPN だけを削除です。
重複する SPN
シーケンス図を図 アラビア語の 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
シーケンス図を図 アラビア語の 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 の一意性をテストします。 これらの指示に従ってか、独自に完了します。
UPN を持つ新しいユーザーを作成します。
アカウントの Spn を作成します。
既に以前に定義された UPN を持つ新しいユーザーを作成するか、既存のアカウントの UPN を変更します。 別のアカウントの SPN に同じ操作を行います
既に使用されている UPN を持つ既存のユーザー アカウントを設定します。
- PowerShell、ADSIEDIT、または Active Directory 管理センター (DSAC.exe) を使用します。
既存のアカウントで既に使用されている SPN を設定します。
- Windows PowerShell、ADSIEDIT をまたは SetSPN
エラーを確認します。
必要に応じて
Active Directory 管理センターで "AD のごみ箱" を有効にしても問題がないことを、クラスルームの講師とともに確認します。 その場合は、次の手順に移動します。
ユーザー アカウントの UPN を設定します。
アカウントを削除する
削除されたアカウントとして同じ UPN を持つ別のアカウントを設定します。
ごみ箱 GUI を使用して、アカウントを復元しようとしてください。
前の手順で確認したエラーが表示されていると想像してみてください。 (実行したステップの履歴は表示されていません) 目標は、アカウントの復元を完了することです。 手順などについては、ブックを参照してください。