本文涵蓋 Microsoft Entra Connect Sync 的基本架構。如果您熟悉先前的身分識別同步處理技術,本文的內容也可能很熟悉。 如果您不熟悉同步處理,則本文適合您。 您不需要知道本文的詳細數據,才能成功對Microsoft Entra Connect Sync 進行自定義(在本文中稱為同步處理引擎)。
建築
同步處理引擎會建立儲存在多個連線數據源中的物件整合檢視,並管理這些數據源中的身分識別資訊。 從連接的數據源擷取的身分識別資訊會決定這個整合式檢視。 一組規則決定如何處理這項資訊。
連接的數據源和連接器
同步處理引擎會處理來自不同數據存放庫的身分識別資訊,例如 Active Directory 或 SQL Server 資料庫。 每個以類似資料庫格式組織其數據的數據存放庫,並提供標準數據存取方法,都是同步處理引擎的潛在數據源候選專案。 同步處理引擎所同步處理的數據存放庫稱為 連線數據源 或 連線目錄 (CD)。
同步處理引擎會在一個名為 Connector的模組中封裝與連線數據源的互動。 每種連線數據源類型都有特定的連接器。 連接器會將必要的作業轉譯成連線數據源所瞭解的格式。
連接器會進行 API 呼叫,以與連接的數據源交換身分識別資訊(讀取和寫入)。 您也可以使用可延伸的連線架構來新增自訂連接器。 下圖顯示連接器如何將連接的數據源連接到同步處理引擎。
數據可以向任一方向流動,但無法同時向兩個方向流動。 連接器可以設定為允許數據從連接的數據源流向同步處理引擎,或從同步處理引擎流向連接的數據源。 但是,一個對象和屬性一次只能發生其中一個作業。 不同物件和不同屬性的方向可能不同。
若要設定連接器,您可以指定您要同步處理的物件類型。 指定物件類型會定義同步處理程式中包含的物件範圍。 下一個步驟是選取要同步處理的屬性,也就是所謂的屬性包含清單。 這些設定可以隨時變更,以回應商務規則的變更。 當您使用 Microsoft Entra Connect 安裝精靈時,會為您設定這些設定。
若要將物件匯出至連接的數據源,屬性包含清單必須至少包含至少在連接的數據源中建立特定物件類型所需的最小屬性。 例如,sAMAccountName 屬性必須包含在屬性包含清單中,才能將使用者對象導出至 Active Directory,因為 Active Directory 中的所有用戶物件都必須定義 sAMAccountName 屬性。 同樣地,安裝精靈會為您執行此設定。
如果連接的數據來源使用結構化元件,例如分割區或容器來組織物件,您可以限制連線數據源中用於指定解決方案的區域。
同步處理引擎命名空間的內部結構
整個同步處理引擎命名空間包含兩個儲存身分識別資訊的命名空間。 這兩個命名空間為:
- 連接器空間 (CS)
- Metaverse (MV)
連接器空間 是一個預備區域,其中包含來自連接數據源的指定物件的表示,以及屬性包含列表中指定的屬性。 同步引擎會使用連接器空間來判斷已連接數據源中的變更,以及預處理傳入變更。 同步處理引擎也會使用連接器空間來暫存傳出變更,以匯出至連接的數據源。 同步引擎為每個連接器維護一個獨立的連接器空間,作為預備區域。
藉由使用暫存區域,同步引擎會保持獨立於連接的數據源,且不會受到其可用性和可存取性的影響。 因此,您可以隨時使用暫存區域中的數據來處理身分識別資訊。 同步引擎可以僅請求自上一次通訊會話終止以來連線數據源內所做的變更,或僅推送連線數據源尚未收到的身分識別資訊變更,從而減少同步引擎與連線數據源之間的網路流量。
此外,同步引擎會儲存它在連接器空間中暫存的所有物件的狀態資訊。 收到新數據時,同步處理引擎一律會評估數據是否已同步處理。
Metaverse 是一個儲存區域,其中包含來自多個連線數據源的匯總識別資訊,提供所有合併物件的單一全域整合檢視。 元宇宙物件是根據從連接的數據源擷取的識別資訊,以及一組可讓您自訂同步過程的規則所建立。
下圖顯示同步處理引擎內的連接器空間命名空間和 Metaverse 命名空間。
同步引擎身份物件
同步處理引擎中的物件代表連接數據源中的物件,或同步處理引擎具有這些物件的整合式檢視。 每個同步處理引擎對象都必須有全域唯一標識碼(GUID)。 GUID 提供數據完整性並表達對象之間的關係。
連接器空間物件
當同步處理引擎與連接的數據源通訊時,它會讀取連線數據源中的識別資訊,並使用該資訊在連接器空間中建立識別物件的表示法。 您無法個別建立或刪除這些物件。 不過,您可以手動刪除連接器空間中的所有物件。
連接器空間中的所有物件都有兩個屬性:
- 全域唯一識別碼 (GUID)
- 辨別名稱(也稱為 DN)
如果連接的數據源將唯一屬性指派給物件,則連接器空間中的物件也可以具有錨點屬性。 錨點屬性可唯一識別連接數據源中的物件。 同步處理引擎會使用錨點,在連接的數據源中找出這個對象的對應表示法。 同步處理引擎假設物件的錨點永遠不會在物件的存留期內變更。
許多連接器都會使用已知的唯一標識符,在匯入時自動為每個物件產生錨點。 例如,Active Directory 連接器會針對錨點使用 objectGUID 屬性。 對於未提供明確定義之唯一標識符的連線數據源,您可以將錨點產生指定為連接器組態的一部分。
在此情況下,錨點是從物件類型的一或多個唯一屬性所建置,這兩者都不會變更,而且會唯一識別連接器空間中的物件(例如員工編號或使用者標識符)。
連接器空間物件可以是下列其中一項:
- 暫存物件
- 佔位符
佈置物件
暫存物件代表連接數據源中指定之物件類型的實例。 除了 GUID 和辨別名稱之外,暫存物件一律有一個值,指出物件類型。
匯入的階段物件一律有錨點屬性的值。 同步處理引擎新布建且在連線數據源中建立的暫存對象沒有錨點屬性的值。
暫存物件也會攜帶業務屬性的當前值,以及同步引擎執行同步進程所需的作業資訊。 作業資訊包含旗標,指出暫存物件上暫存的更新類型。 如果暫存物件從已連線的數據源收到尚未處理的新識別資訊,該物件會被標示為 等待匯入。 如果預備物件有尚未匯出至已連線資料來源的新身分識別資訊,則會標示為擱置匯出 。
暫存物件可以是匯入物件或匯出物件。 同步處理引擎會使用從連接的數據源接收的對象資訊來建立匯入物件。 當同步處理引擎收到與連接器中所選取其中一個物件類型相符之新物件存在的相關信息時,它會在連接器空間中建立匯入物件做為連接數據源中物件的表示法。
下圖顯示匯入物件,表示連接數據源中的物件。
同步處理引擎會使用Metaverse中的物件資訊來建立匯出物件。 匯出物件會在下一個通訊會話期間匯出至連接的數據源。 從同步處理引擎的觀點來看,導出物件還不存在於連接的數據源中。 因此,導出物件的錨點屬性無法使用。 從同步引擎接收對象之後,連接的數據源會為物件的錨點屬性建立唯一值。
下圖顯示如何使用 Metaverse 中的身分識別資訊來建立導出物件。
同步處理引擎會從連接的數據源重新匯入物件,以確認對象的匯出。 當同步處理引擎在下一次從該連接的數據源匯入期間收到物件時,匯出物件會變成匯入物件。
佔位符
同步處理引擎會使用一般命名空間來儲存物件。 不過,某些連線的數據源,例如 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 中進一步處理。 同步處理引擎不會更新連線數據源中對應物件的屬性值。
藉由使用脫離的物件,您可以將身分識別資訊儲存在同步處理引擎中,稍後再進行處理。 將預備物件保留為在連接器空間中的獨立物件有許多優點。 由於系統暫存此物件的必要資訊,因此在下次從連接的數據源匯入期間,不需要再次建立這個物件的表示法。 如此一來,同步引擎總是擁有已連線資料源的完整快照,即使目前沒有與資料源的連線也是如此。 不同的物件可以轉換成聯結的物件,反之亦然,視您指定的規則而定。
匯入物件會建立為分離的物件。 匯出對象必須是聯結的物件。 系統邏輯會強制執行此規則,並刪除不是聯結物件的每個匯出物件。
同步引擎身份管理流程
身分識別管理程式會控制不同連線數據源之間如何更新身分識別資訊。 身分識別管理會在三個程序中發生:
- 進口
- 同步
- 出口
在匯入程式期間,同步處理引擎會從連接的數據源評估傳入的身分識別資訊。 偵測到變更時,它會建立新的暫存物件,或更新連接器空間中現有的預備物件以進行同步處理。
在同步處理過程中,同步處理引擎會更新 Metaverse,以反映連接器空間中的變更。 它也會更新連接器空間,以反映 Metaverse 中的變更。
在匯出過程中,同步處理引擎會推送暫存於暫存物件上的變更,並設定為待匯出狀態。
下圖顯示每個進程在身分識別資訊從一個連接的數據源流向另一個進程時發生的位置。
匯入流程
在匯入程式期間,同步處理引擎會評估身分識別資訊的更新。 同步處理引擎會比較從連接的數據源收到的身分識別資訊與暫存對象的相關身分識別資訊。 它會判斷預備物件是否需要更新。 如果需要以新的數據更新暫存物件,暫存物件會標示為擱置匯入。
同步處理之前,藉由在連接器空間中暫存物件,同步處理引擎只能處理已變更的身分識別資訊。 此程式提供下列優點:
- 有效率的同步處理。 同步處理期間處理的數據量會最小化。
- 高效的重新同步。 您可以變更同步處理引擎處理身分識別資訊的方式,而不需將同步處理引擎重新連線至數據源。
- 有機會預覽同步過程。 您可以預覽同步處理,以確認有關身分識別管理程式的假設正確無誤。
針對連接器中指定的每個物件,同步處理引擎會先嘗試在連接器的連接器空間中找出物件的表示法。 同步處理引擎會檢查連接器空間中的所有預備物件,並嘗試尋找具有相符錨點屬性的對應暫存物件。 如果沒有現有的暫存物件具有相符的錨點屬性,同步處理引擎會嘗試尋找具有相同辨別名稱的對應暫存物件。
當同步處理引擎找到符合專屬名稱但不符合錨點的暫存物件時,會發生下列特殊行為:
- 如果位於連接器空間中的物件沒有錨點,則同步處理引擎會從連接器空間中移除此物件,並將它連結的 Metaverse 物件標示為 下次同步處理執行時重試布建。 然後它會建立新的匯入物件。
- 如果位於連接器空間中的物件具有錨點,則同步處理引擎會假設此物件已在連接的目錄中重新命名或刪除。 它會為連接器空間物件指派暫時的新辨別名稱,讓它可以暫存傳入物件。 然後,舊物件會變成 暫時性,等待 Connector 匯入重新命名或刪除,以解決這種情況。
暫時性物件不一定是問題,您甚至可能會在狀況良好的環境中看到它們。 使用 Microsoft Entra Connect Sync V2 端點 API時,暫時性對象應在其後的差異同步週期中自動解決。 您可能會發現在安裝於預備模式 Microsoft 的 Entra Connect 伺服器上發生暫時性對象的常見範例。 當系統管理員使用 PowerShell 在 Microsoft Entra ID 中直接永久刪除物件後,再次同步處理該物件時,就會發生這種情況。
如果同步引擎找到與連接器中所指定物件對應的暫存物件,它會決定要套用的變更類型。 例如,同步處理引擎可能會重新命名或刪除連線數據源中的物件,或者它可能只會更新對象的屬性值。
具有更新數據的暫存物件會標示為擱置匯入。 有不同類型的擱置匯入可用。 根據匯入程式的結果,連接器空間中的暫存物件具有下列其中一個等待匯入類型:
- None。 暫存物件的任何屬性皆無法進行變更。 同步處理引擎不會將此類型標示為擱置匯入。
- 新增。 暫存物件是連接器空間中的新匯入物件。 同步處理引擎會將此類型標記為處於待匯入狀態,以在metaverse中進行其他處理。
- Update。 同步處理引擎會在連接器空間中尋找對應的暫存物件,並將此類型標示為擱置匯入,以便在 Metaverse 中處理屬性的更新。 更新包括物件重新命名。
- 移除。 同步處理引擎會在連接器空間中尋找對應的暫存物件,並將此類型標示為擱置匯入,以便刪除聯結的物件。
- 刪除/新增。 同步處理引擎會在連接器空間中尋找對應的暫存物件,但物件類型不相符。 在此情況下,刪除和新增的修改正在準備中。 刪除新增修改表示同步處理引擎必須進行此物件的完整重新同步處理,因為物件類型變更時,不同的規則集會套用至這個物件。
藉由設定暫存物件的暫止匯入狀態,可以大幅減少同步處理期間處理的數據量。 這樣做可讓系統只處理那些已更新數據的物件。
同步過程
同步處理包含兩個相關過程:
- 當使用連接器空間中的數據更新 Metaverse 的內容時,進行輸入同步化。
- 當連接器空間的內容使用來自元宇宙的數據進行更新時,這即是輸出同步處理。
藉由使用已暫存於連接器空間中的資訊,內向同步處理程序會在儲存在連接數據源中的Metaverse中,建立資料的整合視圖。 根據規則的設定方式,會匯總所有暫存對象,或僅匯總具有待匯入資訊的對象。
當 Metaverse 物件變更時,輸出同步處理程式會更新匯出物件。
從連結的資料來源接收之身分識別資訊在 Metaverse 中透過內部同步建立整合視圖。 同步處理引擎可以隨時使用已連線數據源中的最新身分識別信息來處理身分識別資訊。
輸入同步處理
輸入同步處理包含下列程式:
- 布建(也稱為 投影,如需將此過程與外部同步布建區分時)。 同步處理引擎會根據預備物件建立新的 Metaverse 物件,並加以連結。 配置是物件層級的作業。
- 加入。 同步處理引擎會將預備對象連結至現有的Metaverse物件。 聯結是物件層級作業。
- 匯入屬性流程。 同步處理引擎會更新 Metaverse 中對象的屬性值,稱為屬性流程。 匯入屬性流程是屬性層級作業,需要預備物件與 Metaverse 對象之間的連結。
提供是唯一能在元宇宙中創建對象的流程。 條款僅影響分離的匯入物件。 在布建期間,同步處理引擎會建立 Metaverse 物件,該對象對應至匯入物件的物件類型,並建立兩個對象之間的連結,從而建立聯結的物件。
聯結程式也會建立匯入物件與 Metaverse 對象之間的連結。 聯結程式需要匯入對象連結至現有的 Metaverse 物件。 不過,布建程式會建立新的 Metaverse 物件。
同步處理引擎會使用同步處理規則組態中指定的準則,嘗試將匯入物件聯結至 Metaverse 物件。
在配置和合併程序期間,同步處理引擎會將脫離的對象連結至 Metaverse 物件,使其合併。 完成這些物件層級作業之後,同步處理引擎可以更新相關聯 Metaverse 對象的屬性值。 此程式稱為匯入屬性流程。
匯入屬性流程會在攜帶新數據且連結到 Metaverse 物件的所有匯入物件上發生。
輸出同步
當 Metaverse 物件變更但未刪除時,輸出同步處理會更新匯出物件。 輸出同步處理的目標是評估 Metaverse 物件的變更是否需要更新連接器空間中的預備物件。 在某些情況下,變更可能需要更新所有連接器空間中的暫存物件。 發生變更的暫存物件會被標示為等待匯出的狀態,從而將其視為匯出物件。 這些導出物件稍後會在匯出程式期間推送至連接的數據源。
輸出同步處理有三個程式:
- 布建
- 撤銷配置
- 匯出屬性流程
布建和取消布建都是物件層級作業。 解除布建取決於布建,因為只有布建可以啟動解除過程。 布建移除 Metaverse 對象與匯出對象之間的連結時,就會觸發取消布建。
當變更套用至 Metaverse 中的物件時,一律會觸發佈建。 對 Metaverse 物件進行變更時,同步處理引擎可以在布建程式中執行下列任何工作:
- 建立聯結的物件,其中 Metaverse 物件會連結到新建立的導出物件。
- 重新命名聯結的物件。
- 在 Metaverse 物件與暫存對象之間脫離連結,建立脫離的物件。
如果布建需要同步處理引擎來建立新的連接器對象,連結至 Metaverse 對象的預備物件一律為導出。 這是因為物件還不存在於連接的數據源中。
如果佈建需要同步引擎將已聯結的物件取消聯結並創建一個取消聯結的物件,則會觸發取消佈建。 取消配置過程會刪除物件。
在取消布建過程中,刪除匯出物件並不會實際將該物件從物理上刪除。 物件被標記為 刪除,這表示刪除作業已在該物件上準備執行。
匯出屬性流程也會在輸出同步處理期間發生,類似於匯入屬性流程在輸入同步處理期間發生的方式。 導出屬性流程只會發生在已聯結的元宇宙和匯出對象之間。
匯出過程
在導出過程中,同步處理引擎會檢查連接器空間中標示為擱置匯出的所有匯出對象,然後將更新傳送至連接的數據源。
同步處理引擎可以判斷導出的成功,但無法充分判斷身分識別管理程式已完成。 其他進程一律可以變更連線數據源中的物件。 由於同步處理引擎沒有與已連線數據源的持續連線,因此無法根據成功的匯出通知,對聯機數據源中對象的屬性進行假設。
例如,連線數據源中的進程可以將對象的屬性變更回其原始值(也就是說,連線的數據源可以在同步處理引擎推送數據后立即覆寫值,並在連接的數據源中成功套用)。
同步處理引擎會儲存每個預備物件的相關匯出和匯入狀態資訊。 如果在屬性包含清單中指定的屬性值自上次匯出之後有所變更,匯入和匯出狀態的儲存可讓同步處理引擎適當地做出反應。 同步處理引擎會使用匯入程式來確認已匯出至連線數據源的屬性值。 匯入和匯出資訊之間的比較,如下圖所示,可讓同步處理引擎判斷匯出是否成功,或是否需要重複匯出。
例如,如果同步處理引擎將值為5的屬性 C 匯出至連接的數據源,則會將 C=5 儲存在其匯出狀態記憶體中。 此物件上的每個額外匯出都會再次嘗試將 C=5 匯出至連接的數據源,因為同步處理引擎假設這個值尚未持續套用至物件(也就是說,除非最近從連接的數據源匯入不同的值)。 在物件上的匯入作業期間收到 C=5 時,會清除匯出記憶體。
後續步驟
深入瞭解 Microsoft Entra Connect Sync 組態。