Microsoft Entra 連線 Sync:變更預設組態

本文的目的是要逐步引導您變更 Microsoft Entra 連線 Sync 中的預設組態。它提供一些常見案例的步驟。 有了這項知識,您應該能夠根據自己的商務規則,對自己的設定進行簡單的變更。

警告

如果您對默認現成同步處理規則進行變更,則下次更新 Microsoft Entra 連線 時,將會覆寫這些變更,因而產生非預期且可能不需要的同步處理結果。

默認現成同步處理規則具有指紋。 如果您變更這些規則,指紋就不會再相符。 當您嘗試套用新版本的 Microsoft Entra 連線 時,未來可能會遇到問題。 請只變更本文所述的方式。

同步規則編輯器

同步處理規則編輯器可用來查看和變更預設組態。 您可以在 Microsoft Entra 連線 群組底下的 [開始] 選單上找到它
Start menu with Sync Rule Editor

當您開啟編輯器時,您會看到預設的現用規則。

Sync Rule Editor

使用編輯器頂端的下拉式清單,您可以快速找到特定規則。 例如,如果您想要查看包含屬性 proxyAddresses 的規則,您可以將下拉式清單變更為下列專案:
SRE filtering
若要重設篩選並載入全新設定,請按鍵盤上的 F5。

右上方是 [ 新增規則 ] 按鈕。 您可以使用此按鈕來建立自己的自訂規則。

底部是用於在所選同步處理規則上運作的按鈕。 編輯刪除 會執行您預期的結果。 匯出 會產生 PowerShell 腳本,以重新建立同步處理規則。 透過此程式,您可以將同步處理規則從一部伺服器移至另一部伺服器。

建立您的第一個自定義規則

最常見的變更是屬性流程。 來源目錄中的數據可能與 Microsoft Entra ID 中的數據不同。 在本節的範例中,請確定用戶的名稱一律正確。

停用排程器

程器 預設會每隔 30 分鐘執行一次。 在進行變更並針對新規則進行疑難解答時,請確定它並未啟動。 若要暫時停用排程器,請啟動 PowerShell 並執行 Set-ADSyncScheduler -SyncCycleEnabled $false

Disable the scheduler

建立規則

  1. 按兩下 [ 新增規則]。
  2. 在 [ 描述] 頁面上,輸入下列專案:
    Inbound rule filtering
    • 名稱:為規則指定描述性名稱。
    • 描述:提供一些澄清,讓其他人可以了解規則的用途。
    • 連線 系統:這是可在其中找到對象的系統。 在此情況下,請選取 [Active Directory 連線 or]。
    • 連線 系統/Metaverse 物件類型:分別選取用戶人員
    • 連結類型:將此值變更為 Join
    • 優先順序:提供系統中唯一的值。 較低的數值表示較高的優先順序。
    • 標籤:將此保留空白。 只有來自 Microsoft 的現成規則,才會將這個方塊填入值。
  3. 在 [ 範圍篩選 ] 頁面上,輸入 givenName ISNOTNULL
    Inbound rule scoping filter
    本節用來定義規則應套用的物件。 如果保留空白,規則會套用至所有用戶物件。 不過,這包括會議室、服務帳戶和其他非人員用戶物件。
  4. 在 [ 聯結規則] 頁面上,將字段保留空白。
  5. 在 [轉換] 頁面上,將 FlowType 變更Expression。 針對 [ 目標屬性],選取 [givenName]。 在 [來源] 中,輸入 PCase([givenName])Inbound rule transformations
    同步處理引擎會區分函式名稱和屬性的名稱。 如果您輸入錯誤,就會在新增規則時看到警告。 您可以儲存並繼續,但您必須重新開啟並更正規則。
  6. 按兩下 [ 新增 ] 以儲存規則。

您的新自定義規則應該與系統中的其他同步處理規則一起顯示。

確認變更

有了這項新的變更,您想要確定它如預期般運作,而且不會擲回任何錯誤。 視您擁有的物件數目而定,有兩種方式可以執行此步驟:

  • 在所有物件上執行完整同步處理。
  • 在單一物件上執行預覽和完整同步處理。

從 [開始] 功能表開啟同步處理服務 本節中的步驟全都在此工具中。

所有物件的完整同步處理

  1. 選取頂端 連線 器。 識別您在上一節中變更的連接器(在此案例中為 Active Directory 網域服務),然後加以選取。
  2. 針對 [ 動作],選取 [ 執行]。
  3. 選取 [完整同步處理],然後選取 [ 確定]。 Full sync
    對象現在會在 Metaverse 中更新。 查看 Metaverse 中的物件,以確認您的變更。

在單一物件上預覽和完整同步處理

  1. 選取頂端 連線 ors。 識別您在上一節中變更的連接器(在此案例中為 Active Directory 網域服務),然後加以選取。
  2. 選取 [搜尋 連線 或空間]。
  3. 使用 Scope 尋找您想要用來測試變更的物件。 選取 物件,然後按兩下 [ 預覽]。
  4. 在新畫面上,選取 [ 認可預覽]。
    Commit preview
    變更現在會認可至 Metaverse。

在 Metaverse 中檢視物件

  1. 挑選一些範例物件,以確定值是預期的,以及套用規則。
  2. 從頂端選取 [Metaverse 搜尋 ]。 新增任何您需要尋找相關對象的篩選。
  3. 從搜尋結果中,開啟物件。 查看屬性值,並在 [同步處理規則] 資料行中確認規則已如預期般套用。
    Metaverse search

啟用排程器

如果一切如預期般,您可以再次啟用排程器。 從 PowerShell 執行 Set-ADSyncScheduler -SyncCycleEnabled $true

其他常見的屬性流程變更

上一節說明如何變更屬性流程。 在本節中,會提供一些額外的範例。 如何建立同步處理規則的步驟縮寫,但您可以在上一節中找到完整步驟。

使用預設值以外的屬性

在此 Fabrikam 案例中,有一個樹系,其中本機字母會用於指定的名稱、姓氏和顯示名稱。 您可以在擴充屬性中找到這些屬性的拉丁字元表示。 若要在 Microsoft Entra ID 和 Microsoft 365 中建置全域通訊清單,組織想要改用這些屬性。

使用預設組態時,來自本機樹系的物件看起來像這樣:
Attribute flow 1

若要建立具有其他屬性流程的規則,請執行下列動作:

  1. 從 [開始] 功能表開啟 [同步處理規則編輯器]。
  2. 左側仍選取 [輸入 ] 時,按兩下 [ 新增規則 ] 按鈕。
  3. 為規則指定名稱和描述。 選取 內部部署的 Active Directory 實例和相關物件類型。 在 [ 鏈接類型] 中,選取 [ 聯結]。 針對 [ 優先順序],挑選其他規則未使用的數位。 現成的規則從 100 開始,因此值 50 可用於此範例中。 Attribute flow 2
  4. 將範圍篩選保留空白。 (也就是說,它應該套用至樹系中的所有用戶物件。
  5. 將 [聯結規則] 保留空白。 (也就是說,讓現用規則處理任何聯結。
  6. [轉換] 中,建立下列流程:
    Attribute flow 3
  7. 按兩下 [ 新增 ] 以儲存規則。
  8. 移至 [同步處理服務管理員]。 在 連線 器上,選取您新增規則的連接器。 選取 [ 執行],然後選取 [完整同步處理]。 完整同步處理會使用目前的規則重新計算所有物件。

這是具有此自定義規則之相同物件的結果:
Attribute flow 4

屬性的長度

字串屬性預設可編製索引,最大長度為 448 個字元。 如果您正在使用可能包含更多專案的字串屬性,請務必在屬性流程中包含下列內容:
attributeName<- Left([attributeName],448)

變更 userPrincipalSuffix

Active Directory 中的 userPrincipalName 屬性不一定會由使用者知道,而且可能不適合作為登入標識符。 透過 Microsoft Entra 連線 同步安裝精靈,您可以選擇不同的屬性,例如郵件。 但在某些情況下,必須計算 屬性。

例如,Contoso 公司有兩個 Microsoft Entra 目錄,一個用於生產環境,一個用於測試。 他們希望測試租使用者中的使用者使用登入標識碼中的另一個後綴:
Word([userPrincipalName],1,"@") & "@contosotest.com".

在此表達式中,將第一個 @-sign (Word) 的所有專案都保留下來,並以固定字串串連。

將多重值屬性轉換為單一值

Active Directory 中的某些屬性在架構中是多重值,即使它們看起來在 Active Directory 使用者和電腦 中為單一值也一樣。 範例是 description 屬性:
description<- IIF(IsNullOrEmpty([description]),NULL,Left(Trim(Item([description],1)),448))

在此表達式中,如果屬性有值,請取得 屬性中的第一個專案 (Item),移除前置和尾端空格 (Trim),然後在字串中保留前 448 個字元 (Left)。

不要流動屬性

如需本節案例的背景,請參閱 控制屬性流程程式

有兩種方式可以不流動屬性。 第一個是使用安裝精靈來 移除選取的屬性。 如果您之前從未同步處理屬性,此選項會正常運作。 不過,如果您已開始同步處理此屬性,並在稍後使用這項功能移除此屬性,同步處理引擎會停止管理屬性,而且現有的值會留在 Microsoft Entra ID 中。

如果您想要移除屬性的值,並確定它在未來不會流動,您需要建立自定義規則。

在此 Fabrikam 案例中,我們已了解我們同步處理至雲端的某些屬性不應該存在。 我們想要確定這些屬性已從 Microsoft Entra ID 中移除。
Bad extension attributes

  1. 建立新的輸入同步處理規則,並填入描述。 Descriptions
  2. 使用 FlowTypeExpressionSource 的 AuthorizationNull 建立屬性流程。 常值 AuthoritativeNull 表示值應該在 Metaverse 中是空的,即使較低優先順序的同步處理規則嘗試填入值也一樣。 Transformation for extension attributes
  3. 儲存同步處理規則。 啟動同步處理服務、尋找連接器、選取 [執行],然後選取 [完整同步處理]。 此步驟會重新計算所有屬性流程。
  4. 搜尋 連線 or Space,確認預定的變更即將導出。 Staged delete

使用 PowerShell 建立規則

當您只需要進行一些變更時,使用同步規則編輯器即可正常運作。 如果您需要進行許多變更,PowerShell 可能是較佳的選項。 某些進階功能僅適用於PowerShell。

取得現用規則的PowerShell腳本

若要查看建立現用規則的 PowerShell 腳本,請在同步處理規則編輯器中選取規則,然後按兩下 [ 匯出]。 此動作會提供您建立規則的 PowerShell 文稿。

進階優先順序

現成的同步處理規則會從優先順序值為100開始。 如果您有許多樹系,而且需要進行許多自定義變更,則 99 個同步處理規則可能不夠。

您可以指示同步處理引擎您想要在現成規則之前插入其他規則。 若要取得此行為,請遵循下列步驟:

  1. 在同步處理規則編輯器中標記第一個現用同步處理規則 (從 AD-User Join 輸入),然後選取 [ 匯出]。 複製 SR 識別碼值。
    PowerShell before change
  2. 建立新的同步處理規則。 您可以使用同步處理規則編輯器來建立它。 將規則匯出至 PowerShell 腳本。
  3. 屬性 PrecedenceBefore 中,從現用規則插入 Identifier 值。 將 [優先順序 ] 設定為 0。 請確定Identifier屬性是唯一的,而且您不會從另一個規則重複使用 GUID。 也請 確定未設定 ImmutableTag 屬性。 此屬性應該只針對現成規則進行設定。
  4. 儲存 PowerShell 腳本並加以執行。 結果是您的自定義規則會指派優先順序值為 100,而所有其他現用規則都會遞增。
    PowerShell after change

如有需要,您可以使用相同的 PrecedenceBefore 值來擁有許多自定義同步處理規則。

啟用 UserType 的同步處理

Microsoft Entra 連線 支援同步處理 1.1.524.0 版及更新版本中 User 物件的 UserType 屬性。 更具體地說,已引進下列變更:

  • Microsoft Entra 連線 or 中物件類型 User 的架構會擴充為包含 UserType 屬性,該屬性屬於類型字串且為單一值。
  • Metaverse 中物件類型 Person 的架構會擴充為包含 UserType 屬性,該屬性屬於類型字串且為單一值。

根據預設,UserType 屬性不會啟用同步處理,因為 內部部署的 Active Directory 中沒有對應的 UserType 屬性。 您必須手動啟用同步處理。 執行這項操作之前,您必須記下 Microsoft Entra ID 強制執行的下列行為:

  • Microsoft Entra-only 接受 UserType 屬性的兩個值: MemberGuest
  • 如果未在 Microsoft Entra 連線 中啟用 UserType 屬性進行同步處理,透過目錄同步處理建立的 Microsoft Entra 使用者會將 UserType 屬性設定為 Member
  • 在 1.5.30.0 版之前,Microsoft Entra 識別碼不允許 Microsoft Entra 連線 變更現有 Microsoft Entra 使用者的 UserType 屬性。 在舊版中,只能在建立 Microsoft Entra 用戶期間設定它,並 透過 PowerShell 進行變更。

啟用 UserType 屬性的同步處理之前,您必須先決定屬性衍生自 內部部署的 Active Directory 的方式。 以下是最常見的方法:

  • 指定未使用的內部部署 AD 屬性(例如 extensionAttribute1)做為來源屬性。 指定的內部部署 AD 屬性應該是類型字串、單一值,並包含 MemberGuest

    如果您選擇此方法,您必須確定指定的屬性已填入 內部部署的 Active Directory 中已同步處理至 Microsoft Entra ID 之所有現有使用者物件的正確值,再啟用 UserType 屬性的同步處理。

  • 或者,您可以從其他屬性衍生 UserType 屬性的值。 例如,如果您想要將其內部部署AD userPrincipalName屬性以網域部分 @partners.fabrikam123.org 結尾,則將其所有使用者同步處理為 Guest

    如先前所述,舊版的 Microsoft Entra 連線 不允許 Microsoft Entra 連線 變更現有 Microsoft Entra 使用者的 UserType 屬性。 因此,您必須確定您已決定的邏輯與租使用者中所有現有 Microsoft Entra 使用者已設定 UserType 屬性的方式一致。

開啟 UserType 屬性同步處理的步驟摘要如下:

  1. 停用同步排程器,並確認沒有任何同步處理進行中。
  2. 將來源屬性新增至內部部署AD連線or架構。
  3. 將 UserType 新增至 Microsoft Entra 連線 or 架構。
  4. 建立輸入同步處理規則,以從 內部部署的 Active Directory 傳送屬性值。
  5. 建立輸出同步處理規則,將屬性值流向 Microsoft Entra ID。
  6. 執行完整同步處理週期。
  7. 啟用同步排程器。

注意

本節的其餘部分涵蓋這些步驟。 它們描述於具有單一樹系拓撲且不含自定義同步處理規則的 Microsoft Entra 部署內容中。 如果您已設定多樹系拓撲、自定義同步處理規則或具有預備伺服器,則必須據以調整步驟。

步驟 1:停用同步排程器,並確認沒有任何同步處理進行中

若要避免將非預期的變更匯出至 Microsoft Entra ID,請確定您在更新同步處理規則時不會進行同步處理。 若要停用內建同步排程器:

  1. 在 Microsoft Entra 連線 伺服器上啟動 PowerShell 工作階段。
  2. 執行 Cmdlet Set-ADSyncScheduler -SyncCycleEnabled $false來停用排程同步處理。
  3. 移至 [啟動>同步處理服務] 來開啟 Synchronization Service Manager。
  4. 移至 [作業] 索引標籤,並確認沒有任何作業處於進行中狀態

步驟 2:將來源屬性新增至內部部署 AD 連線 or 架構

並非所有 Microsoft Entra 屬性都會匯入內部部署 AD 連線 or Space。 若要將來源屬性新增至匯入的屬性清單:

  1. 移至 [同步處理服務管理員] 中的 [連線 ors] 索引標籤。
  2. 以滑鼠右鍵按兩下內部部署AD連線or,然後選取 [屬性]。
  3. 在快顯對話框中,移至 [ 選取屬性] 索引標籤
  4. 請確定來源屬性已簽入屬性清單中。
  5. 按一下 [確定] 以儲存。 Add source attribute to on-premises AD Connector schema

步驟 3:將 UserType 屬性新增至 Microsoft Entra 連線 or 架構

根據預設,UserType 屬性不會匯入 Microsoft Entra 連線 Space。 若要將 UserType 屬性新增至匯入的屬性清單:

  1. 移至 Synchronization Service Manager 中的 [連線 ors] 索引卷標。
  2. 滑鼠右鍵按下 Microsoft Entra 連線 or,然後選取 [屬性]。
  3. 在快顯對話框中,移至 [ 選取屬性] 索引標籤
  4. 請確定已在屬性清單中核取 UserType 屬性。
  5. 按一下 [確定] 以儲存。

Add source attribute to Microsoft Entra Connector schema

步驟 4:建立輸入同步處理規則,以從 內部部署的 Active Directory 流程屬性值

輸入同步處理規則允許屬性值從來源屬性從 內部部署的 Active Directory 流向 Metaverse:

  1. 移至 [啟動>同步處理規則編輯器] 來開啟 [同步處理規則編輯器]。

  2. 將搜尋篩選方向設定為 [輸入]。

  3. 按兩下 [ 新增規則 ] 按鈕以建立新的輸入規則。

  4. 在 [ 描述] 索引標籤底下,提供下列設定:

    屬性 詳細資料
    名稱 提供名稱 例如, 從 AD In – User UserType
    描述 提供描述
    連線的系統 挑選內部部署 AD 連接器
    連線的系統物件類型 使用者
    Metaverse 物件類型
    連結類型 聯結
    優先順序 選擇介於 1 到 99 之間的數位 1–99 保留給自定義同步規則。 請勿挑選另一個同步處理規則所使用的值。
  5. 移至 [範圍篩選] 索引卷標,並使用下列子句新增單一範圍篩選群組

    屬性 運算子
    adminDescription NOTSTARTWITH 使用者_

    範圍篩選條件會決定套用此輸入同步處理規則的內部部署 AD 物件。 在此範例中,我們使用在 [從 AD – 使用者通用] 現成同步處理規則中使用的相同範圍篩選條件,以防止同步處理規則套用至透過 Microsoft Entra 使用者回寫功能建立的用戶物件。 您可能需要根據 Microsoft Entra 連線 部署來調整範圍篩選。

  6. 移至 [ 轉換] 索引標籤,並實作所需的轉換規則。 例如,如果您已將未使用的內部部署 AD 屬性 (例如 extensionAttribute1) 指定為 UserType 的來源屬性,您可以實作直接屬性流程:

    流程類型 目標屬性 來源 套用一次 合併類型
    直接 UserType extensionAttribute1 未選取 更新

    在另一個範例中,您想要從其他屬性衍生 UserType 屬性的值。 例如,如果您想要將其內部部署AD userPrincipalName屬性以網域部分 @partners.fabrikam123.org 結尾,則以 Guest 形式同步處理所有使用者。您可以實作如下的運算式:

    流程類型 目標屬性 來源 套用一次 合併類型
    運算式 UserType IIF(IsPresent([userPrincipalName]),IIF(CBool(InStr(LCase([userPrincipalName]),“@partners.fabrikam123.org”)=0),“Member”,“Guest”),Error(“UserPrincipalName 不存在以判斷 UserType”)) 未選取 更新
  7. 按兩下 [ 新增 ] 以建立輸入規則。

Create inbound synchronization rule

步驟 5:建立輸出同步處理規則,將屬性值流向 Microsoft Entra ID

輸出同步處理規則允許屬性值從 Metaverse 流向 Microsoft Entra ID 中的 UserType 屬性:

  1. 移至 [同步處理規則編輯器]。

  2. 將搜尋篩選 [方向 ] 設定為 [輸出]。

  3. 按兩下 [ 新增規則 ] 按鈕。

  4. 在 [ 描述] 索引標籤底下,提供下列設定:

    屬性 詳細資料
    名稱 提供名稱 例如, Out to Microsoft Entra ID – User UserType
    描述 提供描述
    連線的系統 選取 Microsoft Entra 連接器
    連線的系統物件類型 使用者
    Metaverse 物件類型
    連結類型 聯結
    優先順序 選擇介於 1 到 99 之間的數位 1–99 保留給自定義同步規則。 請勿挑選另一個同步處理規則所使用的值。
  5. 移至 [範圍篩選] 索引卷標,並新增具有兩個子句的單一範圍篩選群組

    屬性 運算子
    sourceObjectType 等於 User
    cloudMastered NOTEQUAL True

    範圍篩選會決定套用此輸出同步處理規則的 Microsoft Entra 物件。 在此範例中,我們使用從 Out 到 AD 的相同範圍篩選 - 使用者身分 識別現用同步處理規則。 它可防止同步處理規則套用至未從 內部部署的 Active Directory 同步處理的用戶物件。 您可能需要根據 Microsoft Entra 連線 部署來調整範圍篩選。

  6. 移至 [ 轉換] 索引標籤,並實作下列轉換規則:

    流程類型 目標屬性 來源 套用一次 合併類型
    直接 UserType UserType 未選取 更新
  7. 按兩下 [ 新增 ] 以建立輸出規則。

Create outbound synchronization rule

步驟 6:執行完整同步處理週期

一般而言,需要完整同步處理週期,因為我們已將新的屬性新增至 Active Directory 和 Microsoft Entra 連線 or 架構,並引進自定義同步處理規則。 您想要在將變更匯出至 Microsoft Entra ID 之前先確認變更。

您可以使用下列步驟來驗證變更,同時手動執行構成完整同步處理週期的步驟。

  1. 在內部部署 AD 連線 or執行完整匯入:

    1. 移至 Synchronization Service Manager 中的 [連線 ors] 索引卷標。

    2. 滑鼠右鍵按兩下內部部署AD連線or,然後選取[執行]。

    3. 在快顯對話框中,選取 [完整匯入 ],然後按兩下 [ 確定]。

    4. 等候作業完成。

      注意

      如果已匯入的屬性清單中已包含來源屬性,則可以略過內部部署AD連線or的完整匯入。 換句話說,您不需要在步驟 2:將來源屬性新增至內部部署 AD 連線 or 架構期間進行任何變更。

  2. 在 Microsoft Entra 連線 or 上執行完整匯

    1. 滑鼠右鍵按下 Microsoft Entra 連線 or,然後選取 [執行]。
    2. 在快顯對話框中,選取 [完整匯入 ],然後按兩下 [ 確定]。
    3. 等候作業完成。
  3. 確認現有 User 物件的同步處理規則變更:

    內部部署的 Active Directory 的來源屬性和 Microsoft Entra ID 中的 UserType 已匯入其各自的 連線 or Spaces。 在繼續進行完整同步處理之前,請在內部部署 AD 連線 or Space 中的現有 User 對象上執行預覽。 您選擇的物件應該已填入來源屬性。

    在 Metaverse 中填入 UserType 的成功 預覽 是您已正確設定同步處理規則的良好指標。 如需如何執行預覽的詳細資訊,請參閱驗證變更一節

  4. 內部部署 AD 連線 or 上執行完整同步處理

    1. 滑鼠右鍵按兩下內部部署AD連線or,然後選取[執行]。
    2. 在快顯對話框中,選取 [完整同步處理 ],然後按兩下 [ 確定]。
    3. 等候作業完成。
  5. 確認 擱置 匯出至 Microsoft Entra 識別碼:

    1. 滑鼠右鍵按下 Microsoft Entra 連線 or,然後選取 [搜尋 連線 or 空間]。

    2. 在 [搜尋 連線 or 空格] 快顯對話框中:

      • 將 [範圍] 設定為 [擱置匯出]。
      • 選取這三個複選框: [新增]、 [修改] 和 [ 刪除]。
      • 按兩下 [ 搜尋] 按鈕,取得要匯出之變更的物件清單。 若要檢查指定對象的變更,請按兩下物件。
      • 確認變更是預期的。
  6. Microsoft Entra 連線 or 上執行導出

    1. 滑鼠右鍵按下 Microsoft Entra 連線 or,然後選取 [執行]。
    2. 在 [執行 連線 或彈出視窗] 對話框中,選取 [匯出],然後按兩下 [確定]。
    3. 等候導出至 Microsoft Entra ID 完成。

注意

這些步驟不包含 Microsoft Entra 連線 or 的完整同步處理和導出步驟。 不需要這些步驟,因為屬性值會從 內部部署的 Active Directory 流向僅限 Microsoft Entra。

步驟 7:重新啟用同步排程器

重新開啟內建同步排程器:

  1. 啟動 PowerShell 工作階段。
  2. 執行 Cmdlet 以重新啟用排程同步處理 Set-ADSyncScheduler -SyncCycleEnabled $true

下一步

  • 深入了解瞭解宣告式佈建中的組態模型。
  • 在瞭解宣告式布建表示式深入了解表達式語言。

概觀主題