Definir políticas
Hay muchos casos en los que se necesita definir un nuevo grupo de acceso.
- 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.
<Policy Name="value"
OwnerId="value"
UserGroup="value"
UserGroupOwner="value"
ActionGroupName="value"
ResourceGroupName="value"
PolicyType="value"
RelationName="value"
RelationGroupName="value"
RelationGroupOwner="value"
</Policy>
- Nombre:
- El nombre de la política. Se carga en la columna
POLICYNAME
de la tablaACPOLICY
. ElName
yOwnerID
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 tablaACPOLICY
.OwnerID
yName
juntos deben ser exclusivos. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que sonRootOrganization: -2001
yDefaultOrganization: -2000
- UserGroup
- Nombre del grupo de acceso especificado en la columna
MBRGRPNAME
de la tablaMBRGRP
. Se carga en la columnambrgrp_id
de la tablaACPOLICY
. Los grupos de acceso predeterminados se definen en el archivoutilities_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 tablaACACTGRP
. Se utiliza para obtener el ID de grupo de acciones (ACACTGRP_ID
) correspondiente que se almacenará en la tablaACPOLICY
. Las políticas basadas en roles para mandatos de controlador han establecidoActionGroupName
enExecuteCommandActionGroup
. Las políticas para beans de datos han establecidoActionGroupName
enDisplayDatabeanActionGroup
. - ResourceGroupName
- Nombre del grupo de recursos, especificado en la columna
GRPNAME
de la tablaACRESGRP
. Se utiliza para obtener el ID de grupo de recursos (ACRESGRP_ID
) correspondiente que se almacena en la tablaACPOLICY
. Las políticas basadas en roles para las vistas han establecidoResoureGroupName
enViewCommandResourceGroup
. - 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 tablaACPOLICY
.Correlación de valores de serie con valores de base de datos Serie ACPOLICY.POLICYTYPE Usage groupableTemplate 3 Se 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
:
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.<simpleCondition> <variable name="role"/> <operator name="="/> <value data="Marketing Manager"/> <qualifier name="org" data="OrgAndAncestorOrgs"/> </simpleCondition>
groupableStandard 2 Se 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:
El UserGroup<simpleCondition> <variable name="role"/> <operator name="="/> <value data="Marketing Manager"/> </simpleCondition>
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>
plantilla 1 en desuso estándar 0 o nulo en desuso - RelationName (opcional)
- El nombre de la relación, como se especifica en la columna
RELATIONNAME
de la tablaACRELATION
. Si se especifica, se utiliza para obtener el ID de relación (ACRELATION_ID
) correspondiente que se almacena en la tablaACPOLICY
. - RelationGroupName (opcional)
- El nombre del grupo de relaciones, como se especifica en la columna
GRPNAME
de la tablaACRELGRP
. Si se especifica este atributo, no debe especificarseRelationName
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 atributoOwnerID
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>
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 tablaACPOLGRP
.OwnerID
yName
juntos deben ser exclusivos. Hay dos valores especiales que son reconocidos por la herramienta de transformación, que sonRootOrganization: -2001
yDefaultOrganization: -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 sonRootOrganization: -2001
yDefaultOrganization: -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
yDefaultOrganization: -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"
/>
- AttributeName
- El nombre del atributo. Este valor se almacena en la columna
ATTRNAME
de la tablaACATTR
. - DisplayName_nls
- Nombre de visualización del atributo. Este valor se almacena en la columna
DISPLAYNAME
de la tablaACATTRDESC
. - 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 tablaACACTDESC
. - 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 tablaACRELATION
. - DisplayName_nls
- Nombre de visualización de la relación. Este valor se almacena en la columna
DISPLAYNAME
de la tablaACRELDESC
. - 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 tablaACRESCGRY
. - DisplayName_nls
- Nombre de visualización de la categoría de recursos. Este valor se almacena en la columna
DISPLAYNAME
de la tablaACRSCGDES
. - 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"
/>
- ActionGroupName
- Nombre del grupo de acciones. Este valor se almacena en la columna
GROUPNAME
de la tablaACACTGRP
. - DisplayName_nls
- Nombre de visualización del grupo de acciones. Este valor se almacena en la columna
DISPLAYNAME
de la tablaACACGPDESC
. - 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 tablaACRESGRP
. - DisplayName_nls
- Nombre de visualización del grupo de recursos. Este valor se almacena en la columna
DISPLAYNAME
de la tablaACRESGPDES
. - 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 tablaACPOLICY
. - 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 tablaACPOLDESC
. - 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."
/>
- 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.