Microsoft Entra Connect Sync: userCertificate 属性が原因で発生した LargeObject エラーの処理
Microsoft Entra ID では、userCertificate 属性での証明書の値の個数が、最大 15 に制限されます。 Microsoft Entra Connect が 15 個を超える値を持つオブジェクトを Microsoft Entra ID にエクスポートする場合、Microsoft Entra ID は LargeObject エラーを返し、次のメッセージが表示されます。
提供されたオブジェクトが大きすぎます。 このオブジェクト上の属性値の数を調整してください。 操作は次の同期サイクル時に再試行されます。
LargeObject エラーは、その他の AD 属性が原因で発生する場合があります。 そのエラーが実際に UserCertificate 属性が原因で発生したことを確認するには、オンプレミス AD または Synchronization Service Manager メタバース検索で、そのオブジェクトを検証する必要があります。
LargeObject エラーに関するテナント内のオブジェクトの一覧を取得するには、次のメソッドのいずれかを使用します。
テナントで Microsoft Entra Connect Health の同期が有効になっている場合には、提供される同期エラー レポートを参照できます。
最新の [Microsoft Entra へのエクスポート] 操作をクリックすると、[Synchronization Service Manager の操作] タブに、LargeObject エラーのあるオブジェクトの一覧が表示されます。
対応策オプション
LargeObject エラーが解決されるまで、そのオブジェクトで他の属性を変更しても、Microsoft Entra ID にはエクスポートされません。 エラーを解決する際、以下のオプションを検討できます。
Microsoft Entra Connect をビルド 1.1.524.0 以降にアップグレードします。 Microsoft Entra Connect ビルド 1.1.524.0 では、属性値が 15 個を超える場合は userCertificate 属性と userSMIMECertificate 属性をエクスポートしないように、標準のルールが更新されています。 Microsoft Entra Connect をアップグレードする方法の詳細については、記事「Microsoft Entra Connect: 旧バージョンから最新バージョンにアップグレードする」を参照してください。
証明書の値が 15 個を超えるオブジェクトに対して、実際の値ではなく null 値をエクスポートする送信同期ルールを、Microsoft Entra Connect に実装します。 このオプションは、Microsoft Entra ID の証明書の値が 15 個を超えるオブジェクトに対しては、どの値もエクスポートする必要がない場合に適しています。 この同期規則を実装する方法の詳細については、次のセクション userCertificate 属性のエクスポートを制限する同期規則を実装するを参照してください。
組織で使用されなくなった値を削除することにより、オンプレミスの AD オブジェクトの証明書の値の数を減らします (15 以下)。 これは、有効期限が切れた、または使用されていない証明書が原因で属性が肥大化した場合に適しています。 コマンドレット Remove-ADSyncToolsExpiredCertificates を使用して、オンプレミスの AD で有効期限が切れた証明書を検出、バックアップ、削除できます。 証明書を削除する前に、組織内の公開鍵基板管理者に確認することをお勧めします。
Microsoft Entra ID へのエクスポートから、userCertificate 属性を除外するように、Microsoft Entra Connect を構成します。 この属性は Microsoft Online Services で特定のシナリオを有効にする場合に使用される可能性があるため、通常はこのオプションを使用しないことをお勧めします。 特に次の点に違いがあります。
User オブジェクトの userCertificate 属性は、メッセージの署名と暗号化を行うために Exchange Online と Outlook クライアントによって使用されます。 この機能の詳細については、S/MIME によるメッセージの署名と暗号化の記事を参照してください。
Computer オブジェクトの userCertificate 属性は Microsoft Entra ID により使用され、これにより、Windows 10 オンプレミスのドメイン参加済みデバイスを Microsoft Entra ID に接続できるようにしています。 この機能の詳細については、「Windows 10 エクスペリエンスのためにドメイン参加済みデバイスを Microsoft Entra ID に接続する」を参照してください。
UserCertificate 属性のエクスポートを制限するための同期規則の実装
userCertificate 属性が原因で発生した LargeObject エラーを解決するには、Microsoft Entra Connect で、証明書の値が 15 個を超えるオブジェクトに対しては、実際の値ではなく null 値をエクスポートする送信同期ルールを実装します。 このセクションでは、User オブジェクトの同期規則を実装するために必要な手順について説明しています。 この手順は、Contact および Computer オブジェクトに適用できます。
重要
null 値をエクスポートすると、以前に正常に Microsoft Entra ID にエクスポートされていた証明書の値は削除されます。
この手順は、以下のように要約できます。
- 同期スケジューラを無効にし、進行中の同期がないことを確認します。
- UserCertificate 属性の既存の送信同期規則を検索します。
- 必要な送信同期規則を作成します。
- LargeObject エラーがある既存のオブジェクトで新しい同期規則を検証します。
- LargeObject エラーがある残りのオブジェクトに新しい同期規則を適用します。
- Microsoft Entra ID へのエクスポートを待機している、予期しない変更が存在しないことを確認します。
- 変更を Microsoft Entra ID にエクスポートします。
- 同期スケジューラを再度有効にします。
手順 1:同期スケジューラを無効にし、進行中の同期がないことを確認する
意図しない変更が Microsoft Entra ID にエクスポートされることがないよう、新しい同期ルールの実装中は、必ず同期が実行されないようにします。 組み込みスケジューラを無効にするには、以下のようにします。
Microsoft Entra Connect サーバーで PowerShell セッションを開始します。
以下のコマンドレットを実行して、スケジュールされた同期を無効にします。
Set-ADSyncScheduler -SyncCycleEnabled $false
Note
上記の手順は、組み込みスケジューラが含まれる Microsoft Entra Connect の新しいバージョン (1.1.xxx.x) にのみ適用できます。 Windows タスク スケジューラを使用する Microsoft Entra Connect の以前のバージョン (1.0.xxx.x) を使用しているか、独自のカスタム スケジューラ (一般的ではない) を使用して定期的な同期をトリガーしている場合は、それぞれを無効にする必要があります。
[スタート]、[Synchronization Service] の順に移動して、Synchronization Service Manager を起動します。
[操作] タブに進み、状態が「進行中」になっている操作がないことを確認します。
ステップ 2: UserCertificate 属性の既存の送信同期ルールを検索する
既存の同期ルールが有効になっており、User オブジェクトの userCertificate 属性を Microsoft Entra ID にエクスポートするように構成されている必要があります。 この同期規則を見つけ、優先順位とスコープ フィルターの構成を以下のように検索します。
[スタート]、[Synchronization Rules Editor] の順に移動して、Synchronization Rules Editor を起動します。
次の値で検索フィルターを構成します。
属性 値 Direction Outbound MV オブジェクトの種類 Person コネクタ Microsoft Entra コネクタの名前 コネクタ オブジェクトの種類 user MV 属性 userCertificate Microsoft Entra コネクタで OOB (標準) の同期ルールを使用して、User オブジェクトの userCertficiate 属性をエクスポートする場合は、「Out to Microsoft Entra ID – User ExchangeOnline」ルールに戻す必要があります。
この同期規則の優先順位値をメモします。
同期規則を選択し、[編集] をクリックします。
[Edit Reserved Rule Confirmation] \(予約済みのルール編集の確認) ポップアップ ダイアログで、[いいえ] をクリックします。 (問題ありません。この同期規則は変更されません)。
[編集] 画面で、[スコープ フィルター] タブを選択します。
スコープ フィルターの構成をメモします。 OOB 同期規則を使用している場合、2 つの句を含む 1 つのスコープ フィルター グループが存在する必要があります。これには、以下が含まれます。
属性 オペレーター 値 sourceObjectType EQUAL User cloudMastered NOTEQUAL 正しい
ステップ 3: 必要な送信同期ルールを作成する
新しい同期規則には、同じスコープ フィルターと、既存の同期規則よりも高い優先順位が設定されている必要があります。 これにより、新しい同期規則が既存の同期規則と同じオブジェクトのセットに適用され、userCertificate 属性の既存の同期規則をオーバーライドします。 同期規則を作成するには、以下のようにします。
同期規則エディターで、[新しい規則の追加] ボタンをクリックします。
[説明] タブで、次の構成を指定します。
属性 値 詳細 名前 名前を入力します 例、 「Out to Microsoft Entra ID – Custom override for userCertificate」 説明 説明を入力します 例、「userCertificate attribute に 15 を超える値が含まれる場合、NULL をエクスポートする」 接続先システム Microsoft Entra コネクタを選択する 接続先システム オブジェクトの種類 user メタバース オブジェクトの種類 person リンクの種類 Join 優先順位 1 ~ 99 の範囲の数値を選択する 選択した数値は、既存の同期規則では使用しないでください。これには、既存の同期規則よりも低い (つまり、優先順位の高い) 値が含まれます。 [スコープ フィルター] タブに進み、既存の同期規則が使用しているのと同じスコープ フィルターを実装します。
[結合規則] タブをスキップします。
[変換] タブに進み、次の構成を使用して新しい変換を追加します。
属性 値 フローの種類 [式] ターゲット属性 userCertificate ソース属性 次の式を使用します: IIF(IsNullOrEmpty([userCertificate]), NULL, IIF((Count([userCertificate])> 15),AuthoritativeNull,[userCertificate]))
[追加] ボタンをクリックして、同期規則を作成します。
ステップ 4: LargeObject エラーがある既存のオブジェクトで新しい同期ルールを検証する
これは、作成した同期規則を他のオブジェクトに適用する前に、LargeObject エラーがある既存の AD オブジェクトで正しく動作していることを検証するためです。
- Synchronization Service Manager の [操作] タブに進みます。
- 最新の [Microsoft Entra へのエクスポート] 操作を選択し、LargeObject エラーのあるオブジェクトのいずれかをクリックします。
- [コネクタ スペース オブジェクトのプロパティ] ポップアップ画面で、[プレビュー] ボタンをクリックします。
- [プレビュー] ポップアップ画面で、[完全同期] を選択し、[コミット プレビュー] をクリックします。
- [プレビュー] 画面と [コネクタ スペース オブジェクトのプロパティ] 画面を閉じます。
- Synchronization Service Manager の [コネクタ] タブに進みます。
- [Microsoft Entra ID] コネクタを右クリックし、[実行...]を選択します。
- [コネクタの実行] ポップアップで、[エクスポート] 手順を選択し、[OK] をクリックします。
- Microsoft Entra ID へのエクスポートが完了するまで待機し、対象のオブジェクトで LargeObject エラーが存在しなくなったことを確認します。
ステップ 5: LargeObject エラーがある残りのオブジェクトに新しい同期ルールを適用する
同期規則が追加されたら、AD コネクタで完全な同期の手順を実行する必要があります。
- Synchronization Service Manager の [コネクタ] タブに進みます。
- AD コネクタで右クリックし、[実行] を選択します。
- [コネクタの実行] ポップアップで、[完全同期] 手順を選択し、[OK] をクリックします。
- [完全同期] 手順が完了するまで待ちます。
- 複数の AD コネクタがある場合は、残りの AD コネクタに対して上の手順を繰り返します。 通常、複数のオンプレミス ディレクトリがある場合は、複数のコネクタが必要です。
ステップ 6: Microsoft Entra ID へのエクスポートを待機している予期しない変更がないことを確認する
- Synchronization Service Manager の [コネクタ] タブに進みます。
- [Microsoft Entra ID] コネクタを右クリックし、[コネクタ スペースの検索] を選択します。
- [コネクタ スペースの検索] ポップアップで以下を実行します。
- [スコープ] を [Pending Export](保留中のエクスポート) に設定します。
- [追加]、[変更]、[削除] を含む、3 つすべてのチェックボックスをチェックします。
- [検索] ボタンをクリックして、 Microsoft Entra ID へのエクスポートを待機している変更がある、すべてのオブジェクトを表示します。
- 予期しない変更がないことを確認します。 指定したオブジェクトの変更を検証するには、オブジェクトをダブルクリックします。
ステップ 7: 変更を Microsoft Entra ID にエクスポートする
変更を Microsoft Entra ID にエクスポートするには、以下を行ないます。
- Synchronization Service Manager の [コネクタ] タブに進みます。
- [Microsoft Entra ID] コネクタを右クリックし、[実行...]を選択します。
- [コネクタの実行] ポップアップで、[エクスポート] 手順を選択し、[OK] をクリックします。
- Microsoft Entra ID へのエクスポートが完了するまで待機し、LargeObject エラーが存在しなくなったことを確認します。
手順 8:同期スケジューラを再度有効にする
問題が解決したので、組み込みスケジューラを以下のように再度有効にします。
- PowerShell セッションを開始します。
- 以下のコマンドレットを実行して、スケジュールされた同期を再度有効にします。
Set-ADSyncScheduler -SyncCycleEnabled $true
Note
上記の手順は、組み込みスケジューラが含まれる Microsoft Entra Connect の新しいバージョン (1.1.xxx.x) にのみ適用できます。 Windows タスク スケジューラを使用する Microsoft Entra Connect の以前のバージョン (1.0.xxx.x) を使用しているか、独自のカスタム スケジューラ (一般的ではない) を使用して定期的な同期をトリガーしている場合は、それぞれを無効にする必要があります。
次のステップ
オンプレミス ID と Microsoft Entra ID の統合についての詳細情報を参照してください。