Pular para o conteúdo principal

Desafio 17: grupos de gerenciamento & assinaturas

Tempo Estimado e Custo

60-75 minutos | Custo estimado: Gratuito (operações do plano de gerenciamento) | Peso no Exame: 20-25%

Cenário

A Contoso Ltd. está crescendo rápido. O que começou como uma única assinatura do Azure se transformou em seis assinaturas distribuídas em três departamentos (TI, Finanças e Engenharia). O CTO quer uma hierarquia de governança que aplique políticas de forma consistente em todas as assinaturas sem duplicar esforço. Seu trabalho é projetar e implementar uma estrutura de grupos de gerenciamento que reflita o organograma da empresa e aplicar governança nos níveis adequados.

Habilidades do exame cobertas

HabilidadePeso
Configurar grupos de gerenciamentoAlto
Gerenciar assinaturas e governançaAlto
Mover assinaturas entre grupos de gerenciamentoMédio
Implementar bloqueios de recursos entre assinaturasMédio
Aplicar RBAC no escopo do grupo de gerenciamentoAlto

Referência sysadmin ↔ Azure

On-Prem / SysadminEquivalente AzureNotas
OUs do Active DirectoryGrupos de gerenciamentoContêineres hierárquicos de governança
Group Policy vinculada à OUAzure Policy no escopo do MGHerdada por todas as assinaturas filhas
Admin de domínio sobre árvore de OUsRBAC no escopo do MGCascateia para assinaturas e recursos
Mover computadores entre OUsMover assinaturas entre MGsPolíticas de governança mudam imediatamente
Administração delegada de OURBAC no nível da assinaturaAcesso administrativo com escopo
Domínio raiz da florestaTenant Root GroupTopo da hierarquia, não pode ser movido

Tarefas

Tarefa 1: criar uma hierarquia de grupos de gerenciamento

Projete e crie a seguinte estrutura de grupos de gerenciamento:

Tenant Root Group
└── mg-contoso (Contoso Ltd.)
├── mg-production (Production)
│ ├── mg-prod-it (IT Production)
│ └── mg-prod-finance (Finance Production)
└── mg-nonproduction (Non-Production)
├── mg-dev (Development)
└── mg-sandbox (Sandbox)
# Criar o grupo de gerenciamento de nível superior
az account management-group create \
--name "mg-contoso" \
--display-name "Contoso Ltd."

# Criar hierarquia de produção
az account management-group create \
--name "mg-production" \
--display-name "Production" \
--parent "mg-contoso"

az account management-group create \
--name "mg-prod-it" \
--display-name "IT Production" \
--parent "mg-production"

az account management-group create \
--name "mg-prod-finance" \
--display-name "Finance Production" \
--parent "mg-production"

# Criar hierarquia de não-produção
az account management-group create \
--name "mg-nonproduction" \
--display-name "Non-Production" \
--parent "mg-contoso"

az account management-group create \
--name "mg-dev" \
--display-name "Development" \
--parent "mg-nonproduction"

az account management-group create \
--name "mg-sandbox" \
--display-name "Sandbox" \
--parent "mg-nonproduction"
Dica

Navegue até Portal do Azure > Grupos de gerenciamento. Clique em + Criar e especifique o grupo pai, ID e nome de exibição para cada grupo.

Tarefa 2: mover uma assinatura para um grupo de gerenciamento

Mova sua assinatura atual para o grupo de gerenciamento mg-dev:

# Obter o ID da sua assinatura
SUB_ID=$(az account show --query id -o tsv)

# Mover assinatura para mg-dev
az account management-group subscription add \
--name "mg-dev" \
--subscription $SUB_ID

# Verificar a movimentação
az account management-group show \
--name "mg-dev" \
--expand \
--recurse

Tarefa 3: atribuir Azure Policy no escopo do grupo de gerenciamento

Aplique a política integrada "Require a tag and its value on resources" no escopo mg-production:

# Obter o ID da definição da política
POLICY_DEF=$(az policy definition list \
--query "[?displayName=='Require a tag and its value on resources'].id" -o tsv)

# Atribuir a política no escopo do grupo de gerenciamento
az policy assignment create \
--name "require-env-tag-prod" \
--display-name "Require Environment Tag (Production)" \
--policy "$POLICY_DEF" \
--scope "/providers/Microsoft.Management/managementGroups/mg-production" \
--params '{"tagName": {"value": "Environment"}, "tagValue": {"value": "Production"}}'

Tarefa 4: aplicar RBAC no nível do grupo de gerenciamento

Conceda a um usuário a função "Reader" no escopo do grupo de gerenciamento mg-contoso (cascateando para todas as assinaturas):

# Obter o object ID do usuário (substitua pelo seu usuário de teste)
USER_ID=$(az ad user show --id "alice@yourtenant.onmicrosoft.com" --query id -o tsv)

# Atribuir função reader no escopo do grupo de gerenciamento
az role assignment create \
--assignee "$USER_ID" \
--role "Reader" \
--scope "/providers/Microsoft.Management/managementGroups/mg-contoso"

# Verificar a atribuição
az role assignment list \
--scope "/providers/Microsoft.Management/managementGroups/mg-contoso" \
--query "[?principalId=='$USER_ID']" -o table

Tarefa 5: mover uma assinatura entre grupos de gerenciamento

Simule uma reorganização departamental movendo a assinatura de mg-dev para mg-sandbox:

# Remover assinatura do MG atual
az account management-group subscription remove \
--name "mg-dev" \
--subscription $SUB_ID

# Adicionar assinatura ao novo MG
az account management-group subscription add \
--name "mg-sandbox" \
--subscription $SUB_ID

# Verificar nova localização
az account management-group show \
--name "mg-sandbox" \
--expand \
--recurse

Tarefa 6: consultar a hierarquia de grupos de gerenciamento

# Visualizar a hierarquia completa
az account management-group list --query "[].{Name:name, DisplayName:displayName}" -o table

# Mostrar árvore hierárquica
az account management-group show \
--name "mg-contoso" \
--expand \
--recurse \
--query "{Name:name, Children:children[].{Name:name, Children:children[].name}}"

Critérios de sucesso

  • A hierarquia de grupos de gerenciamento corresponde à estrutura específicada (5 grupos sob mg-contoso)
  • Pelo menos uma assinatura está posicionada dentro de um grupo de gerenciamento
  • Azure Policy está atribuída no escopo mg-production
  • Atribuição de função RBAC existe no escopo mg-contoso
  • A assinatura foi movida com sucesso entre grupos de gerenciamento
  • Você consegue consultar e exibir a hierarquia completa

Dicas

Dica 1: Permissões de grupos de gerenciamento

Você precisa de permissões específicas para criar grupos de gerenciamento. Por padrão, qualquer usuário no tenant pode criar grupos de gerenciamento. Isso pode ser restringido pela configuração no nível do tenant "Exigir permissões para criar novos grupos de gerenciamento" no Portal do Azure em Grupos de gerenciamento > Configurações.

Dica 2: Herança de políticas

Políticas atribuídas no escopo de um grupo de gerenciamento são herdadas por todos os grupos de gerenciamento filhos e assinaturas. Você não pode substituir ou excluir um filho de uma política herdada | você só pode adicionar isenções para recursos específicos.

Dica 3: Profundidade máxima da hierarquia

Grupos de gerenciamento suportam até 6 níveis de profundidade (sem contar o Tenant Root Group). Planeje sua hierarquia para ficar dentro deste limite.

Dica 4: Movendo assinaturas

Mover uma assinatura entre grupos de gerenciamento altera quais políticas e atribuições RBAC se aplicam. A mudança entra em vigor imediatamente, mas pode levar até 30 minutos para ser totalmente refletida nas avaliações de conformidade de políticas.

Quebrar & consertar

Cenário a: conflito de políticas

Atribua duas políticas conflitantes em diferentes níveis: uma exigindo a tag "Environment=Production" em mg-production e outra exigindo "Environment=Development" em mg-dev. Tente implantar um recurso em uma assinatura sob mg-dev. O que acontece quando políticas contraditórias existem em diferentes níveis?

Cenário b: assinatura órfã

Remova sua assinatura de todos os grupos de gerenciamento personalizados. Onde ela aparece? (Resposta: Ela retorna ao Tenant Root Group.) Como você encontra assinaturas que não estão em nenhum grupo de gerenciamento personalizado?

Cenário c: bloqueado

Atribua uma atribuição RBAC de Negação no escopo de um grupo de gerenciamento. O que acontece com os usuários que anteriormente tinham acesso através de atribuições no nível da assinatura? Como as atribuições de negação interagem com as atribuições de permissão?

Verificação de conhecimento

1. Quantos níveis de profundidade os grupos de gerenciamento podem ter?

Grupos de gerenciamento suportam 6 níveis de profundidade abaixo do Tenant Root Group. O Tenant Root Group em si é o nível 0, então a hierarquia total pode ter 7 níveis (raiz + 6).

2. O que acontece com as políticas quando você move uma assinatura entre grupos de gerenciamento?

Quando uma assinatura é movida, ela perde imediatamente as políticas do grupo de gerenciamento antigo e herda as políticas da nova hierarquia de grupos de gerenciamento. Recursos existentes não conformes não são remediados automaticamente, mas serão sinalizados na próxima avaliação de conformidade.

3. Você pode mover ou renomear o Tenant Root Group?

O Tenant Root Group não pode ser movido ou excluído. Ele pode ser renomeado (apenas o nome de exibição) por um usuário com a função Owner ou User Access Administrator naquele escopo. Seu ID é sempre o ID do tenant.

4. Quem pode criar grupos de gerenciamento por padrão?

Por padrão, qualquer usuário no tenant do Entra ID pode criar grupos de gerenciamento. Isso pode ser restringido para que apenas usuários com a função Owner, Contributor ou Management Group Contributor no escopo pai possam criá-los. Essa configuração é feita no nível do Tenant Root Group.

Limpeza

# Remover assinatura do MG personalizado (retorna ao tenant root group)
SUB_ID=$(az account show --query id -o tsv)
az account management-group subscription remove \
--name "mg-sandbox" \
--subscription $SUB_ID 2>/dev/null

# Remover atribuição de política
az policy assignment delete \
--name "require-env-tag-prod" \
--scope "/providers/Microsoft.Management/managementGroups/mg-production" 2>/dev/null

# Remover atribuição RBAC (substitua user_id)
# az role assignment delete --assignee "$user_id" --scope "/providers/Microsoft.Management/managementGroups/mg-contoso"

# Excluir grupos de gerenciamento (ordem de baixo para cima é obrigatória)
az account management-group delete --name "mg-sandbox" 2>/dev/null
az account management-group delete --name "mg-dev" 2>/dev/null
az account management-group delete --name "mg-nonproduction" 2>/dev/null
az account management-group delete --name "mg-prod-it" 2>/dev/null
az account management-group delete --name "mg-prod-finance" 2>/dev/null
az account management-group delete --name "mg-production" 2>/dev/null
az account management-group delete --name "mg-contoso" 2>/dev/null

echo "Limpeza concluída."

Recursos de aprendizagem