Entender o esquema do Azure AD

Como em qualquer diretório, um objeto no Azure Active Directory (Azure AD) é um constructo de dados programático de alto nível que representa itens como usuários, grupos e contatos. Ao criar um novo usuário ou contato no Azure AD, você está criando uma nova instância desse objeto. Essas instâncias podem ser diferenciadas com base em suas propriedades.

No Azure AD, as propriedades são os elementos responsáveis por armazenar informações sobre uma instância de um objeto.

O esquema do Azure AD define as regras sobre o uso das propriedades em uma entrada, os tipos de valores que essas propriedades podem ter e a maneira de os usuários interagirem com esses valores.

O Azure AD tem dois tipos de propriedades:

  • Propriedades internas: propriedades predefinidas pelo esquema do Azure AD. Essas propriedades fornecem diferentes usos e podem ou não estar acessíveis.
  • Extensões de diretório: propriedades fornecidas para que você personalize o Azure AD para o seu próprio uso. Por exemplo, se você estendeu seu Active Directory local com um determinado atributo e deseja fluir esse atributo, é possível usar uma das propriedades personalizadas fornecidas.

Atributos e expressões

Quando um objeto como um usuário é provisionado no Azure AD, uma nova instância do objeto de usuário é criada. Essa criação inclui as propriedades desse objeto, também conhecidas como atributos. Inicialmente, o objeto recém-criado tem seus atributos definidos para valores determinados pelas regras de sincronização. Esses atributos se mantém atualizados por meio do agente de provisionamento de nuvem.

Provisionamento de objeto

Por exemplo, um usuário pode fazer parte de um departamento de Marketing. O atributo de departamento do Azure AD é criado quando esse usuário é provisionado, e o valor é definido como Marketing. Seis meses depois, se o usuário for transferido para Vendas, o atributo de departamento do Active Directory local será alterado para vendas. Essa alteração é sincronizada com o Azure AD e é refletida no objeto de usuário do Azure AD.

A sincronização de atributos pode ser direta, com o valor no Azure AD sendo definido diretamente como o valor do atributo local. Ou pode ser conduzida por uma expressão programática. Uma expressão programática é necessária nos casos em que deva ser feita alguma lógica ou determinação para popular o valor.

Por exemplo, se você tivesse o atributo de email "john.smith@contoso.com" e precisasse retirar o trecho “@contoso.com" para fluir apenas o valor “john.smith", você usaria algo do tipo:

Replace([mail], "@contoso.com", , ,"", ,)

Entrada/saída de exemplo:

  • INPUT (mail): "john.smith@contoso.com"
  • OUTPUT: "john.smith"

Para obter mais informações sobre como escrever expressões personalizadas e a sintaxe, consulte Escrevendo expressões para mapeamentos de atributo no Azure Active Directory.

A tabela a seguir lista alguns atributos comuns e mostra como eles são sincronizados para o Azure AD.

Active Directory local Tipo de mapeamento AD do Azure
cn Direto commonName
countryCode Direto countryCode
displayName Direto displayName
givenName Expression givenName
objectGUID Direto sourceAnchorBinary
userprincipalName Direto userPrincipalName
ProxyAdress Direto ProxyAddress

Exibir o esquema

Aviso

A configuração de sincronização de nuvem cria uma entidade de serviço. A entidade de serviço está visível no portal do Azure. Não se deve modificar os mapeamentos de atributo usando a experiência de entidade de serviço no portal do Azure. Isso não tem suporte.

Para exibir o esquema e verificá-lo, siga estas etapas.

  1. Acesse o Explorador do Graph.

  2. Entre com sua conta de administrador global.

  3. À esquerda, selecione Modificar permissões e verifique se Directory.ReadWrite.All está marcado como Consentido.

  4. Execute a consulta https://graph.microsoft.com/beta/serviceprincipals/?$filter=startswith(Displayname,'Active'). Essa consulta retorna uma lista filtrada de entidades de serviço.

  5. Localize "appDisplayName": "Active Directory to Azure Active Directory Provisioning" e anote o valor de "id".

    "value": [
            {
                "id": "00d41b14-7958-45ad-9d75-d52fa29e02a1",
                "deletedDateTime": null,
                "accountEnabled": true,
                "appDisplayName": "Active Directory to Azure Active Directory Provisioning",
                "appId": "1a4721b3-e57f-4451-ae87-ef078703ec94",
                "applicationTemplateId": null,
                "appOwnerOrganizationId": "47df5bb7-e6bc-4256-afb0-dd8c8e3c1ce8",
                "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": []
            },
    
  6. Substitua {Service Principal id} por esse valor e execute a consulta https://graph.microsoft.com/beta/serviceprincipals/{Service Principal id}/synchronization/jobs/.

  7. Localize "id": "AD2AADProvisioning.fd1c9b9e8077402c8bc03a7186c8f976" e anote o valor de "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"
                    }
                ]
            }
    
  8. Em seguida, execute a consulta https://graph.microsoft.com/beta/serviceprincipals/{Service Principal Id}/synchronization/jobs/{AD2AAD Provisioning id}/schema.

    Exemplo: https://graph.microsoft.com/beta/serviceprincipals/653c0018-51f4-4736-a3a3-94da5dcb6862/synchronization/jobs/AD2AADProvisioning.e9287a7367e444c88dc67a531c36d8ec/schema

    Substitua {Service Principal Id} e {AD2ADD Provisioning Id} por seus valores.

  9. Essa consulta retorna o esquema.

    Esquema retornado

Próximas etapas