Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Configure um modelo de administrador inicial para sua tenancy do Oracle Cloud
Introdução
A segurança na nuvem requer um modelo de responsabilidade compartilhada. A Oracle como provedor de nuvem, é proprietária da responsabilidade por fornecer serviços seguros de infraestrutura e plataforma. E você, como proprietário da tenancy, é responsável por gerenciar e controlar o acesso aos recursos que você cria na tenancy. Quando você cria pela primeira vez uma tenancy do Oracle Cloud Infrastructure (OCI), há uma única conta de usuário que é membro do grupo Administradores da tenancy, que concede acesso total à tenancy inteira e a todos os recursos dentro dela.
À medida que você começa a adicionar outros administradores, atribuir permissões, criar recursos e preencher dados, é importante pensar no seu modelo de segurança no início do processo para que não precise descobrir como limpar problemas na estrada.
O modelo de segurança descrito neste tutorial representa um design geral e deve ser adaptado para se alinhar às políticas de segurança específicas da sua organização e às abordagens de gerenciamento de locações. O modelo de política do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) é incrivelmente flexível e pode ser facilmente adaptado ou modificado para acomodar diferentes designs.
Objetivos
- Configurar o acesso inicial no nível da tenancy para vários tipos de Administradores do OCI
- Obter uma compreensão funcional do modelo de Política do OCI
- Permitir configuração de contas de acesso de emergência dedicadas
Pré-requisitos
- Acesso a uma tenancy do OCI com a conta inicial do Administrador
- Acesso ao Cloud Shell
- Noções básicas sobre a linha de comando do UNIX
Tarefa 1: Configurar as Definições da Tenancy Inicial
Para simplificar a criação de um modelo de linha de base para acesso à tenancy e criar atribuições de alto nível para trabalhar com recursos de nível de tenancy no OCI, os direitos iniciais podem ser scriptados usando a CLI do OCI e executados no Cloud Shell.
Um script de modelo que cria grupos e instruções de política para o seguinte conjunto básico de recursos de acesso, bem como fornece um nível de acesso de linha de base para todos os administradores do OCI é fornecido abaixo.
- Gerentes de Tenancy: responsáveis pelo gerenciamento de contas do OCI e construções no nível da tenancy, como orçamentos e regiões inscritas
- Administradores de Políticas: responsáveis por criar e manter políticas de segurança e recursos de suporte
- Administradores de Segurança: responsáveis pela configuração de serviços de segurança, como OCI Identity and Access Management (OCI IAM), Cloud Guard, Security Zones, Vulnerability Scanning e alertas no nível da tenancy
- Analistas de Segurança: responsável por revisar as descobertas de segurança de serviços como Cloud Guard, Vulnerability Scanning e eventos de Auditoria
A intenção dessas políticas é criar um conjunto inicial de direitos aplicáveis à maioria dos clientes. Mais detalhes sobre esses recursos de acesso específicos e possíveis políticas adicionais são descritos nas seções a seguir.
Esses grupos devem ser usados em conjunto com as atribuições que já existem nos domínios de identidade do OCI IAM; incluindo Administradores de Segurança que configuram os mecanismos de autenticação para o ambiente; bem como Administradores de Usuário para gerenciar a integração e a atribuição de usuários. Os Administradores de Usuários podem não ser necessários nas implantações para as quais os usuários são gerenciados em uma solução externa de gerenciamento de identidades.
Se você não estiver familiarizado com a sintaxe da política do OCI IAM, revise a documentação do OCI IAM para entender a estrutura das instruções de política.
Script de Acesso da Linha de Base
Observação: Este script só se aplica a ambientes do OCI com Domínios do IAM. Algumas tenancies mais antigas podem não ter Domínios do IAM em seu ambiente. Para confirmar se seu ambiente tem Domínios do IAM, siga as instruções aqui.
#!/bin/bash
#Update the below with details for the environment
tenancy_ocid=ocid1.tenancy.oc1..aaaaaaaa....
#Group names
tenancy_manager_group=TenancyManagers
pol_admin_group=PolicyAdmins
sec_admin_group=SecurityAdmin
sec_analyst_group=SecurityAnalysts
#All_Users_Policy
oci iam policy create -c $tenancy_ocid --name "All_Users_Policy" \
--description "General purpose permissions intended for all users of the tenancy." \
--statements "[\"allow any-user to inspect tag-defaults in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to inspect limits in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to inspect tenancies in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to inspect compartments in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to read policies in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to read objectstorage-namespaces in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to read announcements in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\", \
\"allow any-user to use cloud-shell in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }\"]"
#Tenancy Managers
oci iam group create --name $tenancy_manager_group \
--description "Group for Tenancy Managers for OCI, who can manage tenancy-level constructs, such as budgets and regions."
oci iam policy create -c $tenancy_ocid --name "Tenancy_Managers_Policy" \
--description "Policy statements which define the 'Tenancy Manager' role, which allows for managing tenancy-level configuration and objects." \
--statements "[\"define tenancy usage-report as ocid1.tenancy.oc1..aaaaaaaaned4fkpkisbwjlr56u7cj63lf3wffbilvqknstgtvzub7vhqkggq\", \
\"allow group ${tenancy_manager_group} to read usage-report in tenancy\", \
\"allow group ${tenancy_manager_group} to read resource-availability in tenancy\", \
\"allow group ${tenancy_manager_group} to manage quotas in tenancy\", \
\"allow group ${tenancy_manager_group} to manage tenancies in tenancy\", \
\"allow group ${tenancy_manager_group} to manage objectstorage-namespaces in tenancy\", \
\"allow group ${tenancy_manager_group} to manage buckets in tenancy where request.operation = 'UpdateNamespaceMetadata'\", \
\"allow group ${tenancy_manager_group} to manage usage-budgets in tenancy\", \
\"allow group ${tenancy_manager_group} to manage organizations-family in tenancy\", \
\"allow group ${tenancy_manager_group} to {AUDIT_CONFIGURATION} in tenancy\", \
\"endorse group ${tenancy_manager_group} to read objects in tenancy usage-report\"]"
#Policy Admins
oci iam group create --name $pol_admin_group \
--description "Group for Policy Administrators for OCI, who create and maintain IAM Policies and supporting resources."
oci iam policy create -c $tenancy_ocid --name "Policy_Admins_Policy" \
--description "Policy statements which define the 'Policy Admin' role, who create and maintain IAM Policies and supporting resources." \
--statements "[\"allow group ${pol_admin_group} to inspect groups in tenancy\", \
\"allow group ${pol_admin_group} to read users in tenancy\", \
\"allow group ${pol_admin_group} to manage groups in tenancy where target.group.name != 'Administrators'\", \
\"allow group ${pol_admin_group} to manage compartments in tenancy\", \
\"allow group ${pol_admin_group} to manage dynamic-groups in tenancy\", \
\"allow group ${pol_admin_group} to manage domains in tenancy where request.permission != 'DOMAIN_RESOURCES_ADMINISTER'\", \
\"allow group ${pol_admin_group} to manage network-sources in tenancy\", \
\"allow group ${pol_admin_group} to manage policies in tenancy\", \
\"allow group ${pol_admin_group} to manage tag-namespaces in tenancy\", \
\"allow group ${pol_admin_group} to manage iamworkrequests in tenancy\"]"
#Security Admin
oci iam group create --name $sec_admin_group \
--description "Group for Security Admins for OCI, who can manage Cloud Guard and Data Safe"
oci iam policy create -c $tenancy_ocid --name "Security_Admins_Policy" \
--description "Policy statements which define the 'Security Admin' role, which allows for managing Cloud Guard and Data Safe." \
--statements "[\"allow group ${sec_admin_group} to inspect groups in tenancy\", \
\"allow group ${sec_admin_group} to read repos in tenancy\", \
\"allow group ${sec_admin_group} to manage cloud-guard-family in tenancy\", \
\"allow group ${sec_admin_group} to manage data-safe in tenancy\"]"
#Security Analyst
oci iam group create --name $sec_analyst_group \
--description "Group for Security Analysts for OCI, which provides read access to resources in the tenancy, and the ability to use Cloud Guard"
oci iam policy create -c $tenancy_ocid --name "Security_Analysts_Policy" \
--description "Policy statements which define the 'Security Analyst' role, which allows for read access to the tenancy, and the ability to work with Cloud Guard." \
--statements "[\"allow group ${sec_analyst_group} to read all-resources in tenancy\", \
\"allow group ${sec_analyst_group} to read audit-events in tenancy\", \
\"allow group ${sec_analyst_group} to read cloud-guard-family in tenancy\", \
\"allow group ${sec_analyst_group} to use cloud-guard-config in tenancy\", \
\"allow group ${sec_analyst_group} to manage cloud-guard-detectors in tenancy\", \
\"allow group ${sec_analyst_group} to manage cloud-guard-problems in tenancy\", \
\"allow group ${sec_analyst_group} to manage cloud-guard-detector-recipes in tenancy\", \
\"allow group ${sec_analyst_group} to manage cloud-guard-managed-lists in tenancy\", \
\"allow group ${sec_analyst_group} to manage cloud-guard-user-preferences in tenancy\"]"
Tarefa 2: Atualizar o script
-
Copie o script em um editor de texto para fazer os ajustes necessários antes de executá-lo em seu ambiente.
-
Atualize a variável
tenancy_ocid
para o valor correto da sua tenancy. O OCID da tenancy pode ser obtido na página Detalhes da Tenancy, disponível em https://cloud.oracle.com/tenancy, ou clicando no nome da tenancy no Painel de Controle da Console do OCI. -
Atualize os nomes do Grupo, se necessário. Os nomes de Grupo podem precisar se alinhar a um esquema de nomeação, especialmente se houver a intenção de preenchê-los a partir de um sistema externo de gerenciamento de identidades.
-
Revise e atualize as instruções de política para se alinhar aos requisitos da sua organização. Considerações para modificações nessas instruções de política, bem como instruções de política adicionais são descritas nas seções a seguir.
Compreender o Modelo de Permissão
Em um nível alto, o design de direito implementado por este script divide as responsabilidades de gerenciamento de tenancy em atribuições mais restritas, que refletem melhor os diferentes tipos de administradores que podem existir em seu ambiente. Ele também se destina a impedir que os usuários que estão operando no nível da tenancy criem recursos de infraestrutura fora dos Compartimentos dedicados do OCI.
Garantir que os recursos sejam criados em compartimentos melhora a governança da tenancy, pois orçamentos e cotas de recursos podem ser configurados no nível do compartimento. Ele também simplifica o modelo de política para gerenciar esses recursos, pois os compartimentos podem ser referenciados diretamente nessas políticas.
Este script deve ser conservador, concedendo apenas um conjunto mínimo de permissões a cada grupo. Dependendo de como sua organização pretende usar o OCI, podem ser necessárias permissões adicionais. As seções a seguir abordam os direitos criados pelo script com mais detalhes e incluem exemplos de alterações potenciais.
Acesso de Linha de Base por meio de políticas 'todos os usuários'
No OCI, os usuários não têm acesso, a menos que uma política tenha sido configurada para fornecer esse acesso. Para facilitar a produtividade do usuário e fornecer aos usuários informações significativas sobre a tenancy, o script cria um conjunto de acesso de linha de base para todos os usuários. Essas políticas autorizam o uso do cloud shell, bem como a capacidade de ler anúncios e verificar regiões inscritas.
As políticas recomendadas também foram projetadas para ajudar os usuários a fazer solicitações informadas quando eles exigem acesso ou recursos adicionais, permitindo que eles exibam objetos que podem limitar sua capacidade de interagir com a tenancy, incluindo limites e políticas de serviço.
Em geral, recomenda-se usar o domínio de identidades Padrão do OCI IAM para gerenciamento de recursos do OCI e negar acesso à console do OCI para usuários que autenticam por meio de qualquer outro domínio de identidades. Como tal, o script fornecido limita o acesso aos usuários que autenticam por meio do domínio Padrão. Seu design de segurança pode dar suporte ao uso de vários domínios de identidade para gerenciar o acesso ao OCI. Por exemplo, você pode ter um domínio de produção para administradores de produção e um domínio que não seja de produção para administradores que não sejam de produção. Nesse caso, a condição nas políticas de acesso da linha de base pode ser modificada para capturar cada domínio, da seguinte forma:
... where all{ request.domain.name in ('<prod_domain_name>, '<non-prod_domain_name>'), request.principal.type = 'user' }
Dependendo do design da sua tenancy, talvez você queira adicionar a política a seguir.
allow any-user to use tag-namespaces in tenancy where all{ request.domain.name = 'default', request.principal.type = 'user' }
Esta política permite que todos os usuários apliquem, atualizem ou removam tags definidas de recursos que eles podem modificar. Isso pode ser desejável se os proprietários de recursos precisarem ser capazes de modificar tags para seus próprios fins de rastreamento ou para fins de gerenciamento de acesso. Pode não ser desejável se o seu design fizer uso de padrões de tag para rastreamento de custos ou outros fins.
Gerentes de Tenancy
Os direitos do Tenancy Manager são destinados a usuários com uma responsabilidade de governança para a tenancy, incluindo gerenciamento de custos e orçamento, bem como as regiões às quais a tenancy se inscreve.
As políticas criadas pelo script para os gerentes da tenancy podem exigir pequenos ajustes para fornecer acesso aos relatórios de uso. O script usa o identificador de tenancy padrão para análise de custos; no entanto, algumas tenancies, dependendo do status, podem usar um identificador de tenancy alternativo. Se um gerente da tenancy não puder acessar relatórios de uso, a política deverá ser atualizada para usar os valores mostrados na seção de relatórios de uso da Console do OCI, isto é,
Administradores de Política
Talvez a capacidade mais importante para facilitar a saída do uso do grupo Administradores seja a atribuição de direitos ao Administrador de Política. Esses direitos são usados por administradores responsáveis pela configuração de direitos de acesso na tenancy. No modelo criado pelo script fornecido, os Administradores de Política são responsáveis pela definição de direitos, mas não pela atribuição de usuários a esses grupos. Os direitos de gerenciamento de usuários são concedidos por meio da designação da atribuição de Administradores de Usuário no Domínio do IAM. Em algumas implantações, uma única administradora pode receber ambas as responsabilidades, dependendo do design de segurança da sua organização.
Observação: O direito ao Administrador de Política tem escopo muito restrito, mas como ele pode ser usado para criar políticas que concedam qualquer nível de acesso dentro do ambiente, incluindo a escalação de seu próprio nível de acesso, ele deve ser considerado um direito altamente privilegiado.
Administradores de Segurança
A atribuição de Administrador de Segurança destina-se a usuários responsáveis pela configuração de serviços de segurança no ambiente, como Cloud Guard e Data Safe.
Você também pode adicionar as seguintes instruções para permitir que Administradores de Segurança configurem alertas no nível da tenancy:
allow group SecurityAdmins to manage cloudevents-rules in tenancy where target.compartment.id = '<tenancy_ocid>'
allow group SecurityAdmins to use metrics in tenancy
Elas permitem que os Administradores de Segurança configurem alertas sobre eventos que ocorrem no nível da tenancy, incluindo acesso ou criação de problema do Cloud Guard. Esses eventos exigirão que uma ação, como uma notificação, seja associada a eles para ser significativa, mas a ação não precisa estar no compartimento raiz (tenancy). Os serviços responsáveis pelo tratamento desses eventos podem, em vez disso, estar em um subcompartimento usado para outros fins de segurança. Por exemplo, uma política como a seguinte pode ser adicionada para autorizar a configuração de notificações para fins de segurança:
allow group SecurityAdmins to manage ons-family in compartment security_resources
Analistas de Segurança
A atribuição de Analista de Segurança destina-se aos usuários responsáveis por revisar ações e eventos na Tenancy do OCI. Para investigar e validar problemas associados a problemas do Cloud Guard, um Analista de Segurança requer acesso de leitura a toda a tenancy.
Tarefa 3: Executar o Script usando o Cloud Shell
Após fazer qualquer modificação necessária no script, você poderá executá-lo usando o Cloud Shell na Console do OCI.
Observação: O Cloud Shell não é necessário, mas fornece um mecanismo simples para executar scripts, pois ele é pré-configurado com a CLI do OCI e usa o contexto de autenticação do usuário conectado.
-
Abra o Cloud Shell no ícone Ferramentas de Desenvolvedor no cabeçalho da Console do OCI.
O Cloud Shell pode levar algum tempo para ser inicializado, especialmente se esta for a primeira vez que foi acessado.
-
Copie o script atualizado para seu ambiente do Cloud Shell, por exemplo, usando
vi
:$vi policy_scaffold.sh
Em
vi
, pressionei
para informar o modo[INSERT]
e cole o conteúdo do script no arquivo, antes de pressionaresc
e, em seguida,:wq
para salvar e sair. -
Torne o script executável e execute-o para criar direitos iniciais.
$chmod +x policy_scaffold.sh $./policy_scaffold.sh
-
Monitore a saída para garantir que cada um dos objetos Grupo e Política seja criado corretamente. Os problemas podem ser resolvidos manualmente ou ajustando-se e depois reexecutando comandos individuais da CLI do OCI de dentro do script.
Tarefa 4: Designar usuários e proteger o grupo Administradores
Depois que o script tiver sido executado, os usuários poderão ser atribuídos aos grupos criados, concedendo a eles os direitos associados.
Depois de designar algumas atribuições administrativas, é uma boa prática restringir o uso do grupo Administradores do OCI a cenários de acesso de emergência. O OCI exige que pelo menos uma conta de usuário seja designada ao grupo Administradores para que você possa recuperar o acesso à tenancy em caso de interrupção de identidade ou configuração incorreta. Caso contrário, seria possível criar uma situação em que nenhum usuário possa designar acesso, e todos os seus administradores poderiam ficar bloqueados do seu ambiente.
Para obter mais informações e recomendações detalhadas, consulte Gerenciando Contas de Acesso de Emergência no Oracle Cloud Infrastructure.
Próximas Etapas
Depois de criar um conjunto inicial de atribuições de administração da tenancy, elas podem ser usadas como base para facilitar a criação de atribuições para projetos individuais ou para expandir os recursos desses administradores principais.
O modelo usado aqui tem duas metas principais. Primeiro, ele permite que os administradores do ambiente OCI sejam removidos do grupo Administradores e em funções mais adaptadas às suas responsabilidades específicas. Em segundo lugar, impede que os usuários com acesso no nível da tenancy possam criar recursos de infraestrutura no compartimento raiz. Ao criar políticas adicionais, é recomendável manter esse princípio de design e só criar políticas que direcionem compartimentos na raiz. Além dos benefícios de segurança, isso também permite o rastreamento de custos simplificado e a governança de projetos.
Para saber mais, consulte o Oracle Cloud Infrastructure Security Guide.
Links Relacionados
- OCI CLI
- Sintaxe da política do OCI IAM
- Gerenciando Contas de Acesso de Emergência no Oracle Cloud Infrastructure
- Guia de Segurança do Oracle Cloud Infrastructure
Aquisições
- Autor: Callan Howell-Pavia (Membro Principal da Equipe Técnica (Identidade do OCI/IDCS))
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Set up an initial administrator model for your Oracle Cloud tenancy
F82183-01
May 2023
Copyright © 2023, Oracle and/or its affiliates.