Sintaxis de políticas

La sintaxis general de una sentencia de política es la siguiente:

Allow <subject> to <verb> <resource-type> in <location> where <conditions>

Los espacios adicionales o saltos de línea de la sentencia no tienen efecto.

Para conocer los límites del número de políticas y sentencias, consulte Límites de servicio.

Tema

Especifique por su nombre o su OCID uno o varios grupos separados por comas. O bien, especifique any-user para abarcar a todos los usuarios del arrendamiento.

Sintaxis: group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id<dynamic-group_ocid> | any-user

Ejemplos:

  • Para especificar un solo grupo por nombre:
    Allow 
    
    group A-Admins
    
     to manage all-resources in compartment Project-A
  • Para especificar varios grupos por nombre (el espacio después de la coma es opcional):
    Allow 
    
    group A-Admins, B-Admins
    
     to manage all-resources in compartment Projects-A-and-B
  • Para especificar un solo grupo por OCID (el OCID se acorta para abreviar):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a 
    
    to manage all-resources in compartment Project-A
  • Para especificar varios grupos por OCID (los OCID se acortan para abreviar):
    Allow group 
    
     id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl...wuc7i5xwe6s7qmnsbc6a,
     id ocid1.group.oc1..aaaaaaaavhea5mellwzb...66yfxvl462tdgx2oecyq 
    
    to manage all-resources in compartment Projects-A-and-B
  • Para especificar cualquier usuario del arrendamiento:
    Allow any-user to inspect users in tenancy

Verbo

Especifique un único verbo. Para obtener una lista de verbos, consulte Verbos. Ejemplo:

Allow group A-Admins to manage all-resources in compartment Project-A

Tipo de recurso

Especifique un solo tipo de recurso, que puede ser uno de los siguientes:

  • Tipo de recurso individual (p. ej., vcns, subnets, instances, volumes, etc.)
  • Tipo de recurso family (p. ej., virtual-network-family, instance-family, volume-family, etc.)
  • all-resources: cubre todos los recursos del compartimento (o arrendamiento).

Un tipo de recurso family cubre una serie de componentes que generalmente se utilizan juntos. Esto facilita la escritura de una política para conceder a alguien acceso para trabajar con varios aspectos de la red en la nube.

Para obtener una lista de los tipos de recursos disponibles, consulte Tipos de recursos.

Sintaxis: <resource_type> | all-resources

Ejemplos:

  • Para especificar un solo tipo de recurso:
    Allow group HelpDesk to manage users in tenancy
  • Para especificar varios tipos de recursos, use sentencias independientes:
    Allow group A-Users to manage instance-family in compartment Project-A
    
    Allow group A-Users to manage volume-family in compartment Project-A
    
  • Para especificar todos los recursos del compartimento (o arrendamiento):
    Allow group A-Admins to manage all-resources in compartment Project-A

Ubicación

Especifique una ruta de compartimento o compartimento único por su nombre u OCID. O simplemente especifique tenancy para cubrir todo el arrendamiento. Recuerde que los usuarios, grupos y compartimentos residen en el arrendamiento. Las políticas pueden residir en el arrendamiento o un compartimento secundario (es decir, pueden estar asociadas a estos).

Nota

Otorgar acceso a regiones específicas o dominios de disponibilidad

Para crear una política que ofrezca acceso a una región o dominio de disponibilidad específicos, utilice la variable request.region o request.ad con una condición. Consulte Condiciones.

Es necesario especificar la ubicación en la sentencia. Si desea asociar una política a un compartimento, debe estar en ese compartimento cuando cree la política. Para obtener más información, consulte Anexo de políticas.

Para especificar un compartimento que no sea un secundario directo del compartimento al que está asociando la política, especifique la ruta de acceso al compartimento, utilizando los dos puntos (:) como separador. Para obtener más información, consulte Políticas y jerarquías de compartimentos.

Sintaxis: [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]

Ejemplos:

  • Para especificar un compartimento por nombre:
    Allow group A-Admins to manage all-resources in compartment Project-A
  • Para especificar un compartimento por OCID:
    Allow group
     id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
  • Para especificar varios compartimentos, utilice sentencias independientes:
    Allow group InstanceAdmins to manage instance-family in compartment Project-A
    
    Allow group InstanceAdmins to manage instance-family in compartment Project-B
    
    
  • Para especificar varios compartimentos por OCID, utilice sentencias independientes:
    Allow group id ocd1.group.oc1..aaaaaaaavheexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaaaayzexampleocid
    
    Allow group id ocd1.group.oc1..aaaaaaaaexampleocid to manage all-resources in compartment id ocid1.compartment.oc1..aaaaaexampledocid
  • Para especificar un compartimento que no sea un secundario directo del compartimento al que está asociando la política, especifique la ruta de acceso:

    Allow group InstanceAdmins to manage instance-family in compartment Project-A:Project-A2

Condiciones

Especifique una o varias condiciones. Utilice any o all con varias condiciones para valores OR o AND lógicos, respectivamente.

Sintaxis para una única condición: variable =|!= value

Sintaxis para varias condiciones: any|all {<condition>,<condition>,...}

Se pueden utilizar operadores adicionales con variables basadas en el tiempo. Consulte Restricción del acceso a los recursos en función del marco temporal.

Importante

La coincidencia de condiciones no es sensible a mayúsculas/minúsculas. Es importante recordarlo al escribir condiciones para tipos de recursos que permiten la nomenclatura sensible a mayúsculas/minúsculas. Por ejemplo, el servicio Object Storage permite crear un cubo denominado "BucketA" y un cubo denominado "bucketA" en el mismo compartimento. Si escribe una condición que especifica "BucketA", se aplicará también a "bucketA" porque la coincidencia de condiciones no es sensible a mayúsculas/minúsculas.

Para obtener una lista de variables soportadas por todos los servicios, consulte Variables generales para todas las solicitudes. Consulte también los detalles de cada servicio en la Referencia de políticas. Estos son los tipos de valores que puede utilizar en condiciones:

Tipo Ejemplos
Cadena

'johnsmith@example.com'

'ocid1.compartment.oc1..aaaaaaaaph...ctehnqg756a'

(el valor debe ir entre comillas simples)

Patrón

/HR*/ (coincide con cadenas que comienzan por "HR")

/*HR/ (coincide con cadenas que terminan en "HR")

/*HR*/ (coincide con cadenas que contienen "HR")

Ejemplos:

Nota

En los siguientes ejemplos, las sentencias que especifican la condición no permiten a GroupAdmins mostrar todos los usuarios y grupos. Por lo tanto, se agregan sentencias con el verbo inspect para completarlas. Para entender por qué es necesario esto, consulte Variables no aplicables al resultado de una solicitud en una solicitud rechazada.
  • Una condición única.

    La siguiente política permite al grupo GroupAdmins crear, actualizar o suprimir cualquier grupo con nombres que empiecen por "A-Users-":

    Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/
    Allow group GroupAdmins to inspect groups in tenancy
    La siguiente política permite al grupo NetworkAdmins gestionar redes en la nube en cualquier compartimento, excepto en el especificado:
    Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
  • Condiciones múltiples.

    La siguiente política permite a GroupAdmins crear, actualizar o suprimir cualquier grupo cuyos nombres comience por "A-", excepto el propio grupo A-Admins:

    Allow group GroupAdmins to manage groups in tenancy where all {target.group.name=/A-*/,target.group.name!='A-Admins'}
     
    Allow group GroupAdmins to inspect groups in tenancy