Share via


Microsoft Entra Connect 同步處理:了解宣告式佈建

本主題說明 Microsoft Entra 連線 中的組態模型。 此模型稱為宣告式布建,可讓您輕鬆進行組態變更。 本主題所述的許多事項都是進階的,而且大部分的客戶案例都不需要。

概觀

宣告式布建會處理來自來源連接目錄的物件,並決定物件和屬性應該如何從來源轉換成目標。 物件會在同步管線中處理,而且管線與輸入和輸出規則相同。 輸入規則是從連接器空間到 Metaverse,而輸出規則則是從 Metaverse 到連接器空間。

Diagram that shows a sync pipeline example.

管線有數個不同的模組。 每個概念都負責物件同步處理中的一個概念。

Diagram that shows the modules in the pipeline.

  • 來源,來源物件
  • 範圍 ,尋找範圍內的所有同步處理規則
  • 聯結 ,決定連接器空間與 Metaverse 之間的關聯性
  • 轉換,計算屬性應如何轉換和流動
  • 優先順序 ,解決衝突的屬性貢獻
  • Target、目標物件

範圍

範圍模組正在評估物件,並決定範圍中的規則,而且應該包含在處理中。 根據 物件上的屬性值,系統會評估不同的同步處理規則範圍。 例如,沒有 Exchange 信箱的已停用使用者,其規則與具有信箱的已啟用使用者不同。
Diagram that shows the scope module for an object.

範圍定義為群組和子句。 子句位於群組內。 邏輯 AND 會在群組中的所有子句之間使用。 例如,(部門 =IT AND 國家/地區 = 丹麥)。 邏輯 OR 會在群組之間使用。

Scope
此圖片中的範圍應讀為 (部門 = IT AND 國家 = 丹麥) OR (國家=瑞典)。 如果群組 1 或群組 2 評估為 true,則規則位於範圍內。

範圍模組支援下列作業。

作業 描述
EQUAL、NOTEQUAL 字串比較,評估 value 是否等於 屬性中的值。 如需多重值屬性,請參閱 ISIN 和 ISNOTIN。
LESSTHAN,LESSTHAN_OR_EQUAL 字串比較,評估值是否小於 屬性中的值。
CONTAINS、NOTCONTAINS 字串比較,可評估值是否可以在 屬性中的某處找到值。
STARTSWITH、NOTSTARTSWITH 字串比較,會評估 value 是否在 屬性中的值開頭。
ENDSWITH、NOTENDSWITH 字串比較,評估 value 是否在 屬性中的值結尾。
GREATERTHAN,GREATERTHAN_OR_EQUAL 字串比較,評估值是否大於 屬性中的值。
ISNull、ISNOTNull 評估屬性是否不存在於 物件中。 如果屬性不存在,因此為 null,則規則位於範圍內。
ISIN、ISNOTIN 評估值是否存在於定義的屬性中。 此作業是 EQUAL 和 NOTEQUAL 的多值變化。 屬性應該是多重值屬性,如果值可以在任何屬性值中找到,則規則位於範圍內。
ISBITSET、ISNOTBITSET 評估是否已設定特定位。 例如,可用來評估 userAccountControl 中的位,以查看使用者是否已啟用或停用。
ISMEMBEROF、ISNOTMEMBEROF 值應該包含連接器空間中群組的 DN。 如果物件是指定的群組成員,規則就會在範圍內。

聯結

同步管線中的聯結模組負責尋找來源中物件與目標中物件之間的關聯性。 在輸入規則上,此關聯性會是連接器空間中的物件,在 Metaverse 中尋找物件之間的關聯性。
Join between cs and mv
目標是查看 Metaverse 中是否有物件,該物件是由另一個連線or 所建立,它應該與 相關聯。 例如,在帳戶資源樹系中,帳戶樹系中的使用者應該與來自資源樹系的使用者聯結。

聯結主要用於輸入規則,將連接器空間物件聯結至相同的 Metaverse 物件。

聯結定義為一或多個群組。 在群組內,您有 子句。 邏輯 AND 會在群組中的所有子句之間使用。 邏輯 OR 會在群組之間使用。 群組會依從上到下的順序進行處理。 當一個群組發現與目標中的物件完全相符時,就不會評估其他聯結規則。 如果找到零個或多個物件,處理會繼續下一個規則群組。 基於這個理由,規則應該以最明確的第一個和更模糊的順序在結尾建立。
Join definition
此圖片中的聯結會從上到下進行處理。 首先,同步管線會查看 employeeID 上是否有相符專案。 如果沒有,第二個規則會查看帳戶名稱是否可用來將物件聯結在一起。 如果這兩者都不相符,則第三個和最後一個規則是使用使用者名稱的模糊比對。

如果已評估所有聯結規則,而且沒有完全相符的專案, 則會使用 [描述 ] 頁面上的連結 類型 。 如果此選項設定為 [ 建],則會建立目標中的新物件。
Screenshot that shows the

物件應該只有一個在範圍內具有聯結規則的單一同步處理規則。 如果定義聯結的多個同步處理規則,就會發生錯誤。 優先順序不會用來解決聯結衝突。 物件必須具有範圍中的聯結規則,屬性才能以相同的輸入/輸出方向流動。 如果您需要將輸入和輸出屬性同時流向相同的物件,您必須同時具有具有聯結的輸入和輸出同步處理規則。

當輸出聯結嘗試將物件布建至目標連接器空間時,具有特殊行為。 DN 屬性是用來先嘗試反向聯結。 如果目標連接器空間中已經有具有相同 DN 的物件,則會聯結物件。

只有在新的同步處理規則進入範圍時,才會評估聯結模組一次。 當物件已聯結時,即使不再滿足聯結準則,也不會中斷聯結。 如果您想要取消加入物件,聯結物件的同步處理規則必須超出範圍。

Metaverse 刪除

只要範圍 中有一個同步處理規則,且連結類型 設定為 Provision StickyJoin,Metaverse 物件就會維持不變。 當不允許 連線將新的物件布建至 Metaverse 時,會使用 StickyJoin,但聯結時,必須先在來源中刪除該物件,才能刪除 Metaverse 物件。

刪除 Metaverse 物件時,與標示為 建的輸出同步處理規則相關聯的所有物件都會標示為刪除。

轉換

轉換可用來定義屬性應該如何從來源流向目標。 流程可以有下列 其中一種流程類型 :Direct、Constant 或 Expression。 直接流程會依目前方式流動屬性值,而不需要額外的轉換。 常數值會設定指定的值。 運算式會使用宣告式布建運算式語言來表達轉換的方式。 運算式語言的詳細資料可以在瞭解宣告式布建運算式語言 主題中找到

Provision or join

[ 套用一次] 核取方塊會定義只有在最初建立物件時,才應該設定屬性。 例如,此設定可用來設定新使用者物件的初始密碼。

合併屬性值

在屬性流程中,有一個設定可判斷多重值屬性是否應該從數個不同的連線器合併。 預設值為 Update ,表示具有最高優先順序的同步處理規則應該會獲勝。

Screenshot that shows the

也有 Merge MergeCaseInsensitive 。 這些選項可讓您合併來自不同來源的值。 例如,它可以用來合併來自數個不同樹系的 proxyAddresses 屬性。 當您使用此選項時,物件範圍中的所有同步處理規則都必須使用相同的合併類型。 您無法從某個連線或 從另一個合併 來定義 Update 。 如果您嘗試,您會收到錯誤。

Merge MergeCaseInsensitive 之間的差異 在於如何處理重複的屬性值。 同步處理引擎可確保不會將重複的值插入目標屬性中。 使用 MergeCaseInsensitive 時,只有差異的重複值不會存在。 例如,您不應該在目標屬性中看到 「SMTP: bob@contoso.com 」 和 「smtp: bob@contoso.com 」。 合併 只會查看確切的值和多個值,如果可能存在,則只有差異。

[取代 ] 選項 Update 相同,但不會使用。

控制屬性流程程式

當多個輸入同步處理規則設定為參與相同的 Metaverse 屬性時,則會使用優先順序來判斷優勝者。 具有最高優先順序(最低數值)的同步處理規則將貢獻該值。 輸出規則也是如此。 優先順序最高的同步處理規則會獲勝,並將值貢獻至連接的目錄。

在某些情況下,同步處理規則應該決定其他規則的行為方式,而不是貢獻值。 此案例使用一些特殊常值。

針對輸入同步處理規則,常值 Null 可用來指出流程沒有要貢獻的值。 優先順序較低的另一個規則可能會提供值。 如果沒有規則貢獻值,則會移除 Metaverse 屬性。 針對輸出規則,如果 Null 是處理所有同步處理規則之後的最終值,則會移除連線目錄中的值。

常值 AuthoritativeNull 類似于 Null ,但差異在於沒有較低優先順序的規則可以貢獻值。

屬性流程也可以使用 IgnoreThisFlow 。 它類似于 Null,因為它表示沒有任何貢獻。 差別在於它不會移除目標中已經存在的值。 就像屬性流程從未存在過一樣。

以下是範例:

[輸出至 AD - 使用者 Exchange 混合式 ] 中,可以找到下列流程:
IIF([cloudSOAExchMailbox] = True,[cloudMSExchSafeSendersHash],IgnoreThisFlow)
此運算式應讀取為:如果使用者信箱位於 Microsoft Entra ID 中,則會將屬性從 Microsoft Entra ID 流向 Active Directory。 如果沒有,請勿將任何內容流回 Active Directory。 在此情況下,它會在 AD 中保留現有的值。

ImportedValue

ImportedValue 函數與所有其他函式不同,因為屬性名稱必須以引號括住,而不是方括弧:

ImportedValue("proxyAddresses").

輸入同步處理的概念是假設尚未到達連線目錄的屬性最終會在某個時間點到達它,因此,同步處理會從個別連接器空間取得屬性值,即使它尚未匯出或匯出期間發生錯誤也一樣。 不過,在某些情況下,請務必只同步處理從連線目錄匯入期間匯出並確認的值。 此函式可在多個「從 AD/AAD 匯入」的現成轉換規則中找到,其中只有在已確認已成功匯出值時,才應該同步處理屬性。

如需此函式的範例,請參閱來自 AD 的現成同步處理規則 In - Exchange 中的使用者一般 ,以搭配混合式 Exchange 使用 ProxyAddresses 屬性流程。 例如,新增使用者的 ProxyAddresses 時,ImportedValue 函式只會在從下列匯入步驟確認之後傳回新值:

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

當目標目錄可能會以無訊息方式變更或捨棄匯出的屬性值時,需要此函式,而且我們希望同步處理只處理已確認的屬性值。

優先順序

當數個同步處理規則嘗試為目標貢獻相同的屬性值時,會使用優先順序值來判斷優勝者。 優先順序最高、數值最低的規則將會在衝突中貢獻屬性。

Merge Types

這個順序可用來定義物件子集更精確的屬性流程。 例如,現成規則可確保來自已啟用帳戶的屬性 ( User AccountEnabled ) 具有來自其他帳戶的優先順序。

優先順序可以在 連線ors 之間定義。 這可讓具有更好資料的連線器先貢獻值。

來自相同連接器空間的多個物件

無法讓相同連接器空間中的數個物件聯結至相同的 Metaverse 物件。 即使來源中的屬性具有相同的值,此組態仍會回報為模棱兩可。

Diagram that shows multiple objects joined to the same mv object with a transparent red X overlay.

下一步

  • 在瞭解宣告式布建運算式 深入瞭解運算式語言。
  • 請參閱瞭解預設組態 中的 宣告式布建如何現用。
  • 請參閱如何對預設 組態進行變更, 瞭解如何使用宣告式布建進行實際變更。
  • 繼續閱讀瞭解使用者和連絡人在瞭解使用者和連絡人 中的 共同作業方式。

概觀主題

參考主題