Définition de stratégies
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
POLICYNAMEde la tableACPOLICY.NameetOwnerIDdoivent être uniques. - OwnerID
- ID membre de l'entité organisationnelle, propriétaire de la stratégie. Il sera chargé dans la colonne
member_idde la tableACPOLICY.OwnerIDetNamedoivent être uniques. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoirRootOrganization : -2001etDefaultOrganization : -2000 - UserGroup
- Nom du groupe d'accès indiqué dans la colonne
MBRGRPNAMEde la tableMBRGRP. Il est chargé dans la colonnembrgrp_idde la tableACPOLICY. 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
GROUPNAMEde la tableACACTGRP. Il est utilisé pour obtenir l'ID du groupe d'actions correspondant (ACACTGRP_ID) qui sera stocké dans la tableACPOLICY. Dans les stratégies basées sur des rôles pour les instructions du contrôleur, la valeurExecuteCommandActionGroupest affectée au paramètreActionGroupName. Dans les stratégies relatives aux beans de données, la valeurDisplayDatabeanActionGroupest affectée au paramètreActionGroupName. - ResourceGroupName
- Nom du groupe de ressources, indiqué dans la colonne
GRPNAMEde la tableACRESGRP. Il est utilisé pour obtenir l'ID du groupe de ressources correspondant (ACRESGRP_ID) qui est stocké dans la tableACPOLICY. Dans les stratégies basées sur des rôles, la valeurViewCommandResourceGroupest affectée au paramètreResoureGroupName. - 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
POLICYTYPEde la tableACPOLICY.Mappage de valeurs de chaîne sur des valeurs de base de données Chaîne ACPOLICY.POLICYTYPE Utilisation groupableTemplate 3 Utilisé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:
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.<simpleCondition> <variable name="role"/> <operator name="="/> <value data="Marketing Manager"/> <qualifier name="org" data="OrgAndAncestorOrgs"/> </simpleCondition>groupableStandard 2 Utilisé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 :
Le UserGroup<simpleCondition> <variable name="role"/> <operator name="="/> <value data="Marketing Manager"/> </simpleCondition>AllUsersest un exemple de groupe de membres ne possédant aucune condition dynamique. Il a simplement pour valeur true :<profile> <trueCondition> </trueCondition> </profile>modèle 1 obsolète standard 0 ou null obsolète - RelationName (facultatif)
- Nom de la relation, tel qu'indiqué dans la colonne
RELATIONNAMEde la tableACRELATION. S'il est spécifié, il est utilisé pour obtenir l'ID de relation correspondant (ACRELATION_ID) qui est stocké dans la tableACPOLICY. - RelationGroupName (facultatif)
- Nom du groupe de relations, tel qu'indiqué dans la colonne
GRPNAMEde la tableACRELGRP. Si cet attribut est spécifié,RelationNamene 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
RelationGroupNameest indiqué et si la valeur de l'attributOwnerIDn'est pas RootOrganization ; dans ce cas,RelationGroupOwnerdoit ê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>
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_idde la tableACPOLGRP.OwnerIDetNamedoivent être uniques. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoirRootOrganization : -2001etDefaultOrganization : -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
OwnerIDde l'ensemble de stratégies. Deux valeurs spéciales sont reconnues par l'outil de transformation, à savoirRootOrganization : -2001etDefaultOrganization : -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 : -2001etDefaultOrganization : -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
ATTRNAMEde la tableACATTR. -
DisplayName_nls - Nom d'affichage de l'attribut. Cette valeur est stockée dans la colonne
DISPLAYNAMEde la tableACATTRDESC. -
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
DISPLAYNAMEde la tableACACTDESC. -
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
RELATIONNAMEde la tableACRELATION. -
DisplayName_nls - Nom d'affichage de la relation. Cette valeur est stockée dans la colonne
DISPLAYNAMEde la tableACRELDESC. -
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
RESCLASSNAMEde la tableACRESCGRY. -
DisplayName_nls - Nom d'affichage de la catégorie de ressource. Cette valeur est stockée dans la colonne
DISPLAYNAMEde la tableACRSCGDES. -
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
GROUPNAMEde la tableACACTGRP. -
DisplayName_nls - Nom d'affichage du groupe d'actions. Cette valeur est stockée dans la colonne
DISPLAYNAMEde la tableACACGPDESC. -
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
GRPNAMEde la tableACRESGRP. -
DisplayName_nls - Nom d'affichage du groupe de ressources. Cette valeur est stockée dans la colonne
DISPLAYNAMEde la tableACRESGPDES. -
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
POLICYNAMEde la tableACPOLICY. -
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
DISPLAYNAMEde la tableACPOLDESC. -
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."
/>
- 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.