在 Microsoft Entra ID 中管理組動態成員資格群組規則
在 Microsoft Entra ID (Microsoft Entra 的一部分) 中,可建立以使用者型或裝置屬性為基礎的規則,來啟用組動態成員資格群組的成員資格。 可使用基於成員屬性的成員資格規則來自動新增及移除動態成員資格群組。 在 Microsoft Entra 中,單一租用戶最多可以有 15000 個動態成員資格群組。
本文將詳細說明根據使用者或裝置為動態成員資格群組建立規則的屬性與語法。
注意
安全性群組可用於裝置或使用者,但 Microsoft 365 群組只能用於使用者群組。
當使用者或裝置的屬性變更時,系統會評估目錄的所有組動態成員資格群組規則,查看變更是否會觸發新增或移除任何群組。 如果使用者或裝置滿足群組中的規則,則會將它們新增為該群組的成員。 如果不再滿足規則,則會將使用者移除。 無法手動新增或移除動態成員資格群組成員。
- 可以為裝置或使用者建立動態成員資格群組,但無法建立同時包含使用者和裝置的規則。
- 無法根據裝置擁有者的使用者屬性來建立裝置成員資格群組。 裝置成員資格規則只能參考裝置屬性。
注意
如欲使用此功能,則屬於一個或多個動態成員資格群組成員的每個不重複使用者,都需要 Microsoft Entra ID P1 授權或 Intune 教育版。 不需要為了讓使用者成為動態成員資格群組成員,而指派授權給使用者,但在 Microsoft Entra 組織中,授權數至少必須足以涵蓋所有這類使用者。 例如,如果組織中的所有動態成員資格群組總計有 1000 個不重複使用者,則至少需要 1000 個 Microsoft Entra ID P1 授權,才符合授權需求。 若裝置屬於基於裝置的動態成員資格群組,則不需要任何授權。
Azure 入口網站中的規則建立器
Microsoft Entra ID 提供規則建立器,可更快速建立和更新重要的規則。 規則建立器支援建構最多五個運算式。 規則建立器可輕鬆使用幾個簡單的運算式來建立規則,但不可能重現每一個規則。 如果規則建立器不支援想建立的規則,可以使用文字方塊。
以下是一些需要使用文字輸入框的進階規則或語法範例:
- 具有五個以上運算式的規則
- 直屬員工規則
- 具有 -contains 或 -notContains 運算子的規則
- 設定運算子優先順序
- 具有複雜運算式的規則,例如
(user.proxyAddresses -any (_ -startsWith "contoso"))
注意
規則建立器可能無法顯示文字方塊中建構的某些規則。 當規則建立器無法顯示規則時,可能會看到訊息。 規則建立器不會以任何方式變更動態成員資格群組規則支援的語法、驗證或處理。
如需其他逐步指示,請參閱<建立或更新動態成員資格群組>。
單一運算式的規則語法
單一運算式是最簡單的成員資格規則形式,只包含上述三個部分。 具有單一運算式的規則看起來類似此範例:Property Operator Value
,其中屬性的語法是 object.property 的名稱。
以下範例說明正確建構的成員資格規則 (具有單一運算式):
user.department -eq "Sales"
單一運算式的括號是選用的。 成員資格規則的本文總長度不得超過 3072 個字元。
建構成員資格規則的本文
自動填入使用者或裝置群組的成員資格規則是導致 true 或 false 結果的二進位運算式。 簡單規則的三個部分如下:
- 屬性
- 運算子
- 值
運算式內的部分順序很重要,可避免發生語法錯誤。
支援的屬性
有三種類型的屬性可用來建構成員資格規則。
- 布林值
- 日期時間
- 字串
- 字串集合
以下是可用來建立單一運算式的使用者屬性。
布林值類型的屬性
屬性 | 允許的值 | 使用方式 |
---|---|---|
accountEnabled | true false | user.accountEnabled -eq true |
dirSyncEnabled | true false | user.dirSyncEnabled -eq true |
日期時間類型的屬性
屬性 | 允許的值 | 使用方式 |
---|---|---|
employeeHireDate (預覽版) | 任何 DateTimeOffset 值或關鍵字 system.now | user.employeeHireDate -eq "value" |
字串類型的屬性
屬性 | 允許的值 | 使用方式 |
---|---|---|
city | 任何字串值或 null | user.city -eq "value" |
country | 任何字串值或 null | user.country -eq "value" |
companyName | 任何字串值或 null | user.companyName -eq "value" |
department | 任何字串值或 null | user.department -eq "value" |
displayName | 任何字串值 | user.displayName -eq "value" |
employeeId | 任何字串值 | user.employeeId -eq "value" user.employeeId -ne null |
facsimileTelephoneNumber | 任何字串值或 null | user.facsimileTelephoneNumber -eq "value" |
givenName | 任何字串值或 null | user.givenName -eq "value" |
jobTitle | 任何字串值或 null | user.jobTitle -eq "value" |
任何字串值或 null (使用者的 SMTP 位址) | user.mail -eq "value" | |
mailNickName | 任何字串值 (使用者的郵件別名) | user.mailNickName -eq "value" |
memberOf | 任何字串值 (有效的群組物件識別碼) | user.memberOf -any (group.objectId -in ['value']) |
mobile | 任何字串值或 null | user.mobile -eq "value" |
objectId | 使用者物件的 GUID | user.objectId -eq "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" |
onPremisesDistinguishedName | 任何字串值或 null | user.onPremisesDistinguishedName -eq "value" |
onPremisesSecurityIdentifier | 已從內部部署環境同步至雲端之使用者的內部部署安全性識別碼 (SID)。 | user.onPremisesSecurityIdentifier -eq "S-1-1-11-1111111111-1111111111-1111111111-1111111" |
passwordPolicies | 無 DisableStrongPassword DisablePasswordExpiration DisablePasswordExpiration、DisableStrongPassword |
user.passwordPolicies -eq "DisableStrongPassword" |
physicalDeliveryOfficeName | 任何字串值或 null | user.physicalDeliveryOfficeName -eq "value" |
postalCode | 任何字串值或 null | user.postalCode -eq "value" |
preferredLanguage | ISO 639-1 code | user.preferredLanguage -eq "en-US" |
sipProxyAddress | 任何字串值或 null | user.sipProxyAddress -eq "value" |
state | 任何字串值或 null | user.state -eq "value" |
streetAddress | 任何字串值或 null | user.streetAddress -eq "value" |
surname | 任何字串值或 null | user.surname -eq "value" |
telephoneNumber | 任何字串值或 null | user.telephoneNumber -eq "value" |
usageLocation | 兩個字母的國家或區域代碼 | user.usageLocation -eq "US" |
userPrincipalName | 任何字串值 | user.userPrincipalName -eq "alias@domain" |
userType | member guest null | user.userType -eq "Member" |
字串集合類型的屬性
屬性 | 允許的值 | 範例 |
---|---|---|
otherMails | 任何字串值 | user.otherMails -startsWith "alias@domain" |
proxyAddresses | SMTP: alias@domain smtp: alias@domain | user.proxyAddresses -startsWith "SMTP: alias@domain" |
如需裝置規則所使用的屬性,請參閱<裝置的規則>。
支援的運算式運算子
下表列出單一運算式支援的所有運算子及其語法。 不管有沒有連字號 (-) 前置詞,均可使用運算子。 Contains 運算子會執行部分字串的比對,但不會比對集合中的項目。
運算子 | 語法 |
---|---|
Not Equals | -ne |
Equals | -eq |
Not Starts With | -notStartsWith |
Starts With | -startsWith |
Not Contains | -notContains |
Contains | -contains |
Not Match | -notMatch |
Match | -match |
In | -in |
Not In | -notIn |
使用 -in 和 -notIn 運算子
如果想要針對多個值比較使用者屬性的值,可使用 -in 或 -notIn 運算子。 使用方括號 "[" 和 "]" 作為值清單的開頭和結尾。
在以下範例中,如果 user.department 的值等於清單中的任何一個值,此運算式會評估為 true:
user.department -in ["50001","50002","50003","50005","50006","50007","50008","50016","50020","50024","50038","50039","51100"]
使用 -le 和 -ge 運算子
在動態成員資格群組規則中使用 employeeHireDate 屬性時,可使用小於 (-le) 或大於 (-ge) 運算子。
範例:
user.employeehiredate -ge system.now -plus p1d
user.employeehiredate -le 2020-06-10T18:13:20Z
使用 -match 運算子
-match 運算子可用來比對任何規則運算式。 範例:
user.displayName -match "^Da.*"
Da
、Dav
、David
會評估為 true,aDa 則會評估為 false。
user.displayName -match ".*vid"
David
會評估為 true,Da
則會評估為 false。
支援值
運算式中使用的值可以包含數種類型,包括:
- 字串
- 布林值 – true、false
- 數字
- 陣列 – 數字陣列、字串陣列
指定運算式中的值時,務必使用正確的語法,避免發生錯誤。 一些語法提示如下:
- 除非值為字串,否則雙引號是選用的。
- Regex 和字串作業不區分大小寫。
- 確保屬性名稱的格式正確 (如所示),因為它們區分大小寫。
- 字串值包含雙引號時,兩個引號都應使用 ` 字元逸出,例如 user.department -eq `"Sales`" 是 "Sales" 為值時的正確語法。 單引號每次都要使用兩個單引號,而非單引號,才可逸出。
- 也可以使用 null 值來執行 Null 檢查,例如
user.department -eq null
。
使用 Null 值
若要在規則中指定 null 值,可以使用 null 值。
- 在比較運算式中的 null 值時,請使用 -eq 或 -ne。
- 只有在想要將 null 一字解釋為常值字串值時,才在它的前後使用引號。
- -not 運算子不能用作 null 的比較運算子。 如果使用,則不論使用 null 還是 $null 都會收到錯誤。
參考 null 值的正確方法如下:
user.mail –ne null
具有多個運算式的規則
動態成員資格群組的管理規則可包含多個以 -and、 -or 和 -not 邏輯運算子連接的單一運算式。 邏輯運算子也可以合併使用。
以下範例是正確建構的成員資格規則 (具有多個運算式):
(user.department -eq "Sales") -or (user.department -eq "Marketing")
(user.department -eq "Sales") -and -not (user.jobTitle -startsWith "SDE")
運算子優先順序
下面列出了所有運算子 (由高至低排定優先順序)。 同一行上運算子的優先順序相等:
-eq -ne -startsWith -notStartsWith -contains -notContains -match –notMatch -in -notIn
-not
-and
-or
-any -all
以下範例說明運算子優先順序,其中有兩個運算式會針對使用者評估:
user.department –eq "Marketing" –and user.country –eq "US"
只有在優先順序不符合需求時,才需要括號。 例如,如果想要先評估部門,以下顯示如何使用括號來決定順序:
user.country –eq "US" –and (user.department –eq "Marketing" –or user.department –eq "Sales")
具有複雜運算式的規則
成員資格規則可由複雜的運算式所組成,其中屬性、運算子和值採用更複雜的形式。 當下列任一項成立時,即可視為複雜運算式:
- 屬性由值集合所組成;具體來說,就是多重值屬性
- 運算式使用 -any 和 -all 運算子
- 運算式的值本身可以是一或多個運算式
多重值屬性
多重值屬性是相同類型之物件的集合。 它們可以用來建立使用 -any 和 -all 邏輯運算子的成員資格規則。
屬性 | 值 | 使用方式 |
---|---|---|
assignedPlans | 集合中的每個物件都會公開下列字串屬性:capabilityStatus、service、servicePlanId | user.assignedPlans -any (assignedPlan.servicePlanId -eq "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" -and assignedPlan.capabilityStatus -eq "Enabled") |
proxyAddresses | SMTP: alias@domain smtp: alias@domain | (user.proxyAddresses -any (_ -startsWith "contoso")) |
使用 -any 和 -all 運算子
可以使用 -any 和 -all 運算子,分別將條件套用至集合中的一個或所有項目。
- -any (集合中至少有一個項目符合條件時滿足)
- -all (集合中的所有項目符合條件時滿足)
範例 1
assignedPlans 是多重值屬性,可列出所有指派給使用者的服務方案。 下列運算式會選取擁有 Exchange Online (方案 2) 服務方案 (作為 GUID 值) 的使用者 (該方案也處於 [已啟用] 狀態):
user.assignedPlans -any (assignedPlan.servicePlanId -eq "efb87545-963c-4e0d-99df-69c6916d9eb0" -and assignedPlan.capabilityStatus -eq "Enabled")
這類規則可用於將所有已啟用 Microsoft 365 或其他 Microsoft Online Service 功能的使用者分組。 可以接著將一組原則套用到群組。
範例 2
下列運算式會選取有任何服務方案與 Intune 服務 (透過服務名稱 "SCO" 來識別) 相關聯的所有使用者:
user.assignedPlans -any (assignedPlan.service -eq "SCO" -and assignedPlan.capabilityStatus -eq "Enabled")
範例 3
下列運算式會選取未指派服務方案的所有使用者:
user.assignedPlans -all (assignedPlan.servicePlanId -eq null)
請使用底線 (_) 語法
底線 (_) 語法會比對其中一個多重值字串集合屬性中的特定值,將使用者或裝置新增至動態成員資格群組。 會搭配 -any 或 -all 運算子使用。
以下範例在規則中使用底線 (_),依據 user.proxyAddress (與 user.otherMails 效果相同) 新增成員。 此規則會將 Proxy 位址中以 "contoso" 開頭的任何使用者新增至群組。
(user.proxyAddresses -any (_ -startsWith "contoso"))
其他屬性和通用規則
建立「直屬員工」規則
可以建立一個群組,其中包含某位經理的所有直屬員工。 當經理的直屬員工在未來變更時,系統便會自動調整群組成員資格。
使用下列語法來建構直屬員工規則:
Direct Reports for "{objectID_of_manager}"
以下是有效規則的範例,其中 "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" 是經理的 objectID:
Direct Reports for "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
下列提示可協助正確使用此規則。
- [經理識別碼]是經理的物件識別碼。 可在經理的 [設定檔]中找到。
- 若要讓規則起作用,請確定已對組織中的使用者正確設定 [經理] 屬性。 可以在使用者的 [設定檔] 中檢查目前值。
- 此規則僅支援經理的直屬員工。 換句話說,建立的群組無法「同時」包含經理的直屬員工及其員工。
- 此規則無法與任何其他成員資格規則結合使用。
建立「所有使用者」規則
可以使用成員資格規則,建立一個包含組織內所有使用者的群組。 未來在組織中新增或移除使用者時,系統將會自動調整群組成員資格。
「所有使用者」規則是在單一運算式中使用 -ne 運算子和 null 值來建構。 此規則會將 B2B 來賓使用者及成員使用者新增到群組。
user.objectId -ne null
如果想要讓群組排除來賓使用者,而只包含組織的成員,可以使用下列語法:
(user.objectId -ne null) -and (user.userType -eq "Member")
建立「所有裝置」規則
您可以使用成員資格規則,建立一個包含組織內所有裝置的群組。 未來在組織中新增或移除裝置時,系統將會自動調整群組成員資格。
「所有裝置」規則是在單一運算式中使用 -ne 運算子和 null 值來建構:
device.objectId -ne null
延伸模組屬性和自訂延伸模組屬性
在動態成員資格群組規則中,以字串屬性形式支援延伸模組屬性和自訂延伸模組屬性。 擴充功能屬性可從內部部署 Windows Server Active Directory 同步,或使用 Microsoft Graph 更新並採用 "ExtensionAttributeX" 格式 (其中 X 等於 1 - 15)。 動態成員資格群組規則不支援多重值延伸模組屬性。
以下是使用延伸模組屬性作為屬性的規則範例:
(user.extensionAttribute15 -eq "Marketing")
自訂擴充功能屬性可從內部部署 Windows Server Active Directory、連線的 SaaS 應用程式同步,或使用 Microsoft Graph 建立,格式為 user.extension_[GUID]_[Attribute]
,其中:
- 對於建立屬性的應用程式而言,[GUID] 是其在 Microsoft Entra ID 中簡單版的唯一識別碼。 只包含 0 - 9 和 A - Z 字元
- [Attribute] 是屬性建立時的名稱
以下是使用自訂延伸模組屬性的規則範例:
user.extension_c272a57b722d4eb29bfe327874ae79cb_OfficeNumber -eq "123"
自訂延伸模組屬性也稱為目錄或 Microsoft Entra 延伸模組屬性。
使用 [Graph 總管] 查詢使用者的屬性並搜尋屬性名稱,即可在目錄中找到自訂屬性名稱。 此外,現在可以在動態成員資格群組規則建立器中選取 [取得自訂延伸模組屬性] 連結,輸入唯一應用程式識別碼,然後接收在建立動態成員資格群組規則時所要使用的自訂延伸模組屬性完整清單。 也可以重新整理這份清單,來針對該應用程式取得任何新的自訂延伸模組屬性。 延伸模組屬性與自訂延伸模組屬性必須來自租用戶的應用程式。
如需詳細資訊,請參閱<Microsoft Entra Connect Sync:目錄擴充>一文中的<在動態成員資格群組中使用屬性>。
裝置的規則
也可以建立規則以便在群組中選取成員資格的裝置物件。 不能同時讓使用者和裝置成為群組成員。
注意
不再列出 organizationalUnit
屬性,因此不應使用。 此字串由 Intune 在特定情況下所設定,但 Microsoft Entra ID 無法辨識,因此沒有任何裝置會新增至以這個屬性為基礎的群組。
systemlabels
屬性為唯讀,因此無法使用 Intune 設定。
針對 Windows 10,deviceOSVersion
屬性的正確格式如下:(device.deviceOSVersion -startsWith "10.0.1")。 可以使用 Get-MgDevice PowerShell Cmdlet 驗證格式:
Get-MgDevice -Search "displayName:YourMachineNameHere" -ConsistencyLevel eventual | Select-Object -ExpandProperty 'OperatingSystemVersion'
可以使用下列裝置屬性。
裝置屬性 | 值 | 範例 |
---|---|---|
accountEnabled | true false | device.accountEnabled -eq true |
deviceCategory | 有效的裝置類別名稱 | device.deviceCategory -eq "BYOD" |
deviceId | 有效的 Microsoft Entra 裝置識別碼 | device.deviceId -eq "d4fe7726-5966-431c-b3b8-cddc8fdb717d" |
deviceManagementAppId | Microsoft Entra ID 中有效的 MDM 應用程式 | 受管理 Microsoft Intune 的 device.deviceManagementAppId -eq "0000000a-0000-0000-c000-000000000000",或是 System Center Configuration Manager 共同管理裝置的 "54b943f8-d761-4f8d-951e-9cea1846db5a" |
deviceManufacturer | 任何字串值 | device.deviceManufacturer -eq "Samsung" |
deviceModel | 任何字串值 | device.deviceModel -eq "iPad Air" |
displayName | 任何字串值 | device.displayName -eq "Rob iPhone" |
deviceOSType | 任何字串值 | (device.deviceOSType -eq "iPad") -or (device.deviceOSType -eq "iOS") device.deviceOSType -startsWith "AndroidEnterprise" device.deviceOSType -eq "AndroidForWork" device.deviceOSType -eq "Windows" |
deviceOSVersion | 任何字串值 | device.deviceOSVersion -eq "9.1" device.deviceOSVersion -startsWith "10.0.1" |
deviceOwnership | 個人、公司、未知 | device.deviceOwnership -eq "Company" |
devicePhysicalIds | Autopilot 使用的任何字串值,例如所有 Autopilot 裝置、OrderID 或 PurchaseOrderID | device.devicePhysicalIDs -any _ -startsWith "[ZTDId]" (device.devicePhysicalIds -any _ -eq "[OrderID]:179887111881" (device.devicePhysicalIds -any _ -eq "[PurchaseOrderId]:76222342342" |
deviceTrustType | AzureAD、ServerAD、Workplace | device.deviceTrustType -eq "AzureAD" |
enrollmentProfileName | Apple 裝置註冊設定檔名稱、Android Enterprise 公司擁有的專用裝置註冊設定檔名稱,或 Windows Autopilot 設定檔名稱 | device.enrollmentProfileName -eq "DEP iPhones" |
extensionAttribute1 | 任何字串值 | device.extensionAttribute1 -eq "some string value" |
extensionAttribute2 | 任何字串值 | device.extensionAttribute2 -eq "some string value" |
extensionAttribute3 | 任何字串值 | device.extensionAttribute3 -eq "some string value" |
extensionAttribute4 | 任何字串值 | device.extensionAttribute4 -eq "some string value" |
extensionAttribute5 | 任何字串值 | device.extensionAttribute5 -eq "some string value" |
extensionAttribute6 | 任何字串值 | device.extensionAttribute6 -eq "some string value" |
extensionAttribute7 | 任何字串值 | device.extensionAttribute7 -eq "some string value" |
extensionAttribute8 | 任何字串值 | device.extensionAttribute8 -eq "some string value" |
extensionAttribute9 | 任何字串值 | device.extensionAttribute9 -eq "some string value" |
extensionAttribute10 | 任何字串值 | device.extensionAttribute10 -eq "some string value" |
extensionAttribute11 | 任何字串值 | device.extensionAttribute11 -eq "some string value" |
extensionAttribute12 | 任何字串值 | device.extensionAttribute12 -eq "some string value" |
extensionAttribute13 | 任何字串值 | device.extensionAttribute13 -eq "some string value" |
extensionAttribute14 | 任何字串值 | device.extensionAttribute14 -eq "some string value" |
extensionAttribute15 | 任何字串值 | device.extensionAttribute15 -eq "some string value" |
isRooted | true false | device.isRooted -eq true |
managementType | MDM (適用於行動裝置) | device.managementType -eq "MDM" |
memberOf | 任何字串值 (有效的群組物件識別碼) | device.memberOf -any (group.objectId -in ['value']) |
objectId | 有效的 Microsoft Entra 物件識別碼 | device.objectId -eq "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" |
profileType | Microsoft Entra ID 中有效的設定檔類型 | device.profileType -eq "RegisteredDevice" |
systemLabels | 比對 Intune 裝置屬性來標記現代化工作場所裝置的唯讀字串 | device.systemLabels -startsWith "M365Managed" SystemLabels |
注意
使用 systemLabels
時,在各種內容中使用的唯讀屬性 (例如裝置管理和敏感度標籤),無法透過 Intune 編輯。
使用 deviceOwnership
為裝置建立動態成員資格群組時,需要將此值設定為等於 Company
。 在 Intune 上,裝置所有權會改以 Corporate 表示。 如需詳細資訊,請參閱<OwnerTypes>取得詳細資料。
使用 deviceTrustType
建立裝置的動態成員資格群組時,必須將值設定為等於 AzureAD
來代表 Microsoft Entra 已聯結的裝置;設定為 ServerAD
來代表 Microsoft Entra 混合式已聯結裝置,或設定為 Workplace
來代表 Microsoft Entra 註冊的裝置。
使用 extensionAttribute1-15
為裝置建立動態成員資格群組時,需要在裝置上為 extensionAttribute1-15
設定值。 深入了解如何在 Microsoft Entra 裝置物件寫入 extensionAttributes
後續步驟
這些文章提供有關 Microsoft Entra ID 中群組的其他資訊。