次の方法で共有


Microsoft Entra Connect Sync: 宣言型プロビジョニングについて

この記事では、Microsoft Entra Connect の構成モデルについて説明します。 このモデルは宣言型プロビジョニングと呼ばれ、構成を簡単に変更できます。 この記事で説明する多くの事項は高度であり、ほとんどの顧客シナリオでは必要ありません。

概要

宣言型プロビジョニングは、ソースに接続されたディレクトリから入ってくるオブジェクトを処理することです。 オブジェクトと属性をソースからターゲットに変換する方法を決定します。 オブジェクトは同期パイプラインで処理され、パイプラインは受信規則と送信規則で同じです。 受信規則はコネクタ スペースからメタバースに、送信規則はメタバースからコネクタ スペースに送信されます。

同期パイプラインの例を示す図。

パイプラインには、いくつかの異なるモジュールがあります。 オブジェクト同期では、それぞれ 1 つの概念を担当します。

パイプライン内のモジュールを示す図。

  • ソース、オブジェクトの元
  • スコープ、スコープ内のすべての同期規則を検索します
  • 結合、コネクタ スペースとメタバースの関係を決定します
  • Transform (変換): 属性の変換とフローの方法を計算
  • 優先順位、競合する属性のコントリビューションを解決します
  • ターゲット、対象オブジェクト

範囲

スコープ モジュールはオブジェクトを評価し、スコープ内にあり、処理に含める必要があるルールを決定します。 オブジェクトの属性値に応じて、異なる同期規則がスコープ内にあると評価されます。 たとえば、Exchange メールボックスを持たない無効なユーザーは、メールボックスを持つ有効なユーザーとは異なるルールを持ちます。
オブジェクトのスコープ モジュールを示す図。

スコープはグループと句として定義されます。 句はグループ内にあります。 論理 AND は、グループ内のすべての句の間で使用されます。 たとえば、(部門 = IT AND 国 = デンマーク)。 論理 OR はグループ間で使用されます。

スコープ
この図のスコープは、(department = IT AND country = デンマーク) または (country=Sweden) と読み取る必要があります。 グループ 1 またはグループ 2 のいずれかが true と評価された場合、ルールはスコープ内にあります。

スコープ モジュールでは、次の操作がサポートされています。

オペレーション 説明
EQUAL、NOTEQUAL 値が属性の値と等しいかどうかを評価する文字列比較。 複数値属性については、ISIN および ISNOTIN を参照してください。
LESSTHAN、LESSTHAN_OR_EQUAL 値が属性の値より小さいかどうかを評価する文字列比較。
CONTAINS、NOTCONTAINS 属性内の値内のどこかに値が見つかるかどうかを評価する文字列比較。
STARTSWITH、NOTSTARTSWITH 属性の値の先頭に値があるかどうかを評価する文字列比較。
ENDSWITH、NOTENDSWITH 属性の値の末尾に値があるかどうかを評価する文字列比較。
GREATERTHAN、GREATERTHAN_OR_EQUAL 値が属性の値より大きいかどうかを評価する文字列比較。
ISNULL、ISNOTNULL 属性がオブジェクトに存在しないかどうかを評価します。 属性が存在せず、その結果として null である場合、ルールがスコープ内に適用されます。
ISIN、ISNOTIN 定義された属性に値が存在するかどうかを評価します。 この操作は、EQUAL と NOTEQUAL の複数値のバリエーションです。 属性は複数値の属性であると想定されており、いずれかの属性値で値が見つかると、ルールはスコープ内にあります。
ISBITSET、ISNOTBITSET 特定のビットが設定されているかどうかを評価します。 たとえば、userAccountControl のビットを評価して、ユーザーが有効または無効になっているかどうかを確認するために使用できます。
ISMEMBEROF、ISNOTMEMBEROF 値には、コネクタ スペース内のグループに対する DN が含まれている必要があります。 オブジェクトが指定されたグループのメンバーである場合、ルールはスコープ内にあります。

参加する

同期パイプラインの結合モジュールは、ソース内のオブジェクトとターゲット内のオブジェクトの間のリレーションシップを見つける役割を担います。 受信規則では、この関係は、メタバース内のオブジェクトに対する関係を見つけるためのコネクタ スペース内のオブジェクトです。
cs と mv の間の結合
目標は、別のコネクタによって作成されたメタバースにオブジェクトが既に存在するかどうかを確認することです。このオブジェクトは、それに関連付ける必要があります。 たとえば、アカウント リソース フォレストでは、アカウント フォレストのユーザーをリソース フォレストのユーザーと結合する必要があります。

結合は、コネクタ スペース オブジェクトを同じメタバース オブジェクトに結合するために、主に受信規則で使用されます。

結合は 1 つ以上のグループとして定義されます。 グループの中には句があります。 論理 AND は、グループ内のすべての句の間で使用されます。 論理 OR はグループ間で使用されます。 グループは上から下の順に処理されます。 1 つのグループがターゲット内のオブジェクトと完全に一致するものを見つけた場合、他の結合規則は評価されません。 0 個以上のオブジェクトが見つかった場合、処理は次のルールグループに進みます。 このため、ルールは、最も明示的な最初の順序で作成し、最後にあいまいな順序で作成する必要があります。
結合の定義
この図の結合は、上から下に処理されます。 最初に、同期パイプラインは employeeID に一致があるかどうかを確認します。 そうでない場合、2 番目のルールでは、アカウント名を使用してオブジェクトを結合できるかどうかを確認します。 それでも一致するものがない場合は、最後の 3 番目の規則により、ユーザー名を使ってよりあいまいな照合が行われます。

すべての結合規則が評価され、一致するものが 1 つでない場合は、[説明] ページの [リンクの種類] が使用されます。 このオプションが [プロビジョニング] に設定されている場合は、ターゲット内に新しいオブジェクトが作成されます。
[リンクの種類] ドロップダウン メニューが開いているのを示すスクリーンショット。

オブジェクトには、スコープ内の結合規則を持つ同期規則が 1 つだけ必要です。 結合が定義されている同期規則が複数ある場合は、エラーが発生します。 優先順位は、結合の競合の解決には使用されません。 同じ受信/送信方向で属性をフローさせるには、オブジェクトにスコープ内の結合規則が必要です。 受信と送信の両方の属性を同じオブジェクトにフローする必要がある場合は、結合を使用する受信同期規則と送信同期規則の両方が必要です。

送信結合は、ターゲット コネクタ スペースにオブジェクトをプロビジョニングしようとしたときに特別な動作をします。 DN 属性は、最初に逆結合を試すために使用されます。 ターゲット コネクタ スペースに同じ DN を持つオブジェクトが既に存在する場合、オブジェクトは結合されます。

結合モジュールは、新しい同期規則がスコープに入ったときに 1 回だけ評価されます。 一度オブジェクトが結合されると、結合条件がもう満たされていなくても分離されません。 オブジェクトを結合解除する場合は、オブジェクトを結合した同期規則がスコープ外に出る必要があります。

メタバースの削除

リンクの種類Provision または StickyJoin に設定されている同期規則がスコープ内に 1 つある限り、メタバース オブジェクトは保持されます。 StickyJoin は、コネクタがメタバースに新しいオブジェクトをプロビジョニングできない場合に使用されます。 ただし、参加している場合は、メタバース オブジェクトを削除する前に、ソースで削除する必要があります。

メタバース オブジェクトが削除されると、 プロビジョニング の対象としてマークされた送信同期規則に関連付けられているすべてのオブジェクトが削除対象としてマークされます。

変化

変換は、ソースからターゲットへの属性のフロー方法を定義するために使用されます。 フローには、直接、定数、または式のいずれかの フロータイプを指定できます。 直接フローでは、追加の変換なしで属性値 as-is をフローします。 定数値は、指定した値を設定します。 式では、宣言型プロビジョニング式言語を使用して、変換の方法を表します。 式言語の詳細については、 宣言型プロビジョニング式言語の理解 に関する記事を参照してください。

プロビジョニングまたは結合

[ 1 回だけ適用] チェックボックスは、オブジェクトが最初に作成されたときにのみ属性を設定する必要があることを定義します。 たとえば、この構成を使用して、新しいユーザー オブジェクトの初期パスワードを設定できます。

属性値のマージ

属性フローには、複数の値を持つ属性を複数の異なるコネクタからマージするかどうかを決定する設定があります。 既定値は Update です。これは、優先順位が最も高い同期規則が優先されることを示します。

[型のマージ] ドロップダウン メニューが開いている [変換の追加] セクションを示すスクリーンショット。

MergeMergeCaseInsensitive もあります。 これらのオプションを使用すると、さまざまなソースの値をマージできます。 たとえば、複数の異なるフォレストから proxyAddresses 属性をマージするために使用できます。 このオプションを使用する場合、オブジェクトのスコープ内のすべての同期規則で同じマージの種類を使用する必要があります。 あるコネクタから Update を定義し、別のコネクタから マージ を定義することはできません。 試行すると、エラーが表示されます。

MergeMergeCaseInsensitive の違いは、重複する属性値を処理する方法です。 同期エンジンは、重複する値がターゲット属性に挿入されないようにします。 MergeCaseInsensitive を使用すると、大文字小文字のみが異なる重複する値は提示されなくなります。 たとえば、ターゲット属性に "SMTP:bob@contoso.com" と "smtp:bob@contoso.com" の両方が表示されないようにする必要があります。 Merge は、厳密な値のみを調べるため、大文字小文字のみが異なる複数の値が提示される可能性があります。

[置換] オプションは Update と同じですが、使用されません。

属性フロー プロセスを制御する

同じメタバース属性に貢献するように複数の受信同期規則が構成されている場合、優先順位を使用して勝者が決定されます。 優先順位が最も高い (数値が最も低い) 同期規則が値を提供します。 送信規則についても同じことになります。 優先順位が最も高い同期規則が優先され、接続されたディレクトリに値が提供されます。

場合によっては、値を提供するのではなく、同期規則で他のルールの動作を決定する必要があります。 この場合、いくつかの特殊なリテラルが使用されます。

受信同期規則の場合、リテラル NULL を 使用して、フローに貢献する値がないことを示すことができます。 優先順位の低い別の規則が値を提供する可能性があります。 値を提供したルールがない場合は、メタバース属性が削除されます。 送信規則の場合、すべての同期規則が処理された後に NULL が最終的な値である場合、接続されたディレクトリでその値が削除されます。

リテラル の AuthoritativeNullNULL に似ていますが、優先順位の低い規則では値を提供できないという違いがあります。

属性フローでは 、IgnoreThisFlow を使用することもできます。 これは、貢献するものがないことを示すという意味では NULL に似ています。 違いは、ターゲット内の既存の値が削除されないことです。 これは、属性フローが存在したことがないようなものです。

次に例を示します。

Out to AD - User Exchange hybrid では、次のフローが見つかります。
IIF([cloudSOAExchMailbox] = True,[cloudMSExchSafeSendersHash],IgnoreThisFlow)
この式は、ユーザーのメールボックスが Microsoft Entra ID に存在する場合、属性を Microsoft Entra ID から Active Directory に転送するという意味で解釈されるべきです。 それ以外の場合は、何も Active Directory に戻さないでください。 この場合、既存の値は AD に保持されます。

インポートされた値

ImportedValue 関数は、属性名を角かっこではなく引用符で囲む必要があるため、他のすべての関数とは異なります。

ImportedValue("proxyAddresses")

受信同期では、接続されたディレクトリに到達していない属性が最終的に到達することを前提としています。 そのため、通常、同期はそれぞれのコネクタ スペースから属性値を取得します。 これは、まだエクスポートされていない場合や、エクスポート中にエラーが発生した場合でも当てはまります。 ただし、接続されたディレクトリからのインポート時にエクスポートおよび確認された値のみを同期することが重要です。 この関数は、値が正常にエクスポートされたことが確認されたときにのみ属性を同期する必要がある、複数の "In From AD/AAD" のアウトオブボックス変換ルールにあります。

この関数の例は、Hybrid Exchange での ProxyAddresses 属性フロー用に付属の同期規則 In from AD – User Common from Exchange にあります。 たとえば、ユーザーの ProxyAddresses が追加されると、ImportedValue 関数は、次のインポート手順で確認された後にのみ新しい値を返します。

proxyAddresses<- RemoveDuplicates(Trim(ImportedValue("proxyAddresses")))

この関数は、ターゲット ディレクトリがエクスポートされた属性値を自動的に変更または破棄する可能性があり、同期で確認済みの属性値のみを処理する場合に必要です。

優先順位

複数の同期規則で同じ属性値をターゲットに提供しようとすると、優先順位の値を使用して勝者が決定されます。 優先順位が最も高く、数値が最も低いルールは、競合の中で属性を提供します。

マージの種類

この順序を使用すると、オブジェクトの小さなサブセットに対して、より正確な属性フローを定義できます。 たとえば、既定のルールでは、有効なアカウント (User AccountEnabled) の属性が他のアカウントの優先順位を持っていることを確認します。

優先順位はコネクタ間で定義できます。 これにより、より優れたデータを持つコネクタが最初に値を提供できるようになります。

同じコネクタ スペースの複数のオブジェクト

同じコネクタ スペース内の複数のオブジェクトを同じメタバース オブジェクトに結合することはできません。 ソース内の属性の値が同じ場合でも、この構成はあいまいとして報告されます。

透明な赤い X オーバーレイを持つ同じ mv オブジェクトに結合された複数のオブジェクトを示す図。

次のステップ

概要トピック

参照トピック