Définition de groupes de relations

Si plusieurs relations sont requises pour octroyer à un utilisateur l'accès à certaines ressources, vous pouvez utiliser la fonction de construction de RelationGroup. Toutefois, une relation répond généralement à la plupart des conditions de ce scénario. Les groupes de relations contiennent des conditions ouvertes qui sont les conditions d'appartenance au groupe de relations. Si vous avez besoin de définir des groupes de relations, vous devez pour cela définir les informations relatives au groupe de relations dans votre fichier XML, ou modifier le fichier defaultAccessControlPolicies.xml.

<RelationGroup Name="aValue" OwnerID="Root Organization">
        <RelationCondition>
                <profile>                        
                    Relationship Chain Open Condition XML
                </profile>;
        </RelationCondition>;
</RelationGroup>;

Chaînes de relations

Chaque groupe de relations est composé d'une ou plusieurs conditions ouvertes RELATIONSHIP_CHAIN, regroupées par les éléments andListCondition ou orListCondition. Une chaîne de relations est une série d'une ou plusieurs relations. La longueur d'une chaîne de relations est déterminée par le nombre de relations qui la compose. Pour déterminer la longueur de la chaîne de relation, comptez le nombre d'entrées <parmeter name= "X" value="Y"> dans la représentation XML de la chaîne de relation. Vous trouverez ci-dessous un exemple de chaîne de relations d'une longueur égale à 1.

<openCondition name="RELATIONSHIP_CHAIN">
   <parameter name="RELATIONSHIP" value="aValue"/>
</openCondition>;
où :
aValue
Chaîne représentant la relation entre l'utilisateur et la ressource. Cette chaîne doit être l'une des relations vérifiées dans la méthode fulfills de la ressource.
Lorsqu'une chaîne de relations possède une longueur égale à 2 ou plus, il s'agit d'une série de deux relations. La première entrée <parmeter name= "X" value="Y"> indique une relation entre un utilisateur et une entité organisationnelle. La dernière entrée <parmeter name= "X" value="Y"> indique une relation entre cette entité organisationnelle et la ressource. Les entrées intermédiaires <parmeter name= "X" value="Y"> figurant dans la chaîne représentent des relations entre des organisations. Vous trouverez ci-dessous un exemple de chaîne de relations d'une longueur égale à 2.
<openCondition name=RELATIONSHIP_CHAIN">
   <parameter name="aValue1" value="aValue2"/>
   <parameter name="RELATIONSHIP" value="aValue3"/>
</openCondition>;
où :
aValue1
Les valeurs possibles sont HIERARCHY et ROLE. HIERARCHY indique qu'il existe une relation hiérarchique entre l'utilisateur et l'entité organisationnelle dans la hiérarchie des membres. ROLE indique que l'utilisateur joue un rôle dans l'entité organisationnelle. Si la valeur de aValue1 est HIERARCHY, les valeurs possibles de aValue2 incluent child. La valeur enfant renvoie à l'entité organisationnelle dont l'utilisateur est un enfant direct dans la hiérarchie des membres. Si la valeur de aValue1 est aValue2, les valeurs possibles incluent toutes les entrées valides dans la colonne NAME de la table ROLE, qui renvoient à toutes les entités organisationnelles pour lesquelles l'utilisateur actuel joue ce rôle.
aValue3
Chaîne représentant la relation entre une ou plusieurs entités organisationnelles extraites à partir de l'évaluation du premier paramètre et de la ressource. Cette valeur correspond au paramètre de relation de la méthode fulfills() sur la ressource protégeable. Si plusieurs entités organisationnelles ont été renvoyées par le paramètre d'évaluation aValue1, cette partie de la chaîne RELATIONSHIP_CHAIN est satisfaite si au moins l'une de ces entités organisationnelles exécute la relation indiquée par le paramètre aValue2.

Pour plus d'informations sur la définition de relations, reportez-vous à la rubrique Définition de relations.

Définition de groupes de relations à chaîne unique

Pour créer une stratégie de contrôle d'accès qui fasse en sorte qu'un utilisateur appartienne à l'entité organisationnelle de la ressource, créez un groupe de relations composé d'une chaîne de relations ayant la longueur two.
<RelationGroup Name="MemberOf->;BuyerOrganizationEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
         <openCondition name="RELATIONSHIP_CHAIN">
            <parameter name="HIERARCHY" value="child"/>
            <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/>
         </openCondition>
      </profile>
   <RelationCondition>
<RelationGroup>

La chaîne de relations possède une longueur égale à two, car elle est composée de deux relations distinctes. La première relation est établie entre l'utilisateur et son entité organisationnelle parente. L'utilisateur est l'child dans cette relation. Pour la deuxième relation, le gestionnaire des stratégies de contrôle d'accès vérifie si l'entité organisationnelle parente satisfait la relation BuyingOrganizationalEntity avec la ressource. En d'autres termes, elle renvoie la valeur true s'il s'agit de l'entité organisationnelle acheteuse de la ressource.

Un autre exemple est une stratégie de contrôle d'accès attribuant à l'utilisateur le rôle de représentant de compte pour l'entité organisationnelle acheteuse de la ressource. Là encore, un groupe de relations composé d'une chaîne de relations d'une longueur égale à 2 est utilisé. La première partie de la chaîne trouve toutes les entités organisationnelles pour lesquelles l'utilisateur joue le rôle de représentant de compte. Puis, pour l'ensemble d'entités organisationnelles, le gestionnaire des stratégies de contrôle d'accès vérifie si au moins l'une d'entre elles satisfait la relation BuyingOrganizationalEntity avec la ressource. Si tel est le cas, une valeur true est renvoyée.

L'exemple suivant montre comment définir ce type de groupe de relations :
<RelationGroup Name="AccountRep->BuyerOrganizationalEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
          <openCondition name="RELATIONSHIP_CHAIN">
             <parameter name="ROLE" value="Account Representative"/>
             <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/> 
         </openCondition>
       </profile>
   <RelationCondition>
<RelationGroup>

Définition de groupes de relations à chaîne multiple

Pour constituer un groupe de relations contenant une relation à chaîne multiple, indiquez si l'utilisateur doit satisfaire toutes les chaînes de relations ou au moins l'une d'entre elles.

Dans l'exemple suivant, l'utilisateur doit être le créateur de la ressource et appartenir à l'entité BuyingOrganizationalEntity indiquée dans la ressource. La première chaîne, qui indique que l'utilisateur doit être le créateur de la ressource, possède une longueur égale à 1. La deuxième, qui indique que l'utilisateur doit appartenir à l'entité BuyingOrganizationalEntity spécifiée dans la ressource, possède une longueur égale à 2.
<RelationshipGroup Name="Creator_And_MemberOf->BuyerOrganizationalEntity" OwnerID="RootOrganization">
   <RelationCondition>
      <profile>
            <andListCondition>
               <openCondition name="RELATIONSHIP_CHAIN">
                  <parameter name="RELATIONSHIP" value="creator" />
               </openCondition>
               <openCondition name="RELATIONSHIP_CHAIN">
                  <parameter name="HIERARCHY" value="child"/>
                  <parameter name="RELATIONSHIP" value="BuyingOrganizationalEntity"/>
               </openCondition>
            </andListCondition>
      </profile>
   </RelationCondition>
</RelationGroup>

Si l'utilisateur doit satisfaire l'une des deux chaînes de relations, la balise <andListConditon> doit être remplacée par <orListConditon>.