Définition de stratégies

Vous aurez à définir un nouveau groupe d'accès dans de nombreux cas.

About this task

Par exemple :

  • Vous avez créé un rôle. Vous devez ensuite octroyer de nouvelles stratégies aux utilisateurs auquel ce nouveau rôle est affecté afin qu'ils puissent exécuter certaines instructions.
  • Vous avez créé des instructions de contrôleur et souhaitez affecter des rôles spécifiques à des utilisateurs afin qu'ils puissent accéder à ces instructions.

Le fichier WCDE_installdir/xml/policies/xml/defaultAccessControlPolicies.xml définit les stratégies de contrôle d'accès par défaut qui sont livrées prêtes à l'emploi. Il suit le DTD spécifié par WCDE_installdir/xml/policies/dtd/accesscontrolpolicies.dtd.

Un modèle d'élément de stratégie est illustré ci-après.


<Policy Name="value"
        OwnerId="value"
        UserGroup="value"
        UserGroupOwner="value"
        ActionGroupName="value"
        ResourceGroupName="value"
        PolicyType="value"
        RelationName="value"
        RelationGroupName="value"
        RelationGroupOwner="value"
</Policy>

où :

Nom
Nom de la stratégie. Il est chargé dans la colonne POLICYNAME de la table ACPOLICY. Name et OwnerID doivent être uniques.
OwnerID
ID membre de l'entité organisationnelle, propriétaire de la stratégie. Il sera chargé dans la colonne member_id de la table ACPOLICY. OwnerID et Name doivent être uniques. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoir RootOrganization : -2001 et DefaultOrganization : -2000
UserGroup
Nom du groupe d'accès indiqué dans la colonne MBRGRPNAME de la table MBRGRP. Il est chargé dans la colonne mbrgrp_id de la table ACPOLICY. Les groupes d'accès par défaut sont définis dans le fichier WCDE_installdir/xml/policies/xml/ACUserGroups_language.xml.
UserGroupOwner
ID membre du propriétaire du groupe d'accès. Il est nécessaire lorsque le groupe d'accès appartient à un membre qui n'est pas le propriétaire de la stratégie. S'il n'est pas indiqué, on suppose que le groupe d'accès appartient au membre spécifié par l'attribut OwnerID.
ActionGroupName
Nom du groupe d'actions indiqué dans la colonne GROUPNAME de la table ACACTGRP. Il est utilisé pour obtenir l'ID du groupe d'actions correspondant (ACACTGRP_ID) qui sera stocké dans la table ACPOLICY. Dans les stratégies basées sur des rôles pour les instructions du contrôleur, la valeur ExecuteCommandActionGroup est affectée au paramètre ActionGroupName. Dans les stratégies relatives aux beans de données, la valeur DisplayDatabeanActionGroup est affectée au paramètre ActionGroupName.
ResourceGroupName
Nom du groupe de ressources, indiqué dans la colonne GRPNAME de la table ACRESGRP. Il est utilisé pour obtenir l'ID du groupe de ressources correspondant (ACRESGRP_ID) qui est stocké dans la table ACPOLICY. Dans les stratégies basées sur des rôles, la valeur ViewCommandResourceGroup est affectée au paramètre ResoureGroupName.
PolicyType
Type de stratégie. Les valeurs admises sont groupableStandard et groupableTemplate. Pour une compatibilité amont, les valeurs standard et template sont également prises en charge. Si cet attribut n'est pas spécifié lors du chargement d'une nouvelle stratégie, la valeur null sera utilisée. Si cet attribut n'est pas spécifié lors de la mise à jour d'une stratégie existante, la valeur demeurera inchangée. Le tableau ci-dessous présente le mappage des valeurs de chaîne sur des valeurs de base de données stockées dans la colonne POLICYTYPE de la table ACPOLICY.
Mappage de valeurs de chaîne sur des valeurs de base de données
ChaîneACPOLICY.POLICYTYPEUtilisation
groupableTemplate3Utilisée lorsque le UserGroup de la stratégie contient un élément dynamique à évaluer au moment de l'exécution. Par exemple, dans la définition UserGroup suivante, elle contient le qualificatif de OrgAndAncestorOrgs :

<simpleCondition> 
<variable name="role"/> 
<operator name="="/> 
<value data="Marketing Manager"/> 
<qualifier name="org" data="OrgAndAncestorOrgs"/> 
</simpleCondition> 
Lorsque cette stratégie est évaluée au moment de l'exécution, la structure de contrôle d'accès vérifie si l'utilisateur dispose du rôle dans l'organisation à laquelle appartient la ressource ou dans l'une de ses organisations parentes.
groupableStandard2Utilisée lorsque le UserGroup de la stratégie ne contient pas d'éléments dynamiques à évaluer au moment de l'exécution. Par exemple, les définitions UserGroup suivantes ne contiennent aucun qualificatif. UserGroup a simplement pour valeur true si l'utilisateur dispose du rôle de Marketing Manager dans une organisation :

<simpleCondition> 
<variable name="role"/> 
<operator name="="/> 
<value data="Marketing Manager"/> 
</simpleCondition> 
Le UserGroup AllUsers est un exemple de groupe de membres ne possédant aucune condition dynamique. Il a simplement pour valeur true :

<profile> 
<trueCondition> 
</trueCondition> 
</profile> 
modèle1obsolète
standard0 ou nullobsolète
RelationName (facultatif)
Nom de la relation, tel qu'indiqué dans la colonne RELATIONNAME de la table ACRELATION. S'il est spécifié, il est utilisé pour obtenir l'ID de relation correspondant (ACRELATION_ID) qui est stocké dans la table ACPOLICY.
RelationGroupName (facultatif)
Nom du groupe de relations, tel qu'indiqué dans la colonne GRPNAME de la table ACRELGRP. Si cet attribut est spécifié, RelationName ne doit pas l'être, car le groupe de relations est prioritaire.
RelationGroupOwner
ID membre du propriétaire du groupe de relations. Cet attribut est nécessaire uniquement si l'attribut RelationGroupName est indiqué et si la valeur de l'attribut OwnerID n'est pas RootOrganization ; dans ce cas, RelationGroupOwner doit être spécifié en tant que RootOrganization (-2001).

Exemples de stratégies

Stratégies basées sur les rôles

Pour les instructions du contrôleur

Dans cet exemple, les utilisateurs appartenant au groupe d'accès AllUsers peuvent exécuter des instructions du contrôleur qui font partie du groupe de ressources AllUserCmdResourceGroup.


<Policy Name="AllUsersExceuteAllUserCmdResourceGroup"
                        OwnerID="RootOrganization"
                        UserGroup="AllUsers"
                        ActionGroupName="ExecuteCommandActionGroup"
                        ResourceGroupName="AllUserCmdResourceGroup"
                        PolicyType="groupableStandard">
</Policy>

Pour les vues

Dans cet exemple, les utilisateurs appartenant au groupe d'accès MarketingManagers peuvent exécuter les vues appartenant au groupe d'actions MarketingManagersViews.


<Policy Name="MarketingManagersExecuteMarketingManagersViews"
                        OwnerID="RootOrganization"
                        UserGroup="MarketingManagers"
                        ActionGroupName="MarketingManagersViews"
                       
ResourceGroupName="ViewCommandResourceGroup"
                        PolicyType="groupableStandard">
</Policy>

Stratégies au niveau de la ressource

Pour les instructions

Dans cet exemple, les utilisateurs appartenant au groupe d'accès AllUsers peuvent exécuter les actions indiquées par le groupe d'actions CouponRedemption sur les ressources spécifiées par le groupe CouponWalletResourceGroup, tant que les utilisateurs respectent la relation creator vis-à-vis de la ressource.


<Policy
Name="AllUsersExecuteCouponRedemptionCommandsOnCouponWalletResource"
                        OwnerID="RootOrganization"
                        UserGroup="AllUsers"
                        ActionGroupName="CouponRedemption"
                       
ResourceGroupName="CouponWalletResourceGroup"
                        RelationName="creator"
                        PolicyType="groupableStandard">
</Policy>

Pour les beans de données

Dans cet exemple, les utilisateurs appartenant au groupe d'accès AllUsers peuvent afficher les beans de données indiqués par le groupe de ressources UserDatabeanResourceGroup, tant que les utilisateurs respectent la relation owner vis-à-vis de la ressource.


<Policy Name="AllUsersDisplayUserDatabeanResourceGroup"
                        OwnerID="RootOrganization"
                        UserGroup="AllUsers"
                       
ActionGroupName="DisplayDatabeanActionGroup"
                       
ResourceGroupName="UserDatabeanResourceGroup"
                        RelationName="owner"
                        PolicyType="groupableStandard">
</Policy>

Stratégies de modèle groupables

Dans cet exemple, les utilisateurs appartenant au groupe d'accès OrgAdminConsoleMembershipAdministratorsForOrg peuvent exécuter les actions indiquées par le groupe d'actions ApproveGroupUpdate sur les ressources spécifiées par le groupe OrganizationDataResourceGroup.


<Policy
Name="OrgAdminConsoleMembershipAdministratorsForOrgExecuteApprove
GroupUpdateCommandsOnOrganizationResource"
                        OwnerID="RootOrganization"
                       
UserGroup="OrgAdminConsoleMembershipAdministratorsForOrg"
                        ActionGroupName="ApproveGroupUpdate"
                       
ResourceGroupName="OrganizationDataResourceGroup"
                        PolicyType="groupableTemplate">
</Policy>

L'étude de la définition du groupe d'accès OrgAdminConsoleMembershipAdministratorsForOrg révélerait la condition suivante pour le membre :


<UserCondition>                      
        <profile>
                                <orListCondition>
                                        <simpleCondition>
                                                <variablename="role"/>
                                                <operatorname="="/>
                                                <valuedata="Buyer Administrator"/>
                                                <qualifiername="org" data="OrgAndAncestorOrgs"/>
                                        </simpleCondition>
                                        <simpleCondition>
                                                <variablename="role"/>
                                                <operatorname="="/>
                                                <valuedata="Seller Administrator"/>
                                                <qualifiername="org" data="OrgAndAncestorOrgs"/>
                                        </simpleCondition>
                                        <simpleCondition>
                                                <variablename="role"/>
                                                <operatorname="="/>
                                                <valuedata="Channel Manager"/>
                                                <qualifiername="org" data="OrgAndAncestorOrgs"/>
                                        </simpleCondition>
                                </orListCondition>
                        </profile>
                UserCondition>
Note: simpleCondition de role est qualifié par org = OrgAndAncestorOrgs. OrgAndAncestorOrgs est un mot clé qui est uniquement disponible dans des stratégies de modèle groupables. Il étend le rôle de façon dynamique jusqu'au contexte du propriétaire de la ressource actuelle. Dans cet exemple, l'utilisateur doit posséder l'un des rôles spécifiés dans l'entreprise à laquelle appartient la ressource, ou dans l'une de ses entreprises parentes.

Définition d'ensembles de stratégies

Les ensembles de stratégies sont créés pour regrouper des stratégies, en fonction des besoins de l'entreprise et du contrôle d'accès. Certains ensembles de stratégies par défaut sont également créés. D'autres ensembles de stratégies sont créés, si nécessaire, lors de la publication d'un magasin ou d'un modèle commercial. Dans la plupart des cas, il vous suffit d'ajouter les stratégies que vous créez aux ensembles de stratégies existants. Si vous avez besoin de créer un nouvel ensemble de stratégies, vous devez le définir dans un fichier XML, semblable à defaultAccessControlPolicies.xml, puis le charger dans la base de données. En voici un exemple de définition :


<PolicyGroup Name="aValue" OwnerID="aValue">
        </PolicyGroup>

où :

Nom
Nom de l'ensemble de stratégies.
OwnerID
ID membre de l'entité organisationnelle, propriétaire de l'ensemble de stratégies. Il sera chargé dans la colonne member_id de la table ACPOLGRP. OwnerID et Name doivent être uniques. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoir RootOrganization : -2001 et DefaultOrganization : -2000.

Association de stratégies à des ensembles de stratégies

Les stratégies peuvent appartenir à plusieurs ensembles de stratégies. Toutefois, pour faciliter l'administration des stratégies, il est recommandé qu'une stratégie n'appartienne qu'à un seul ensemble de stratégies. Cette association doit être définie dans un fichier XML, semblable à defaultAccessControlPolicies.xml, puis chargée dans la base de données. En voici un exemple de définition :


<PolicyGroup Name="aValue" OwnerID="aValue">
                <PolicyGroupPolicy   Name="aValue"
PolicyOwnerID="aValue" />
</PolicyGroup>

où :

PolicyGroupPolicy Name
Nom de la stratégie, défini précédemment, à associer à l'ensemble de stratégies spécifié. Cette stratégie doit être de l'un des types suivants : groupableStandard ou groupableTemplate.
PolicyGroupPolicy PolicyOwnerID (facultatif)
ID membre de l'entité organisationnelle, propriétaire de la stratégie spécifiée. Si ce paramètre n'est pas indiqué, la valeur par défaut est OwnerID de l'ensemble de stratégies. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoir RootOrganization : -2001 et DefaultOrganization : -2000.

Souscription à des groupes de stratégies

Les ressources d'une entreprise sont protégées par les stratégies figurant dans les ensembles de stratégie auxquels s'inscrit cette entreprise. Si cette entreprise ne s'inscrit à aucun ensemble de stratégies, les ensembles de stratégies auxquels s'inscrit l'entreprise parente la plus proche s'appliquent alors.

L'inscription à un ensemble de stratégies peut être effectuée dans la console d'administration de l'entreprise, mais peut également être définie dans un fichier XML, semblable à defaultAccessControlPolicies.xml, puis chargée dans la base de données. En voici un exemple de définition :


<PolicyGroup Name="aValue" OwnerID="aValue">
                <PolicyGroupSubscription
OrganizationID="aValue"/>
        </PolicyGroup>

où :

OrganizationID
ID membre de l'entité organisationnelle qui souscrit à cet ensemble de stratégies. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoir RootOrganization : -2001 et DefaultOrganization : -2000.

Données de stratégie traduisibles

Voici un exemple de fichier de stratégie personnalisé qui peut être utilisé pour définir les données de stratégie traduisibles :


 <?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
        <!--The following TRANSLATABLE access control elements should be defined in this file: 
        <Attribute_nls>
        <Action_nls> 
        <Relation_nls>
        <ResourceCategory_nls>
        <ActionGroup_nls>
        <ResourceGroup_nls> 
        <Policy_nls>
        <PolicyGroup_nls>-->
<!DOCTYPE PoliciesNLS SYSTEM
"../dtd/accesscontrolpoliciesnls.dtd">

<PoliciesNLS LanguageID="value">

 
 <!--Insert access control element definitions here --> 
 </PoliciesNLS>

L'attribut LanguageID représente une chaîne correspondant à la langue des données spécifiques de l'environnement local. Les valeurs admises de LanguageID sont les suivantes :

  • de_DE
  • fr_FR
  • es_ES
  • fr_FR
  • it_IT
  • ja_JP
  • ko_KR
  • pt_BR
  • zh_CN
  • zh_TW

Données de stratégie non traduisibles

Voici un exemple de fichier de stratégie personnalisé contenant des données non traduisibles :


   <?xml version="1.0" encoding="ISO-8859-1" standalone="no"
?> 

<!DOCTYPE Policies SYSTEM "../dtd/accesscontrolpolicies.dtd">
 
        <!--The following NON-TRANSLATABLE access control
elements
 should be defined in this file:

        <Attribute>
        <Action>
        <ResourceCategory>
        <Relation>
        <RelationGroup>
        <ActionGroup>
        <ResourceGroup>
        <Policy>
        <PolicyGroup>-->
<Policies>

 <!--Insert access control element definitions here-->
 </Policies>

Données spécifiques de l'environnement local

Les données spécifiques d'environnement local facultatives suivantes peuvent être chargées pour apporter une description supplémentaire aux éléments de contrôle d'accès déjà définis dans le fichier XML non traduisible. Les données spécifiques de l'environnement local par défaut se trouvent à l'adresse suivante :


        WCDE_installdir\xml\policies\xml\defaultAccessControlPolicies_locale.xml

Par exemple, defaultAccessControlPolicies_en_US.xml.

Attribut

L'exemple suivant définit des informations supplémentaires pour l'élément attribute :


<Atrribute_nls AttributeName="Status"
DisplayName_nls="Status attribute"
Description_nls="Resource status attribute"
/>

où :

AttributeName
Nom de l'attribut. Cette valeur est stockée dans la colonne ATTRNAME de la table ACATTR.
DisplayName_nls
Nom d'affichage de l'attribut. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACATTRDESC.
Description_nls
Description facultative de l'attribut. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACATTRDESC.

Action

L'exemple suivant définit des informations supplémentaires pour l'élément action :


<Action_nls ActionName="OrderAdjustmentButton"
DisplayName_nls="Order Adjustment Button View"
Description_nls="The view for loading buttons in the order adjustment page when placing an order from Commerce Acclerator"
/>

où :

ActionName
Nom de l'action. Cette valeur est stockée dans la colonne ACTION de la table ACACTION.
DisplayName_nls
Nom d'affichage de l'action. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACACTDESC.
Description_nls
Description facultative de l'action. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACACTDESC.

Corrélation

L'exemple suivant définit des informations supplémentaires pour l'élément relation :


<Relation_nls RelationName="creator"
DisplayName_nls="creator"
Description_nls="creator"
/>

où :

RelationName
Nom de la relation. Cette valeur est stockée dans la colonne RELATIONNAME de la table ACRELATION.
DisplayName_nls
Nom d'affichage de la relation. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACRELDESC.
Description_nls
Description facultative de la relation. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACRELDESC.

Catégorie de ressource

L'exemple suivant définit des informations supplémentaires pour la catégorie de ressource :


<ResourceCategory_nls ResourceCategoryName="com.ibm.commerce.
catalog.objects."InterestItemList"
DisplayName_nls="Interest Item List"
Description_nls="Interest Item List command"
/>

où :

ResourceCategoryName
Nom de la catégorie de ressource. Cette valeur est stockée dans la colonne RESCLASSNAME de la table ACRESCGRY.
DisplayName_nls
Nom d'affichage de la catégorie de ressource. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACRSCGDES.
Description_nls
Description facultative de la catégorie de ressource. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACRSCGDES.

Groupe d'actions

L'exemple suivant définit des informations supplémentaires pour le groupe d'actions :


<ActionGroup_nls ActionGroupName="DoEverything"
DisplayName_nls="Do Everything"
Description_nls="Permits access to all Actions"
/>

où :

ActionGroupName
Nom du groupe d'actions. Cette valeur est stockée dans la colonne GROUPNAME de la table ACACTGRP.
DisplayName_nls
Nom d'affichage du groupe d'actions. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACACGPDESC.
Description_nls
Description facultative du groupe d'actions. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACACGPDESC.

Groupe de ressources

L'exemple suivant définit des informations supplémentaires pour le groupe de ressources :


<ResourceGroup_nls ResourceGroupName="AllResourceGroup"
DisplayName_nls="All Resources Group"
Description_nls="All Resources"
/>

où :

ResourceGroupName
Nom du groupe de ressources. Cette valeur est stockée dans la colonne GRPNAME de la table ACRESGRP.
DisplayName_nls
Nom d'affichage du groupe de ressources. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACRESGPDES.
Description_nls
Description facultative du groupe de ressources. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACRESGPDES.

Stratégie

L'exemple suivant définit des informations supplémentaires pour la stratégie :


<Policy_nls PolicyName="SiteAdministratorsCanDoEverything"
OwnerID="RootOrganization"
DisplayName_nls="Site Administrators Can Do Everything"
Description_nls="Policy that allows Site Administrators to do everything"
/>

où :

PolicyName
Nom de la stratégie de contrôle d'accès. Cette valeur est stockée dans la colonne POLICYNAME de la table ACPOLICY.
OwnerID
ID membre de l'entité organisationnelle, propriétaire de cette stratégie.
DisplayName_nls
Nom d'affichage de la stratégie. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACPOLDESC.
Description_nls
Description facultative de la stratégie. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACPOLDESC.

Ensemble de stratégies

L'exemple suivant définit des informations supplémentaires pour l'ensemble de stratégies :


<PolicyGroup_nls PolicyGroupName="B2CPolicyGroup"
OwnerID="RootOrganization"
                DisplayName_nls="B2C Policy Group"
                Description_nls="This policy group contains all the B2C specific policies."
        />
où :
PolicyGroupName
Nom de l'ensemble de stratégies de contrôle d'accès auquel des informations supplémentaires sont ajoutées. Cette valeur se trouve dans la colonne NAME de la table ACPOLGRP.
OwnerID
ID membre de l'entité organisationnelle, propriétaire de cet ensemble de stratégies.
DisplayName_nls
Nom d'affichage de l'ensemble de stratégies. Cette valeur est stockée dans la colonne DISPLAYNAME de la table ACPLGPDESC.
Description_nls
Description facultative de l'ensemble de stratégies. Cette valeur est stockée dans la colonne DESCRIPTION de la table ACPLGPDESC.