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-group
para cubrir todos los usuarios, principales de instancia y principales de recurso del arrendamiento.
Sintaxis: {{ group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-group id <dynamic-group_ocid>| any-group
| any-user}}
Cualquier usuario otorgará acceso a todos los usuarios, principales de recurso y principales de instancia de su arrendamiento y principal de servicio. Se recomienda no utilizar
any-user
y, en su lugar, utilizar any-group
. También puede especificar el tipo de recurso para evitar que los princpals innecesarios tengan acceso. Por ejemplo, {request.principal.type='disworkspace'}
.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 principal de grupo o instancia en el arrendamiento, o especificar cualquier grupo para inspeccionar usuarios en un arrendamiento:
Allow any-group 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).
Otorgamiento de 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.
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 Visión general de políticas de IAM. Estos son los tipos de valores que puede utilizar en condiciones:
Tipo | Ejemplos |
---|---|
Cadena |
(el valor debe ir entre comillas simples) |
Patrón |
|
Ejemplos:
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