了解 Microsoft Entra 架构
与所有目录类似,Microsoft Entra ID 中的对象是一种程序化的高级数据构造,可表示用户、组和联系人等。 在 Microsoft Entra ID 中新建用户或联系人的同时,你正在创建该对象的新实例。 可以根据实例的属性区分实例。
Microsoft Entra ID 中的属性是负责存储 Microsoft Entra ID 中对象实例的相关信息的元素。
Microsoft Entra 架构定义规则,规定了可在条目中使用的属性、这些属性可能具有的值类型,以及用户如何与这些值进行交互。
Microsoft Entra ID 有两种类型的属性:
- 内置属性:由 Microsoft Entra 架构预定义的属性。 这些属性具有各种用途,可能可以访问,也可能不可以访问。
- 目录扩展:提供的属性,确保可以自定义 Microsoft Entra ID 以供自己使用。 例如,如果你为本地 Active Directory 扩展了特定特性并且希望传递该特性,则可以使用提供的自定义属性之一。
每个云同步配置都包含一个同步架构。 此同步架构定义将同步哪些对象以及如何同步它们。
特性和表达式
将用户等对象预配到 Microsoft Entra ID 的同时,将创建用户对象的新实例。 该创建包括该对象的属性,又称为特性。 最初,新创建的对象的特性设为同步规则确定的值。 然后,这些特性通过云预配代理保持为最新。
例如,用户可能是市场营销部门的成员。 其 Microsoft Entra 部门特性最初是在对其进行预配时创建的,且该值设为“营销”。 六个月后,如果用户调动到销售部门,则其本地 Active Directory 部门特性将更改为“销售”。 此更改同步到 Microsoft Entra ID,并反映在其 Microsoft Entra 用户对象中。
属性同步可能很直接,即 Microsoft Entra ID 中的值直接设为本地属性的值。 或者,程序化表达式可以处理同步。 需要一些逻辑或必须决定填充值时,需使用程序化表达式。
例如,如果电子邮件特性为“john.smith@contoso.com”,且需删除“@contoso.com”部分并仅传递值“john.smith”,则你应使用以下命令:
Replace([mail], "@contoso.com", , ,"", ,)
示例输入/输出:
- 输入 (mail):“john.smith@contoso.com”
- 输出:“john.smith”
若要详细了解如何编写自定义表达式和语法,请参阅在 Microsoft Entra ID 中编写特性映射的表达式。
下表列出了一些常见的属性,以及如何将它们同步到 Microsoft Entra ID。
本地 Active Directory | 映射类型 | Microsoft Entra ID |
---|---|---|
cn | 直接 | CommonName |
countryCode | 直接 | countryCode |
displayName | 直接 | displayName |
givenName | Expression | givenName |
objectGUID | 直接 | sourceAnchorBinary |
userPrincipalName | 直接 | userPrincipalName |
proxyAddress | 直接 | ProxyAddress |
查看同步架构
警告
云同步配置会创建服务主体。 服务主体在 Microsoft Entra 管理中心可见。 你不应按照 Microsoft Entra 管理中心中的服务主体体验来修改属性映射。 此操作不受支持。
若要查看云同步配置同步架构并对其进行验证,请执行以下步骤。
转到图形资源管理器。
使用全局管理员帐户登录。
选择左侧的“修改权限”,并确保 Directory.ReadWrite.All 为“已同意” 。
运行查询
https://graph.microsoft.com/beta/serviceprincipals/?$filter=startswith(DisplayName, ‘{sync config name}’)
。 该查询返回筛选的服务主体列表。 也可以通过 Microsoft Entra ID 下的应用注册节点来获得此项。找到
"appDisplayName": "Active Directory to Azure Active Directory Provisioning"
,并记下"id"
的值。"value": [ { "id": "00d41b14-7958-45ad-9d75-d52fa29e02a1", "deletedDateTime": null, "accountEnabled": true, "appDisplayName": "Active Directory to Azure Active Directory Provisioning", "appId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", "applicationTemplateId": null, "appOwnerOrganizationId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", "appRoleAssignmentRequired": false, "displayName": "Active Directory to Azure Active Directory Provisioning", "errorUrl": null, "homepage": "https://account.activedirectory.windowsazure.com:444/applications/default.aspx?metadata=AD2AADProvisioning|ISV9.1|primary|z", "loginUrl": null, "logoutUrl": null, "notificationEmailAddresses": [], "preferredSingleSignOnMode": null, "preferredTokenSigningKeyEndDateTime": null, "preferredTokenSigningKeyThumbprint": null, "publisherName": "Active Directory Application Registry", "replyUrls": [], "samlMetadataUrl": null, "samlSingleSignOnSettings": null, "servicePrincipalNames": [ "http://adapplicationregistry.onmicrosoft.com/adprovisioningtoaad/primary", "1a4721b3-e57f-4451-ae87-ef078703ec94" ], "signInAudience": "AzureADMultipleOrgs", "tags": [ "WindowsAzureActiveDirectoryIntegratedApp" ], "addIns": [], "api": { "resourceSpecificApplicationPermissions": [] }, "appRoles": [ { "allowedMemberTypes": [ "User" ], "description": "msiam_access", "displayName": "msiam_access", "id": "a0326856-1f51-4311-8ae7-a034d168eedf", "isEnabled": true, "origin": "Application", "value": null } ], "info": { "termsOfServiceUrl": null, "supportUrl": null, "privacyStatementUrl": null, "marketingUrl": null, "logoUrl": null }, "keyCredentials": [], "publishedPermissionScopes": [ { "adminConsentDescription": "Allow the application to access Active Directory to Azure Active Directory Provisioning on behalf of the signed-in user.", "adminConsentDisplayName": "Access Active Directory to Azure Active Directory Provisioning", "id": "d40ed463-646c-4efe-bb3e-3fa7d0006688", "isEnabled": true, "type": "User", "userConsentDescription": "Allow the application to access Active Directory to Azure Active Directory Provisioning on your behalf.", "userConsentDisplayName": "Access Active Directory to Azure Active Directory Provisioning", "value": "user_impersonation" } ], "passwordCredentials": [] },
将
{Service Principal id}
替换为你的值,然后运行查询https://graph.microsoft.com/beta/serviceprincipals/{Service Principal id}/synchronization/jobs/
。找到
"id": "AD2AADProvisioning.fd1c9b9e8077402c8bc03a7186c8f976"
,并记下"id"
的值。{ "id": "AD2AADProvisioning.fd1c9b9e8077402c8bc03a7186c8f976", "templateId": "AD2AADProvisioning", "schedule": { "expiration": null, "interval": "PT2M", "state": "Active" }, "status": { "countSuccessiveCompleteFailures": 0, "escrowsPruned": false, "code": "Active", "lastSuccessfulExecutionWithExports": null, "quarantine": null, "steadyStateFirstAchievedTime": "2019-11-08T15:48:05.7360238Z", "steadyStateLastAchievedTime": "2019-11-20T16:17:24.7957721Z", "troubleshootingUrl": "", "lastExecution": { "activityIdentifier": "2dea06a7-2960-420d-931e-f6c807ebda24", "countEntitled": 0, "countEntitledForProvisioning": 0, "countEscrowed": 15, "countEscrowedRaw": 15, "countExported": 0, "countExports": 0, "countImported": 0, "countImportedDeltas": 0, "countImportedReferenceDeltas": 0, "state": "Succeeded", "error": null, "timeBegan": "2019-11-20T16:15:21.116098Z", "timeEnded": "2019-11-20T16:17:24.7488681Z" }, "lastSuccessfulExecution": { "activityIdentifier": null, "countEntitled": 0, "countEntitledForProvisioning": 0, "countEscrowed": 0, "countEscrowedRaw": 0, "countExported": 5, "countExports": 0, "countImported": 0, "countImportedDeltas": 0, "countImportedReferenceDeltas": 0, "state": "Succeeded", "error": null, "timeBegan": "0001-01-01T00:00:00Z", "timeEnded": "2019-11-20T14:09:46.8855027Z" }, "progress": [], "synchronizedEntryCountByType": [ { "key": "group to Group", "value": 33 }, { "key": "user to User", "value": 3 } ] }, "synchronizationJobSettings": [ { "name": "Domain", "value": "{\"DomainFQDN\":\"contoso.com\",\"DomainNetBios\":\"CONTOSO\",\"ForestFQDN\":\"contoso.com\",\"ForestNetBios\":\"CONTOSO\"}" }, { "name": "DomainFQDN", "value": "contoso.com" }, { "name": "DomainNetBios", "value": "CONTOSO" }, { "name": "ForestFQDN", "value": "contoso.com" }, { "name": "ForestNetBios", "value": "CONTOSO" }, { "name": "QuarantineTooManyDeletesThreshold", "value": "500" } ] }
运行查询
https://graph.microsoft.com/beta/serviceprincipals/{Service Principal Id}/synchronization/jobs/{AD2AAD Provisioning id}/schema
。将
{Service Principal Id}
和{AD2ADD Provisioning Id}
替换为自定义值。此查询返回同步架构。