Condiciones
El elemento de condiciones opcional de una sentencia de política limita el acceso en función de los atributos proporcionados en IAM.
Una condición devuelve recursos basados en parámetros especificados. Por ejemplo, utilice una condición para devolver recursos que tengan ciertos caracteres en sus nombres.
Sintaxis para una única condición: variable =|!= value
Sintaxis para varias condiciones: any|all {<condition>,<condition>,...}
Para crear un OR lógico para un juego de condiciones, utilice any. Para crear un AND lógico para un juego de condiciones, utilice all.
La coincidencia de condiciones ignora los nombres sensibles a mayúsculas/minúsculas. Por ejemplo, una condición de un cubo denominado "BucketA" también coincide con un cubo denominado "bucketA".
-
Cadena:
-
'johnsmith@example.com' -
'ocid1.compartment.oc1.exampleuniqueID'(las comillas simples son necesarias alrededor del valor)
-
-
Patrón:
-
/hr*/(coincida con cadenas que comienzan con "hr") -
/*hr/(coincide con cadenas que terminan con "hr") -
/*hr*/(coincide con cadenas que contienen "hr")
-
En los siguientes ejemplos, las sentencias que especifican la condición no permiten que GroupAdmins muestre todos los usuarios y grupos. Las sentencias que incluyen el verbo
inspect se agregan para que estén completas. Consulte Variables no aplicables a un resultado de solicitud en una solicitud rechazada.Ejemplos:
-
Condición única:
Condición única para un tipo de recurso (grupos)
Allow group GroupAdmins to manage groups in tenancy where target.group.name = /A-Users-*/ Allow group GroupAdmins to inspect groups in tenancyCondición única para muchos tipos de recursos (usuarios y grupos)
Allow group GroupAdmins to inspect users in tenancyAllow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'Allow group GroupAdmins to inspect groups in tenancyAllow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'Muchas condiciones para un recurso (grupos)
Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1.exampleuniqueID' -
Varias condiciones
La siguiente política permite a GroupAdmins crear, actualizar o suprimir cualquier Grupo cuyos nombres comiencen por "
A-", excepto el propio grupoA-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
Variables no aplicables a un resultado de solicitud en una solicitud rechazada
Si la variable no es aplicable a la solicitud entrante, la condición se evalúa como false y la solicitud se rechaza. Por ejemplo, las siguientes son instrucciones de política básicas que permiten que a alguien agregue o elimine usuarios de cualquier grupo excepto Administrators:
Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
Allow group GroupAdmins to use groups in tenancy where target.group.name != 'Administrators'
Si un usuario de GroupAdmins ha intentado llamar a una operación de API general para usuarios, como ListUsers o UpdateUser (que le permite cambiar la descripción del usuario), la solicitud se rechaza, aunque esas operaciones de API estén cubiertas por use users. La sentencia de política de ejemplo para use users incluye una variable target.group.name, pero la solicitud ListUsers o UpdateUser no especifica un grupo. La solicitud se ha rechazado porque no se ha proporcionado target.group.name.
Para otorgar acceso a un usuario general cuando una operación de API no implica un grupo concreto, debe agregar otra sentencia que proporcione el nivel de acceso que desea otorgar, pero que no incluya la condición. Por ejemplo, para otorgar acceso a ListUsers, necesita una sentencia similar a esta sentencia:
Allow group GroupAdmins to inspect users in tenancy
Para conceder acceso a UpdateUser, necesita esta sentencia (que también cubre ListUsers porque el verbo use incluye las capacidades del verboinspect):
Allow group GroupAdmins to use users in tenancy
Este concepto general también aplica cualquier otro tipo de recurso con variables de destino, por ejemplo, ListGroups.
Control de acceso basado en etiquetas
Utilizar condiciones y un juego de variables de etiqueta para escribir políticas que definan el acceso en función de las etiquetas aplicadas a un recurso. Puede controlar el acceso según una etiqueta que exista en el recurso solicitante (grupo o grupo dinámico en la política) o en el destino de la solicitud (recurso o compartimento). El control de acceso basado en etiquetas proporciona flexibilidad a las políticas, lo que le permite definir el acceso que abarca compartimentos, grupos y recursos. Para obtener más información sobre cómo escribir políticas para restringir el acceso por etiquetas, consulte Uso de etiquetas para gestionar el acceso.