Condições
O elemento de condições opcionais de uma instrução de política limita o acesso com base nos atributos fornecidos no IAM.
Uma condição retorna recursos com base em parâmetros especificados. Por exemplo, use uma condição para retornar recursos que tenham determinados caracteres em seus nomes.
Sintaxe de uma única condição: variable =|!= value
Sintaxe de várias condições: any|all {<condition>,<condition>,...}
Para criar um OR lógico para um conjunto de condições, use any
. Para criar um AND lógico para um conjunto de condições, use all
.
A correspondência de condição ignora nomes que fazem distinção entre maiúsculas e minúsculas. Por exemplo, uma condição para um bucket chamado "BucketA" também corresponde a um bucket chamado "bucketA".
- String:
'johnsmith@example.com'
'ocid1.compartment.oc1.exampleuniqueID'
(é necessário aspas simples em torno do valor)
- Padrão:
-
/hr*/
(corresponde às strings que começam com "hr") -
/*hr/
(corresponde às strings que terminam com "hr") -
/*hr*/
(corresponde às strings que contêm "hr")
-
Nos exemplos a seguir, as instruções que especificam a condição não permitem que GroupAdmins liste todos os usuários e grupos. Instruções que incluem o verbo
inspect
são adicionadas para completude. Consulte Variáveis Não Aplicáveis a um Resultado da Solicitação em uma Solicitação Recusada.Exemplos:
- Condição única:
Condição única para um 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
Condição única para muitos tipos de recursos (usuários e 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'
Muitas condições para um recurso (grupos)
Allow group NetworkAdmins to manage virtual-network-family in tenancy where target.compartment.id != 'ocid1.compartment.oc1.exampleuniqueID'
- Várias condições
A política a seguir permite que GroupAdmins crie, atualize ou exclua quaisquer grupos cujos nomes comecem com "
A-
", exceto o próprio 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
Variáveis Não Aplicáveis a um resultado da solicitação em uma solicitação recusada
Se a variável não for aplicável à solicitação recebida, a condição avaliará a solicitação como false e a solicitação será recusada. Por exemplo, aqui estão algumas instruções básicas da política que juntas permitem que alguém adicione ou remova usuários de qualquer grupo, exceto 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'
Se um usuário em GroupAdmins tentou chamar uma operação de API geral para usuários, como ListUsers
ou UpdateUser
(que permite alterar a descrição do usuário), a solicitação será recusada, mesmo que essas operações de API sejam cobertas por use users
. O exemplo de instrução de política para use users
inclui uma variável target.group.name
, mas a solicitação ListUsers
ou UpdateUser
não especifica um grupo. A solicitação foi recusada porque um target.group.name
não foi fornecido.
Para conceder acesso a um usuário geral quando uma operação de API não envolver um grupo específico, adicione outra instrução que forneça o nível de acesso que você deseja conceder, mas não inclua a condição. Por exemplo, para conceder acesso a ListUsers
, você precisa de uma instrução semelhante a esta:
Allow group GroupAdmins to inspect users in tenancy
Para conceder acesso a UpdateUser
, você precisa desta instrução (que também abrange ListUsers
porque o verbo use
inclui os recursos do verbo inspect
):
Allow group GroupAdmins to use users in tenancy
Este conceito geral também aplica qualquer outro tipo de recurso com variáveis de destino, por exemplo, ListGroups.
Controle de Acesso Baseado em Tag
Use condições e um conjunto de variáveis de tag para gravar políticas que definam o acesso com base nas tags aplicadas a um recurso. Você pode controlar o acesso com base em uma tag que existe no recurso solicitante (o grupo ou o grupo dinâmico na política) ou no destino da solicitação (recurso ou compartimento). O controle de acesso baseado em tag fornece flexibilidade às políticas, permitindo que você defina o acesso que abrange compartimentos, grupos e recursos. Para obter detalhes sobre como gravar políticas para acesso a escopo por tags, consulte Usando Tags para Gerenciar o Acesso.