AuthZ
Na OCI, a autorização é feita por meio do que chamamos de IAM policies (ou politicas de serviço).
Pense nas IAM policies como declarações legíveis humanas para definir permissões granulares.
Veja o exemplo:
Lembre-se de que as IAM policies podem ser anexadas a um compartment ou a uma tenancy.
• Se estiverem vinculados a uma tenancy, isso se aplica a tudo dentro dessa tenancy.
• Se for aplicado a um compartment, aplica-se apenas aos recursos desse compartment.
- Tudo é negado por padrão, portanto, você não precisa realmente escrever politica de proibição.
- Você não pode gravar uma política em usuários individuais, sempre operando em nível de
grupo.
Sintaxe:
A sintaxe geral de uma instrução de política é a seguinte:
Allow <group_name> to <verb> <resource-type> in <location> where
<conditions>
Group_name: Especifique um ou mais grupos separados por vírgulas por nome ou OCID. Ou
especifique any-user para abranger todos os usuários na tenancy.
Sintaxe: group <group_name> | group id <group_ocid> | dynamic-group <dynamic-group_name> | dynamic-
group id<dynamic-group_ocid> | any-user
Exemplos:
Para especificar um único grupo por nome:
Allow
group A-Admins
to manage all-resources in compartment Project-A
Para especificar vários grupos por nome (um espaço após a vírgula é opcional):
Allow
group A-Admins, B-Admins
to manage all-resources in compartment Projects-A-and-B
Para especificar um único grupo por OCID (o OCID é reduzido para agilizar):
Allow group
id ocid1.group.oc1..aaaaaaaaqjihfhvxmum...awuc7i5xwe6s7qmnsbc6a
to manage all-resources in compartment Project-A
Para especificar vários grupos por OCID (os OCIDs são reduzidos para agilizar):
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 qualquer usuário na tenancy:
Allow any-user to inspect users in tenancy
Verb
Especifique um único verbo
Verbos Tipos de acesso Publico alvo
inspect Capacidade de listar recursos, Auditores de Terceiros
sem acesso a informações
confidenciais ou a metadados
especificados pelo usuário que
possam fazer parte desses
recursos.
Importante: A operação para
listar políticas inclui o conteúdo
das próprias políticas e as
operações de lista dos tipos de
recurso de Rede retornam
todas as informações (por
exemplo, o conteúdo das listas
de segurança e tabelas de
roteamento).
read Inclui inspect mais a Auditores internos
capacidade de obter
metadados especificados pelo
usuário e o recurso real
propriamente dito.
use Inclui read mais a capacidade Usuários finais de
de trabalhar com recursos recursos no dia a dia
existentes (as ações variam
por tipo de recurso). Inclui a
capacidade de atualizar o
recurso, exceto para os tipos
de recursos em que a
operação "update" tem o
mesmo impacto efetivo que a
operação "create" (por
exemplo, UpdatePolicy,
UpdateSecurityList etc.), em
cujo caso capacidade de
"update" só está disponível
com o verbo manage. Em
geral, esse verbo não inclui a
capacidade de criar ou excluir
esse tipo de recurso.
manage Inclui todas as permissões para Administradores
o recurso.
Tipo de Recurso:
Especifique um único tipo de recurso, que pode ser um dos seguintes:
• Um tipo de recurso individual (por exemplo, vcns, subnets, instances, volumes etc.)
• Um tipo de recurso da família (por exemplo, virtual-network-family, instance-family, volume-
family etc.)
• all-resources: abrange todos os recursos do compartimento (ou tenancy).
Um tipo de recurso de família abrange diversos componentes que são geralmente usados juntos.
Isso facilita a gravação de uma política que dá a alguém acesso para trabalhar com vários aspectos
da sua rede em nuvem.
Sintaxe: <resource_type> | all-resources
Exemplos:
Para especificar um único tipo de recurso:
Allow group HelpDesk to manage users in tenancy
Para especificar vários tipos de recursos, use instruções separadas:
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 os recursos no compartimento (ou tenancy):
Allow group A-Admins to manage all-resources in compartment Project-A
Local
Especifique um único compartiment ou caminho do compartiment por nome ou OCID. Ou
especifique tenancy para abranger toda a tenancy.
Lembre-se de que usuários, grupos e compartiment residem na tenancy. As políticas podem residir
(ou seja, estar associadas) na tenancy ou em um compartiment filho.
O local é necessário na instrução. Se quiser anexar uma política a um compartimento, você deverá
estar nesse compartimento quando criar a política.
Para especificar um compartimento que não seja filho direto do compartimento ao qual você está
anexando a política, especifique o caminho ao compartimento usando dois-pontos (:) como
separador.
Sintaxe: [ tenancy | compartment <compartment_name> | compartment id <compartment_ocid> ]
Exemplos:
Para especificar um compartimento por nome:
Allow group A-Admins to manage all-resources in compartment Project-A
Para especificar um compartimento por OCID:
Allow group id ocid1.group.oc1..aaaaaaaaexampleocid to manage all-resources in
compartment id ocid1.compartment.oc1..aaaaaaaaexampleocid
Para especificar vários compartimentos, use instruções separadas:
Allow group InstanceAdmins to manage instance-family in compartment Project-A
Allow group InstanceAdmins to manage instance-family in compartment Project-B
Para especificar vários compartimentos por OCID, use instruções separadas:
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 um compartimento que não seja um filho direto do compartimento no qual
você está anexando a política, especifique o caminho:
Allow group InstanceAdmins to manage instance-family in compartment Project-
A:Project-A2
Condições
Especifique uma ou mais condições. Use any ou all com várias condições para um OR ou AND
lógico, respectivamente.
Sintaxe de uma única condição: variable =|!= value
Sintaxe de várias condições: any|all {<condition>,<condition>,...}
OBS: A correspondência de condição não faz distinção entre maiúsculas e minúsculas. Isso é
importante lembrar ao gravar condições de tipos de recursos que permitem a nomeação com
distinção entre maiúsculas e minúsculas. Por exemplo, o serviço Object Storage permite que você
crie um bucket chamado "BucketA" e um bucket chamado "bucketA" no mesmo compartimento. Se
você gravar uma condição que especifica "BucketA", ela também será aplicada ao "bucketA", pois
a correspondência de condições não faz distinção entre maiúsculas e minúsculas.
Estes são os tipos de valores que você pode usar nas condições
Tipo Exemplo
String '[email protected]'
'ocid1.compartment.oc1..aaaaaaaaph...ctehnqg756a'
(é obrigatório o uso de aspas simples no 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")
Exemplos:
Uma única condição.
A política a seguir permite que o grupo GroupAdmins crie, atualize ou exclua quaisquer
grupos com nomes que comecem com "A-Users-":
Allow group GroupAdmins to manage groups in tenancy where target.group.name
= /A-Users-*/
Allow group GroupAdmins to inspect groups in tenancy
A política a seguir permite que o grupo NetworkAdmins gerencie redes na nuvem em
qualquer compartimento, exceto o especificado:
Allow group NetworkAdmins to manage virtual-network-family in tenancy where
target.compartment.id != 'ocid1.compartment.oc1..aaaaaaaaexampleocid'
Condições múltiplas.
A política a seguir permite que o GroupAdmins crie, atualize ou exclua quaisquer grupos
cujos nomes comecem com "A-", exceto o próprio 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