Certificação OCI Foundations Associate 2024 (Módulo 1 – IAM)

Um dos principais pontos da certificação OCI Foundations Associate é a parte de IAM (Identity Access Management), ou Gerenciamento de Acesso de Identidade, e ela é a responsável por toda a parte de acessos e permissionamento da Cloud da OCI.

Aqui vou apresentar alguns dos tópicos da parte de IAM e alguns pontos que são abordados no exame de certificação.

IAM

IAM – O que é?

O IAM é o Identity Access Management (Gerenciamento de Acesso de Identidade) e ele é o responsável por permitir todo o acesso e permissões da OCI de forma granular e controlado.

Basicamente temos dentro dele os aspectos de AuthN e AuthZ, que são responsáveis pela identificação e permissões.

AuthN – Quem é você dento da Cloud?

O AuthN é resposável por lidar com a identificação e informar quem é quem dentro da Cloud.

AuthZ – Que permissão você tem dentro da Cloud?

O AuthZ é responsável por lidar com as permissões de usuários, sendo que estes usuários podem estar atribuídos a uma ou mais roles pré-definidas, e cada uma dessas roles com um conjunto específico de permissões.

Dentro dos conceitos de identidade temos seguintes itens dentro da OCI.

  • Usuários
  • Grupos
  • Políticas (Policies)
  • Domínio de Identidade (Identity Domains)
  • Diretórios (Principals)
  • Grupos Dinâmicos (Dynamic Groups)
  • Compartimentos (Compartiments)
  • Recursos (Resources)
  • Recursos de Rede (Network Resources)

Partindo deste tópico, no exame Foundations Associate, são abordados pontos como Usuários, Grupos, Compartimentos, Políticas e Identidade de Domínio, justamente por ser um ambiente de introdução a Cloud.

A lógica de funcionamento da parte de Domínio de Identidade funciona da seguinte forma.

Um usuário com a definição de login e senha, que pertence a um grupo, com políticas definidas baseado em roles de controle de acesso (RBAC), com acesso a um compartimento, onde estão os recursos.

Alguns tipos de recursos que podem ser acessados via políticas em compartimentos.

Todos estes recursos na OCI são identificados por um Oracle Cloud ID, chamado OCID, então cada recurso possui um OCID que é um identificador único daquele recurso específico que você está usando. O OCID é muito importante para você montar suas Policies para determinar permissões específicas e restritas deste recurso a grupos e usuários.

O OCID é composto pelas seguintes informações:

ocid.<resource type>.<realm>.[region] [ .future use].<unique id>

modelo do escopo de um identificador de OCID

ocid1.domain.oc1..aaaaaaaa5xozsrusifbtm7p3cdjvr6xj6c5vzgt55vtbxzddrjtdfnifyr5q

Exemplo de um OCID da tenancy na OCI

ocid1.instance.oc1.sa-saopaulo-1.antxeljro67rlzqcarcq55wnkpdltbpszvpqyfzm6iodebb5wi2ndyvascaq

Exemplo de um OCID de uma instância de computação na OCI

Compartimentos

O que são Compartimentos?

Compartimentos são funcionalidades dentro da OCI que permitem você organizar os recursos com uma coleção dos recursos por categorias, e mantendo-os em uma camada isolada e de controle de acesso.

Ao criar sua conta na OCI e ativá-la, automaticamente é criada a sua Tenancy que é a raiz de onde estarão as suas regiões ativas e quando sua região principal é disponibilizada na sua Tenancy, você tem o compartimento raiz “root” com o nome amigável da sua Tenancy e a partir dele que você irá criar todos os outros compartimentos dentro dela.

Na imagem abaixo você pode verificar como os recursos podem ser distribuídos por categorias dentro de compartimentos.

Um recurso que foi criado em um compartimento A não estará disponível no compartimento B, caso precise que este recurso este dentro do compartimento B, será necessário movê-lo ou recriá-lo.

Por exemplo, na imagem acima, a instância C não aparecerá disponível no compartimento A, pois ela pertence ao compartimento B, então se você atribuir uma Policy de permissão para que um grupo acesse os recursos do compartimento A, ele não terá acesso a instância C, pois ela está em outro compartimento.

Os compartimentos recebem permissões de policies seguindo a seguinte lógica.

Você tem um usuário, que pertence a um grupo, este grupo está dentro de uma policy que atribui as permissões deste grupo a um determinado compartimento.

Desta forma você pode criar compartimentos e atribuir policies a grupos para acessarem recursos específicos, como instâncias, recursos de armazenamento como block storage, buckets e file storage, recursos de rede como VCNs, Load Balancers, etc.

Dica: NUNCA coloque seus recursos no compartimento raiz “root”, pois você terá sérios problemas para administrá-los e provavelmente não conseguirá definir permissões no futuro.

Os recursos pode interagir com outros recursos que estejam em compartimentos diferentes.

E os recursos podem ser removidos de um compartimento para outro.

E os compartimentos podem ser utilizados em múltiplas regiões.

Os compartimentos podem ser aninhados em até 6 níveis diferentes.

AuthN

O que é AuthN?

O AuthN na OCI são os recursos de Autenticação da plataforma de Cloud da Oracle, e nele podemos iniciar com o recurso de Principal.

O Principal é uma entidade do IAM que tem como função interagir com os recursos da OCI.

Um destes recursos é o Usuário, que neste caso se tratando de usuários locais, tem a função de se logar para utilizar os recursos da console, CLI, SDK, etc. e interagem com os recursos de Principals.

Basicamente o AuthN é o recurso de login e acesso local da OCI, onde você também pode criar suas API Key para acessos a recursos não autenticados. Quando você estiver utilizando recursos de SDK, CLI, APIs e Funções, você estará utilizando recursos do API Key para se autenticar por meio de uma chave de assinatura.

AuthZ

O que é o AuthZ?

O AuthZ é a maneira de tratar o seu usuário com quais permissões você tem para determinado recurso.

Estas permissões são atribuidas por meio de Policies, que são as políticas de IAM. As policies podem ser definidas de maneira bem granular dentro da OCI.

Allow group <nome do grupo> to <verb> <resource-type> in tenancy
Allow group <nome do grupo> to <verb> <resource-type> in compartment <compartimento> [where <condição>]

Modelo de uma policy de IAM na OCI

As policies podem ser aplicadas a uma tenancy e a um compartimento. Se você aplicar uma policy a uma tenancy, ela será aplicada em todos os compartimentos, de todas as regiões, de todo o ambiente, ou seja, em toda a sua tenancy.

O recurso de AuthZ pode ser aplicado da seguinte forma.

Allow group <nome do grupo> to <verb> <resource-type> in <local> where <condição>

Exemplo de uma policy na OCI

A policy sempre é iniciada com o tipo de permissão, por padrão, tudo é negado na OCI, então sua preocupação será sempre a de liberar a permissão ao recurso no local desejado.

Você sempre define suas permissões em nível de grupo, nunca em nível de usuário.

A opção de <verb> sempre será para qual tipo de permissão você deseja atribuir, no caso “manage”, “use”, “read” ou “inspect”.

E você pode definir o tipo de recurso que deseja atribuir em <resource-type>.

Em <local> você define se é na tenancy ou em um compartimento.

E com o atribuito “where” você pode refinar e tornar sua policy mais complexa e detalhada. Para este escopo da certificação da Foundations não é um momento onde este tipo de atributo é muito detalhado, você deve se preocupar mais em entender a leitura da policy.

Vou deixar abaixo 4 modelos de policy para exemplicar como são construídas.

Allow group CLOUD_GRP to manage all-resources in tenancy

Policy permitindo que o grupo CLOUD_GRP gerencie todos os recursos na tenancy

Allow group NETWORK_GRP to use virtual-network-family in compartment cmp_network

Policy permitindo que o grupo NETWORK_GRP use os recursos de rede no compartimento cmp_network

Allow group AUDIT_GRP to inspect all-resources in tenancy

Policy permitindo o grupo AUDIT_GRP a inspecionar todos os recursos na tenancy.

Allow group BI_GRP to read autonomous-database-family in tenancy

Policy permitindo o grupo BI_GRP a ter acesso somente leitura nos recursos de Autonomous Database na tenancy.

Recomendo posteriormente, que sejam visualizadas as documentações de policy da OCI abaixo para um melhor entendimento.

https://docs.oracle.com/en-us/iaas/Content/Identity/policiesgs/get-started-with-policies.htm

https://docs.public.oneportal.content.oci.oraclecloud.com/en-us/iaas/Content/Identity/policiescommon/commonpolicies.htm#top

Por mais que pareçam recursos de difícil entendimento, eles não são, são recursos bem fáceis de implementar e gerenciar na OCI neste nível da Foundations.

Minha recomendação é que você utilize a conta gratuíta e faça testes criando policies para um melhor entendimento de como funcionam as policies e as permissões.

Rolar para cima