Definir políticas

Hay muchos casos en los que se necesita definir un nuevo grupo de acceso.

Por ejemplo:
  • Ha creado un nuevo rol. Por lo tanto, se necesitan nuevas políticas para otorgar a los usuarios este nuevo rol para ejecutar ciertos mandatos.
  • Ha creado un nuevo mandato de controlador y desea asignar a los usuarios roles específicos para acceder a este mandato.

El archivo utilities_root/xml/policies/xml/defaultAccessControlPolicies.xml define las políticas de control de acceso predeterminadas que se incluyen con el producto. Sigue el DTD que se especifica por: utilities_root/xml/policies/dtd/accesscontrolpolicies.dtd.

A continuación se muestra la plantilla de un elemento de política:
<Policy Name="value"
        OwnerId="value"
        UserGroup="value"
        UserGroupOwner="value"
        ActionGroupName="value"
        ResourceGroupName="value"
        PolicyType="value"
        RelationName="value"
        RelationGroupName="value"
        RelationGroupOwner="value"
</Policy>
Donde:
Nombre:
El nombre de la política. Se carga en la columna POLICYNAME de la tabla ACPOLICY. El Name y OwnerID juntos deben ser exclusivos.
OwnerID
ID de miembro de la entidad de organización propietaria de la política. Se cargará en la columna member_id de la tabla ACPOLICY. OwnerID y Name juntos deben ser exclusivos. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que son RootOrganization: -2001 y DefaultOrganization: -2000
UserGroup
Nombre del grupo de acceso especificado en la columna MBRGRPNAME de la tabla MBRGRP. Se carga en la columna mbrgrp_id de la tabla ACPOLICY. Los grupos de acceso predeterminados se definen en el archivo utilities_root/xml/policies/xml/ACUserGroups_language.xml.
UserGroupOwner
ID del miembro que es propietario del grupo de acceso. Es necesario cuando el propietario del grupo de acceso es un miembro que no es el propietario de la política. Si no se especifica, se presupone que el grupo de acceso es propiedad del miembro que se especifica mediante el atributo OwnerID.
ActionGroupName
Nombre del grupo de acciones especificado en la columna GROUPNAME de la tabla ACACTGRP. Se utiliza para obtener el ID de grupo de acciones (ACACTGRP_ID) correspondiente que se almacenará en la tabla ACPOLICY. Las políticas basadas en roles para mandatos de controlador han establecido ActionGroupName en ExecuteCommandActionGroup. Las políticas para beans de datos han establecido ActionGroupName en DisplayDatabeanActionGroup .
ResourceGroupName
Nombre del grupo de recursos, especificado en la columna GRPNAME de la tabla ACRESGRP. Se utiliza para obtener el ID de grupo de recursos (ACRESGRP_ID) correspondiente que se almacena en la tabla ACPOLICY. Las políticas basadas en roles para las vistas han establecido ResoureGroupName en ViewCommandResourceGroup.
PolicyType
Tipo de política. Los valores válidos son groupableStandard y groupableTemplate. Por motivos de compatibilidad con versiones anteriores, también se admiten los valores standard y template. Si no se especifica este atributo cuando se carga una política nueva, se utilizará el valor nulo. Si no se especifica este atributo cuando se actualice una política existente, el valor no se modificará. La tabla siguiente muestra la correlación de valores de tipo serie con valores de base de datos almacenados en la columna POLICYTYPE de la tabla ACPOLICY.
Correlación de valores de serie con valores de base de datos
SerieACPOLICY.POLICYTYPEUsage
groupableTemplate3Se utiliza cuando UserGroup de la política contiene un elemento dinámico que debe evaluarse en tiempo de ejecución. Por ejemplo, en la definición de UserGroup siguiente, contiene el cualificador de OrgAndAncestorOrgs:

<simpleCondition> 
<variable name="role"/> 
<operator name="="/> 
<value data="Marketing Manager"/> 
<qualifier name="org" data="OrgAndAncestorOrgs"/> 
</simpleCondition> 
Cuando esta política se evalúa durante la ejecución, la infraestructura de control de acceso comprobará si el usuario tiene el rol en la organización que tiene el recurso o cualquiera de sus organizaciones predecesoras.
groupableStandard2Se utiliza cuando UserGroup de la política no contiene elementos dinámicos que deben evaluarse durante la ejecución. Por ejemplo, en las definiciones de UserGroup siguientes, no hay cualificador. Evalúa simplemente true si el usuario tiene el rol de Director de marketing en cualquier organización:

<simpleCondition> 
<variable name="role"/> 
<operator name="="/> 
<value data="Marketing Manager"/> 
</simpleCondition> 
El UserGroup AllUsers es un ejemplo de un grupo de miembros que no tiene ninguna condición dinámica. Se evalúa simplemente en true:

<profile> 
<trueCondition> 
</trueCondition> 
</profile> 
plantilla1en desuso
estándar0 o nuloen desuso
RelationName (opcional)
El nombre de la relación, como se especifica en la columna RELATIONNAME de la tabla ACRELATION. Si se especifica, se utiliza para obtener el ID de relación (ACRELATION_ID) correspondiente que se almacena en la tabla ACPOLICY.
RelationGroupName (opcional)
El nombre del grupo de relaciones, como se especifica en la columna GRPNAME de la tabla ACRELGRP. Si se especifica este atributo, no debe especificarse RelationName ya que el Grupo de relaciones tiene prioridad.
RelationGroupOwner
ID de miembro propietario del grupo de relaciones. Este atributo es necesario solo si se especifica el atributo RelationGroupName y si el valor del atributo OwnerID no es RootOrganization; en ese caso, RelationGroupOwner debe especificarse como RootOrganization (-2001).

Ejemplos de políticas

Políticas basadas en roles

Para mandatos de controlador

En este ejemplo, los usuarios que pertenecen al grupo de acceso AllUsers pueden ejecutar los mandatos de controlador que forman parte del grupo de recursos AllUserCmdResourceGroup.


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

Para vistas

En este ejemplo, los usuarios que pertenecen al grupo de acceso MarketingManagers pueden ejecutar las vistas que pertenecen al grupo de acciones MarketingManagersViews.


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

Políticas a nivel de recursos

Para mandatos

En este ejemplo, los usuarios que pertenecen al grupo de acceso AllUsers pueden realizar las acciones especificadas por el grupo de acciones CouponRedemption en los recursos especificados por el grupo de recursos CouponWalletResourceGroup, siempre y cuando los usuarios satisfagan la relación creator con respecto al recurso.


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

Para beans de datos

En este ejemplo, los usuarios que pertenecen al grupo de acceso AllUsers pueden visualizar los beans de datos especificados por el grupo de recursos UserDatabeanResourceGroup, siempre y cuando los usuarios satisfagan la relación owner con respecto al recurso.


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

Políticas de plantilla agrupables

En este ejemplo, los usuarios que pertenecen al grupo de acceso OrgAdminConsoleMembershipAdministratorsForOrg pueden realizar las acciones especificadas por el grupo de acciones ApproveGroupUpdate en los recursos especificados por OrganizationDataResourceGroup.


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

El análisis de la definición del grupo de acceso OrgAdminConsoleMembershipAdministratorsForOrg revelará la siguiente condición para la pertenencia al grupo:


<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 se califica por org = OrgAndAncestorOrgs. OrgAndAncestorOrgs es una palabra clave que solo está disponible en políticas de plantilla agrupables. Amplía dinámicamente el ámbito del rol al contexto del propietario del recurso actual. En este ejemplo, el usuario debe tener uno de los roles especificados en la organización propietaria del recurso o en cualquiera de los predecesores de la organización.

Definición de grupos de políticas

Los grupos de políticas se crean en políticas de grupo, basándose en los requisitos de la empresa y de control de acceso. También se crean algunos grupos de políticas predeterminados. Otros grupos de políticas se crean a medida que se necesitan mientras se publica una tienda o un modelo de negocio. En la mayor parte de los casos simplemente puede añadir políticas nuevas que cree a los grupos de políticas existente. Si tiene que crear un nuevo grupo de políticas, debería definirlo en un archivo XML, similar a defaultAccessControlPolicies.xml, y luego cargarlo en la base de datos. A continuación se proporciona una definición de ejemplo:


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

Donde:

Nombre:
Nombre del grupo de políticas.
OwnerID
ID de miembro de la entidad de organización propietaria del grupo de políticas. Se cargará en la columna member_id de la tabla ACPOLGRP. OwnerID y Name juntos deben ser exclusivos. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que son RootOrganization: -2001 y DefaultOrganization: -2000.

Asociar políticas a grupos de políticas

Las políticas pueden pertenecer a varios grupos de políticas. No obstante, para facilitar la administración de políticas se recomienda que una política sólo pertenezca a un grupo de políticas. Esta asociación debe definirse en un archivo XML, similar a defaultAccessControlPolicies.xml, y luego cargarse en la base de datos. A continuación se proporciona una definición de ejemplo:


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

Donde:

PolicyGroupPolicy Name
Nombre de la política, definida anteriormente, que se debe asociar con el grupo de políticas especificado. Esta política debe ser de uno de los tipos de políticas siguientes: groupableStandard o groupableTemplate.
PolicyGroupPolicy PolicyOwnerID (opcional)
ID de miembro de la entidad de organización propietaria de la política especificada. Si no se especifica este parámetro, el valor predeterminado es el OwnerID del grupo de políticas. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que son RootOrganization: -2001 y DefaultOrganization: -2000.

Suscripción a grupos de políticas

Los recursos de una organización se protegen mediante las políticas de los grupos de políticas a los que se ha suscrito la organización. Si dicha organización no se suscribe a ningún grupo de políticas, entonces se aplicarán los grupos de políticas a los que se suscribe el antecesor más próximo a dicha organización.

La suscripción a grupos de políticas se puede realizar en la Consola de administración de organizaciones pero también se puede definir en un archivo XML, similar a defaultAccessControlPolicies.xml, y luego cargar en la base de datos. A continuación se proporciona una definición de ejemplo:


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

Donde:

OrganizationID
ID de miembro de la entidad de organización que se está suscribiendo a este grupo de políticas. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que son RootOrganization: -2001 y DefaultOrganization: -2000.

Datos de política que se pueden traducir

A continuación se muestra una plantilla de un archivo de política personalizado que se puede utilizar para definir datos de política que se pueden traducir:


 <?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>

El atributo LanguageID es una serie que corresponde al idioma de los datos específicos del entorno local. Los valores válidos del LanguageID son:

  • de_DE
  • en_US
  • es_ES
  • fr_FR
  • it_IT
  • ja_JP
  • ko_KR
  • pl_PL
  • pt_BR
  • ro_RO
  • ru_RU
  • zh_CN
  • zh_TW

Datos de política no traducibles

A continuación se muestra una plantilla de un archivo de política personalizado que contiene datos que no se pueden traducir:


   <?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>

Datos específicos de entorno local

Los siguientes datos específicos del entorno local son opcionales y se pueden cargar para proporcionar una descripción adicional a los elementos de control de acceso definidos en el archivo XML no traducible. Los datos específicos del entorno local predeterminados se pueden encontrar en la dirección siguiente:


      utilities_root\xml\policies\xml\defaultAccessControlPolicies_locale.xml

Por ejemplo, defaultAccessControlPolicies_en_US.xml.

Atributo

El ejemplo siguiente define información adicional de elementos de atributo:


<Atrribute_nls AttributeName="Status"
DisplayName_nls="Status attribute"
Description_nls="Resource status attribute"
/>
Donde:
AttributeName
El nombre del atributo. Este valor se almacena en la columna ATTRNAME de la tabla ACATTR.
DisplayName_nls
Nombre de visualización del atributo. Este valor se almacena en la columna DISPLAYNAME de la tabla ACATTRDESC.
Description_nls
Descripción opcional del atributo. Este valor se almacena en la columna DESCRIPTION de la tabla ACATTRDESC.

Acción

El ejemplo siguiente define información adicional de elementos de acción:


<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"
/>

Donde:

ActionName
Nombre de la acción. Este valor se almacena en la columna ACTION de la tabla ACACTION.
DisplayName_nls
Nombre de visualización de la acción. Este valor se almacena en la columna DISPLAYNAME de la tabla ACACTDESC.
Description_nls
Descripción opcional de la acción. Este valor se almacena en la columna DESCRIPTION de la tabla ACACTDESC.

Relación

El siguiente ejemplo define información de elementos de relación adicional:


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

Donde:

RelationName
El nombre de la relación. Este valor se almacena en la columna RELATIONNAME de la tabla ACRELATION.
DisplayName_nls
Nombre de visualización de la relación. Este valor se almacena en la columna DISPLAYNAME de la tabla ACRELDESC.
Description_nls
Descripción opcional de la relación. Este valor se almacena en la columna DESCRIPTION de la tabla ACRELDESC.

Categoría de recursos

El siguiente ejemplo define información de categoría de recursos adicional:


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

Donde:

ResourceCategoryName
Nombre de la categoría de recursos. Este valor se almacena en la columna RESCLASSNAME de la tabla ACRESCGRY.
DisplayName_nls
Nombre de visualización de la categoría de recursos. Este valor se almacena en la columna DISPLAYNAME de la tabla ACRSCGDES.
Description_nls
Descripción opcional de la categoría de recursos. Este valor se almacena en la columna DESCRIPTION de la tabla ACRSCGDES.

Grupo de acciones

El siguiente ejemplo define información de grupo de acciones adicional:


<ActionGroup_nls ActionGroupName="DoEverything"
DisplayName_nls="Do Everything"
Description_nls="Permits access to all Actions"
/>
Donde:
ActionGroupName
Nombre del grupo de acciones. Este valor se almacena en la columna GROUPNAME de la tabla ACACTGRP.
DisplayName_nls
Nombre de visualización del grupo de acciones. Este valor se almacena en la columna DISPLAYNAME de la tabla ACACGPDESC.
Description_nls
Descripción opcional del grupo de acciones. Este valor se almacena en la columna DESCRIPTION de la tabla ACACGPDESC.

Grupo de recursos

El siguiente ejemplo define información de grupo de recursos adicional:


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

Donde:

ResourceGroupName
Nombre del grupo de recursos. Este valor se almacena en la columna GRPNAME de la tabla ACRESGRP.
DisplayName_nls
Nombre de visualización del grupo de recursos. Este valor se almacena en la columna DISPLAYNAME de la tabla ACRESGPDES.
Description_nls
Descripción opcional del grupo de recursos. Este valor se almacena en la columna DESCRIPTION de la tabla ACRESGPDES.

Política

El ejemplo siguiente define información de política adicional:


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

Donde:

PolicyName
Nombre de la política de control de acceso. Este valor se almacena en la columna POLICYNAME de la tabla ACPOLICY.
OwnerID
ID de miembro de la entidad de organización propietaria de esta política.
DisplayName_nls
Nombre de visualización de la política. Este valor se almacena en la columna DISPLAYNAME de la tabla ACPOLDESC.
Description_nls
Descripción opcional de la política. Este valor se almacena en la columna DESCRIPTION de la tabla ACPOLDESC.

Grupo de políticas

El siguiente ejemplo define información adicional sobre el grupo de políticas:


<PolicyGroup_nls PolicyGroupName="B2CPolicyGroup"
OwnerID="RootOrganization"
                DisplayName_nls="B2C Policy Group"
                Description_nls="This policy group contains all the B2C specific policies."
        />
Donde:
PolicyGroupName
Nombre del grupo de políticas de control de acceso al que se está añadiendo información adicional. Este valor se encuentra en la columna NAME de la tabla ACPOLGRP.
OwnerID
ID de miembro de la entidad de organización propietaria de este grupo de políticas.
DisplayName_nls
Nombre de visualización del grupo de políticas. Este valor se almacena en la columna DISPLAYNAME de la tabla ACPLGPDESC.
Description_nls
Descripción opcional del grupo de políticas. Este valor se almacena en la columna DESCRIPTION de la tabla ACPLGPDESC.