Microsoft Entra Connect 同步處理:了解架構

本主題涵蓋 Microsoft Entra 連線 Sync 的基本架構。如果您熟悉先前的身分識別同步處理技術,本主題的內容也會熟悉您。 如果您不熟悉同步處理,則本主題適合您。 不過,您不需要知道本主題的詳細數據,才能成功對 Microsoft Entra 連線 Sync 進行自定義(本主題中稱為同步處理引擎)。

架構

同步處理引擎會建立儲存在多個連線數據源中的物件整合檢視,並管理這些數據源中的身分識別資訊。 這個整合式檢視是由從連線數據源擷取的身分識別資訊,以及一組決定如何處理此資訊的規則所決定。

連線 數據源和 連線 器

同步處理引擎會處理來自不同數據存放庫的身分識別資訊,例如 Active Directory 或 SQL Server 資料庫。 每個以類似資料庫格式組織其數據的數據存放庫,並提供標準數據存取方法,都是同步處理引擎的潛在數據源候選專案。 由同步處理引擎同步處理的數據存放庫稱為 已連線的數據源已連線目錄 (CD)。

同步處理引擎會在稱為 連線 or 的模組內封裝與連線數據源的互動。 每個連接的數據源類型都有特定的 連線 or。 連線 or 會將必要的作業轉譯成連線數據源瞭解的格式。

連線 者進行 API 呼叫,以與連接的數據源交換身分識別資訊(讀取和寫入)。 您也可以使用可延伸的連線架構來新增自訂 連線 或 。 下圖顯示 連線 器如何將連接的數據源連接到同步處理引擎。

Diagram shows a connected data source and a sync engine associated by a line called Connector.

數據可以向任一方向流動,但無法同時向兩個方向流動。 換句話說,可以將 連線 器設定為允許數據從連接的數據源流向同步處理引擎,或從同步處理引擎流向連接的數據源,但一個對象和屬性一次只能發生其中一個作業。 不同物件和不同屬性的方向可能不同。

若要設定 連線 or,您可以指定您要同步處理的物件類型。 指定物件類型會定義同步處理程式中包含的物件範圍。 下一個步驟是選取要同步處理的屬性,也就是所謂的屬性包含清單。 這些設定可以隨時變更,以回應商務規則的變更。 當您使用 Microsoft Entra 連線 安裝精靈時,會為您設定這些設定。

若要將物件匯出至連接的數據源,屬性包含清單必須至少包含至少在連接的數據源中建立特定物件類型所需的最小屬性。 例如, sAMAccountName 屬性必須包含在屬性包含清單中,才能將使用者對象匯出至 Active Directory,因為 Active Directory 中的所有使用者物件都必須 已定義 sAMAccountName 屬性。 同樣地,安裝精靈會為您執行此設定。

如果連接的數據來源使用結構化元件,例如分割區或容器來組織物件,您可以限制連線數據源中用於指定解決方案的區域。

同步處理引擎命名空間的內部結構

整個同步處理引擎命名空間包含兩個儲存身分識別資訊的命名空間。 這兩個命名空間為:

  • 連接器空間 (CS)
  • Metaverse (MV)

連接器 空間 是暫存區域,其中包含來自連接數據源的指定物件表示,以及屬性包含清單中指定的屬性。 同步處理引擎會使用連接器空間來判斷已連線數據源中變更的內容,以及暫存傳入變更。 同步處理引擎也會使用連接器空間來暫存傳出變更,以匯出至連接的數據源。 同步處理引擎會維護不同的連接器空間,作為每個 連線 or 的預備區域。

藉由使用暫存區域,同步處理引擎會維持與連線數據源無關,而且不會受到其可用性和輔助功能的影響。 因此,您可以隨時使用暫存區域中的數據來處理身分識別資訊。 同步處理引擎只能要求連線數據源內所做的變更,因為上次通訊會話終止,或只推送已連線數據源尚未收到的身分識別資訊的變更,這樣可減少同步處理引擎與已連線數據源之間的網路流量。

此外,同步處理引擎會儲存它在連接器空間中分階段之所有物件的狀態資訊。 收到新數據時,同步處理引擎一律會評估數據是否已同步處理。

Metaverse 是一個儲存區域,其中包含來自多個連線數據源的匯總識別資訊,提供所有合併對象的單一全域整合檢視。 Metaverse 對像是根據從連接的數據源擷取的身分識別資訊,以及一組可讓您自定義同步處理程式的規則所建立。

下圖顯示同步處理引擎內的連接器空間命名空間和 Metaverse 命名空間。

Diagram shows a connected data source and a sync engine, which is separated into connector space and metaverse namespaces, associated by a line called Connector.

同步處理引擎身分識別物件

同步處理引擎中的物件代表連接數據源中的物件,或同步處理引擎具有這些物件的整合式檢視。 每個同步處理引擎對象都必須有全域唯一標識碼(GUID)。 GUID 提供對象之間的數據完整性和快速關聯性。

連線 or 空間物件

當同步處理引擎與連接的數據源通訊時,它會讀取連線數據源中的識別資訊,並使用該資訊在連接器空間中建立識別物件的表示法。 您無法個別建立或刪除這些物件。 不過,您可以手動刪除連接器空間中的所有物件。

連接器空間中的所有物件都有兩個屬性:

  • 全域唯一識別碼 (GUID)
  • 辨別名稱(也稱為 DN)

如果連接的數據源將唯一屬性指派給物件,則連接器空間中的物件也可以具有錨點屬性。 錨點屬性可唯一識別連接數據源中的物件。 同步處理引擎會使用錨點,在連接的數據源中找出這個對象的對應表示法。 同步處理引擎假設物件的錨點永遠不會在物件的存留期內變更。

許多 連線 器都會使用已知的唯一標識符,在匯入時自動為每個物件產生錨點。 例如,Active Directory 連線 or 會針對錨點使用 objectGUID 屬性。 對於未提供明確定義之唯一標識符的連線數據源,您可以將錨點產生指定為 連線 or 組態的一部分。

在此情況下,錨點是從物件類型的一或多個唯一屬性所建置,這兩者都不會變更,而且會唯一識別連接器空間中的物件(例如員工編號或使用者標識符)。

連接器空間物件可以是下列其中一項:

  • 暫存物件
  • 佔位元

暫存物件

暫存物件代表連接數據源中指定之物件類型的實例。 除了 GUID 和辨別名稱之外,暫存物件一律有一個值,指出物件類型。

已匯入的預備物件一律具有錨點屬性的值。 同步處理引擎新布建且正在連接數據源中建立的暫存對象沒有錨點屬性的值。

暫存物件也會攜帶商務屬性的目前值,以及同步處理引擎執行同步處理程式所需的作業資訊。 作業資訊包含旗標,指出暫存物件上暫存的更新類型。 如果預備物件已從尚未處理的已連線數據源收到新的識別資訊,該物件就會標示為 擱置匯入。 如果預備物件有尚未匯出至已連線數據源的新身分識別資訊,則會將其標示為 擱置匯出

暫存物件可以是匯入物件或匯出物件。 同步處理引擎會使用從連接的數據源接收的對象資訊來建立匯入物件。 當同步處理引擎收到與 連線 or 中所選取其中一個物件類型相符的新物件存在相關信息時,它會在連接數據源中建立匯入物件,做為連接數據源中物件的表示法。

下圖顯示匯入物件,表示連接數據源中的物件。

Diagram shows an import object brought from the connected data source to the connector space namespace in the sync engine.

同步處理引擎會使用Metaverse中的物件資訊來建立匯出物件。 匯出物件會在下一個通訊會話期間匯出至連接的數據源。 從同步處理引擎的觀點來看,導出物件還不存在於連接的數據源中。 因此,導出物件的錨點屬性無法使用。 從同步引擎接收對象之後,連接的數據源會為物件的錨點屬性建立唯一值。

下圖顯示如何使用 Metaverse 中的身分識別資訊來建立導出物件。

Diagram shows an export object brought from the metaverse to the connector space namespace, then to the connected data source.

同步處理引擎會從連接的數據源重新匯入物件,以確認對象的匯出。 當同步處理引擎在下一次從該連接的數據源匯入期間收到物件時,匯出物件會變成匯入物件。

預留位置

同步處理引擎會使用一般命名空間來儲存物件。 不過,某些連線的數據源,例如 Active Directory 會使用階層式命名空間。 若要將資訊從階層命名空間轉換成一般命名空間,同步處理引擎會使用佔位元來保留階層。

每個佔位元元都代表物件階層式名稱的元件(例如,組織單位),該元件尚未匯入同步處理引擎,但建構階層式名稱是必要的。 它們會填滿連接數據源中參考所建立的間距,而物件不是連接器空間中的暫存物件。

同步處理引擎也會使用佔位元來儲存尚未匯入的參考物件。 例如,如果同步設定為包含 Abbie Spencer 物件的管理員屬性,而接收的值是尚未匯入的物件,例如 CN=Lee Sperry、CN=Users、DC=fabrikam、DC=com,則管理員資訊會儲存為連接器空間中的佔位符。 如果稍後匯入管理員物件,表示管理員的預備物件會覆寫佔位元物件。

Metaverse 物件

Metaverse 物件包含同步處理引擎在連接器空間中具有暫存對象的匯總檢視。 同步處理引擎會使用匯入物件中的資訊來建立Metaverse物件。 數個連接器空間物件可以連結至單一 Metaverse 物件,但連接器空間對象無法連結至一個以上的 Metaverse 物件。

無法手動建立或刪除 Metaverse 物件。 同步處理引擎會自動刪除連接器空間中沒有任何連接器空間對象連結的 Metaverse 物件。

若要將連接數據源內的對象對應至 Metaverse 內的對應物件類型,同步處理引擎會提供具有預先定義物件類型和相關聯屬性集的可延伸架構。 您可以為 Metaverse 物件建立新的物件類型和屬性。 屬性可以是單一值或多重值,而屬性類型可以是字串、參考、數位和布爾值。

暫存物件與 Metaverse 對象之間的關聯性

在同步處理引擎命名空間內,數據流是由暫存物件與 Metaverse 對象之間的連結關聯性所啟用。 連結至 Metaverse 物件的暫存對象稱為 聯結物件 (或 連接器物件)。 未連結至 Metaverse 物件的預備物件稱為 脫離的物件 (或 中斷連接器物件)。 與負責從連線目錄匯入和導出數據的 連線 者不混淆,最好使用聯結和脫離的條款。

佔位元絕不會連結至 Metaverse 物件

聯結的物件包含暫存物件及其與單一 Metaverse 對象的連結關聯性。 聯結的物件可用來同步連接器空間物件與 Metaverse 對象之間的屬性值。

當預備物件在同步處理期間變成聯結物件時,屬性可以在暫存物件與 Metaverse 物件之間流動。 屬性流程是雙向的,並使用匯入屬性規則和匯出屬性規則來設定。

單一連接器空間物件只能連結至一個 Metaverse 物件。 不過,每個 Metaverse 物件都可以連結至相同或不同連接器空間中的多個連接器空間物件,如下圖所示。

Diagram shows two connected data objects associated by connectors to a sync engine, which has joined objects and a disjoined object.

暫存物件與 Metaverse 物件之間的連結關聯性是持續性的,只能由您指定的規則移除。

脫離的對像是暫存物件,未連結至任何 Metaverse 物件。 卸離對象的屬性值不會在 Metaverse 中進一步處理。 同步處理引擎不會更新連線數據源中對應物件的屬性值。

藉由使用脫離的物件,您可以將身分識別資訊儲存在同步處理引擎中,稍後再進行處理。 將預備物件保留為連接器空間中脫離的物件有許多優點。 由於系統已經暫存此物件的必要資訊,因此不需要在下一次從連接的數據源匯入期間再次建立此物件的表示法。 如此一來,同步處理引擎一律會有連線數據源的完整快照集,即使沒有連線數據源的目前連線也一樣。 不同的物件可以轉換成聯結的物件,反之亦然,視您指定的規則而定。

匯入物件會建立為脫離的物件。 匯出對象必須是聯結的物件。 系統邏輯會強制執行此規則,並刪除不是聯結物件的每個匯出物件。

同步處理引擎身分識別管理程式

身分識別管理程式會控制不同連線數據源之間如何更新身分識別資訊。 身分識別管理會在三個程序中發生:

  • 匯入
  • 同步處理
  • Export

在匯入程式期間,同步處理引擎會從連接的數據源評估傳入的身分識別資訊。 偵測到變更時,它會建立新的暫存物件,或更新連接器空間中現有的預備物件以進行同步處理。

在同步處理過程中,同步處理引擎會更新 Metaverse 以反映連接器空間中發生的變更,並更新連接器空間以反映 Metaverse 中發生的變更。

在匯出程式期間,同步處理引擎會推送暫存物件上暫存的變更,並標示為擱置匯出。

下圖顯示每個進程在身分識別資訊從一個連接的數據源流向另一個進程時發生的位置。

Diagram shows the flow of identity information from connected data to connector space (import) to metaverse to connector space (synchronization) to connected data (export).

匯入程式

在匯入程式期間,同步處理引擎會評估身分識別資訊的更新。 同步處理引擎會比較從連接的數據源收到的身分識別資訊與暫存物件的身分識別資訊,並判斷預備物件是否需要更新。 如果需要以新的數據更新暫存物件,暫存物件會標示為擱置匯入。

同步處理之前,藉由在連接器空間中暫存物件,同步處理引擎只能處理已變更的身分識別資訊。 此程式提供下列優點:

  • 有效率的同步處理。 同步處理期間處理的數據量會最小化。
  • 有效率的重新同步處理。 您可以變更同步處理引擎處理身分識別資訊的方式,而不需將同步處理引擎重新連線至數據源。
  • 預覽同步處理的機會。 您可以預覽同步處理,以確認有關身分識別管理程式的假設正確無誤。

針對 連線 or 中指定的每個物件,同步處理引擎會先嘗試在 連線 or 的連接器空間中尋找物件的表示法。 同步處理引擎會檢查連接器空間中的所有預備物件,並嘗試尋找具有相符錨點屬性的對應暫存物件。 如果沒有現有的暫存物件具有相符的錨點屬性,同步處理引擎會嘗試尋找具有相同辨別名稱的對應暫存物件。

當同步處理引擎找到符合辨別名稱而非錨點的預備物件時,會發生下列特殊行為:

  • 如果位於連接器空間中的對象沒有錨點,則同步處理引擎會從連接器空間中移除此物件,並將它連結的 Metaverse 物件標示為 下次同步處理執行時重試布建。 然後它會建立新的匯入物件。
  • 如果位於連接器空間中的物件具有錨點,則同步處理引擎會假設此物件已在連接的目錄中重新命名或刪除。 它會為連接器空間物件指派暫時的新辨別名稱,讓它可以暫存傳入物件。 舊物件接著會變成暫時性,等候 連線 或匯入重新命名或刪除,以解決這種情況。

暫時性物件不一定是問題,您甚至可能會在狀況良好的環境中看到它們。 使用 Microsoft Entra 連線 Sync V2 端點 API,暫時性對象應該會在後續的差異同步處理週期中自動解析。 常見的範例,您可能會發現在安裝於預備模式的 Microsoft Entra 連線 伺服器上,當系統管理員使用 PowerShell 直接刪除 Microsoft Entra ID 中的物件,稍後再次同步處理物件時,可能會發生暫時性物件。

如果同步處理引擎找到對應至 連線 or 中所指定物件的預備物件,它會決定要套用的變更類型。 例如,同步處理引擎可能會重新命名或刪除連線數據源中的物件,或者它可能只會更新對象的屬性值。

具有更新數據的暫存物件會標示為擱置匯入。 有不同類型的擱置匯入可供使用。 根據匯入程式的結果,連接器空間中的預備物件具有下列其中一個擱置的匯入類型:

  • None: 暫存物件的任何屬性都沒有任何變更可用。 同步處理引擎不會將此類型標示為擱置匯入。
  • [新增]。 預備對像是連接器空間中的新匯入物件。 同步處理引擎會將此類型標示為暫止匯入,以在Metaverse中執行其他處理。
  • 更新。 同步處理引擎會在連接器空間中尋找對應的暫存物件,並將此類型標示為擱置匯入,以便在 Metaverse 中處理屬性的更新。 更新 包含物件重新命名。
  • 刪除。 同步處理引擎會在連接器空間中尋找對應的暫存物件,並將此類型標示為擱置匯入,以便刪除聯結的物件。
  • 刪除/新增。 同步處理引擎會在連接器空間中尋找對應的暫存物件,但物件類型不相符。 在此情況下,會暫存刪除新增修改。 刪除新增修改表示同步處理引擎必須進行此物件的完整重新同步處理,因為物件類型變更時,不同的規則集會套用至這個物件。

藉由設定暫存物件的暫止匯入狀態,可以大幅減少同步處理期間處理的數據量,因為這樣做可讓系統只處理那些已更新數據的物件。

同步處理程式

同步處理包含兩個相關行程:

  • 輸入同步處理,當 Metaverse 的內容使用連接器空間中的數據進行更新時。
  • 輸出同步處理,當連接器空間的內容使用 Metaverse 中的數據更新時。

藉由使用在連接器空間中暫存的資訊,輸入同步處理程式會在儲存在聯機數據源的Metaverse中建立資料的整合檢視。 根據規則的設定方式,匯總所有暫存物件或只有具有暫止匯入信息的物件。

當 Metaverse 物件變更時,輸出同步處理程式會更新匯出物件。

輸入同步處理會在從連線數據源接收之身分識別資訊的 Metaverse 中建立整合式檢視。 同步處理引擎可以隨時使用已連線數據源中的最新身分識別信息來處理身分識別資訊。

輸入同步處理

輸入同步處理包含下列程式:

  • 建(如果區分此程序與輸出同步處理布建很重要,也稱為 投影 )。 同步處理引擎會根據預備物件建立新的 Metaverse 物件,並加以連結。 布建是物件層級作業。
  • Join: 同步處理引擎會將預備對象連結至現有的Metaverse物件。 聯結是物件層級作業。
  • 匯入屬性流程。 同步處理引擎會更新 Metaverse 中對象的屬性值,稱為屬性流程。 匯入屬性流程是屬性層級作業,需要預備物件與 Metaverse 對象之間的連結。

布建是唯一一個在Metaverse中建立對象的程式。 布建只會影響脫離對象的匯入物件。 在布建期間,同步處理引擎會建立 Metaverse 物件,該對象對應至匯入物件的物件類型,並建立兩個對象之間的連結,從而建立聯結的物件。

聯結程式也會建立匯入物件與 Metaverse 對象之間的連結。 聯結與布建之間的差異在於聯結程式要求匯入對象連結到現有的Metaverse物件,其中布建程式會建立新的Metaverse物件。

同步處理引擎會使用同步處理規則組態中指定的準則,嘗試將匯入物件聯結至 Metaverse 物件。

在布建和聯結程序期間,同步處理引擎會將脫離的對象連結至 Metaverse 物件,使其聯結。 完成這些物件層級作業之後,同步處理引擎可以更新相關聯 Metaverse 對象的屬性值。 此程式稱為匯入屬性流程。

匯入屬性流程會在攜帶新數據且連結到 Metaverse 物件的所有匯入物件上發生。

輸出同步處理

當 Metaverse 物件變更但未刪除時,輸出同步處理會更新匯出物件。 輸出同步處理的目標是評估 Metaverse 物件的變更是否需要更新連接器空間中的預備物件。 在某些情況下,變更可能需要更新所有連接器空間中的暫存物件。 變更的暫存物件會標示為擱置匯出,使其匯出物件。 這些導出物件稍後會在匯出程式期間推送至連接的數據源。

輸出同步處理有三個程式:

  • 佈建
  • 取消布建
  • 匯出屬性流程

布建和取消布建都是物件層級作業。 取消布建取決於布建,因為只有布建可以起始布建。 布建會移除 Metaverse 對象與匯出對象之間的連結時,就會觸發取消布建。

當變更套用至 Metaverse 中的物件時,一律會觸發佈建。 對 Metaverse 物件進行變更時,同步處理引擎可以在布建程式中執行下列任何工作:

  • 建立聯結的物件,其中 Metaverse 物件會連結到新建立的導出物件。
  • 重新命名聯結的物件。
  • 在 Metaverse 物件與暫存對象之間脫離連結,建立脫離的物件。

如果布建需要同步處理引擎來建立新的連接器物件,Metaverse 物件所連結的暫存物件一律是導出對象,因為物件還不存在於連接的數據源中。

如果布建需要同步處理引擎取消加入聯結的物件,則會觸發取消布建。 取消布建程式會刪除物件。

在取消布建期間,刪除匯出物件並不會實際刪除物件。 物件會標示為 已刪除,這表示刪除作業會在 物件上暫存。

匯出屬性流程也會在輸出同步處理期間發生,類似於匯入屬性流程在輸入同步處理期間發生的方式。 導出屬性流程只會發生在已聯結的Metaverse和export對象之間。

匯出程式

在導出過程中,同步處理引擎會檢查連接器空間中標示為擱置匯出的所有匯出對象,然後將更新傳送至連接的數據源。

同步處理引擎可以判斷導出的成功,但無法充分判斷身分識別管理程式已完成。 連接數據源中的物件一律可由其他進程變更。 由於同步處理引擎沒有與已連線數據源的持續連線,因此無法根據成功的匯出通知,對聯機數據源中對象的屬性進行假設。

例如,連線數據源中的進程可以將對象的屬性變更回其原始值(也就是說,連線的數據源可以在同步處理引擎推送數據后立即覆寫值,並在連接的數據源中成功套用)。

同步處理引擎會儲存每個預備物件的相關匯出和匯入狀態資訊。 如果在屬性包含清單中指定的屬性值自上次匯出之後有所變更,匯入和匯出狀態的儲存可讓同步處理引擎適當地做出反應。 同步處理引擎會使用匯入程式來確認已匯出至連線數據源的屬性值。 匯入和匯出資訊之間的比較,如下圖所示,可讓同步處理引擎判斷匯出是否成功,或是否需要重複匯出。

Diagram shows the synchronization of an object between connector space and connected data over the connector.

例如,如果同步處理引擎將值為5的屬性 C 匯出至連接的數據源,則會將 C=5 儲存在其匯出狀態記憶體中。 此物件上的每個額外匯出都會再次嘗試將 C=5 匯出至連接的數據源,因為同步處理引擎假設這個值尚未持續套用至物件(也就是說,除非最近從連接的數據源匯入不同的值)。 在物件上的匯入作業期間收到 C=5 時,會清除匯出記憶體。

下一步

深入瞭解 Microsoft Entra 連線 Sync 設定。

深入瞭解 整合內部部署身分識別與 Microsoft Entra ID