Condiciones

El elemento de condiciones opcionales de una sentencia de política limita el acceso según los atributos proporcionados en IAM.

Una condición devuelve recursos según los parámetros especificados. Por ejemplo, utilice una condición para devolver recursos que tengan determinados 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.

Importante

La coincidencia de condiciones ignora los nombres sensibles a mayúsculas/minúsculas. Por ejemplo, una condición para un cubo denominado "BucketA" también coincide con un cubo denominado "bucketA".

  • Cadena:
    • 'johnsmith@example.com'
    • 'ocid1.compartment.oc1.exampleuniqueID' (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")

Nota

En los siguientes ejemplos, las sentencias que especifican la condición no permiten a GroupAdmins mostrar todos los usuarios y grupos. Las sentencias, incluido el verbo inspect, se agregan para que estén completas. Consulte Variables no aplicables al resultado de una 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 tenancy

    Condición única para muchos tipos de recursos (usuarios y grupos)

    Allow group GroupAdmins to inspect users in tenancy
    Allow group GroupAdmins to use users in tenancy where target.group.name != 'Administrators'
    Allow group GroupAdmins to inspect groups in tenancy
    Allow 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 empiecen 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

Variables No Aplicables al Resultado de una Solicitud en una Solicitud Rechazada

Si la variable no es aplicable a la solicitud entrante, la condición evalúa la solicitud como false y la solicitud se declina. Por ejemplo, hay algunas sentencias de política básicas que permiten a alguien agregar o eliminar 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 permite cambiar la descripción del usuario), la solicitud se rechaza, incluso 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 rechaza porque no se ha proporcionado target.group.name.

Para otorgar acceso a un usuario general cuando una operación de API no implica a un grupo concreto, debe agregar otra sentencia que proporcione el nivel de acceso que desea otorgar, pero no incluya la condición. Por ejemplo, para conceder acceso a ListUsers, necesita una sentencia similar a esta sentencia:

Allow group GroupAdmins to inspect users in tenancy

Para otorgar acceso a UpdateUser, necesita esta sentencia (que también cubre ListUsers porque el verbo use incluye las capacidades del verbo inspect):

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

Utilice condiciones y un juego de variables de etiqueta para escribir políticas que definan el acceso según las etiquetas aplicadas a un recurso. Puede controlar el acceso basado en una etiqueta que existe en el recurso de solicitud (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 a 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.