Gestão Avançada de Identidades e Acessos em Azure Compute

A segurança na nuvem deixou de ser opcional para se tornar um requisito estratégico. Com a crescente adoção do Microsoft Azure, a gestão avançada de identidades e acessos (IAM – Identity and Access Management) é um dos pilares fundamentais para garantir confidencialidade, integridade e disponibilidade dos recursos. Este artigo explora, de forma detalhada, como implementar uma arquitetura robusta para Azure Compute, aplicando práticas modernas como Zero Trust, Privileged Identity Management (PIM), Acesso Condicional, Identidades Geridas e Azure Key Vault.

Porquê investir em Gestão Avançada de Identidades?

  • Redução de riscos: elimina credenciais hardcoded e acessos desnecessários.
  • Conformidade regulatória: alinhamento com GDPR, LGPD e ISO 27001.
  • Governança centralizada: controlo granular sobre quem acede a quê
  • Escalabilidade e automação: integração com pipelines DevOps.

Arquitetura Recomendada

A arquitetura deve integrar os seguintes componentes:

  • Microsoft Entra ID (Azure AD): núcleo de autenticação e autorização.
  • IAM (RBAC): atribuição de funções granulares.
  • Identidades Geridas: autenticação segura sem credenciais explícitas.
  • Políticas de Acesso Condicional: MFA, localização e risco.
  • Privileged Identity Management (PIM): acesso Just-In-Time para funções críticas.
  • Azure Key Vault: proteção de segredos e chaves.

Práticas Avançadas

  1. Implementar Identidades Geridas
    – Ativar identidade gerida ao criar VMs.
    – Utilizar para autenticação em Key Vault, Storage e APIs.
  2. Criar Funções Personalizadas
    – Definir permissões específicas para operações críticas (ex.: iniciar/parar VMs).
    – Limitar escopo com AssignableScopes.
  3. Configurar Acesso Condicional
    – Exigir MFA para administradores.
    – Bloquear acessos fora de localizações confiáveis.
    – Integrar com Microsoft Defender for Cloud para alertas.
  4. Ativar PIM
    – Acesso temporário para funções Owner ou Contributor.
    – Aprovação obrigatória antes da elevação de privilégios.
  5. Integrar Key Vault
    – Armazenar segredos e chaves.
    – Configurar políticas para permitir que VMs acedam via identidade gerida.

Automação com Scripts

A automação é essencial para consistência e escalabilidade.

  • Azure CLI
# ================================
# 1. Variáveis
# ================================
RG="RG-Identidades-AzureCompute"
LOCATION="eastus"
VM_NAME="VM-Identidade"
IMAGE="Win2022Datacenter"
SIZE="Standard_B2s"
KV_NAME="kv-identidades$(date +%s)" # Nome único para Key Vault

# ================================
# 2. Criar Grupo de Recursos
# ================================
az group create --name $RG --location $LOCATION

# ================================
# 3. Criar Máquina Virtual com Identidade Gerida
# ================================
az vm create \
  --resource-group $RG \
  --name $VM_NAME \
  --image $IMAGE \
  --size $SIZE \
  --admin-username azureuser \
  --generate-ssh-keys \
  --assign-identity

# Obter o principalId da Identidade Gerida
IDENTITY_ID=$(az vm show --resource-group $RG --name $VM_NAME --query identity.principalId -o tsv)

# ================================
# 4. Criar Key Vault e dar acesso à Identidade Gerida
# ================================
az keyvault create --name $KV_NAME --resource-group $RG --location $LOCATION --enabled-for-template-deployment true

# Atribuir política de acesso à Identidade Gerida
az keyvault set-policy --name $KV_NAME --object-id $IDENTITY_ID --secret-permissions get list

# ================================
# 5. Criar Função Personalizada para Azure Compute
# ================================
cat <<EOF > customRole.json
{
  "Name": "CustomRole-ComputeAccess",
  "IsCustom": true,
  "Description": "Permite iniciar/parar VMs e ler propriedades",
  "Actions": [
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/deallocate/action"
  ],
  "NotActions": [],
  "AssignableScopes": ["/subscriptions/$(az account show --query id -o tsv)"]
}
EOF
az role definition create --role-definition customRole.json

# ================================
# 6. Atribuir Função à Identidade Gerida
# ================================
az role assignment create \
  --assignee-object-id $IDENTITY_ID \
  --role "CustomRole-ComputeAccess" \
  --scope "/subscriptions/$(az account show --query id -o tsv)/resourceGroups/$RG"

# ================================
# 7. Configurar Acesso Condicional e PIM (Manual via Portal)
# ================================
echo "✅ Acesso Condicional e PIM devem ser configurados via Microsoft Entra ID no portal."
  • PowerShell (Az Module)
# ================================
# 1. Variáveis
# ================================
$RG = "RG-Identidades-AzureCompute"
$Location = "EastUS"
$VMName = "VM-Identidade"
$Image = "Win2022Datacenter"
$Size = "Standard_B2s"
$KVName = "kv-identidades" + (Get-Date -Format "yyyyMMddHHmmss")

# ================================
# 2. Login e Seleção da Subscrição
# ================================
Connect-AzAccount
$SubscriptionId = (Get-AzContext).Subscription.Id

# ================================
# 3. Criar Grupo de Recursos
# ================================
New-AzResourceGroup -Name $RG -Location $Location

# ================================
# 4. Criar Máquina Virtual com Identidade Gerida
# ================================
$vm = New-AzVM `
    -ResourceGroupName $RG `
    -Name $VMName `
    -Location $Location `
    -Image $Image `
    -Size $Size `
    -Credential (Get-Credential) `
    -AssignIdentity

# Obter o ObjectId da Identidade Gerida
$IdentityId = $vm.Identity.PrincipalId

# ================================
# 5. Criar Key Vault e dar acesso à Identidade Gerida
# ================================
$kv = New-AzKeyVault -Name $KVName -ResourceGroupName $RG -Location $Location -EnabledForTemplateDeployment
Set-AzKeyVaultAccessPolicy -VaultName $KVName -ObjectId $IdentityId -PermissionsToSecrets get,list

# ================================
# 6. Criar Função Personalizada para Azure Compute
# ================================
$roleDefinition = @{
    Name = "CustomRole-ComputeAccess"
    IsCustom = $true
    Description = "Permite iniciar/parar VMs e ler propriedades"
    Actions = @(
        "Microsoft.Compute/*/read",
        "Microsoft.Compute/virtualMachines/start/action",
        "Microsoft.Compute/virtualMachines/deallocate/action"
    )
    NotActions = @()
    AssignableScopes = @("/subscriptions/$SubscriptionId")
}

New-AzRoleDefinition -Role $roleDefinition

# ================================
# 7. Atribuir Função à Identidade Gerida
# ================================
New-AzRoleAssignment `
    -ObjectId $IdentityId `
    -RoleDefinitionName "CustomRole-ComputeAccess" `
    -Scope "/subscriptions/$SubscriptionId/resourceGroups/$RG"

# ================================
# 8. Configurar Acesso Condicional e PIM
# ================================
Write-Host "✅ Acesso Condicional e PIM devem ser configurados via Microsoft Entra ID no portal."
``


Benefícios

  • Segurança reforçada: elimina credenciais hardcoded.
  • Governança centralizada: controlo granular.
  • Conformidade: alinhamento com normas internacionais.
  • Eficiência: integração com pipelines DevOps.

Desafios

  • Complexidade inicial.
  • Custos adicionais para PIM.
  • Necessidade de monitorização contínua.

Concluindo, a gestão avançada de identidades e acessos em Azure Compute é um componente essencial para qualquer organização que pretenda operar com segurança e eficiência na nuvem. Ao combinar IAM, Identidades Geridas, Acesso Condicional, PIM e Key Vault, constrói-se uma arquitetura resiliente e alinhada com as melhores práticas.

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *