Azure AD Connect Sync : présentation de l’approvisionnement déclaratifAzure AD Connect sync: Understanding Declarative Provisioning

Cette rubrique présente le modèle de configuration dans Azure AD Connect.This topic explains the configuration model in Azure AD Connect. Ce modèle est appelé « approvisionnement déclaratif » et vous permet de modifier la configuration en toute simplicité.The model is called Declarative Provisioning and it allows you to make a configuration change with ease. De nombreux éléments décrits dans cette rubrique sont des éléments avancés, non indispensables pour la plupart des scénarios clients.Many things described in this topic are advanced and not required for most customer scenarios.

Vue d’ensembleOverview

L’approvisionnement déclaratif correspond au traitement des objets provenant d’un répertoire source connecté. Il détermine comment l’objet et les attributs doivent être transformés à partir d’une source vers une cible.Declarative provisioning is processing objects coming in from a source connected directory and determines how the object and attributes should be transformed from a source to a target. Les objets sont traités dans un pipeline de synchronisation identique pour les règles de trafic entrant et sortant.An object is processed in a sync pipeline and the pipeline is the same for inbound and outbound rules. Les règles de trafic entrant vont d’un espace de connecteur au métaverse et les règles de trafic sortant vont du métaverse vers un espace de connecteur.An inbound rule is from a connector space to the metaverse and an outbound rule is from the metaverse to a connector space.

Pipeline de synchronisation

Le pipeline a plusieurs modules.The pipeline has several different modules. Chacun d’eux est responsable d’un concept de synchronisation des objets.Each one is responsible for one concept in object synchronization.

Pipeline de synchronisation

  • Source, l’objet sourceSource, The source object
  • Scope, recherche toutes les règles de synchronisation dans la portéeScope, Finds all sync rules that are in scope
  • Join, détermine la relation entre l’espace de connecteur et le métaverseJoin, Determines relationship between connector space and metaverse
  • Transform, calcule comment les attributs doivent être transformés et circulerTransform, Calculates how attributes should be transformed and flow
  • Precedence, résout les contributions d’attribut conflictuellesPrecedence, Resolves conflicting attribute contributions
  • Target, l’objet cibleTarget, The target object

ÉtendueScope

Le module Scope évalue un objet et détermine les règles qui sont dans la portée et doivent être incluses lors du traitement.The scope module is evaluating an object and determines the rules that are in scope and should be included in the processing. En fonction des valeurs d’attributs de l’objet, différentes règles de synchronisation sont évaluées pour être dans la portée.Depending on the attributes values on the object, different sync rules are evaluated to be in scope. Par exemple, un utilisateur désactivé sans boîte aux lettres Exchange possède des règles différentes d’un utilisateur activé avec une boîte aux lettres.For example, a disabled user with no Exchange mailbox does have different rules than an enabled user with a mailbox.
Étendue

La portée est définie selon des groupes et des clauses.The scope is defined as groups and clauses. Les clauses sont à l’intérieur des groupes.The clauses are inside a group. Un opérateur logique AND est utilisé entre toutes les clauses d’un groupe.A logical AND is used between all clauses in a group. Par exemple, (department = IT AND country = Denmark).For example, (department =IT AND country = Denmark). Un opérateur logique OR est utilisé entre les groupes.A logical OR is used between groups.

Étendue
La portée de cette image doit être lue comme (department = IT AND country = Denmark) OR (country = Sweden).The scope in this picture should be read as (department = IT AND country = Denmark) OR (country=Sweden). Si le groupe 1 ou le groupe 2 est évalué comme true, la règle est dans la portée.If either group 1 or group 2 is evaluated to true, then the rule is in scope.

Le module Scope prend en charge les opérations suivantes.The scope module supports the following operations.

OpérationOperation DescriptionDescription
EQUAL, NOTEQUALEQUAL, NOTEQUAL Comparaison de chaînes qui évalue si la valeur est égale à la valeur de l’attribut.A string compare that evaluates if value is equal to the value in the attribute. Pour les attributs à valeurs multiples, consultez ISIN et ISNOTIN.For multi-valued attributes, see ISIN and ISNOTIN.
LESSTHAN, LESSTHAN_OR_EQUALLESSTHAN, LESSTHAN_OR_EQUAL Comparaison de chaînes qui évalue si la valeur est inférieure à la valeur de l’attribut.A string compare that evaluates if value is less than of the value in the attribute.
CONTAINS, NOTCONTAINSCONTAINS, NOTCONTAINS Comparaison de chaînes qui évalue si la valeur se trouve dans la valeur de l’attribut.A string compare that evaluates if value can be found somewhere inside value in the attribute.
STARTSWITH, NOTSTARTSWITHSTARTSWITH, NOTSTARTSWITH Comparaison de chaînes qui évalue si la valeur est au début de la valeur de l’attribut.A string compare that evaluates if value is in the beginning of the value in the attribute.
ENDSWITH, NOTENDSWITHENDSWITH, NOTENDSWITH Comparaison de chaînes qui évalue si la valeur est à la fin de la valeur de l’attribut.A string compare that evaluates if value is in the end of the value in the attribute.
GREATERTHAN, GREATERTHAN_OR_EQUALGREATERTHAN, GREATERTHAN_OR_EQUAL Comparaison de chaînes qui évalue si la valeur est supérieure à la valeur de l’attribut.A string compare that evaluates if value is greater than of the value in the attribute.
ISNULL, ISNOTNULLISNULL, ISNOTNULL Évalue si l’attribut est absent de l’objet.Evaluates if the attribute is absent from the object. Si l’attribut n’est pas présent et par conséquent « null », la règle est dans la portée.If the attribute is not present and therefore null, then the rule is in scope.
ISIN, ISNOTINISIN, ISNOTIN Évalue si la valeur est présente dans l’attribut défini.Evaluates if the value is present in the defined attribute. Cette opération est la variation à valeurs multiples des opérations EQUAL et NOTEQUAL.This operation is the multi-valued variation of EQUAL and NOTEQUAL. L’attribut est censé être un attribut à valeurs multiples et si la valeur se trouve dans une des valeurs d’attribut, alors la règle est dans la portée.The attribute is supposed to be a multi-valued attribute and if the value can be found in any of the attribute values, then the rule is in scope.
ISBITSET, ISNOTBITSETISBITSET, ISNOTBITSET Évalue si un bit particulier est défini.Evaluates if a particular bit is set. Peut par exemple être utilisé pour évaluer les bits dans userAccountControl pour voir si un utilisateur est activé ou désactivé.For example, can be used to evaluate the bits in userAccountControl to see if a user is enabled or disabled.
ISMEMBEROF, ISNOTMEMBEROFISMEMBEROF, ISNOTMEMBEROF La valeur doit contenir un nom unique vers un groupe dans l’espace de connecteur.The value should contain a DN to a group in the connector space. Si l’objet est membre du groupe spécifié, la règle est dans la portée.If the object is a member of the group specified, the rule is in scope.

JoinJoin

Le module Join dans le pipeline de synchronisation est chargé de rechercher la relation entre l’objet de la source et un objet dans la cible.The join module in the sync pipeline is responsible for finding the relationship between the object in the source and an object in the target. Sur une règle de trafic entrant, cette relation serait un objet dans un espace de connecteur ayant une relation avec un objet dans le métaverse.On an inbound rule, this relationship would be an object in a connector space finding a relationship to an object in the metaverse.
Jointure entre cs et mv
L’objectif est de voir si une relation doit être établie avec un objet créé par un autre connecteur et se trouvant déjà dans le métaverse.The goal is to see if there is an object already in the metaverse, created by another Connector, it should be associated with. Par exemple, dans une forêt de ressources de comptes, l’utilisateur de la forêt de comptes doit être associé à l’utilisateur de la forêt de ressources.For example, in an account-resource forest the user from the account forest should be joined with the user from the resource forest.

Les jointures sont principalement utilisées sur les règles de trafic entrant, pour joindre les objets d’espace de connecteur au même objet dans le métaverse.Joins are used mostly on inbound rules to join connector space objects together to the same metaverse object.

Les jointures sont définies comme un ou plusieurs groupes.The joins are defined as one or more groups. À l’intérieur d’un groupe, il existe des clauses.Inside a group, you have clauses. Un opérateur logique AND est utilisé entre toutes les clauses d’un groupe.A logical AND is used between all clauses in a group. Un opérateur logique OR est utilisé entre les groupes.A logical OR is used between groups. Les groupes sont traités de haut en bas.The groups are processed in order from top to bottom. Lorsqu’un groupe a trouvé une correspondance exacte avec un objet dans la cible, aucune autre règle de jointure n’est évaluée.When one group has found exactly one match with an object in the target, then no other join rules are evaluated. Si aucun ou plus d’un objet est trouvé, le traitement continue pour le groupe de règles suivant.If zero or more than one object is found, processing continues to the next group of rules. Pour cette raison, les règles doivent être créées dans l’ordre, de la plus explicite à la moins explicite.For this reason, the rules should be created in the order of most explicit first and more fuzzy at the end.
Définition de jointure
Les jointures dans cette image sont traitées de haut en bas.The joins in this picture are processed from top to bottom. Le pipeline de synchronisation détecte d’abord si une correspondance sur employeeID existe.First the sync pipeline sees if there is a match on employeeID. Si ce n’est pas le cas, la deuxième règle détecte si le nom du compte peut être utilisé pour joindre les objets.If not, the second rule sees if the account name can be used to join the objects together. Si aucune correspondance n’est trouvée, la troisième et dernière règle utilise le nom d’utilisateur pour trouver une correspondance moins stricte.If that is not a match either, the third and final rule is a more fuzzy match by using the name of user.

Si toutes les règles de jointure ont été évaluées et qu’il n’existe aucune correspondance exacte, le type de lien indiqué dans la page de description est utilisé.If all join rules have been evaluated and there is not exactly one match, the Link Type on the Description page is used. Si cette option a la valeur Provision, un nouvel objet est créé dans la cible.If this option is set to Provision, then a new object in the target is created.
Approvisionnement ou jointureProvision or join

Un objet doit avoir une seule règle de synchronisation avec des règles de jointure dans la portée.An object should only have one single sync rule with join rules in scope. S’il existe plusieurs règles de synchronisation dans lesquelles la jointure est définie, une erreur se produit.If there are multiple sync rules where join is defined, an error occurs. La précédence n’est pas utilisée pour résoudre les conflits de jointure.Precedence is not used to resolve join conflicts. Un objet doit avoir une règle de jointure dans la portée des attributs pour que la circulation se fasse dans le même sens en entrée et en sortie.An object must have a join rule in scope for attributes to flow with the same inbound/outbound direction. Si vous avez besoin de faire circuler les attributs en entrée et en sortie sur le même objet, vous devez disposer à la fois d’une règle de synchronisation de trafic entrant et de trafic sortant avec une jointure.If you need to flow attributes both inbound and outbound to the same object, you must have both an inbound and an outbound sync rule with join.

La jointure en sortie a un comportement spécial lorsqu’elle tente d’approvisionner un objet sur un espace de connecteur cible.Outbound join has a special behavior when it tries to provision an object to a target connector space. L’attribut de nom unique est utilisé pour essayer en premier lieu une jointure inverse.The DN attribute is used to first try a reverse-join. Si l’espace de connecteur cible contient déjà un objet portant le même nom unique, les objets sont joints.If there is already an object in the target connector space with the same DN, the objects are joined.

Le module Join est évalué une seule fois lorsqu’une nouvelle règle de synchronisation arrive dans l’étendue.The join module is only evaluated once when a new sync rule comes into scope. Lorsqu’un objet est joint, il n’est pas séparé, même si le critère de jointure n’est plus rempli.When an object has joined, it is not disjoining even if the join criteria is no longer satisfied. Si vous souhaitez séparer un objet, la règle de synchronisation qui joint les objets doit être hors de portée.If you want to disjoin an object, the sync rule that joined the objects must go out of scope.

Suppression du métaverseMetaverse delete

Un objet de métaverse demeure tant qu’une règle de synchronisation reste dans la portée, avec letype de lien défini sur Provision ou StickyJoin.A metaverse object remains as long as there is one sync rule in scope with Link Type set to Provision or StickyJoin. Le type StickyJoin est utilisé lorsqu’un connecteur n’est pas autorisé à approvisionner un nouvel objet dans le métaverse, mais lorsqu’il est joint, il doit être supprimé de la source avant la suppression de l’objet du métaverse.A StickyJoin is used when a Connector is not allowed to provision a new object to the metaverse, but when it has joined, it must be deleted in the source before the metaverse object is deleted.

Lorsqu’un objet de métaverse est supprimé, tous les objets associés à une règle de synchronisation de trafic sortant marquée Provision sont marqués pour suppression.When a metaverse object is deleted, all objects associated with an outbound sync rule marked for provision are marked for a delete.

TransformationsTransformations

Les transformations sont utilisées pour définir le flux d’attributs de la source vers la cible.The transformations are used to define how attributes should flow from the source to the target. Les flux peuvent être des typessuivants : Direct, Constant ou Expression.The flows can have one of the following flow types: Direct, Constant, or Expression. Un flux direct envoie la valeur de l’attribut telle quelle, sans transformation supplémentaire.A direct flow, flows an attribute value as-is with no additional transformations. Un flux constant définit la valeur spécifiée.A constant value sets the specified value. Une expression utilise le langage d’expression d’approvisionnement déclaratif pour exprimer la manière dont la transformation doit avoir lieu.An expression uses the declarative provisioning expression language to express how the transformation should be. Vous trouverez des informations sur le langage d’expression dans la rubrique Comprendre le langage d’expression d’approvisionnement déclaratif .The details for the expression language can be found in the understanding declarative provisioning expression language topic.

Approvisionnement ou jointure

La case Appliquer une fois indique si l’attribut doit être défini uniquement lors de la création initiale de l’objet.The Apply once checkbox defines that the attribute should only be set when the object is initially created. Par exemple, cette configuration peut être utilisée pour définir un mot de passe initial pour un nouvel objet utilisateur.For example, this configuration can be used to set an initial password for a new user object.

Fusion de valeurs d’attributMerging attribute values

Dans les flux d’attributs, il existe un paramètre permettant de déterminer si les attributs à valeurs multiples doivent être fusionnés à partir de plusieurs connecteurs différents.In the attribute flows there is a setting to determine if multi-valued attributes should be merged from several different Connectors. La valeur par défaut est Mettre à jour, ce qui indique que la règle de synchronisation avec la priorité la plus élevée prévaut.The default value is Update, which indicates that the sync rule with highest precedence should win.

Types de fusion

Il existe également une option Fusionner et MergeCaseInsensitive (Fusion non sensible à la casse).There is also Merge and MergeCaseInsensitive. Ces options permettent de fusionner des valeurs issues de différentes sources.These options allow you to merge values from different sources. Par exemple, elles peuvent être utilisées pour fusionner le membre ou l’attribut proxyAddresses de plusieurs forêts différentes.For example, it can be used to merge the member or proxyAddresses attribute from several different forests. Lorsque vous utilisez cette option, toutes les règles de synchronisation dans l’étendue d’un objet doivent utiliser le même type de fusion.When you use this option, all sync rules in scope for an object must use the same merge type. Vous ne pouvez pas définir Mettre à jour à partir d’un connecteur et Fusionner à partir d’un autre connecteur.You cannot define Update from one Connector and Merge from another. Si vous essayez, vous recevrez une erreur.If you try, you receive an error.

La différence entre Fusionner et MergeCaseInsensitive (Fusion non sensible à la casse) est le traitement des valeurs d’attribut en double.The difference between Merge and MergeCaseInsensitive is how to process duplicate attribute values. Le moteur de synchronisation s’assure qu’aucun doublon n’est inséré dans l’attribut cible.The sync engine makes sure duplicate values are not inserted into the target attribute. Avec MergeCaseInsensitive(Fusion non sensible à la casse), les doublons présentant uniquement une différence de casse ne sont pas inclus.With MergeCaseInsensitive, duplicate values with only a difference in case are not going to be present. Par exemple, vous ne verrez pas à la fois « SMTP:bob@contoso.com » et « smtp:bob@contoso.com » dans l’attribut cible.For example, you should not see both "SMTP:bob@contoso.com" and "smtp:bob@contoso.com" in the target attribute. Fusionner examine uniquement les valeurs exactes et plusieurs valeurs présentant uniquement une différence de casse peuvent être présentes.Merge is only looking at the exact values and multiple values where there only is a difference in case might be present.

L’option Remplacer est identique à Mettre à jour, mais elle n’est pas utilisée.The option Replace is the same as Update, but it is not used.

Contrôler le processus de flux d’attributsControl the attribute flow process

Lorsque plusieurs règles de synchronisation entrantes sont configurées pour contribuer au même attribut du métaverse, un principe de priorité est utilisé pour déterminer celle qui sera appliquée.When multiple inbound sync rules are configured to contribute to the same metaverse attribute, then precedence is used to determine the winner. La règle de synchronisation ayant la priorité la plus élevée (la valeur numérique la plus basse) transmettra sa valeur.The sync rule with highest precedence (lowest numeric value) is going to contribute the value. Le même principe s’applique pour les règles sortantes.The same happens for outbound rules. La règle de synchronisation ayant la priorité la plus élevée l’emporte et transmet sa valeur au répertoire connecté.The sync rule with highest precedence wins and contribute the value to the connected directory.

Dans certains cas, plutôt que de transmettre une valeur, la règle de synchronisation doit déterminer le comportement des autres règles.In some cases, rather than contribute a value, the sync rule should determine how other rules should behave. Certains littéraux particuliers sont utilisés dans ce cas.There are some special literals used for this case.

Pour les règles de synchronisation entrantes, le littéral NULL peut être utilisé pour indiquer que le flux n’a aucune valeur à transmettre.For inbound Synchronization Rules, the literal NULL can be used to indicate that the flow has no value to contribute. Une autre règle avec une priorité inférieure peut transmettre sa valeur.Another rule with lower precedence can contribute a value. Si aucune règle n’a contribué de valeur, l’attribut du métaverse est supprimé.If no rule contributed a value, then the metaverse attribute is removed. Pour une règle sortante, si NULL est la valeur finale obtenue une fois toutes les règles de synchronisation traitées, la valeur est alors supprimée du répertoire connecté.For an outbound rule, if NULL is the final value after all sync rules have been processed, then the value is removed in the connected directory.

Le littéral AuthoritativeNull est similaire à NULL, à ceci près qu’aucune des règles de priorité inférieure ne peut transmettre une valeur.The literal AuthoritativeNull is similar to NULL but with the difference that no lower precedence rules can contribute a value.

Un flux d’attributs peut également utiliser le littéral IgnoreThisFlow.An attribute flow can also use IgnoreThisFlow. Celui-ci est similaire à la valeur NULL en ce sens qu’il indique qu’il n’a rien à transmettre.It is similar to NULL in the sense that it indicates there is nothing to contribute. En revanche, il ne supprime aucune valeur déjà existante dans la cible.The difference is that it does not remove an already existing value in the target. Il agit comme si le flux d’attributs n’avait jamais existé.It is like the attribute flow has never been there.

Voici un exemple :Here is an example:

Dans Out to AD - User Exchange hybrid, vous trouverez le flux suivant :In Out to AD - User Exchange hybrid the following flow can be found:
IIF([cloudSOAExchMailbox] = True,[cloudMSExchSafeSendersHash],IgnoreThisFlow)
Cette expression doit être lue de la manière suivante : si la boîte aux lettres de l’utilisateur se trouve dans Azure AD, transmettre l’attribut d’Azure AD à Active Directory.This expression should be read as: if the user mailbox is located in Azure AD, then flow the attribute from Azure AD to AD. Si ce n’est pas le cas, ne rien transmettre en retour à Active Directory.If not, do not flow anything back to Active Directory. Dans ce cas, la valeur existante dans AD est conservée.In this case, it would keep the existing value in AD.

ImportedValueImportedValue

La fonction ImportedValue est différente de toutes les autres fonctions, car le nom d’attribut doit être placé entre guillemets doubles plutôt qu’entre crochets :The function ImportedValue is different than all other functions since the attribute name must be enclosed in quotes rather than square brackets:
ImportedValue("proxyAddresses").ImportedValue("proxyAddresses").

Généralement, lors de la synchronisation, un attribut utilise la valeur attendue, même s’il n’a pas encore été exporté ou si une erreur a été reçue pendant l’exportation (« top of the tower »).Usually during synchronization an attribute uses the expected value, even if it hasn’t been exported yet or an error was received during export (“top of the tower”). Une synchronisation entrante part du principe qu’un attribut qui n’a pas encore atteint un annuaire connecté finira par l’atteindre.An inbound synchronization assumes that an attribute that hasn’t yet reached a connected directory eventually reaches it. Dans certains cas, il est important de synchroniser uniquement une valeur qui a été confirmée par l’annuaire connecté (« hologram and delta import tower »).In some cases, it is important to only synchronize a value that has been confirmed by the connected directory (“hologram and delta import tower”).

Vous trouverez un exemple de cette fonction dans la règle de synchronisation par défaut In from AD – User Common from Exchange.An example of this function can be found in the out-of-box Synchronization Rule In from AD – User Common from Exchange. Dans Exchange hybride, la valeur ajoutée par Exchange Online doit uniquement être synchronisée après avoir confirmé que la valeur a bien été exportée :In Hybrid Exchange, the value added by Exchange online should only be synchronized when it has been confirmed that the value was exported successfully:
proxyAddresses <- RemoveDuplicates(Trim(ImportedValue("proxyAddresses")))

PrioritéPrecedence

Lorsque plusieurs règles de synchronisation essaient de transmettre la même valeur d’attribut à la cible, la valeur de précédence est utilisée pour déterminer la valeur prioritaire.When several sync rules try to contribute the same attribute value to the target, the precedence value is used to determine the winner. La règle ayant la priorité la plus élevée (la valeur numérique la plus basse) transmettra l’attribut.The rule with highest precedence, lowest numeric value, is going to contribute the attribute in a conflict.

Types de fusion

Cette commande permet de définir plus précisément les flux d’attributs pour un petit sous-ensemble d’objets.This ordering can be used to define more precise attribute flows for a small subset of objects. Par exemple, les règles out-of-box permettent de s’assurer que les attributs d’un compte activé (User AccountEnabled) ont la priorité sur d’autres comptes.For example, the out-of-box-rules make sure that attributes from an enabled account (User AccountEnabled) have precedence from other accounts.

La précédence peut être définie entre les connecteurs.Precedence can be defined between Connectors. Cela permet aux connecteurs avec de meilleures données de transmettre leurs valeurs en premier.That allows Connectors with better data to contribute values first.

Plusieurs objets du même espace de connecteurMultiple objects from the same connector space

Si vous avez plusieurs objets dans le même espace de connecteur joints au même objet de métaverse, vous devez ajuster la précédence.If you have several objects in the same connector space joined to the same metaverse object, precedence must be adjusted. Si plusieurs objets sont dans la portée de la même règle de synchronisation, le moteur de synchronisation n’est pas en mesure de déterminer la précédence.If several objects are in scope of the same sync rule, then the sync engine is not able to determine precedence. Il demeure une incertitude quant à l’objet source qui doit transmettre la valeur au métaverse.It is ambiguous which source object should contribute the value to the metaverse. Cette configuration est signalée comme ambiguë même si les attributs de la source ont la même valeur.This configuration is reported as ambiguous even if the attributes in the source have the same value.
Plusieurs objets joints au même objet mv

Pour ce scénario, vous devez modifier la portée des règles de synchronisation, de façon à ce que les objets sources aient des règles de synchronisation différentes dans la portée.For this scenario, you need to change the scope of the sync rules so the source objects have different sync rules in scope. Cela vous permet de définir une précédence différente.That allows you to define different precedence.
Plusieurs objets joints au même objet mv

Étapes suivantesNext steps

Rubriques de présentationOverview topics

Rubriques de référenceReference topics