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
.
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")
-
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 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 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.