Pular para o conteúdo principal

[AZ-104] Grand Labs - Nordvex Energia S.A.

Ambiente Cumulativo de Implantação Real


Narrativa Central

Empresa: Nordvex Energia S.A. | Setor: Utilities (distribuição de energia elétrica)

A Nordvex opera 14 subestações em duas regiões e acaba de encerrar um contrato com um data center privado. A diretoria aprovou a migração completa da infraestrutura para o Azure em 90 dias. Você foi contratado como arquiteto de nuvem responsável pela implantação.

Cada etapa corresponde a uma decisão técnica real. O prefixo de todos os recursos é nordvex. Capture os IDs, IPs e nomes de objetos produzidos em cada etapa — eles serão exigidos nas etapas seguintes.


Pré-requisitos

Instale antes de começar

Valide todas as ferramentas abaixo antes de iniciar a Etapa 1.

FerramentaVersão MínimaNecessária nas EtapasVerificação
Azure CLI2.50+Todasaz --version
Bicep CLIQualquer33–36az bicep install && az bicep version
Docker Desktop24+45–46docker --version
AzCopyv10+25azcopy --version
Estimativa de custo e tempo
  • 💰 Custo estimado para execução completa: USD 15–35
  • ⏱️ Tempo estimado total: 12–16 horas distribuídas em múltiplas sessões
  • 🔋 Desligue e desaloque VMs, VMSS e o Bastion ao encerrar cada sessão
  • 📍 Região principal: East US | Região de DR: Brazil South
RecursoCusto estimadoObservação
Azure Bastion (Basic)~USD 0,19/hDesligue após uso
VM Standard_B4ms~USD 0,15/hDesaloque entre sessões
VMSS (2x B2s)~USD 0,10/hReduza para 0 instâncias entre sessões
App Service P1v3~USD 0,16/hScale down para F1 entre sessões
Site Recovery~USD 0,16/VM/hDesabilite após Etapa 81

Índice por Domínio do Exame

DomínioEtapas
Domínio 1 — Identidade e Governança1–15
Domínio 2 — Storage16–32
Domínio 3 — Infraestrutura como Código33–37
Domínio 4 — Compute e Contêineres38–48
Domínio 5 — App Service49–56
Domínio 6 — Redes57–69
Domínio 7 — Monitoramento70–75
Domínio 8 — Backup e DR76–82

Domínio 1 — Identidade e Governança

Etapa 1 — Criar usuários e grupos no Microsoft Entra ID

Contexto: A Nordvex possui três equipes que precisam de acesso ao ambiente Azure: operações de TI, engenharia de redes e auditoria. Esta é a fundação de toda a governança que virá nas etapas seguintes.

Tarefas:

[Portal] Crie três usuários. Navegue até: Microsoft Entra ID → Users → New user → Create new user

CampoUsuário 1Usuário 2Usuário 3
Display namenordvex-ops-usernordvex-net-usernordvex-audit-user
User principal nameops@<seudominio>net@<seudominio>audit@<seudominio>
PasswordDefinida manualmenteDefinida manualmenteDefinida manualmente
Force change passwordNãoNãoNão

[Portal] Crie dois grupos de segurança. Navegue até: Microsoft Entra ID → Groups → New group

CampoGrupo 1Grupo 2
Group namenordvex-ops-groupnordvex-net-group
Group typeSecuritySecurity
Membership typeAssignedAssigned
Membersnordvex-ops-usernordvex-net-user

[CLI] Capture os objectId dos três usuários e dos dois grupos:

az ad user list --filter "startswith(displayName,'nordvex')" --output table
az ad group list --filter "startswith(displayName,'nordvex')" --output table

Critérios de Validação:

# Deve retornar exatamente 3 objetos:
az ad user list --filter "startswith(displayName,'nordvex')" --output table

# Deve retornar o objectId de nordvex-ops-user:
az ad group member list --group nordvex-ops-group --output table
dica

No portal Users do Entra ID, os três usuários devem aparecer com Account status = Enabled.


Etapa 2 — Gerenciar propriedades de usuários e grupos

Contexto: O departamento de RH exige que todos os usuários tenham cargo, departamento e telefone registrados no diretório para fins de auditoria interna.

Tarefas:

[Portal] Edite cada usuário. Navegue até: Microsoft Entra ID → Users → <usuário> → Properties → Job information

UsuárioJob titleDepartmentBusiness phone
nordvex-ops-userCloud OperatorTI+55-31-0000-0001
nordvex-net-userNetwork EngineerRedes+55-31-0000-0002
nordvex-audit-userIT AuditorAuditoria+55-31-0000-0003

[CLI] Atualize o usageLocation para os três usuários via Microsoft Graph:

az rest --method PATCH \
--url "https://graph.microsoft.com/v1.0/users/<objectId>" \
--body '{"usageLocation": "BR"}'
# Repita para os três usuários

[Portal] Adicione descrição ao grupo nordvex-ops-group. Navegue até: Microsoft Entra ID → Groups → nordvex-ops-group → Properties

Descrição: Grupo de operadores de nuvem da Nordvex Energia

Critérios de Validação:

az ad user show --id <objectId-ops-user> --query "{dept:department, location:usageLocation}"
# Esperado: {"dept": "TI", "location": "BR"}

Etapa 3 — Gerenciar licenças no Microsoft Entra ID

Contexto: A Nordvex adquiriu licenças Microsoft 365 Business Premium para a equipe de TI. O financeiro exige que o grupo seja o veículo de atribuição, não usuários individuais.

Tarefas:

  1. [Portal] Verifique licenças disponíveis. Navegue até: Microsoft Entra ID → Billing → Licenses → All products
  2. [Portal] Atribua licença ao grupo. Navegue até: Microsoft Entra ID → Groups → nordvex-ops-group → Licenses → Assignments
  3. [Portal] Verifique herança no usuário. Navegue até: Microsoft Entra ID → Users → nordvex-ops-user → Licenses

Critérios de Validação:

dica
  • No perfil de nordvex-ops-user → Licenses, a licença deve aparecer com origem "Inherited from group".
  • O usuário nordvex-audit-user (não está no grupo) não deve ter licença atribuída.

Etapa 4 — Gerenciar usuários externos

Contexto: A Nordvex contratou um consultor externo da Voltec Consultoria. Ele precisa de acesso de leitura temporário sem ter conta interna no diretório.

Tarefas:

  1. [Portal] Convide o usuário externo. Navegue até: Microsoft Entra ID → Users → New user → Invite external user
    • Display name: nordvex-ext-voltec
    • Mensagem: Acesso ao projeto de migração Azure da Nordvex Energia
  2. [Portal] Confirme que o User type = Guest. Navegue até: Microsoft Entra ID → Users → nordvex-ext-voltec → Properties
  3. [CLI] Confirme:
az ad user list --filter "userType eq 'Guest'" --output table
# Deve retornar ao menos 1 objeto com displayName = nordvex-ext-voltec

Etapa 5 — Configurar redefinição de senha de autoatendimento (SSPR)

Contexto: O helpdesk registra 40 chamados mensais de redefinição de senha. A habilitação do SSPR no escopo do grupo de operações reduz esse volume.

Tarefas:

  1. [Portal] Habilite SSPR. Navegue até: Microsoft Entra ID → Password reset → Properties
    • Self service password reset enabled: Selected
    • Adicione nordvex-ops-group como escopo
  2. [Portal] Configure métodos. Navegue até: Microsoft Entra ID → Password reset → Authentication methods
    • Number of methods required: 1
    • Habilite: Email e Mobile phone
  3. [Portal] Configure registro. Navegue até: Microsoft Entra ID → Password reset → Registration
    • Require users to register when signing in: Yes
    • Reconfirmation days: 180

Critérios de Validação:

dica
  • Password reset → Properties: escopo deve exibir Selected com nordvex-ops-group listado.
  • Authentication methods: ao menos 2 métodos habilitados.
  • Registration: "Require users to register" = Yes.

Etapa 6 — Gerenciar funções internas do Azure

Contexto: A política de segurança determina: operações = Contributor, redes = Reader, auditor = Billing Reader.

Tarefas:

  1. [Portal] Crie o grupo de recursos principal. Navegue até: Resource groups → Create
    • Name: nordvex-rg | Region: East US
  2. [Portal] Atribua Contributor ao grupo. Navegue até: nordvex-rg → Access control (IAM) → Add role assignment
    • Role: Contributor | Assignee: nordvex-ops-group
  3. [CLI] Atribua Reader ao grupo de redes:
az role assignment create \
--role "Reader" \
--assignee-object-id <objectId-net-group> \
--scope /subscriptions/<subscriptionId>/resourceGroups/nordvex-rg \
--assignee-principal-type Group
  1. [Portal] Atribua Billing Reader ao auditor. Navegue até: Subscriptions → <assinatura> → Access control (IAM) → Add role assignment
    • Role: Billing Reader | Assignee: nordvex-audit-user

Critérios de Validação:

az role assignment list --resource-group nordvex-rg --output table
# Deve conter: nordvex-ops-group (Contributor) e nordvex-net-group (Reader)

az role assignment list --scope /subscriptions/<subscriptionId> \
--assignee <objectId-audit-user> --output table
# Deve retornar: Billing Reader para nordvex-audit-user

Etapa 7 — Atribuir funções em escopos diferentes

Contexto: Demonstrar o princípio de menor privilégio por escopo: Contributor em produção, Reader em desenvolvimento.

Tarefas:

  1. [CLI] Crie o grupo de recursos de desenvolvimento:
az group create --name nordvex-dev-rg --location eastus
  1. [Portal] Atribua Reader ao nordvex-ops-user em nordvex-dev-rg. Navegue até: nordvex-dev-rg → Access control (IAM) → Add role assignment
  2. [CLI] Liste todas as atribuições em todos os escopos:
az role assignment list --assignee <objectId-ops-user> --all --output table

Critérios de Validação:

dica
  • O comando --all deve retornar ao menos 2 entradas com escopos distintos.
  • Escopo /resourceGroups/nordvex-rg: Contributor (herdado do grupo).
  • Escopo /resourceGroups/nordvex-dev-rg: Reader (atribuição direta).

Etapa 8 — Interpretar atribuições de acesso

Contexto: O auditor solicitou um relatório de quem tem acesso a quê no grupo de recursos de produção.

Tarefas:

  1. [Portal] Verifique acesso efetivo. Navegue até: nordvex-rg → Access control (IAM) → Check access → Pesquise nordvex-ops-user
  2. [Portal] Visualize atribuições. Navegue até: nordvex-rg → Access control (IAM) → Role assignments → Type: All
  3. [CLI] Capture todas as atribuições incluindo herdadas:
az role assignment list --resource-group nordvex-rg --include-inherited --output table

Critérios de Validação:

dica
  • Check access para nordvex-ops-user deve exibir Contributor como permissão efetiva.
  • O comando CLI deve retornar ao menos 3 entradas distintas para nordvex-rg.

Etapa 9 — Implementar e gerenciar o Azure Policy

Contexto: A equipe de conformidade exige que todos os recursos estejam nas regiões East US ou Brazil South e que nenhum recurso seja criado sem a tag CostCenter.

Tarefas:

  1. [Portal] Atribua a política de localização. Navegue até: Policy → Assignments → Assign policy
    • Scope: nordvex-rg
    • Policy definition: "Allowed locations"
    • Allowed locations: eastus, brazilsouth
  2. [Portal] Atribua a política de tag. Navegue até: Policy → Assignments → Assign policy
    • Policy definition: "Require a tag and its value"
    • Tag name: CostCenter | Tag value: NordvexProd
  3. [CLI] Confirme as atribuições:
az policy assignment list --resource-group nordvex-rg --output table
# Deve retornar ao menos 2 entradas
  1. [Portal] Tente criar um Storage Account em West US dentro de nordvex-rg e observe o erro de violação de política.

Etapa 10 — Configurar bloqueios de recursos

Contexto: Nenhum membro da equipe deve ser capaz de excluir o grupo de recursos de produção acidentalmente, mesmo com permissões de Contributor.

Tarefas:

  1. [Portal] Adicione o bloqueio. Navegue até: nordvex-rg → Settings → Locks → Add
    • Lock name: nordvex-lock-delete | Lock type: Delete
    • Notes: Producao protegida contra exclusao acidental
  2. [CLI] Confirme:
az lock list --resource-group nordvex-rg --output table
# lockType = CanNotDelete, name = nordvex-lock-delete
  1. [Portal] Logado como nordvex-ops-user (Contributor), tente excluir nordvex-rg e observe o bloqueio.

Etapa 11 — Aplicar e gerenciar tags em recursos

Contexto: O CFO exige visibilidade granular dos custos por centro de custo e ambiente.

Tarefas:

  1. [CLI] Aplique as três tags ao grupo de recursos:
az group update --name nordvex-rg \
--tags CostCenter=NordvexProd Environment=Production ManagedBy=CloudOps
  1. [Portal] Confirme as tags. Navegue até: nordvex-rg → Tags
  2. [CLI] Verifique tags dos recursos dentro do grupo:
az resource list --resource-group nordvex-rg --query "[].{name:name, tags:tags}" --output json

Critérios de Validação:

az group show --name nordvex-rg --query tags
# Esperado:
# {
# "CostCenter": "NordvexProd",
# "Environment": "Production",
# "ManagedBy": "CloudOps"
# }

Etapa 12 — Gerenciar grupos de recursos

Contexto: A Nordvex decidiu separar os recursos de rede em um grupo de recursos dedicado, seguindo a arquitetura de landing zone.

Tarefas:

  1. [CLI] Crie o grupo de recursos de rede:
az group create --name nordvex-net-rg --location eastus \
--tags CostCenter=NordvexProd Environment=Production ManagedBy=CloudOps
  1. [Portal] Crie uma VNet básica dentro de nordvex-rg. Navegue até: Virtual networks → Create
    • Name: nordvex-vnet-temp | Resource group: nordvex-rg | Address space: 10.0.0.0/16
  2. [Portal] Mova a VNet para nordvex-net-rg. Navegue até: nordvex-vnet-temp → Overview → Move → Move to another resource group

Critérios de Validação:

az group list --query "[?starts_with(name,'nordvex')]" --output table
# Deve retornar: nordvex-rg, nordvex-net-rg, nordvex-dev-rg

az network vnet list --resource-group nordvex-net-rg --output table
# Deve retornar nordvex-vnet-temp após a movimentação

Etapa 13 — Gerenciar assinaturas

Contexto: A equipe financeira precisa garantir que as assinaturas usadas no projeto tenham metadados corretos.

Tarefas:

  1. [CLI] Liste assinaturas:
az account list --output table
  1. [Portal] Renomeie a assinatura. Navegue até: Subscriptions → <assinatura> → Overview → Rename
    • Novo nome: Nordvex-Production
  2. [CLI] Defina a assinatura ativa e confirme:
az account set --subscription <id>
az account show --query "{name:name, id:id, tenantId:tenantId}" --output json

Etapa 14 — Gerenciar custos com alertas, orçamentos e Azure Advisor

Contexto: O orçamento aprovado para o primeiro trimestre é de USD 500. O time financeiro precisa de alertas automáticos em 80% e 100%.

Tarefas:

  1. [Portal] Crie o orçamento. Navegue até: Cost Management + Billing → Cost Management → Budgets → Add
    • Scope: nordvex-rg | Name: nordvex-budget-q1 | Amount: USD 500 | Reset period: Monthly
    • Alert at 80%: e-mail para nordvex-ops-user
  2. [Portal] Revise recomendações. Navegue até: Advisor → Cost
  3. [Portal] Adicione alerta em 100% no mesmo orçamento.

Critérios de Validação:

dica
  • O orçamento nordvex-budget-q1 deve aparecer com Status = Active.
  • Ao menos 2 alertas de limite configurados (80% e 100%).

Etapa 15 — Configurar grupos de gerenciamento

Contexto: A Nordvex possui duas assinaturas e precisa aplicar políticas corporativas de forma centralizada.

Tarefas:

  1. [Portal] Crie o management group. Navegue até: Management groups → Start using management groups → Add management group
    • Management group ID: nordvex-mg
    • Display name: Nordvex Management Group
  2. [Portal] Mova a assinatura de produção para o grupo. Navegue até: nordvex-mg → Add subscription
  3. [CLI] Confirme a estrutura:
az account management-group show --name nordvex-mg --expand --recurse --output json
# Deve retornar o grupo com ao menos 1 assinatura filha em "children"

Domínio 2 — Storage

Etapa 16 — Configurar firewalls e redes virtuais do Azure Storage

Contexto: A conta de armazenamento central para logs deve ter acesso restrito à rede virtual, bloqueando acesso público por padrão.

Tarefas:

  1. [CLI] Crie a conta de armazenamento principal:
az storage account create \
--name nordvexstg \
--resource-group nordvex-rg \
--location eastus \
--sku Standard_LRS \
--kind StorageV2 \
--allow-blob-public-access false \
--tags CostCenter=NordvexProd Environment=Production
  1. [Portal] Restrinja o acesso de rede. Navegue até: nordvexstg → Security + networking → Networking → Firewalls and virtual networks
    • Public network access: Enabled from selected virtual networks and IP addresses
    • Adicione nordvex-vnet-temp como rede permitida
  2. [Portal] Adicione o IP público da sua estação de trabalho na seção Address ranges.

Critérios de Validação:

az storage account show --name nordvexstg --resource-group nordvex-rg \
--query "networkRuleSet" --output json
# defaultAction deve ser "Deny"
# A VNet deve aparecer em virtualNetworkRules

Etapa 17 — Criar e usar tokens SAS

Contexto: O sistema de telemetria das subestações precisa fazer upload de logs para um contêiner Blob sem usar as chaves de conta.

Tarefas:

  1. [Portal] Crie o contêiner de logs. Navegue até: nordvexstg → Data storage → Containers → + Container
    • Name: nordvex-logs | Public access level: Private
  2. [Portal] Gere o token SAS. Navegue até: nordvexstg → Security + networking → Shared access signature
ParâmetroValor
Allowed servicesBlob only
Allowed resource typesObject only
Allowed permissionsRead, Write
Expiry24 horas a partir de agora
Allowed protocolsHTTPS only
  1. [CLI] Faça upload de um arquivo de teste:
az storage blob upload \
--account-name nordvexstg \
--container-name nordvex-logs \
--name teste.log \
--file ./teste.log \
--sas-token "<token-gerado-no-portal>"

Critérios de Validação:

az storage blob list --account-name nordvexstg \
--container-name nordvex-logs --sas-token "<token>" --output table
# Deve retornar o arquivo de teste

Etapa 18 — Configurar políticas de acesso armazenadas

Contexto: A Nordvex precisa revogar o acesso SAS sem esperar a expiração, usando uma Stored Access Policy.

Tarefas:

  1. [Portal] Crie a política. Navegue até: nordvexstg → Containers → nordvex-logs → Access policy → Add policy
    • Identifier: nordvex-log-policy | Permissions: Read, Write | Expiry: 7 dias
  2. [CLI] Gere um SAS vinculado à política:
az storage container generate-sas \
--account-name nordvexstg \
--name nordvex-logs \
--policy-name nordvex-log-policy \
--output tsv

Critérios de Validação:

dica
  • A política nordvex-log-policy deve aparecer listada em Access policy do contêiner nordvex-logs.
  • O token SAS gerado deve conter o parâmetro si=nordvex-log-policy na URL.

Etapa 19 — Gerenciar chaves de acesso

Contexto: A equipe de segurança detectou que a chave primária foi usada em um script legado. Rotação imediata é obrigatória.

Tarefas:

  1. [Portal] Visualize as chaves. Navegue até: nordvexstg → Security + networking → Access keys
  2. [Portal] Regenere a key1. Clique em Rotate key ao lado de key1. Capture o novo valor.
  3. [CLI] Confirme:
az storage account keys list \
--account-name nordvexstg \
--resource-group nordvex-rg \
--output table

Critérios de Validação:

dica
  • O comando deve retornar dois objetos: key1 e key2.
  • A operação deve aparecer no Activity log do nordvex-rg como evento "regenerateKey".

Etapa 20 — Configurar acesso baseado em identidade para Azure Files

Contexto: O departamento de redes precisa de um compartilhamento SMB com autenticação baseada em identidade do Microsoft Entra ID.

Tarefas:

  1. [Portal] Crie o file share. Navegue até: nordvexstg → Data storage → File shares → + File share
    • Name: nordvex-share | Quota: 50 GiB | Tier: Transaction optimized
  2. [Portal] Habilite autenticação Entra ID. Navegue até: nordvexstg → Data management → Configuration → Identity-based access → Microsoft Entra Kerberos
  3. [Portal] Atribua papel SMB. Navegue até: nordvexstg → File shares → nordvex-share → Access control (IAM) → Add role assignment
    • Role: Storage File Data SMB Share Contributor | Assignee: nordvex-net-group

Critérios de Validação:

az storage share-rm show --storage-account nordvexstg \
--resource-group nordvex-rg --name nordvex-share --output json
# enabledProtocols deve conter SMB

Etapa 21 — Criar conta de armazenamento de arquivamento

Contexto: A Nordvex precisa de uma conta secundária para arquivamento de longo prazo de dados de faturamento com redundância geográfica.

Tarefas:

  1. [CLI] Crie a conta de arquivamento:
az storage account create \
--name nordvexarchive \
--resource-group nordvex-rg \
--location brazilsouth \
--sku Standard_GRS \
--kind StorageV2 \
--access-tier Cool \
--tags CostCenter=NordvexProd Environment=Production
  1. [Portal] Confirme. Navegue até: nordvexarchive → Overview
    • Redundancy: GRS (Geo-redundant storage) | Access tier: Cool

Critérios de Validação:

az storage account show --name nordvexarchive --resource-group nordvex-rg \
--query "{sku:sku.name, kind:kind, accessTier:accessTier}" --output json
# Esperado: {"sku": "Standard_GRS", "kind": "StorageV2", "accessTier": "Cool"}

Etapa 22 — Configurar redundância do Azure Storage

Contexto: O time de continuidade de negócios determinou que nordvexstg precisa ser atualizada para ZRS.

Tarefas:

  1. [Portal] Altere a redundância. Navegue até: nordvexstg → Data management → Redundancy
    • Altere de LRS para Zone-redundant storage (ZRS)

Critérios de Validação:

az storage account show --name nordvexstg --resource-group nordvex-rg \
--query "sku.name" --output tsv
# Deve retornar: Standard_ZRS

Etapa 23 — Configurar replicação de objeto

Contexto: Os logs do contêiner nordvex-logs devem ser replicados automaticamente para a conta de arquivamento.

Tarefas:

  1. [Portal] Habilite versionamento em ambas as contas (pré-requisito para replicação).
    • nordvexstg → Data protection → Enable versioning for blobs
    • Repita para nordvexarchive
  2. [Portal] Crie a regra de replicação. Navegue até: nordvexstg → Data management → Object replication → Create replication rules
    • Destination account: nordvexarchive
    • Source container: nordvex-logs
    • Destination container: nordvex-logs-replica (criar novo)

Critérios de Validação:

dica
  • Object replication de nordvexstg deve exibir ao menos 1 política com status Enabled.
  • O contêiner nordvex-logs-replica deve existir em nordvexarchive.

Etapa 24 — Configurar criptografia de conta de armazenamento (CMK)

Contexto: O departamento jurídico exige chaves gerenciadas pelo cliente (CMK) para conformidade regulatória.

Tarefas:

  1. [Portal] Crie o Key Vault. Navegue até: Key vaults → Create
    • Name: nordvex-kv | Resource group: nordvex-rg | Region: East US | Soft delete: Enabled
  2. [Portal] Crie a chave. Navegue até: nordvex-kv → Objects → Keys → Generate/Import
    • Name: nordvex-storage-key | Key type: RSA | Key size: 2048
  3. [Portal] Configure CMK. Navegue até: nordvexstg → Security + networking → Encryption
    • Encryption type: Customer-managed keys
    • Key vault: nordvex-kv | Key: nordvex-storage-key

Critérios de Validação:

az storage account show --name nordvexstg --resource-group nordvex-rg \
--query "encryption.keySource" --output tsv
# Deve retornar: Microsoft.Keyvault

Etapa 25 — Gerenciar dados com AzCopy

Contexto: A equipe de operações precisa transferir em massa arquivos de log históricos para o contêiner nordvex-logs.

Pré-requisito

AzCopy v10+ instalado localmente. Verifique com: azcopy --version

Tarefas:

  1. [CLI] Faça upload via AzCopy:
azcopy copy "./logs-locais/*" \
"https://nordvexstg.blob.core.windows.net/nordvex-logs?<SAS-token>" \
--recursive
  1. [Portal] Confirme os arquivos. Navegue até: nordvexstg → Storage browser → Blob containers → nordvex-logs
  2. [CLI] Liste os objetos:
azcopy list "https://nordvexstg.blob.core.windows.net/nordvex-logs?<SAS-token>"

Etapa 26 — Criar e configurar compartilhamento de arquivos no Azure Files

Contexto: O compartilhamento nordvex-share precisa de um diretório de trabalho para organizar os arquivos das subestações.

Tarefas:

  1. [Portal] Crie um diretório. Navegue até: nordvexstg → File shares → nordvex-share → + Add directory
    • Name: subestacoes
  2. [Portal] Faça upload de um arquivo de teste para o diretório subestacoes.
  3. [CLI] Confirme:
az storage file list \
--share-name nordvex-share \
--account-name nordvexstg \
--path subestacoes \
--output table
# Deve retornar ao menos 1 arquivo

Etapa 27 — Criar e configurar contêiner no Azure Blob Storage

Contexto: A Nordvex precisa de um contêiner para armazenar imagens de backup de configuração das subestações.

Tarefas:

  1. [Portal] Crie o contêiner de backups. Navegue até: nordvexstg → Data storage → Containers → + Container
    • Name: nordvex-backups | Public access level: Private
  2. [CLI] Faça upload usando a account key capturada na Etapa 19:
az storage blob upload \
--account-name nordvexstg \
--container-name nordvex-backups \
--name backup-test.img \
--file ./backup-test.img \
--account-key "<key1-capturada-na-etapa-19>"

Critérios de Validação:

az storage container list --account-name nordvexstg --output table
# Deve retornar: nordvex-logs, nordvex-backups

Etapa 28 — Configurar camadas de armazenamento

Contexto: Backups com mais de 30 dias devem ir para Cool e após 90 dias para Archive, reduzindo custos.

Tarefas:

  1. [Portal] Altere a camada de um blob manualmente. Navegue até: nordvexstg → Storage browser → Blob containers → nordvex-backups → <blob> → Change tier → Cool
  2. [CLI] Mova um blob para Archive:
az storage blob set-tier \
--account-name nordvexstg \
--container-name nordvex-backups \
--name backup-test.img \
--tier Archive

Critérios de Validação:

az storage blob show --account-name nordvexstg \
--container-name nordvex-backups --name backup-test.img \
--query "properties.blobTier" --output tsv
# Deve retornar: Archive

Etapa 29 — Configurar exclusão reversível para blobs e contêineres

Contexto: A soft delete deve ser habilitada em todas as contas de produção com retenção de 14 dias.

Tarefas:

  1. [Portal] Habilite soft delete para blobs. Navegue até: nordvexstg → Data protection → Enable soft delete for blobs
    • Retention period: 14 days
  2. [Portal] Habilite soft delete para contêineres. Navegue até: nordvexstg → Data protection → Enable soft delete for containers
    • Retention period: 7 days
  3. [CLI] Confirme:
az storage account blob-service-properties show \
--account-name nordvexstg --resource-group nordvex-rg \
--query "{blobSoftDelete:deleteRetentionPolicy, containerSoftDelete:containerDeleteRetentionPolicy}"
# blobSoftDelete: enabled=true, days=14
# containerSoftDelete: enabled=true, days=7

Etapa 30 — Configurar snapshots e exclusão reversível para Azure Files

Contexto: O compartilhamento nordvex-share deve ter proteção contra exclusão acidental.

Nota sobre backup integrado

O backup completo do Azure Files via Recovery Services Vault será configurado na Etapa 76, quando o vault será criado. Por ora, habilite apenas a exclusão reversível e crie um snapshot manual conforme as tarefas abaixo. Após criar o vault na Etapa 76, você pode retornar aqui e habilitar o backup integrado do compartilhamento.

Tarefas:

  1. [Portal] Habilite soft delete para file shares. Navegue até: nordvexstg → Data protection → Enable soft delete for file shares
    • Retention period: 14 days
  2. [Portal] Crie um snapshot manual. Navegue até: nordvexstg → File shares → nordvex-share → Operations → Snapshots → Add snapshot
  3. [Portal] Confirme o snapshot. Navegue até: nordvex-share → Operations → Snapshots

Critérios de Validação:

dica
  • O blade Snapshots deve listar ao menos 1 snapshot com timestamp válido.
  • Data protection da conta deve mostrar soft delete para file shares habilitada com 14 days.

Etapa 31 — Configurar gerenciamento de ciclo de vida de blob

Contexto: A Nordvex quer automatizar a transição de camadas e expiração de blobs no contêiner nordvex-logs.

Tarefas:

  1. [Portal] Crie a regra de lifecycle. Navegue até: nordvexstg → Data management → Lifecycle management → Add a rule
    • Rule name: nordvex-log-lifecycle
    • Apply rule to: Blobs in nordvex-logs
CondiçãoAção
Blobs com mais de 30 diasMove to Cool storage
Blobs com mais de 90 diasMove to Archive storage
Blobs com mais de 365 diasDelete the blob
  1. [CLI] Confirme:
az storage account management-policy show \
--account-name nordvexstg \
--resource-group nordvex-rg
# Deve conter nordvex-log-lifecycle com 3 ações

Etapa 32 — Configurar versionamento de blob

Contexto: O versionamento foi habilitado como pré-requisito na Etapa 23. Agora você deve validar o comportamento.

Tarefas:

  1. [Portal] Confirme que o versionamento está habilitado. Navegue até: nordvexstg → Data protection → Enable versioning for blobs
  2. [CLI] Faça upload do mesmo arquivo duas vezes com conteúdo diferente:
echo "Versao 1" > arquivo-versao.txt
az storage blob upload --account-name nordvexstg \
--container-name nordvex-logs --name arquivo-versao.txt \
--file ./arquivo-versao.txt --overwrite

echo "Versao 2" > arquivo-versao.txt
az storage blob upload --account-name nordvexstg \
--container-name nordvex-logs --name arquivo-versao.txt \
--file ./arquivo-versao.txt --overwrite
  1. [CLI] Liste as versões:
az storage blob list --account-name nordvexstg \
--container-name nordvex-logs --include v --output table
# Deve retornar ao menos 2 entradas para arquivo-versao.txt com versionId distintos

Domínio 3 — Infraestrutura como Código (IaC)

Pré-requisito

az bicep install && az bicep version — Execute antes de iniciar esta seção.

Etapa 33 — Interpretar templates ARM e arquivos Bicep

Contexto: O time de plataforma recebeu um template ARM legado de um fornecedor. Antes de executar, você deve analisar os parâmetros, recursos e dependências declarados.

Tarefas:

  1. [Portal] Exporte o template ARM de uma implantação anterior. Navegue até: nordvex-rg → Deployments → <implantação> → Template → Download
  2. [IaC] Analise o template exportado e identifique:
    • Quantos recursos são declarados na seção resources
    • Quais parâmetros possuem defaultValue
    • Quais dependências explícitas (dependsOn) estão presentes
  3. [CLI] Converta para Bicep:
az bicep decompile --file template.json
az bicep build --file template.bicep

Etapa 34 — Modificar template ARM existente

Contexto: O template ARM precisa ser modificado para adicionar a tag CostCenter: NordvexProd a todos os recursos.

Tarefas:

  1. [IaC] Adicione o bloco tags com CostCenter: NordvexProd em cada recurso na seção resources.
  2. [IaC] Adicione um parâmetro environment do tipo string com defaultValue: "Production" e utilize-o como valor da tag Environment.
  3. [CLI] Valide:
az deployment group validate \
--resource-group nordvex-rg \
--template-file template-modificado.json
# Deve retornar "provisioningState": "Succeeded"

Etapa 35 — Modificar arquivo Bicep existente

Contexto: O arquivo Bicep precisa ser expandido para incluir uma conta de armazenamento adicional.

Tarefas:

  1. [IaC] Adicione no arquivo .bicep um novo recurso de storage:
resource nordvexBicepStorage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: 'nordvexbicep'
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
tags: { CostCenter: 'NordvexProd', Environment: environment }
}

output storageAccountId string = nordvexBicepStorage.id
  1. [CLI] Valide:
az bicep build --file template.bicep

Etapa 36 — Implantar recursos com template Bicep

Contexto: Com o template Bicep validado, execute a implantação real no grupo de recursos de produção.

Tarefas:

  1. [CLI] Execute a implantação:
az deployment group create \
--resource-group nordvex-rg \
--template-file template.bicep \
--parameters environment=Production \
--name nordvex-bicep-deploy
  1. [CLI] Capture o output:
az deployment group show \
--resource-group nordvex-rg \
--name nordvex-bicep-deploy \
--query "properties.provisioningState" --output tsv
# Deve retornar: Succeeded

Etapa 37 — Exportar implantação como template ARM

Contexto: O time de DR precisa de um template versionado do ambiente atual para recriar a infraestrutura em caso de desastre.

Tarefas:

  1. [Portal] Exporte o template do grupo inteiro. Navegue até: nordvex-rg → Automation → Export template → Download
  2. [CLI] Exporte via CLI:
az group export --name nordvex-rg > nordvex-rg-export.json

Critérios de Validação:

dica
  • O arquivo exportado deve conter ao menos 3 recursos distintos na seção resources.
  • Verificação de JSON válido: cat nordvex-rg-export.json | python3 -m json.tool

Domínio 4 — Compute e Contêineres

Pré-requisito para Etapas 45–46

Docker Desktop instalado e em execução. Verifique com: docker --version

Etapa 38 — Criar uma máquina virtual

Contexto: O sistema SCADA da Nordvex precisa de uma VM Windows Server para rodar o software legado de monitoramento das subestações.

Tarefas:

  1. [CLI] Crie a VM SCADA:
az vm create \
--name nordvex-vm-scada \
--resource-group nordvex-rg \
--location eastus \
--image Win2022Datacenter \
--size Standard_B2s \
--admin-username nordvexadmin \
--admin-password "<senha-segura>" \
--os-disk-sku Premium_LRS \
--vnet-name nordvex-vnet-temp \
--vnet-resource-group nordvex-net-rg \
--subnet default \
--tags CostCenter=NordvexProd Environment=Production
  1. [Portal] Capture o IP privado. Navegue até: nordvex-vm-scada → Networking → Network interface

Critérios de Validação:

az vm show --name nordvex-vm-scada --resource-group nordvex-rg \
--show-details --query "powerState" --output tsv
# Deve retornar: VM running

Etapa 39 — Configurar criptografia em host para VMs

Contexto: O requisito de conformidade exige que todos os dados temporários no host sejam criptografados.

Tarefas:

  1. [CLI] Registre o feature (uma vez por assinatura):
az feature register --name EncryptionAtHost --namespace Microsoft.Compute
# Aguarde até retornar "state": "Registered"
az feature show --name EncryptionAtHost --namespace Microsoft.Compute
  1. [CLI] Pare e desaloque a VM:
az vm deallocate --name nordvex-vm-scada --resource-group nordvex-rg
  1. [CLI] Habilite a criptografia em host:
az vm update --name nordvex-vm-scada --resource-group nordvex-rg \
--set securityProfile.encryptionAtHost=true

Critérios de Validação:

az vm show --name nordvex-vm-scada --resource-group nordvex-rg \
--query "securityProfile.encryptionAtHost" --output tsv
# Deve retornar: True

Etapa 40 — Mover VM para outro grupo de recursos

Contexto: A VM SCADA deve ser movida para nordvex-net-rg, junto com os recursos de rede.

Tarefas:

  1. [Portal] Mova a VM. Navegue até: nordvex-vm-scada → Overview → Move → Move to another resource group
    • Destination resource group: nordvex-net-rg

Critérios de Validação:

az vm list --resource-group nordvex-net-rg --output table
# Deve exibir nordvex-vm-scada

az vm list --resource-group nordvex-rg --output table
# Não deve exibir nordvex-vm-scada

Etapa 41 — Gerenciar tamanhos de VM

Contexto: O software SCADA passou por atualização e exige mais memória. A VM precisa ser redimensionada para Standard_B4ms.

Tarefas:

  1. [CLI] Liste os tamanhos disponíveis:
az vm list-vm-resize-options --name nordvex-vm-scada --resource-group nordvex-net-rg --output table
  1. [Portal] Redimensione. Navegue até: nordvex-vm-scada → Availability + scale → Size → Standard_B4ms → Resize
informação

A VM será reiniciada automaticamente durante o redimensionamento.

Critérios de Validação:

az vm show --name nordvex-vm-scada --resource-group nordvex-net-rg \
--query "hardwareProfile.vmSize" --output tsv
# Deve retornar: Standard_B4ms

Etapa 42 — Gerenciar discos de VM

Contexto: O software SCADA exige um disco de dados dedicado de 128 GB para arquivos de histórico de telemetria.

Tarefas:

  1. [Portal] Adicione disco de dados. Navegue até: nordvex-vm-scada → Settings → Disks → + Create and attach a new disk
ParâmetroValor
Disk namenordvex-disk-scada
Size128 GiB
Disk typePremium SSD
Host cachingRead-only

Critérios de Validação:

az disk show --name nordvex-disk-scada --resource-group nordvex-net-rg \
--query "{size:diskSizeGb, sku:sku.name}" --output json
# Esperado: {"size": 128, "sku": "Premium_LRS"}

Etapa 43 — Implantar VMs em zonas de disponibilidade e conjuntos de disponibilidade

Contexto: O sistema de despacho de carga exige alta disponibilidade com uma segunda VM em zona diferente.

Tarefas:

  1. [CLI] Crie a VM de despacho em zona 1:
az vm create \
--name nordvex-vm-dispatch \
--resource-group nordvex-net-rg \
--location eastus \
--zone 1 \
--image Ubuntu2204 \
--size Standard_B2s \
--admin-username nordvexadmin \
--generate-ssh-keys \
--tags CostCenter=NordvexProd
  1. [CLI] Crie um availability set:
az availability-set create \
--name nordvex-avset \
--resource-group nordvex-net-rg \
--location eastus \
--platform-fault-domain-count 2 \
--platform-update-domain-count 5

Critérios de Validação:

az vm show --name nordvex-vm-dispatch --resource-group nordvex-net-rg \
--query "zones" --output tsv
# Deve retornar: 1

Etapa 44 — Implantar e configurar Azure Virtual Machine Scale Sets

Contexto: O portal web interno precisa de escalabilidade automática baseada em carga de CPU.

Tarefas:

  1. [Portal] Crie o VMSS. Navegue até: Virtual machine scale sets → Create
ParâmetroValor
Namenordvex-vmss
Resource groupnordvex-rg
RegionEast US
ImageUbuntu Server 22.04 LTS
SizeStandard_B2s
Initial count2
Orchestration modeUniform
  1. [Portal] Configure autoscale. Navegue até: nordvex-vmss → Availability + scale → Scaling
    • Scale-out: CPU > 75% por 5 min → adicionar 1 instância
    • Scale-in: CPU < 25% por 5 min → remover 1 instância
    • Minimum: 2 | Maximum: 5

Etapa 45 — Criar e gerenciar um Azure Container Registry

Contexto: A equipe de desenvolvimento precisa de um registro privado para a imagem do sistema de faturamento.

aviso

Docker Desktop deve estar instalado e em execução.

Tarefas:

  1. [CLI] Crie o Container Registry:
az acr create \
--name nordvexacr \
--resource-group nordvex-rg \
--sku Basic \
--location eastus
  1. [CLI] Autentique e faça push:
az acr login --name nordvexacr
docker pull nginx:alpine
docker tag nginx:alpine nordvexacr.azurecr.io/billing:v1
docker push nordvexacr.azurecr.io/billing:v1

Critérios de Validação:

az acr repository list --name nordvexacr --output table
# Deve retornar: billing

Etapa 46 — Provisionar contêiner com Azure Container Instances

Contexto: Validação rápida da imagem do sistema de faturamento sem a complexidade de Kubernetes.

Tarefas:

  1. [CLI] Crie a instância:
az container create \
--name nordvex-aci-billing \
--resource-group nordvex-rg \
--image nordvexacr.azurecr.io/billing:v1 \
--registry-login-server nordvexacr.azurecr.io \
--registry-username $(az acr credential show -n nordvexacr --query username -o tsv) \
--registry-password $(az acr credential show -n nordvexacr --query "passwords[0].value" -o tsv) \
--cpu 1 --memory 1.5 \
--ports 80 \
--dns-name-label nordvexbilling \
--location eastus

Critérios de Validação:

az container show --name nordvex-aci-billing --resource-group nordvex-rg \
--query "instanceView.state" --output tsv
# Deve retornar: Running

Etapa 47 — Provisionar contêiner com Azure Container Apps

Contexto: Após validação no ACI, o sistema de faturamento vai para Container Apps com escalonamento automático.

Tarefas:

  1. [CLI] Crie o ambiente e o app:
az containerapp env create \
--name nordvex-cae \
--resource-group nordvex-rg \
--location eastus

az containerapp create \
--name nordvex-ca-billing \
--resource-group nordvex-rg \
--environment nordvex-cae \
--image nordvexacr.azurecr.io/billing:v1 \
--cpu 0.5 --memory 1Gi \
--ingress external --target-port 80 \
--min-replicas 1 --max-replicas 3

Critérios de Validação:

az containerapp show --name nordvex-ca-billing --resource-group nordvex-rg \
--query "properties.runningStatus" --output tsv
# Deve retornar: Running

Etapa 48 — Gerenciar dimensionamento de contêineres

Contexto: O Container App precisa de regras de escalonamento baseadas em requisições HTTP.

Tarefas:

  1. [Portal] Configure scaling. Navegue até: nordvex-ca-billing → Application → Scale and replicas
    • Scale rule type: HTTP concurrent requests
    • Concurrent requests limit: 10 | Min replicas: 1 | Max replicas: 5
  2. [CLI] Liste as revisões ativas:
az containerapp revision list --name nordvex-ca-billing --resource-group nordvex-rg --output table

Domínio 5 — App Service

Etapa 49 — Provisionar plano do App Service

Contexto: O portal de autoatendimento dos clientes será hospedado no Azure App Service.

Custo

App Service P1v3 gera ~USD 0,16/h. Reduza para F1 entre sessões se necessário.

Tarefas:

  1. [CLI] Crie o App Service Plan:
az appservice plan create \
--name nordvex-asp \
--resource-group nordvex-rg \
--sku P1v3 \
--is-linux \
--location eastus

Critérios de Validação:

az appservice plan show --name nordvex-asp --resource-group nordvex-rg \
--query "{sku:sku.name, os:kind}" --output json
# Esperado: {"sku": "P1v3", "os": "linux"}

Etapa 50 — Configurar escalonamento para o App Service Plan

Contexto: O plano deve escalar automaticamente entre 1 e 3 instâncias baseado em uso de CPU.

Tarefas:

  1. [Portal] Configure autoscale. Navegue até: nordvex-asp → Settings → Scale out (App Service plan)
    • Scale mode: Custom autoscale
    • Minimum: 1 | Maximum: 3 | Default: 1
    • Scale-out: CPU > 70% por 10 min → adicionar 1 instância
    • Scale-in: CPU < 30% por 10 min → remover 1 instância

Etapa 51 — Criar um App Service

Contexto: Criar e associar o aplicativo web do portal de clientes ao plano nordvex-asp.

Tarefas:

  1. [CLI] Crie o Web App:
az webapp create \
--name nordvex-webapp \
--resource-group nordvex-rg \
--plan nordvex-asp \
--runtime "NODE:20-lts"
# O nome deve ser globalmente único — adicione sufixo se necessário
  1. [CLI] Obtenha a URL:
az webapp show --name nordvex-webapp --resource-group nordvex-rg \
--query "defaultHostName" --output tsv
# Acesse https://<defaultHostName> — deve exibir a página padrão do App Service

Etapa 52 — Configurar certificados e TLS para o App Service

Contexto: O portal deve forçar HTTPS com TLS 1.2 como versão mínima.

Tarefas:

  1. [Portal] Force HTTPS. Navegue até: nordvex-webapp → Settings → Configuration → General settings
    • HTTPS Only: On
  2. [Portal] Defina TLS mínimo. Navegue até: nordvex-webapp → Settings → TLS/SSL settings
    • Minimum TLS Version: 1.2

Critérios de Validação:

az webapp show --name nordvex-webapp --resource-group nordvex-rg \
--query "{httpsOnly:httpsOnly, minTls:siteConfig.minTlsVersion}" --output json
# Esperado: {"httpsOnly": true, "minTls": "1.2"}

Etapa 53 — Mapear DNS personalizado para o App Service

Contexto: O portal deve ser acessível pelo domínio portal.nordvex.internal. Você deve documentar os registros DNS necessários.

Tarefas:

  1. [Portal] Acesse o blade de domínios. Navegue até: nordvex-webapp → Settings → Custom domains → Add custom domain
  2. [Portal] Observe e documente os registros DNS necessários:
    • TXT record de verificação
    • Endereço IP do App Service para registro A
  3. [Portal] Se você possuir um domínio para teste, complete o mapeamento. Caso contrário, documente os valores exibidos.

Etapa 54 — Configurar backup para o App Service

Contexto: Backups automáticos semanais devem ser configurados usando a conta de armazenamento existente.

Tarefas:

  1. [Portal] Configure o backup. Navegue até: nordvex-webapp → Settings → Backups → Configure
    • Storage account: nordvexstg | Container: nordvex-backups
    • Backup frequency: Weekly | Time: 02:00 UTC | Retention: 4 backups
  2. [Portal] Execute um backup imediato: Backups → Backup now

Critérios de Validação:

dica
  • O blade Backups deve exibir ao menos 1 entrada com status Succeeded.
  • O contêiner nordvex-backups deve conter os arquivos de backup gerados.

Etapa 55 — Configurar rede para o App Service

Contexto: O portal não deve ser acessível pela internet pública. O acesso deve ser restrito à VNet via VNet Integration.

Tarefas:

  1. [Portal] Adicione sub-rede na VNet. Navegue até: nordvex-vnet-temp → Subnets → + Subnet
    • Name: nordvex-snet-app | Address range: 10.0.2.0/24
  2. [Portal] Configure VNet Integration. Navegue até: nordvex-webapp → Settings → Networking → VNet integration → Add VNet integration
    • Virtual network: nordvex-vnet-temp | Subnet: nordvex-snet-app
  3. [CLI] Confirme:
az webapp vnet-integration list \
--name nordvex-webapp \
--resource-group nordvex-rg \
--output table

Etapa 56 — Configurar slots de implantação para o App Service

Contexto: A Nordvex adota blue-green deployment. O App Service deve ter um slot de staging para validação antes da promoção para produção.

Tarefas:

  1. [Portal] Crie o slot de staging. Navegue até: nordvex-webapp → Deployment → Deployment slots → Add slot
    • Name: staging | Clone settings from: nordvex-webapp (production)
  2. [Portal] Acesse a URL do slot: https://nordvex-webapp-staging.azurewebsites.net
  3. [Portal] Execute um swap. Navegue até: nordvex-webapp → Deployment → Deployment slots → Swap
    • Source: staging | Target: production

Critérios de Validação:

dica
  • O blade Deployment slots deve exibir 2 slots: production e staging.
  • Após o swap, a URL de produção deve corresponder ao conteúdo que estava no slot staging.

Domínio 6 — Redes

Etapa 57 — Criar e configurar redes virtuais e sub-redes

Contexto: Uma nova VNet de produção deve ser criada com espaço de endereços planejado e sub-redes segmentadas por função.

Tarefas:

  1. [CLI] Crie a VNet de produção:
az network vnet create \
--name nordvex-vnet \
--resource-group nordvex-net-rg \
--location eastus \
--address-prefix 10.1.0.0/16
  1. [Portal] Crie as sub-redes. Navegue até: nordvex-vnet → Subnets → + Subnet
Nome da Sub-redePrefixoFinalidade
nordvex-snet-vm10.1.1.0/24VMs de produção
nordvex-snet-app10.1.2.0/24App Service Integration
nordvex-snet-data10.1.3.0/24Recursos de dados e Key Vault
AzureBastionSubnet10.1.0.0/27Obrigatório para Azure Bastion (nome exato)

Critérios de Validação:

az network vnet subnet list --vnet-name nordvex-vnet \
--resource-group nordvex-net-rg --output table
# Deve retornar 4 sub-redes

Etapa 58 — Criar e configurar peering de rede virtual

Contexto: Para que os recursos da nordvex-vnet e nordvex-vnet-temp se comuniquem, é necessário peering bidirecional.

Tarefas:

  1. [Portal] Crie o peering. Navegue até: nordvex-vnet → Peerings → + Add
    • Peering link name (local): nordvex-peer-vnet-to-temp
    • Peering link name (remote): nordvex-peer-temp-to-vnet
    • Virtual network: nordvex-vnet-temp
    • Allow virtual network access: Enabled (ambas as direções)

Critérios de Validação:

az network vnet peering list --vnet-name nordvex-vnet --resource-group nordvex-net-rg --output table
az network vnet peering list --vnet-name nordvex-vnet-temp --resource-group nordvex-net-rg --output table
# Ambos devem retornar peeringState = Connected

Etapa 59 — Configurar IPs públicos

Contexto: O load balancer da Etapa 68 precisa de um IP público estático para configuração de DNS com registro fixo.

Tarefas:

  1. [CLI] Crie o IP público:
az network public-ip create \
--name nordvex-pip-lb \
--resource-group nordvex-net-rg \
--sku Standard \
--allocation-method Static \
--version IPv4 \
--dns-name nordvexlb \
--location eastus

Critérios de Validação:

az network public-ip show --name nordvex-pip-lb --resource-group nordvex-net-rg \
--query "allocationMethod" --output tsv
# Deve retornar: Static

Etapa 60 — Configurar rotas definidas pelo usuário (UDR)

Contexto: O tráfego de saída da sub-rede de VMs deve passar por um appliance de segurança simulado antes de sair para a internet.

Tarefas:

  1. [CLI] Crie a tabela de rotas e a rota:
az network route-table create \
--name nordvex-rt \
--resource-group nordvex-net-rg \
--location eastus

az network route-table route create \
--route-table-name nordvex-rt \
--resource-group nordvex-net-rg \
--name nordvex-route-internet \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address 10.1.1.254
  1. [Portal] Associe a tabela à sub-rede. Navegue até: nordvex-vnet → Subnets → nordvex-snet-vm → Route table → nordvex-rt → Save

Etapa 61 — Solucionar problemas de conectividade de rede

Contexto: A equipe relatou que nordvex-vm-dispatch não consegue se comunicar com nordvex-vm-scada. Use ferramentas de diagnóstico do Azure para identificar a causa.

Tarefas:

  1. [Portal] Teste o fluxo de IP. Navegue até: Network Watcher → IP flow verify
    • VM: nordvex-vm-dispatch | Direction: Inbound | Protocol: TCP | Port: 22
    • Remote IP: IP privado de nordvex-vm-scada
  2. [Portal] Verifique o próximo salto. Navegue até: Network Watcher → Next hop
  3. [Portal] Documente o resultado e identifique qual NSG ou rota está causando o bloqueio.

Etapa 62 — Criar e configurar NSGs e grupos de segurança de aplicativo

Contexto: O NSG deve limitar o acesso: apenas o Bastion pode conectar via RDP/SSH e as VMs podem se comunicar entre si na porta 80.

Tarefas:

  1. [CLI] Crie o NSG e as regras:
az network nsg create \
--name nordvex-nsg-vm \
--resource-group nordvex-net-rg

# Permitir SSH do Bastion:
az network nsg rule create --nsg-name nordvex-nsg-vm --resource-group nordvex-net-rg \
--name AllowBastionSSH --priority 100 --direction Inbound \
--protocol Tcp --destination-port-ranges 22 \
--source-address-prefixes AzureBastionSubnet --access Allow

# Permitir RDP do Bastion:
az network nsg rule create --nsg-name nordvex-nsg-vm --resource-group nordvex-net-rg \
--name AllowBastionRDP --priority 110 --direction Inbound \
--protocol Tcp --destination-port-ranges 3389 \
--source-address-prefixes AzureBastionSubnet --access Allow

# Permitir HTTP entre VMs:
az network nsg rule create --nsg-name nordvex-nsg-vm --resource-group nordvex-net-rg \
--name AllowVNetHTTP --priority 200 --direction Inbound \
--protocol Tcp --destination-port-ranges 80 \
--source-address-prefixes VirtualNetwork --access Allow

# Negar todo o restante:
az network nsg rule create --nsg-name nordvex-nsg-vm --resource-group nordvex-net-rg \
--name DenyAllInbound --priority 4096 --direction Inbound \
--protocol "*" --destination-port-ranges "*" \
--source-address-prefixes "*" --access Deny
  1. [Portal] Associe o NSG à sub-rede. Navegue até: nordvex-nsg-vm → Settings → Subnets → Associate → nordvex-vnet → nordvex-snet-vm

Etapa 63 — Avaliar regras de segurança efetivas em NSGs

Contexto: O auditor solicitou uma visualização das regras efetivas aplicadas à interface de rede da VM SCADA.

Tarefas:

  1. [Portal] Visualize regras efetivas. Navegue até: nordvex-vm-scada → Networking → Network interface → <nic-name> → Effective security rules
  2. [CLI] Capture as regras em JSON:
az network nic list-effective-nsg \
--name <nome-da-nic> \
--resource-group nordvex-net-rg \
--output json

Etapa 64 — Implementar o Azure Bastion

Contexto: O acesso administrativo às VMs deve ser feito exclusivamente via Azure Bastion, sem expor portas de gerenciamento à internet.

Custo

Azure Bastion Basic gera ~USD 0,19/h. Delete o recurso após uso durante o laboratório.

Tarefas:

  1. [Portal] Crie o Bastion. Navegue até: nordvex-vnet → Bastion → Create Azure Bastion
    • Name: nordvex-bastion | SKU: Basic
    • Subnet: AzureBastionSubnet (criada na Etapa 57)
    • Public IP: Create new → nordvex-pip-bastion
  2. [Portal] Após a criação (~5–10 min), acesse nordvex-vm-dispatch via Bastion. Navegue até: nordvex-vm-dispatch → Connect → Bastion

Critérios de Validação:

az network bastion show --name nordvex-bastion --resource-group nordvex-net-rg \
--query "provisioningState" --output tsv
# Deve retornar: Succeeded

Etapa 65 — Configurar endpoints de serviço para PaaS do Azure

Contexto: A conta nordvexstg deve ser acessível apenas a partir da sub-rede de dados, sem passar pela internet pública.

Tarefas:

  1. [Portal] Adicione o service endpoint. Navegue até: nordvex-vnet → Subnets → nordvex-snet-data → Service endpoints → Add service endpoint
    • Service: Microsoft.Storage
  2. [Portal] Adicione a sub-rede ao firewall do storage. Navegue até: nordvexstg → Security + networking → Networking → Firewalls and virtual networks → Add existing virtual network
    • VNet: nordvex-vnet | Subnet: nordvex-snet-data

Critérios de Validação:

az network vnet subnet show --name nordvex-snet-data \
--vnet-name nordvex-vnet --resource-group nordvex-net-rg \
--query "serviceEndpoints[0].service" --output tsv
# Deve retornar: Microsoft.Storage

Etapa 66 — Configurar endpoints privados para PaaS do Azure

Contexto: O Key Vault nordvex-kv deve ser acessível apenas via endpoint privado dentro da VNet.

Tarefas:

  1. [Portal] Crie o private endpoint. Navegue até: nordvex-kv → Settings → Networking → Private endpoint connections → + Private endpoint
    • Name: nordvex-pe-kv | Resource group: nordvex-net-rg
    • Target sub-resource: vault
    • VNet: nordvex-vnet | Subnet: nordvex-snet-data
    • Integrate with private DNS zone: Yes
  2. [Portal] Desabilite o acesso público. Navegue até: nordvex-kv → Settings → Networking → Disable public access

Critérios de Validação:

az network private-endpoint show --name nordvex-pe-kv \
--resource-group nordvex-net-rg \
--query "provisioningState" --output tsv
# Deve retornar: Succeeded

Etapa 67 — Configurar o Azure DNS

Contexto: O nome vm-scada.nordvex.internal deve resolver para o IP privado da VM correspondente dentro da VNet.

Tarefas:

  1. [CLI] Crie a zona DNS privada, vincule à VNet e crie o registro A:
az network private-dns zone create \
--name nordvex.internal \
--resource-group nordvex-net-rg

az network private-dns link vnet create \
--name nordvex-dns-link \
--resource-group nordvex-net-rg \
--zone-name nordvex.internal \
--virtual-network nordvex-vnet \
--registration-enabled true

az network private-dns record-set a add-record \
--zone-name nordvex.internal \
--resource-group nordvex-net-rg \
--record-set-name vm-scada \
--ipv4-address <IP-privado-da-vm-scada>

Critérios de Validação:

az network private-dns record-set a show \
--name vm-scada --zone-name nordvex.internal \
--resource-group nordvex-net-rg \
--query "aRecords[0].ipv4Address" --output tsv
# Deve retornar o IP privado da nordvex-vm-scada

Etapa 68 — Configurar load balancer público

Contexto: O sistema de despacho de carga exige distribuição de requisições entre as VMs com alta disponibilidade.

Tarefas:

  1. [Portal] Crie o Load Balancer. Navegue até: Load balancers → Create
    • Name: nordvex-lb | SKU: Standard | Type: Public
    • Frontend IP: nordvex-pip-lb (criado na Etapa 59)
  2. [Portal] Configure o backend pool. Navegue até: nordvex-lb → Backend pools → + Add
    • Adicione as NICs de nordvex-vm-scada e nordvex-vm-dispatch
  3. [Portal] Crie a regra de balanceamento. Navegue até: nordvex-lb → Load balancing rules → + Add
    • Protocol: TCP | Port: 80 | Health probe: HTTP na porta 80

Etapa 69 — Solucionar problemas de balanceamento de carga

Contexto: A sonda de integridade está reportando falha nas VMs. Identifique e corrija a causa.

Tarefas:

  1. [Portal] Verifique o health probe. Navegue até: nordvex-lb → Monitoring → Metrics → Health Probe Status
  2. [Portal] Execute Connection troubleshoot. Navegue até: Network Watcher → Connection troubleshoot
  3. [CLI] Adicione a regra de permissão para o load balancer no NSG:
az network nsg rule create --nsg-name nordvex-nsg-vm --resource-group nordvex-net-rg \
--name AllowAzureLoadBalancer --priority 150 --direction Inbound \
--protocol Tcp --destination-port-ranges 80 \
--source-address-prefixes AzureLoadBalancer --access Allow

Domínio 7 — Monitoramento

Etapa 70 — Interpretar métricas no Azure Monitor

Contexto: O time de operações precisa monitorar CPU e memória da VM SCADA em tempo real com um painel básico configurado.

Tarefas:

  1. [Portal] Acesse as métricas. Navegue até: Monitor → Metrics → Select a scope → nordvex-vm-scada
    • Adicione: Percentage CPU, Available Memory Bytes, Disk Read Bytes
  2. [Portal] Configure Percentage CPU: Aggregation = Average | Time range = Last 24 hours
  3. [Portal] Fixe o gráfico. Clique em Pin to dashboard → Create new → Name: nordvex-dashboard

Etapa 71 — Configurar definições de log no Azure Monitor

Contexto: Todos os logs de diagnóstico da VM, do storage e do Key Vault devem ser enviados para um workspace do Log Analytics.

Tarefas:

  1. [CLI] Crie o workspace:
az monitor log-analytics workspace create \
--name nordvex-law \
--resource-group nordvex-rg \
--location eastus

# Capture o workspace ID:
az monitor log-analytics workspace show --name nordvex-law \
--resource-group nordvex-rg --query customerId --output tsv
  1. [Portal] Configure diagnóstico na VM. Navegue até: nordvex-vm-scada → Monitoring → Diagnostic settings → Add diagnostic setting
    • Name: nordvex-diag-vm | Destination: nordvex-law | Categories: All logs and metrics
  2. [Portal] Repita para nordvexstg (nordvex-diag-storage) e nordvex-kv (nordvex-diag-kv).

Etapa 72 — Consultar e analisar logs no Azure Monitor

Contexto: O time de segurança precisa de consultas KQL para logins com falha e atividades recentes.

Tarefas:

  1. [Portal] Acesse os logs. Navegue até: nordvex-law → Logs
  2. [Portal] Execute a consulta de logins com falha:
SecurityEvent
| where TimeGenerated > ago(24h)
| where EventID == 4625
| summarize FailedLogins = count() by Account, Computer
| order by FailedLogins desc
  1. [Portal] Execute e salve a consulta de atividades:
AzureActivity
| where TimeGenerated > ago(1h)
| summarize count() by ResourceGroup, OperationNameValue
| order by count_ desc

Salve como: nordvex-query-activity


Etapa 73 — Configurar regras de alerta, grupos de ação e regras de processamento

Contexto: O NOC deve ser notificado quando a CPU da VM SCADA ultrapassar 90% por mais de 5 minutos.

Tarefas:

  1. [Portal] Crie o action group. Navegue até: Monitor → Alerts → Action groups → + Create
    • Name: nordvex-ag-noc | Short name: noc
    • Action type: Email/SMS | Email: nordvex-ops-user@<seudominio>
  2. [Portal] Crie a regra de alerta. Navegue até: Monitor → Alerts → Alert rules → + Create
    • Scope: nordvex-vm-scada
    • Condition: Percentage CPU > 90 (média, 5 min)
    • Action group: nordvex-ag-noc
    • Name: nordvex-alert-cpu-scada | Severity: 2
  3. [Portal] Crie uma alert processing rule para suprimir notificações nos fins de semana.

Critérios de Validação:

az monitor metrics alert show --name nordvex-alert-cpu-scada \
--resource-group nordvex-rg --query "enabled" --output tsv
# Deve retornar: True

Etapa 74 — Configurar e interpretar monitoramento com Azure Monitor Insights

Contexto: VM Insights deve ser habilitado para a VM SCADA e Storage Insights revisado para a conta principal.

Tarefas:

  1. [Portal] Habilite VM Insights. Navegue até: nordvex-vm-scada → Monitoring → Insights → Enable
    • Log Analytics workspace: nordvex-law
  2. [Portal] Após instalação do agente (até 30 min), acesse a aba Performance do VM Insights.
  3. [Portal] Acesse Storage Insights. Navegue até: nordvexstg → Monitoring → Insights

Etapa 75 — Usar o Azure Network Watcher e o Connection Monitor

Contexto: O time de redes precisa de monitoramento contínuo da conectividade entre as VMs.

Tarefas:

  1. [Portal] Confirme que o Network Watcher está habilitado. Navegue até: Network Watcher → Overview → East US → Enabled
  2. [Portal] Crie o monitor de conexão. Navegue até: Network Watcher → Connection monitor → Create
    • Name: nordvex-cm-vm
    • Source: nordvex-vm-dispatch
    • Destination: IP privado de nordvex-vm-scada | Port: 22
    • Test frequency: 30 seconds

Domínio 8 — Backup e Recuperação de Desastres

Etapa 76 — Criar um cofre dos Serviços de Recuperação

Contexto: O Recovery Services Vault é o serviço central de backup e DR da Nordvex.

informação

Este vault também habilita o backup do Azure Files configurado na Etapa 30. Após criar o vault aqui, você pode retornar à Etapa 30 e habilitar o backup integrado do compartilhamento nordvex-share.

Tarefas:

  1. [CLI] Crie o vault:
az backup vault create \
--name nordvex-rsv \
--resource-group nordvex-rg \
--location eastus
  1. [Portal] Confirme a redundância. Navegue até: nordvex-rsv → Settings → Properties → Backup configuration
    • Storage replication type: Geo-redundant

Critérios de Validação:

az backup vault show --name nordvex-rsv --resource-group nordvex-rg \
--query "properties.provisioningState" --output tsv
# Deve retornar: Succeeded

Etapa 77 — Criar um cofre de Backup do Azure

Contexto: O Azure Backup Vault é o recurso dedicado para workloads modernas (discos gerenciados, blobs, PostgreSQL).

Tarefas:

  1. [Portal] Crie o Backup Vault. Navegue até: Backup center → Vaults → + Backup vault
    • Name: nordvex-bv | Resource group: nordvex-rg | Region: East US
    • Backup storage redundancy: Geo-redundant

Critérios de Validação:

az dataprotection backup-vault list --resource-group nordvex-rg \
--query "[?name=='nordvex-bv'].provisioningState" --output tsv
# Deve retornar: Succeeded

Etapa 78 — Criar e configurar uma política de backup

Contexto: A política deve definir backup diário das VMs com retenção de 30 dias e backup semanal com retenção de 12 semanas.

Tarefas:

  1. [Portal] Crie a política. Navegue até: nordvex-rsv → Backup policies → + Add → Azure Virtual Machine
    • Policy name: nordvex-backup-policy
    • Backup frequency: Daily | Time: 02:00 UTC
    • Daily backup point retention: 30 days
    • Weekly backup point: Sunday | Retention: 12 weeks

Critérios de Validação:

az backup policy show --name nordvex-backup-policy --vault-name nordvex-rsv \
--resource-group nordvex-rg \
--query "properties.schedulePolicy.schedulePolicyType" --output tsv
# Deve retornar: SimpleSchedulePolicy

Etapa 79 — Realizar operações de backup e restauração com o Azure Backup

Contexto: A VM SCADA deve ser protegida e um backup sob demanda deve ser executado para validar o fluxo completo.

Tarefas:

  1. [Portal] Habilite a proteção. Navegue até: nordvex-rsv → Backup → Azure Virtual Machine
    • Policy: nordvex-backup-policy | Adicione nordvex-vm-scadaEnable Backup
  2. [Portal] Execute backup sob demanda. Navegue até: nordvex-rsv → Backup items → Azure Virtual Machine → nordvex-vm-scada → Backup now
    • Retain backup until: 30 days
  3. [Portal] Acompanhe o progresso. Navegue até: nordvex-rsv → Monitoring + reports → Backup jobs

Critérios de Validação:

dica
  • O blade Backup jobs deve exibir o trabalho de nordvex-vm-scada com status Completed.
  • O blade Backup items deve mostrar a VM com ao menos 1 recovery point disponível.

Etapa 80 — Configurar o Azure Site Recovery

Contexto: A VM SCADA deve ter replicação contínua para a região Brazil South como parte do plano de DR.

Custo

Site Recovery gera ~USD 0,16/VM/h enquanto ativo. Desabilite a replicação após a Etapa 81.

Tarefas:

  1. [Portal] Configure a replicação. Navegue até: nordvex-rsv → Site Recovery → Replicate
    • Source location: East US | VMs: nordvex-vm-scada
    • Target location: Brazil South
    • Target resource group: nordvex-rg-dr (criar automaticamente)
  2. [Portal] Acompanhe o progresso. Navegue até: nordvex-rsv → Site Recovery jobs

Critérios de Validação:

dica

O blade Replicated items deve exibir nordvex-vm-scada com status Protected e sincronização em 100%.


Etapa 81 — Executar failover para região secundária

Contexto: Simulado de DR. Execute um test failover para Brazil South sem interromper a VM de produção.

Tarefas:

  1. [Portal] Execute o test failover. Navegue até: nordvex-rsv → Replicated items → nordvex-vm-scada → Test failover
    • Recovery point: Latest processed
    • Azure virtual network: selecione ou crie uma VNet temporária em Brazil South
  2. [Portal] Acompanhe. Navegue até: nordvex-rsv → Site Recovery jobs
  3. [Portal] Limpe o ambiente de teste. Navegue até: nordvex-rsv → Replicated items → nordvex-vm-scada → Cleanup test failover

Critérios de Validação:

dica
  • O trabalho de Test failover deve ter status Completed.
  • A operação Cleanup test failover deve ser concluída sem erros.

Etapa 82 — Configurar e interpretar relatórios e alertas de backup

Contexto: O auditor precisa de um relatório consolidado de conformidade de backup e um alerta automático para falhas.

Tarefas:

  1. [Portal] Configure os relatórios. Navegue até: nordvex-rsv → Monitoring + reports → Backup reports → Configure
    • Log Analytics workspace: nordvex-law
  2. [Portal] Acesse o painel Summary e observe:
    • Instâncias protegidas vs. não protegidas
    • Trabalhos de backup nas últimas 24h
    • Consumo de armazenamento de backup
  3. [Portal] Crie o alerta de falha de backup. Navegue até: Monitor → Alerts → Alert rules → + Create
    • Signal type: Log (Log Analytics) | Workspace: nordvex-law
    • Consulta KQL:
AddonAzureBackupJobs
| where JobStatus == "Failed"
| where TimeGenerated > ago(1h)
  • Alert rule name: nordvex-alert-backup-failure | Severity: 1
  • Evaluation frequency: 1 hour | Action group: nordvex-ag-noc

Critérios de Validação:

az monitor scheduled-query list --resource-group nordvex-rg \
--query "[?name=='nordvex-alert-backup-failure'].enabled" --output tsv
# Deve retornar: True
dica
  • O blade Backup reports deve exibir ao menos 1 item protegido (nordvex-vm-scada).
  • A regra nordvex-alert-backup-failure deve aparecer em Monitor → Alert rules com status Enabled.

Validação Final do Ambiente

Ao concluir todas as 82 etapas, o ambiente da Nordvex deve estar composto pelos seguintes recursos:

CategoriaRecursosGrupo de Recursos
Identidade3 usuários, 2 grupos, 1 convidado, SSPRMicrosoft Entra ID
Governança2 policies, 1 lock, budget, management groupnordvex-rg
Storagenordvexstg (ZRS + CMK), nordvexarchive (GRS)nordvex-rg
Computenordvex-vm-scada, nordvex-vm-dispatch, nordvex-vmssnordvex-net-rg
Contêineresnordvexacr, nordvex-aci-billing, nordvex-ca-billingnordvex-rg
App Servicenordvex-webapp (P1v3, 2 slots)nordvex-rg
Redenordvex-vnet, NSG, LB, Bastion, DNS privado, UDRnordvex-net-rg
Monitoramentonordvex-law, alertas, Connection Monitornordvex-rg
Backup e DRnordvex-rsv, nordvex-bv, Site Recovery (Brazil South)nordvex-rg

Consulta final de validação:

az resource list \
--query "[?starts_with(resourceGroup,'nordvex')]" \
--output table | wc -l
# O resultado deve indicar ao menos 35 recursos distintos

Laboratório AZ-104 — Nordvex Energia S.A. | Prefixo: nordvex | 82 etapas | 8 domínios