Skip to main content

[AZ-104] Grand Labs - NexCorp Logistica S.A.

Ambiente Cumulativo de Implantação Real


1. O Cenario

NexCorp Logistica S.A.

A NexCorp Logistica S.A. e uma empresa brasileira de logistica e distribuicao com sede em Sao Paulo e operacoes em nove estados. Com mais de 3.200 colaboradores e uma frota gerenciada por sistemas legados on-premises, a NexCorp assinou um contrato estrategico para absorver uma operadora regional, a RapiLog Nordeste Ltda., que possui infraestrutura propria e usuarios externos que precisam de acesso temporario aos sistemas centrais.

A diretoria aprovou a migracao e expansao completa para Azure, com os seguintes requisitos tecnicos macros:

  • Unificar o gerenciamento de identidade sob o Microsoft Entra ID, absorvendo os usuarios da RapiLog como convidados externos durante o periodo de transicao.
  • Implantar uma topologia de rede hub-spoke cobrindo as regioes East US (hub corporativo) e Brazil South (spoke operacional).
  • Provisionar infraestrutura de storage segura para artefatos de deploy, arquivos de frota e dados de backup.
  • Substituir os servidores de aplicacao legados por VMs Azure e containers, com scale sets para os servicos de alto volume.
  • Garantir monitoramento centralizado, backup e recuperacao de desastres entre regioes.

Voce e o Arquiteto de Solucoes responsavel pela implantacao. Todas as etapas devem ser executadas sequencialmente, pois cada recurso criado sera dependencia da proxima etapa.


2. Ponto de Partida

Recursos Pre-existentes

RecursoEspecificacao MinimaObservacao
Subscription AzurePay-As-You-Go ou Visual StudioPermissao de Owner obrigatoria
Microsoft Entra ID TenantTenant proprio (nao guest)Licenca P1 ou P2 necessaria para SSPR
Estacao de TrabalhoWindows 11 ou Ubuntu 22.04Acesso ao Portal Azure
PowerShell7.4 ou superior com modulo Az 11.xInstall-Module Az
Azure CLI2.59 ou superioraz --version para confirmar
Bicep CLI0.26 ou superioraz bicep version
Visual Studio CodeUltima versao com extensao BicepPara edicao de templates
Git2.xPara versionamento dos templates

Credenciais Base

IdentidadeFuncao InicialObservacao
admin@<tenant>.onmicrosoft.comGlobal AdministratorSua conta principal
Conta pessoal externa (Gmail ou Outlook)Simulacao de usuario RapiLogPara testes de colaboracao B2B

Ferramentas Necessarias

  • Modulo PowerShell: Az.Accounts, Az.Resources, Az.Network, Az.Compute, Az.Storage
  • Azure Storage Explorer: versao 1.34 ou superior
  • AzCopy: v10 (standalone binary)
  • Navegador: Microsoft Edge (recomendado para Portal Azure)

Diagrama de Topologia Inicial

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

3. As Etapas do Laboratorio


Etapa 1: Create Users and Groups

Contexto de Negocios: Antes de qualquer recurso Azure ser provisionado, a equipe de identidade precisa estruturar os principals que governarao o acesso a toda a infraestrutura. Os departamentos de TI, Operacoes de Frota e Financeiro da NexCorp necessitam de grupos dedicados, e os usuarios tecnicos que executarao as proximas etapas precisam existir no Entra ID antes que qualquer atribuicao de RBAC seja feita.

Ambiente de Execucao:

TarefaAmbiente
Criacao de usuariosPortal Azure (GUI) e PowerShell (CLI)
Criacao de gruposPortal Azure (GUI)
Atribuicao de membros a gruposPortal Azure (GUI)

Tarefas:

  1. [GUI] No Microsoft Entra ID, crie os seguintes usuarios com as propriedades indicadas: nexcorp-admin-infra@<tenant> (Display Name: "Infra Admin NexCorp", Usage Location: BR), nexcorp-ops-frota@<tenant> (Display Name: "Ops Frota NexCorp", Usage Location: BR) e nexcorp-fin-analyst@<tenant> (Display Name: "Analyst Financeiro NexCorp", Usage Location: BR). Exija alteracao de senha no primeiro login para todos.

  2. [CLI] Usando PowerShell com o modulo Az, crie um quarto usuario nexcorp-dev-deploy@<tenant> (Display Name: "Deploy Agent NexCorp") com senha temporaria definida via parametro seguro, sem usar o Portal.

  3. [GUI] Crie tres grupos do tipo Security (nao Microsoft 365): NexCorp-Infra-Admins (Assigned), NexCorp-Ops-Users (Assigned) e NexCorp-FinOps (Assigned). Adicione os respectivos usuarios criados como membros diretos de cada grupo.

  4. [GUI] Crie um grupo dinamico do tipo Security chamado NexCorp-BrazilUsers com uma regra de associacao dinamica baseada na propriedade usageLocation igual a BR. Verifique que os tres usuarios com Usage Location BR foram automaticamente incluidos.

  5. [CLI] Via Azure CLI (az ad), liste todos os membros do grupo NexCorp-Infra-Admins e confirme a saida em formato JSON.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Object ID do grupo NexCorp-Infra-AdminsEntra ID, propriedades do grupoEtapa 3 (atribuicao de funcoes)
Object ID do grupo NexCorp-FinOpsEntra ID, propriedades do grupoEtapa 3 (atribuicao de funcoes)
UPN do usuario nexcorp-admin-infraEntra ID, perfil do usuarioEtapas 3, 4 e 5
Object ID do usuario nexcorp-dev-deployEntra ID, perfil do usuarioEtapa 13 (ACR e deploy)

Criterios de Sucesso:

  • No Portal, a aba Members de NexCorp-BrazilUsers exibe os tres usuarios com usageLocation = BR sem atribuicao manual.
  • O comando az ad group member list --group NexCorp-Infra-Admins retorna um array JSON com pelo menos um objeto contendo displayName.
  • Todos os quatro usuarios aparecem em Users com status Enabled e Sign-in status ativo.

Etapa 2: Manage User and Group Properties

Contexto de Negocios: Com os usuarios criados, o time de RH identificou que o perfil do nexcorp-ops-frota esta incompleto para fins de auditoria de compliance. Alem disso, o departamento de TI precisa padronizar o campo Department e Job Title em todos os usuarios tecnicos para que os relatorios de acesso reflitam a estrutura organizacional real da NexCorp.

Ambiente de Execucao:

TarefaAmbiente
Edicao de propriedadesPowerShell (CLI)
VerificacaoPortal Azure (GUI)

Tarefas:

  1. [CLI] Via PowerShell (Update-MgUser), atualize os seguintes campos para nexcorp-ops-frota: Department = "Operacoes de Frota", JobTitle = "Coordenador de Frota", OfficeLocation = "Brazil South", CompanyName = "NexCorp Logistica S.A.".

  2. [CLI] Para os usuarios nexcorp-admin-infra e nexcorp-dev-deploy, defina Department = "Infraestrutura TI" e JobTitle adequados aos seus papeis, usando um loop PowerShell que itere sobre um array de Object IDs.

  3. [CLI] Via Azure CLI, adicione o atributo MobilePhone ao usuario nexcorp-fin-analyst com um numero de telefone ficticio no formato +55 11 9XXXX-XXXX. Verifique que a propriedade foi persistida com az ad user show.

  4. [GUI] No Portal, confirme que a regra dinamica do grupo NexCorp-BrazilUsers ainda inclui todos os membros esperados apos as atualizacoes de propriedade. Navegue para a aba Dynamic membership rules e valide o status de processamento.

  5. [GUI] No grupo NexCorp-Ops-Users, adicione nexcorp-fin-analyst como membro adicional (alem do membro original), simulando a necessidade de acesso operacional temporario a um analista financeiro que supervisionara KPIs de frota.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Confirmacao de Department atualizadoaz ad user show --id <UPN> --query departmentEvidencia de auditoria

Criterios de Sucesso:

  • Get-MgUser -UserId <UPN> -Property Department,JobTitle,OfficeLocation retorna todos os campos preenchidos corretamente para nexcorp-ops-frota.
  • O grupo NexCorp-BrazilUsers nao perdeu membros apos as atualizacoes.
  • nexcorp-fin-analyst aparece como membro tanto em NexCorp-BrazilUsers (por regra dinamica) quanto em NexCorp-Ops-Users (por atribuicao direta).

Etapa 3: Manage Licenses in Microsoft Entra ID

Contexto de Negocios: Para habilitar funcionalidades como SSPR (que sera configurada na Etapa 5) e acesso condicional, os usuarios tecnicos da NexCorp precisam de licencas Microsoft Entra ID P1. O gerenciamento deve ser feito via grupo para garantir escalabilidade conforme novos tecnicos sejam integrados.

Ambiente de Execucao:

TarefaAmbiente
Atribuicao de licencas por grupoPortal Azure (GUI)
Verificacao de licencas por usuarioPortal Azure (GUI) e PowerShell

Tarefas:

  1. [GUI] No Microsoft Entra ID, navegue para Licenses e verifique quais SKUs estao disponiveis no tenant. Identifique o SKU ID da licenca Microsoft Entra ID P1 (ou Microsoft Entra ID P2, caso disponivel).

  2. [GUI] Atribua a licenca Entra ID P1 ao grupo NexCorp-Infra-Admins. Certifique-se de que todos os planos de servico necessarios para SSPR estao habilitados e que nenhum plano conflitante esta desativado.

  3. [GUI] Atribua a mesma licenca ao grupo NexCorp-FinOps, habilitando apenas os planos de servico relevantes para usuarios nao tecnicos (mantenha o Azure AD Premium P1 habilitado, avalie desabilitar planos desnecessarios).

  4. [CLI] Via PowerShell (Get-MgUserLicenseDetail), confirme que o usuario nexcorp-admin-infra herdou a licenca do grupo NexCorp-Infra-Admins e que o estado de atribuicao e InheritedFromGroup.

  5. [GUI] Simule um conflito: tente atribuir diretamente ao nexcorp-admin-infra a mesma licenca P1 que ele ja herdou do grupo. Documente o comportamento do portal (aviso ou erro) e identifique se a atribuicao direta sobrepoe a heranca de grupo.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
SKU ID da licenca P1Entra ID, Licenses, SKU IDReferencia em scripts futuros

Criterios de Sucesso:

  • Get-MgUserLicenseDetail -UserId <UPN_infra_admin> retorna um objeto com SkuPartNumber contendo AAD_PREMIUM e AssignedByGroup com o Object ID do grupo.
  • nexcorp-fin-analyst nao aparece como licenciado P1 (ele nao e membro de nenhum grupo licenciado ainda).
  • O portal exibe o status de processamento de licencas de grupo como Complete sem erros.

Etapa 4: Manage External Users

Contexto de Negocios: A aquisicao da RapiLog Nordeste exige que tres usuarios-chave da empresa adquirida tenham acesso colaborativo temporario ao tenant da NexCorp durante o periodo de transicao. Esses usuarios manterao suas identidades originais (contas externas) e deverao ser agrupados para facilitar o gerenciamento e a remocao posterior.

Ambiente de Execucao:

TarefaAmbiente
Convite de usuarios externosPortal Azure (GUI)
Criacao de grupo para externosPortal Azure (GUI)
Revisao de acessoPortal Azure (GUI)

Tarefas:

  1. [GUI] No Microsoft Entra ID, em External Identities, verifique as configuracoes de Cross-tenant access settings e confirme que o tenant esta configurado para permitir convites B2B. Identifique a configuracao de Collaboration restrictions vigente.

  2. [GUI] Envie um convite B2B para a conta externa que voce controla (Gmail ou Outlook pessoal), com Display Name "RapiLog Ext User 01" e mensagem personalizada mencionando o projeto NexCorp. Aguarde o aceite do convite ou force o estado de "Pending acceptance" para os proximos passos.

  3. [GUI] Apos o convite ser aceito (ou usando o estado pending), crie o grupo NexCorp-RapiLog-Guests do tipo Security (Assigned) e adicione o usuario externo convidado como membro.

  4. [GUI] Verifique as propriedades do usuario convidado: confirme que o campo User type esta como Guest, que o Source indica a origem externa correta e que o External email address esta populado.

  5. [GUI] Em Identity Governance, habilite uma Access Review para o grupo NexCorp-RapiLog-Guests com revisao mensal, revisor definido como nexcorp-admin-infra e acao ao expirar configurada para remover o acesso automaticamente. Documente o ID da Access Review criada.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Object ID do usuario GuestEntra ID, perfil do usuario externoEtapa 3 (possivelmente para RBAC restrito)
Object ID do grupo NexCorp-RapiLog-GuestsEntra ID, propriedades do grupoEtapas subsequentes de RBAC

Criterios de Sucesso:

  • O usuario externo aparece na lista de usuarios com User type = Guest e Source = External Microsoft Entra ID ou Source = Microsoft account, conforme a conta usada.
  • O grupo NexCorp-RapiLog-Guests exibe o usuario guest como membro.
  • A Access Review criada aparece em Identity Governance, Access Reviews com status Active.

Etapa 5: Configure Self-Service Password Reset (SSPR)

Contexto de Negocios: O helpdesk da NexCorp recebe em media 80 chamados por mes relacionados a reset de senha. Para reduzir essa carga antes do go-live da infraestrutura Azure, o SSPR deve ser habilitado para os grupos tecnicos, que ja possuem licencas P1 atribuidas na Etapa 3.

Ambiente de Execucao:

TarefaAmbiente
Configuracao de SSPRPortal Azure (GUI)
Teste de SSPRPortal Azure (GUI) com usuario de teste

Tarefas:

  1. [GUI] No Microsoft Entra ID, em Password reset, habilite o SSPR para o grupo NexCorp-Infra-Admins (escopo Selected, nao All). Nao habilite para todos os usuarios neste momento.

  2. [GUI] Configure os metodos de autenticacao para SSPR: exija 2 metodos para reset, habilitando Email e Mobile phone como opcoes validas. Desabilite Security questions para usuarios corporativos.

  3. [GUI] Em Registration, configure para que os usuarios sejam solicitados a registrar metodos de autenticacao no proximo login e defina o numero de dias antes de solicitar re-confirmacao como 180.

  4. [GUI] Em Notifications, habilite notificacao por email para o usuario quando a senha for resetada e habilite notificacao para admins quando outros admins resetarem senha.

  5. [GUI] Acesse o portal de SSPR (https://aka.ms/sspr) com o usuario nexcorp-admin-infra e complete o fluxo de registro de metodos de autenticacao. Documente quais metodos foram registrados com sucesso.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Status de registro SSPR do nexcorp-admin-infraEntra ID, Password reset, Registration reportEvidencia de compliance

Criterios de Sucesso:

  • O relatorio em Password reset, Registration mostra nexcorp-admin-infra como registrado.
  • Um usuario do grupo NexCorp-FinOps (nao habilitado para SSPR) ao acessar https://aka.ms/sspr recebe mensagem de que SSPR nao esta habilitado para sua conta.
  • As notificacoes de email estao ativas e o campo Notify users on password reset mostra Yes.

Etapa 6: Manage Built-in Azure Roles and Assign Roles at Different Scopes

Contexto de Negocios: Com as identidades estabelecidas, e hora de provisionar a estrutura de governance do Azure antes de criar qualquer recurso. O principio de least privilege deve ser aplicado: o grupo de infraestrutura gerencia recursos tecnicos, o grupo de FinOps monitora custos e o agente de deploy precisa de permissao restrita para operacoes de IaC.

Ambiente de Execucao:

TarefaAmbiente
Criacao de resource groupsPortal Azure (GUI)
Atribuicao de funcoesPortal Azure (GUI) e Azure CLI
Verificacao de acessoAzure CLI

Tarefas:

  1. [GUI] Crie tres Resource Groups na subscription: rg-nexcorp-identity (East US), rg-nexcorp-network (East US) e rg-nexcorp-storage (Brazil South). Use a tag Environment = Production e CostCenter = NexCorp-IT em todos.

  2. [GUI] Atribua a funcao Contributor ao grupo NexCorp-Infra-Admins no escopo da Subscription (nao nos resource groups individualmente). Documente o Assignment ID gerado.

  3. [CLI] Via Azure CLI, atribua a funcao Reader ao grupo NexCorp-FinOps no escopo da Subscription usando az role assignment create. Use o parametro --assignee-object-id com o Object ID do grupo (nao o nome do grupo).

  4. [CLI] Atribua a funcao Contributor ao usuario nexcorp-dev-deploy exclusivamente no resource group rg-nexcorp-storage, usando Azure CLI. Esta atribuicao e mais restrita que a do grupo de infraestrutura.

  5. [CLI] Execute az role assignment list --all --assignee <object-id-nexcorp-admin-infra> e interprete a saida: identifique quantas atribuicoes diretas o usuario possui versus quantas herda do grupo. Documente a diferenca entre principalType = User e principalType = Group na saida JSON.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Assignment ID da funcao Contributor no grupo NexCorp-Infra-AdminsPortal, IAM da subscription, Role assignmentsEtapa 6 (interpretacao de acesso)
Resource Group IDs dos tres RGsPortal, propriedades de cada RGTodas as etapas subsequentes
Subscription IDPortal, SubscriptionsTodas as etapas de CLI e IaC

Criterios de Sucesso:

  • az role assignment list --scope /subscriptions/<sub-id> --assignee <group-id-infra-admins> retorna um objeto com roleDefinitionName = Contributor.
  • Ao fazer login no Portal com nexcorp-fin-analyst, o usuario ve os resource groups mas nao consegue criar recursos (acesso Reader).
  • az role assignment list --resource-group rg-nexcorp-storage --assignee <object-id-dev-deploy> retorna exatamente uma atribuicao com Contributor naquele RG.

Etapa 7: Interpret Access Assignments

Contexto de Negocios: O time de seguranca da NexCorp solicitou um relatorio de acesso efetivo antes do primeiro deploy. E necessario verificar se nenhum usuario possui permissoes excessivas e se as atribuicoes em diferentes escopos estao se comportando conforme o modelo de menor privilegio definido.

Ambiente de Execucao:

TarefaAmbiente
Analise de acesso efetivoPortal Azure (GUI)
Interpretacao de herancaPortal Azure (GUI) e PowerShell

Tarefas:

  1. [GUI] No IAM do resource group rg-nexcorp-network, navegue para Check access e insira o usuario nexcorp-ops-frota. Documente todas as funcoes que aparecem, incluindo as herdadas da subscription.

  2. [GUI] No IAM da Subscription, utilize a aba Role assignments com o filtro Type = User e depois Type = Group. Identifique qual e a diferenca entre as entradas que mostram Inherited versus Direct.

  3. [CLI] Via PowerShell, use Get-AzRoleAssignment -SignInName <UPN_fin_analyst> e filtre os resultados para listar apenas as atribuicoes com Scope contendo /subscriptions/. Confirme que o analyst possui apenas Reader.

  4. [GUI] Identifique um cenario de conflito potencial: nexcorp-dev-deploy possui Contributor em rg-nexcorp-storage (atribuicao direta) e o grupo NexCorp-Infra-Admins possui Contributor na subscription. Se nexcorp-dev-deploy for adicionado ao grupo, qual seria o acesso efetivo? Verifique sem adicionar o usuario ao grupo.

  5. [GUI] No IAM de rg-nexcorp-storage, verifique a aba Deny assignments. Confirme se ha alguma deny assignment ativa e documente o comportamento esperado caso uma deny assignment entre em conflito com uma role assignment de Allow.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Numero total de role assignments na subscriptionPortal IAM, filtro "All"Baseline para auditoria futura

Criterios de Sucesso:

  • A verificacao de acesso efetivo de nexcorp-ops-frota em rg-nexcorp-network mostra Contributor herdado da subscription (via grupo NexCorp-Infra-Admins).
  • nexcorp-fin-analyst tem apenas Reader e nenhuma outra funcao em nenhum escopo.
  • A aba Deny assignments de rg-nexcorp-storage aparece vazia (nenhuma deny assignment presente ainda).

Etapa 8: Implement and Manage Azure Policy

Contexto de Negocios: O time de compliance da NexCorp exige que todos os recursos criados na subscription sigam padroes de naming e tagging. Alem disso, por restricoes regulatorias do setor logistico no Brasil, recursos de storage e computacao nao podem ser criados fora das regioes East US e Brazil South.

Ambiente de Execucao:

TarefaAmbiente
Criacao e atribuicao de policiesPortal Azure (GUI)
Teste de compliancePortal Azure (GUI) e Azure CLI

Tarefas:

  1. [GUI] No servico Policy, atribua a policy built-in "Allowed locations" no escopo da subscription, configurando apenas East US e Brazil South como localizacoes permitidas. Defina enforcement mode como Enabled.

  2. [GUI] Atribua a policy built-in "Require a tag and its value on resources" ao escopo da subscription, configurando o par Environment e Production. Configure o effect como Deny.

  3. [GUI] Crie uma Policy Initiative (Policy Set) chamada NexCorp-Baseline-Governance que agrupe as duas policies atribuidas acima. Atribua a initiative no escopo da subscription substituindo as duas atribuicoes individuais.

  4. [CLI] Via Azure CLI, tente criar um resource group na regiao West Europe usando az group create. Documente a mensagem de erro exata retornada pela policy. Este e um cenario de troubleshooting intencional: a policy deve bloquear a criacao.

  5. [GUI] Em Policy, Compliance, aguarde o ciclo de avaliacao (ou force via az policy state trigger-scan) e verifique o compliance state dos tres resource groups criados na Etapa 6. Identifique por que rg-nexcorp-identity pode aparecer como Non-compliant e corrija o problema.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Policy Assignment ID da initiative NexCorp-Baseline-GovernancePolicy, Assignments, propriedadesEtapas de troubleshooting
Mensagem de erro da tentativa de criacao em West EuropeOutput do Azure CLIEvidencia de funcionamento correto

Criterios de Sucesso:

  • az group create --name rg-test-westeurope --location westeurope retorna erro com RequestDisallowedByPolicy.
  • Tentativa de criar um recurso sem a tag Environment = Production e bloqueada com mensagem de policy denial.
  • O dashboard de Policy, Compliance mostra a initiative NexCorp-Baseline-Governance com percentual de compliance maior que 85% apos as correcoes.

Etapa 9: Configure Resource Locks

Contexto de Negocios: Os resource groups de rede e identidade contem recursos criticos que nao podem ser excluidos acidentalmente. O time de operacoes solicitou protecao adicional alem do RBAC, especialmente para o periodo de migracao da RapiLog quando multiplos tecnicos terao acesso elevado temporario.

Ambiente de Execucao:

TarefaAmbiente
Criacao de locksPortal Azure (GUI) e PowerShell
Teste de comportamentoPortal Azure (GUI)

Tarefas:

  1. [GUI] Em rg-nexcorp-network, aplique um lock do tipo Delete com nome lock-network-nodelete e descricao clara indicando a justificativa operacional.

  2. [GUI] Em rg-nexcorp-identity, aplique um lock do tipo Read-only com nome lock-identity-readonly.

  3. [CLI] Via PowerShell (New-AzResourceLock), aplique um lock Delete em rg-nexcorp-storage com nome lock-storage-nodelete.

  4. [GUI] Tente excluir o resource group rg-nexcorp-network pelo Portal. Documente o comportamento exato, incluindo a mensagem de erro. Este e um cenario de troubleshooting intencional.

  5. [GUI] Com o lock Read-only em rg-nexcorp-identity, tente criar um novo recurso (por exemplo, um segundo resource group ou qualquer recurso dentro de rg-nexcorp-identity) e documente o comportamento. Em seguida, identifique qual permissao e necessaria para remover o lock e qual seria a sequencia correta para realizar uma alteracao legitima neste RG.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Lock ID de lock-network-nodeletePowerShell: Get-AzResourceLockReferencia para remocao controlada futura

Criterios de Sucesso:

  • Get-AzResourceLock -ResourceGroupName rg-nexcorp-network retorna o lock com LockType = CanNotDelete.
  • A tentativa de exclusao de rg-nexcorp-network falha com erro ScopeLocked.
  • A tentativa de criar recursos em rg-nexcorp-identity (com lock ReadOnly) falha com ScopeLocked indicando restricao de escrita.

Etapa 10: Apply and Manage Tags on Resources

Contexto de Negocios: O departamento financeiro da NexCorp utiliza tags para alocar custos por centro de custo. Todos os resource groups precisam ter as tags padronizadas e, alem disso, a policy criada na Etapa 8 precisa ser validada na pratica com recursos reais.

Ambiente de Execucao:

TarefaAmbiente
Aplicacao de tagsPortal Azure (GUI) e Azure CLI
Consulta de tagsAzure CLI e PowerShell

Tarefas:

  1. [GUI] Nos tres resource groups, aplique as tags obrigatorias: Environment = Production, CostCenter = NexCorp-IT, Project = AZ104-Lab, ManagedBy = InfraTeam. Verifique que a policy da Etapa 8 nao bloqueia a aplicacao (as tags sao adicionadas, nao criacao de recurso novo).

  2. [CLI] Via Azure CLI, use az tag update para adicionar a tag CreatedDate = 2024-01-15 em rg-nexcorp-storage sem remover as tags existentes (use a operacao merge, nao replace).

  3. [CLI] Via PowerShell, liste todos os resource groups que possuem a tag Environment = Production usando Get-AzResourceGroup -Tag @{Environment = "Production"}. Confirme que todos os tres RGs aparecem.

  4. [CLI] Via Azure CLI, liste todos os recursos (nao apenas RGs) na subscription que possuem a tag CostCenter = NexCorp-IT. Neste momento, apenas os RGs devem aparecer. Guarde o comando para reuso nas etapas seguintes.

  5. [GUI] No servico Tags do Portal Azure, verifique se as tags aplicadas aparecem no inventario global de tags da subscription. Identifique quantos recursos distintos estao rotulados com cada chave de tag.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Output do comando de listagem de recursos por tagAzure CLI outputValidacao nas etapas de storage e compute

Criterios de Sucesso:

  • az tag list na subscription mostra as chaves Environment, CostCenter, Project e ManagedBy como tags existentes.
  • Get-AzResourceGroup -Tag @{Environment = "Production"} retorna exatamente 3 resource groups.
  • Nenhum recurso orfao sem a tag Environment existe na subscription.

Etapa 11: Manage Subscriptions, Costs, and Configure Management Groups

Contexto de Negocios: A NexCorp planeja expandir para duas subsidiarias nos proximos 18 meses. O time de arquitetura precisa estruturar a hierarquia de Management Groups para suportar essa expansao e, ao mesmo tempo, o time de FinOps precisa de alertas de custo configurados antes que os recursos de compute (caros) sejam provisionados nas proximas etapas.

Ambiente de Execucao:

TarefaAmbiente
Criacao de Management GroupsPortal Azure (GUI)
Configuracao de budgets e alertasPortal Azure (GUI)
Analise de recomendacoesPortal Azure (GUI)

Tarefas:

  1. [GUI] No servico Management groups, crie a seguinte hierarquia sob o Management Group raiz do tenant: MG-NexCorp-Root (nivel 1), com dois filhos: MG-NexCorp-Production e MG-NexCorp-Dev. Mova a subscription atual para MG-NexCorp-Production.

  2. [GUI] Em Cost Management, Budgets, crie um budget mensal chamado budget-nexcorp-monthly com valor de R$ 5.000 (ou o equivalente em USD conforme sua moeda de faturamento). Configure alertas em 50%, 80% e 100% do limite, com notificacao para o email do nexcorp-fin-analyst.

  3. [GUI] Crie um segundo budget chamado budget-nexcorp-compute especificamente para o resource group rg-nexcorp-network (que abrigara VMs nas proximas etapas), com valor de R$ 2.000 mensais e alerta em 90%.

  4. [GUI] No Azure Advisor, navegue para a categoria Cost e documente quais recomendacoes ja aparecem para a subscription (mesmo sem recursos de compute ainda, podem existir recomendacoes de configuracao).

  5. [GUI] Verifique se a policy NexCorp-Baseline-Governance foi herdada pela subscription apos a movimentacao para o Management Group MG-NexCorp-Production. Navegue para Policy, Compliance e confirme o escopo de heranca.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
ID do Management Group MG-NexCorp-ProductionPortal, Management groups, propriedadesAtribuicoes de policy no nivel MG
Budget ID budget-nexcorp-monthlyCost Management, Budgets, propriedadesMonitoramento nas etapas finais

Criterios de Sucesso:

  • A hierarquia de Management Groups mostra MG-NexCorp-Root > MG-NexCorp-Production > [subscription atual].
  • Os dois budgets aparecem em Cost Management, Budgets com status Active.
  • A policy NexCorp-Baseline-Governance aparece em Policy, Compliance com escopo indicando heranca do Management Group.

Etapa 12: Configure and Manage Storage Accounts

Contexto de Negocios: O primeiro recurso Azure concreto da NexCorp sera uma storage account na regiao Brazil South para armazenar artefatos de deploy, backups de configuracao e arquivos de frota. Uma segunda storage account em East US servira como destino de replicacao de objetos.

Ambiente de Execucao:

TarefaAmbiente
Criacao de storage accountsBicep (IaC)
Configuracao de redundancia e replicacaoPortal Azure (GUI)
VerificacaoAzure CLI

Tarefas:

  1. [IaC] Crie um arquivo Bicep chamado nexcorp-storage.bicep que provisione duas storage accounts: nexcorpstgbrs01 (Brazil South, SKU Standard_GRS, kind StorageV2, access tier Hot) e nexcorpstgeus01 (East US, SKU Standard_LRS, kind StorageV2, access tier Cool). Aplique as tags obrigatorias via parametros. Implante no resource group rg-nexcorp-storage.

  2. [GUI] Apos o deploy, em nexcorpstgbrs01, configure Object Replication para replicar o conteudo de um container chamado artefatos-deploy para um container de mesmo nome em nexcorpstgeus01. Anote o Policy ID gerado.

  3. [GUI] Em nexcorpstgbrs01, altere a redundancia de GRS para ZRS pelo Portal. Documente o processo e o tempo aproximado de conversao exibido. Verifique se a replicacao de objetos configurada no passo anterior foi afetada pela mudanca de redundancia.

  4. [CLI] Via Azure CLI, habilite a criptografia com chave gerenciada pelo cliente (Customer-Managed Key) para nexcorpstgbrs01 usando um Azure Key Vault. Primeiro, crie o Key Vault kv-nexcorp-prod em East US no RG rg-nexcorp-storage, gere uma chave RSA 2048 e associe a storage account. Documente cada comando necessario.

  5. [GUI] Em ambas as storage accounts, habilite o Soft delete for blobs com retencao de 14 dias e o Soft delete for containers com retencao de 7 dias.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Nome da storage account Brazil Southnexcorpstgbrs01Etapas 13, 14, 15
Nome da storage account East USnexcorpstgeus01Etapa de replicacao e backup
Object Replication Policy IDPortal, storage account, Object replicationVerificacao de replicacao
Key Vault Namekv-nexcorp-prodEtapas de VM (disk encryption)
Resource ID do Key Vaultaz keyvault show --name kv-nexcorp-prod --query idEtapa 18 (VMs com encryption at host)

Criterios de Sucesso:

  • az storage account show --name nexcorpstgbrs01 --resource-group rg-nexcorp-storage --query sku retorna o SKU correto apos a mudanca.
  • A replicacao de objetos mostra status Enabled no Portal com o Policy ID populado.
  • az storage account show --name nexcorpstgbrs01 --query encryption.keySource retorna Microsoft.Keyvault apos a configuracao de CMK.

Etapa 13: Configure Access to Storage

Contexto de Negocios: O agente de deploy (nexcorp-dev-deploy) precisa de acesso programatico a storage account para fazer upload de artefatos. Porem, esse acesso deve ser temporario e auditavel. Alem disso, o acesso externo (de sistemas da RapiLog ainda on-premises) deve ser controlado por firewall de storage.

Ambiente de Execucao:

TarefaAmbiente
Configuracao de SAS tokensPortal Azure (GUI) e Azure CLI
Configuracao de firewallPortal Azure (GUI)
Configuracao de stored access policyAzure CLI

Tarefas:

  1. [GUI] Em nexcorpstgbrs01, navegue para Shared access signature e gere um SAS token no nivel de Account com permissoes Read, Write, List para o servico Blob, validade de 2 horas a partir do momento atual. Copie a SAS token string e a Blob service SAS URL.

  2. [CLI] Via Azure CLI, crie uma Stored Access Policy chamada policy-deploy-agent no container artefatos-deploy com permissoes r,w,l e expiracao em 30 dias. Em seguida, gere um SAS token referenciando essa policy (usando --policy-name). Documente a diferenca entre um SAS ad-hoc e um SAS vinculado a uma stored access policy.

  3. [GUI] Em nexcorpstgbrs01, configure o Firewall da storage account para modo Enabled from selected virtual networks and IP addresses. Adicione o IP publico da sua estacao de trabalho como excecao. Confirme que o acesso via Portal ainda funciona apos esta configuracao.

  4. [GUI] Tente acessar o blob via Storage Explorer sem estar na rede permitida e usando a access key diretamente. Documente o comportamento. Em seguida, acesse usando o SAS token gerado na stored access policy. Documente se o SAS token bypassa o firewall ou e tambem bloqueado.

  5. [GUI] Em Access keys de nexcorpstgbrs01, rotacione a key2 pelo Portal. Confirme que a key1 continua valida durante o periodo de rotacao e documente o impacto esperado em conexoes que usavam a key2 rotacionada.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
SAS Token (stored access policy)Output do Azure CLIEtapa de teste com AzCopy
Blob service SAS URLPortal, SAS generation outputEtapa de AzCopy e Storage Explorer

Criterios de Sucesso:

  • O SAS token ad-hoc expira em 2 horas e nao pode ser revogado individualmente.
  • O SAS vinculado a policy-deploy-agent pode ser revogado deletando ou alterando a stored access policy.
  • Apos habilitar o firewall, acesso sem IP autorizado retorna AuthorizationFailure ou 403 Forbidden.
  • A rotacao da key2 nao afeta conexoes usando key1 ou SAS tokens.

Etapa 14: Configure Identity-Based Access for Azure Files and Manage Data

Contexto de Negocios: O time de operacoes de frota precisa de um file share para compartilhar arquivos de configuracao de rotas entre as unidades. O acesso deve ser baseado em identidade (nao em chaves de storage) para manter o modelo de acesso condicional da NexCorp.

Ambiente de Execucao:

TarefaAmbiente
Criacao de file sharePortal Azure (GUI)
Configuracao de acesso por identidadePortal Azure (GUI)
Transferencia de dadosAzCopy (CLI)

Tarefas:

  1. [GUI] Em nexcorpstgbrs01, crie um File Share chamado fs-nexcorp-frota com quota de 100 GiB e tier Transaction Optimized.

  2. [GUI] Em File share settings, habilite a autenticacao baseada em identidade via Microsoft Entra Kerberos. Configure o acesso para usuarios do tipo Hybrid (on-premises AD sinronizados). Documente os prerequisitos que aparecem na tela e identifique quais passos adicionais seriam necessarios em um ambiente com AD Connect real.

  3. [GUI] Atribua o RBAC role Storage File Data SMB Share Contributor ao grupo NexCorp-Ops-Users no escopo do file share fs-nexcorp-frota (nao no nivel da storage account).

  4. [CLI] Use o AzCopy para fazer upload de um arquivo de teste chamado rota-config-sample.json (crie o arquivo localmente com conteudo JSON ficticio de rotas) para o file share usando autenticacao OAuth (azcopy login), sem usar SAS tokens ou access keys.

  5. [GUI] No Azure Storage Explorer, conecte-se a nexcorpstgbrs01 usando OAuth (sua conta de administrador), navegue ate o file share fs-nexcorp-frota e verifique o arquivo enviado. Em seguida, crie um Snapshot manual do file share e documente o nome do snapshot gerado.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Nome do File Sharefs-nexcorp-frotaEtapa de backup (Azure Backup for Files)
Nome do snapshot do file shareStorage Explorer, propriedades do snapshotEtapa de restore na secao de backup

Criterios de Sucesso:

  • O file share aparece em File shares com status Available e quota 100 GiB.
  • O arquivo rota-config-sample.json esta visivel via Storage Explorer apos o upload com AzCopy.
  • O snapshot e listado em Snapshots do file share com timestamp correto.
  • A atribuicao de RBAC Storage File Data SMB Share Contributor ao grupo NexCorp-Ops-Users e visivel no IAM do file share.

Etapa 15: Configure Azure Blob Storage, Tiers, Lifecycle, and Versioning

Contexto de Negocios: O container artefatos-deploy precisa de politicas de ciclo de vida para mover artefatos antigos para tiers mais baratos e deletar artefatos obsoletos. Alem disso, o versionamento deve ser habilitado para manter historico de artefatos criticos.

Ambiente de Execucao:

TarefaAmbiente
Configuracao de blob containersPortal Azure (GUI)
Lifecycle managementPortal Azure (GUI)
VersioningPortal Azure (GUI)

Tarefas:

  1. [GUI] Em nexcorpstgbrs01, verifique que o container artefatos-deploy existe (criado na Etapa 12 para replicacao). Se nao existir, crie-o com nivel de acesso Private (no anonymous access).

  2. [GUI] Habilite Blob versioning em nexcorpstgbrs01. Faca o upload de um arquivo deploy-manifest.json (conteudo ficticio), depois edite o conteudo localmente e faca upload novamente com o mesmo nome. Verifique que duas versoes existem no Portal e identifique qual e a versao atual.

  3. [GUI] Configure uma regra de Lifecycle Management chamada rule-nexcorp-tiering com as seguintes acoes: mover blobs para Cool apos 30 dias sem modificacao, mover para Archive apos 90 dias, deletar blobs apos 365 dias. Aplique a regra apenas ao container artefatos-deploy usando filtros de prefixo.

  4. [GUI] Configure uma segunda regra de lifecycle chamada rule-nexcorp-versions para deletar versoes anteriores de blobs com mais de 60 dias, mantendo apenas as 3 versoes mais recentes.

  5. [GUI] Habilite o Soft delete for blobs com 14 dias (ja configurado na Etapa 12, verifique) e teste: delete um blob, confirme que ele aparece na visualizacao com Show deleted blobs habilitado, e restaure-o usando a opcao Undelete.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Nome do container artefatos-deployStorage account, ContainersEtapas de deploy e AzCopy

Criterios de Sucesso:

  • O versionamento mostra pelo menos 2 versoes do arquivo deploy-manifest.json com timestamps distintos.
  • A regra de lifecycle rule-nexcorp-tiering aparece como Enabled com as tres acoes configuradas.
  • O blob deletado e restaurado com sucesso via Undelete e volta ao estado Active.

Etapa 16: Interpret, Modify, and Deploy ARM Templates and Bicep Files

Contexto de Negocios: O time de IaC da NexCorp padronizou todos os deploys de infraestrutura em Bicep. Antes de provisionar as VMs, e necessario validar que os engenheiros conseguem interpretar, modificar e exportar templates existentes, uma habilidade critica para manutencao e troubleshooting.

Ambiente de Execucao:

TarefaAmbiente
Interpretacao e exportacaoPortal Azure (GUI) e Azure CLI
Modificacao de templatesVisual Studio Code (IaC)
DeployAzure CLI (IaC)

Tarefas:

  1. [GUI] No Portal, exporte o template ARM do resource group rg-nexcorp-storage (que contem a storage account e o Key Vault) usando Export template no nivel do RG. Salve o arquivo nexcorp-storage-export.json localmente e abra-o no VS Code.

  2. [IaC] Use o Azure CLI para converter o template ARM exportado em Bicep: az bicep decompile --file nexcorp-storage-export.json. Analise o arquivo .bicep gerado e identifique pelo menos 3 diferencas sintaticas entre o ARM JSON e o Bicep equivalente.

  3. [IaC] Modifique o arquivo Bicep exportado para adicionar um novo container Blob chamado logs-auditoria na storage account nexcorpstgbrs01. O container deve ter nivel de acesso Private e a modificacao deve ser feita no Bicep (nao no ARM JSON).

  4. [IaC] Deploy o Bicep modificado em modo Incremental no resource group rg-nexcorp-storage usando az deployment group create. Confirme que apenas o novo container foi adicionado e que os recursos existentes nao foram alterados.

  5. [CLI] Via Azure CLI, verifique o historico de deployments do resource group com az deployment group list --resource-group rg-nexcorp-storage. Identifique o deployment ID do ultimo deploy e use az deployment group show para ver os outputs e parametros usados.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Deployment ID do ultimo deploy em rg-nexcorp-storageaz deployment group list outputReferencia para troubleshooting
Nome do container logs-auditoriaPortal, storage account, ContainersEtapas de monitoramento e auditoria

Criterios de Sucesso:

  • O arquivo nexcorp-storage-export.bicep e gerado sem erros pelo comando az bicep decompile.
  • O container logs-auditoria aparece em nexcorpstgbrs01 apos o deploy incremental.
  • az deployment group list --resource-group rg-nexcorp-storage mostra pelo menos dois deployments com status Succeeded.

Etapa 17: Configure Virtual Networks, Subnets, and Peering

Contexto de Negocios: A topologia hub-spoke da NexCorp sera implementada agora. O hub ficara em East US e contera os servicos compartilhados (Bastion, Load Balancer). O spoke ficara em Brazil South e contera as VMs operacionais. O peering deve permitir comunicacao bidirecional.

Ambiente de Execucao:

TarefaAmbiente
Criacao de VNets e subnetsBicep (IaC)
Configuracao de peeringPortal Azure (GUI)
Verificacao de conectividadeAzure CLI

Tarefas:

  1. [IaC] Crie um arquivo Bicep nexcorp-network.bicep que provisione: VNet vnet-nexcorp-hub-eus (10.0.0.0/16) em East US com subnets snet-management (10.0.1.0/24), snet-services (10.0.2.0/24) e AzureBastionSubnet (10.0.3.0/27, nome obrigatorio para Bastion). VNet vnet-nexcorp-spoke-brs (10.1.0.0/16) em Brazil South com subnets snet-vms-prod (10.1.1.0/24) e snet-containers (10.1.2.0/24). Implante em rg-nexcorp-network.

  2. [GUI] Configure o VNet Peering bidirecional entre vnet-nexcorp-hub-eus e vnet-nexcorp-spoke-brs. Nomeie os peerings como peer-hub-to-spoke e peer-spoke-to-hub. Habilite Allow forwarded traffic e Allow gateway transit no lado do hub.

  3. [GUI] Configure dois Public IP Addresses estaticos (SKU Standard): pip-nexcorp-bastion (East US) para o Azure Bastion e pip-nexcorp-lb-prod (East US) para o Load Balancer que sera configurado adiante. Atribua a tag Environment = Production.

  4. [GUI] Crie uma User-Defined Route (UDR) chamada rt-nexcorp-spoke com uma rota 0.0.0.0/0 com next hop Virtual appliance apontando para um IP ficticio 10.0.0.100 (simulando um NVA/Firewall no hub). Associe esta UDR a subnet snet-vms-prod.

  5. [GUI] Identifique o problema intencional: com a UDR apontando para um IP inexistente, as VMs em snet-vms-prod nao conseguirao acessar a internet. Documente como voce identificaria esse problema usando Effective routes em uma futura NIC de VM e qual seria a correcao adequada (nao corrija ainda, a correcao sera feita na Etapa 24).

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Resource ID de vnet-nexcorp-hub-eusPortal, VNet propertiesEtapas de Bastion, NSG e Load Balancer
Resource ID de vnet-nexcorp-spoke-brsPortal, VNet propertiesEtapas de VM e containers
IP de pip-nexcorp-bastionPortal, Public IP, propriedadesEtapa 22 (Azure Bastion)
IP de pip-nexcorp-lb-prodPortal, Public IP, propriedadesEtapa 25 (Load Balancer)
Subnet ID de snet-vms-prodPortal ou az network vnet subnet showEtapas de VM
Subnet ID de AzureBastionSubnetPortal ou CLIEtapa 22 (Bastion)

Criterios de Sucesso:

  • az network vnet peering show --name peer-hub-to-spoke --vnet-name vnet-nexcorp-hub-eus --resource-group rg-nexcorp-network retorna peeringState = Connected.
  • Ambos os peerings aparecem com status Connected no Portal.
  • A UDR rt-nexcorp-spoke esta associada a snet-vms-prod (problema intencional para troubleshooting futuro).

Etapa 18: Create and Configure Network Security Groups (NSGs) and Application Security Groups

Contexto de Negocios: Com a rede provisionada, e necessario proteger o trafego entre as subnets. As VMs de frota so devem aceitar conexoes da subnet de gerenciamento e do Bastion. Os servicos web devem aceitar HTTPS de qualquer origem, mas nao SSH/RDP direto da internet.

Ambiente de Execucao:

TarefaAmbiente
Criacao de NSGs e ASGsAzure CLI (CLI)
Associacao a subnetsPortal Azure (GUI)
Verificacao de regras efetivasPortal Azure (GUI)

Tarefas:

  1. [CLI] Via Azure CLI, crie dois Application Security Groups em rg-nexcorp-network: asg-nexcorp-webservers e asg-nexcorp-vmops. Esses ASGs serao referenciados nas regras de NSG em vez de IPs fixos.

  2. [CLI] Via Azure CLI, crie um NSG chamado nsg-nexcorp-spoke-vms com as seguintes regras de entrada (inbound): Prioridade 100: permitir HTTPS (TCP 443) de Internet para asg-nexcorp-webservers. Prioridade 200: permitir RDP (TCP 3389) de snet-management (10.0.1.0/24) para asg-nexcorp-vmops. Prioridade 300: negar todo trafego de Internet para qualquer destino. Configure todas as regras usando az network nsg rule create.

  3. [GUI] Associe o NSG nsg-nexcorp-spoke-vms a subnet snet-vms-prod em vnet-nexcorp-spoke-brs.

  4. [CLI] Crie um segundo NSG nsg-nexcorp-hub-mgmt e associe-o a snet-management. Configure uma regra de entrada permitindo SSH (TCP 22) apenas de um range de IPs especifico (simule o IP do escritorio central: 203.0.113.0/24). Use a RFC 5737 para IPs de documentacao.

  5. [GUI] Em Effective security rules (disponivel na NIC de uma VM apos a Etapa 19), documente como interpretar a tabela de regras efetivas. Por ora, verifique as regras efetivas diretamente no NSG usando a aba Effective security rules do proprio NSG (disponivel mesmo sem VMs associadas) e confirme a ordem de prioridade.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Resource ID do nsg-nexcorp-spoke-vmsaz network nsg showEtapa de criacao de VMs (NIC configuration)
Resource ID do asg-nexcorp-webserversaz network asg showEtapa de VM e configuracao de NIC
Resource ID do asg-nexcorp-vmopsaz network asg showEtapa de VM e configuracao de NIC

Criterios de Sucesso:

  • az network nsg rule list --nsg-name nsg-nexcorp-spoke-vms --resource-group rg-nexcorp-network -o table exibe as tres regras com prioridades 100, 200 e 300.
  • O NSG aparece associado a snet-vms-prod em Subnets na aba Overview do NSG.
  • A regra de prioridade 300 (DenyAllInternet) aparece com access = Deny na listagem.

Etapa 19: Create and Configure Virtual Machines

Contexto de Negocios: As primeiras VMs da NexCorp serao os servidores de aplicacao operacional que rodam o sistema de rastreamento de frota. Duas VMs serao criadas em uma Availability Set para alta disponibilidade dentro da regiao Brazil South, com discos gerenciados criptografados.

Ambiente de Execucao:

TarefaAmbiente
Criacao de VMsPortal Azure (GUI) para a primeira, Azure CLI para a segunda
Configuracao de discosPortal Azure (GUI)
Encryption at hostAzure CLI

Tarefas:

  1. [GUI] Crie um Availability Set chamado avset-nexcorp-frota em rg-nexcorp-network (Brazil South) com 2 fault domains e 5 update domains.

  2. [GUI] Crie a primeira VM: vm-nexcorp-frota-01 (Brazil South, SKU Standard_B2s, Ubuntu Server 22.04 LTS, authentication SSH public key). Coloque-a no Availability Set avset-nexcorp-frota, subnet snet-vms-prod, sem IP publico, sem extensao de monitoramento por enquanto. Atribua o ASG asg-nexcorp-vmops na NIC. Aplique as tags obrigatorias.

  3. [CLI] Via Azure CLI, crie a segunda VM vm-nexcorp-frota-02 com as mesmas configuracoes, mas referenciando o Availability Set e o ASG via seus Resource IDs (parametros --availability-set e sem --nsg, pois o NSG ja esta na subnet).

  4. [CLI] Habilite Encryption at host para ambas as VMs usando az vm update --set securityProfile.encryptionAtHost=true. Antes, verifique se o feature esta registrado na subscription com az feature show --namespace Microsoft.Compute --name EncryptionAtHost.

  5. [GUI] Para vm-nexcorp-frota-01, adicione um Data disk gerenciado de 128 GiB (SKU Premium_LRS) pelo Portal. Em seguida, usando o Portal, mova a VM para um Resource Group diferente: tente mover para rg-nexcorp-storage. Documente o comportamento e identifique quais recursos vinculados (NIC, disco) tambem precisam ser movidos juntos.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Resource ID de vm-nexcorp-frota-01Portal, VM propertiesEtapas de monitoramento, backup e Site Recovery
Resource ID de vm-nexcorp-frota-02Portal, VM propertiesEtapas de monitoramento e backup
Private IP de vm-nexcorp-frota-01Portal, NIC propertiesEtapas de Load Balancer e troubleshooting de rede
Private IP de vm-nexcorp-frota-02Portal, NIC propertiesEtapas de Load Balancer

Criterios de Sucesso:

  • Ambas as VMs aparecem em Availability sets, avset-nexcorp-frota, Virtual machines com fault domain e update domain distintos.
  • az vm show --name vm-nexcorp-frota-01 --resource-group rg-nexcorp-network --query securityProfile retorna encryptionAtHost: true.
  • O data disk de 128 GiB aparece como disco de dados em vm-nexcorp-frota-01 com status Attached.

Etapa 20: Manage Virtual Machine Sizes and Disks

Contexto de Negocios: Apos a primeira semana de operacao em staging, o time de performance identificou que as VMs Standard_B2s nao atendem ao pico de processamento de telemetria de frota. E necessario redimensionar as VMs e reorganizar os discos antes do go-live.

Ambiente de Execucao:

TarefaAmbiente
Redimensionamento de VMsAzure CLI
Gerenciamento de discosPortal Azure (GUI)

Tarefas:

  1. [CLI] Via Azure CLI, liste os tamanhos de VM disponiveis em Brazil South usando az vm list-sizes --location brazilsouth e filtre para mostrar apenas SKUs com 4 ou mais vCPUs e no minimo 8 GB de RAM. Identifique Standard_D4s_v3 na lista.

  2. [CLI] Redimensione vm-nexcorp-frota-01 para Standard_D4s_v3 usando az vm resize. A VM precisara ser desalocada. Documente a sequencia de comandos necessaria (deallocate, resize, start) e o tempo aproximado de cada operacao.

  3. [GUI] Para o data disk adicionado na Etapa 19, altere o SKU de Premium_LRS para UltraSSD_LRS pelo Portal. Documente o comportamento do Portal (e possivel fazer esta mudanca com a VM ligada? Quais restricoes aparecem?).

  4. [GUI] Crie um Snapshot manual do disco do SO de vm-nexcorp-frota-01 chamado snap-nexcorp-frota01-os-pre-resize. Verifique o tipo do snapshot (Full ou Incremental) e documente a diferenca entre os dois tipos.

  5. [CLI] Via Azure CLI, detache o data disk de vm-nexcorp-frota-01 usando az vm disk detach. Confirme que o disco agora aparece como Unattached na lista de Managed Disks de rg-nexcorp-network. Reattache o disco em seguida.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Nome do snapshot snap-nexcorp-frota01-os-pre-resizePortal, Snapshots em rg-nexcorp-networkReferencia de restauracao

Criterios de Sucesso:

  • az vm show --name vm-nexcorp-frota-01 --query hardwareProfile.vmSize retorna Standard_D4s_v3.
  • O snapshot aparece em Disks, Snapshots com o nome correto e Source disk indicando o disco de SO da VM.
  • O data disk re-attachado aparece como Attached a vm-nexcorp-frota-01.

Etapa 21: Deploy VMs to Availability Zones and Virtual Machine Scale Sets

Contexto de Negocios: O servico de API de tracking de frota precisa de alta disponibilidade com escalonamento automatico. Um VM Scale Set sera provisionado para este servico em East US (onde o hub esta), distribuido entre Availability Zones para maxima resiliencia.

Ambiente de Execucao:

TarefaAmbiente
Criacao de VMSSBicep (IaC)
Configuracao de autoscalingPortal Azure (GUI)

Tarefas:

  1. [IaC] Crie um arquivo Bicep nexcorp-vmss.bicep que provisione um Virtual Machine Scale Set chamado vmss-nexcorp-api em East US, rg-nexcorp-network, distribuido nas Availability Zones 1, 2 e 3. Use SKU Standard_B2s, Ubuntu Server 22.04 LTS, minimo 2 instancias, maximo 10, capacidade inicial 2. Coloque na subnet snet-services de vnet-nexcorp-hub-eus.

  2. [GUI] Apos o deploy do VMSS, configure uma regra de Autoscale (Custom autoscale) chamada autoscale-nexcorp-api: aumentar 1 instancia quando CPU > 70% por 5 minutos, diminuir 1 instancia quando CPU < 30% por 10 minutos. Defina minimum 2, maximum 10, default 2.

  3. [GUI] Verifique a distribuicao das instancias iniciais entre as Availability Zones. Confirme que as 2 instancias iniciais estao em zonas distintas.

  4. [GUI] No VMSS, em Instances, acesse uma das instancias e verifique o campo Availability zone na pagina de propriedades. Documente como o escopo de zona de uma VM dentro de um VMSS difere de uma VM com Availability Zone atribuida individualmente (criada com --zone no CLI).

  5. [GUI] Atualize o modelo do VMSS para adicionar a tag Component = API-Tracking usando Edit model no Portal. Confirme se as instancias existentes precisam ser re-imaged para receber a nova configuracao.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Resource ID do VMSS vmss-nexcorp-apiPortal, VMSS propertiesEtapas de Load Balancer e monitoramento
Numero de instancias iniciaisPortal, VMSS, InstancesBaseline para validacao de autoscaling

Criterios de Sucesso:

  • az vmss show --name vmss-nexcorp-api --resource-group rg-nexcorp-network --query sku mostra name = Standard_B2s e capacity = 2.
  • A regra de autoscale aparece em Custom autoscale com as thresholds corretas.
  • As instancias iniciais estao distribuidas em pelo menos 2 zonas distintas.

Etapa 22: Implement Azure Bastion and Configure Service and Private Endpoints

Contexto de Negocios: As VMs da NexCorp nao possuem IPs publicos (conforme decisao de arquitetura). O acesso administrativo remoto deve ser feito exclusivamente via Azure Bastion. Alem disso, a storage account deve ser acessivel pelas VMs via rede privada, sem trafegar pela internet publica.

Ambiente de Execucao:

TarefaAmbiente
Criacao do BastionPortal Azure (GUI)
Configuracao de Private EndpointPortal Azure (GUI) e Azure CLI
Configuracao de Service EndpointPortal Azure (GUI)

Tarefas:

  1. [GUI] Implante o Azure Bastion no tier Basic em AzureBastionSubnet de vnet-nexcorp-hub-eus, associado ao pip-nexcorp-bastion criado na Etapa 17. Nomeie como bastion-nexcorp-hub.

  2. [GUI] Conecte-se a vm-nexcorp-frota-01 via Bastion usando autenticacao SSH (chave privada). Confirme que a conexao e estabelecida sem IP publico na VM.

  3. [GUI] Configure um Private Endpoint para a storage account nexcorpstgbrs01, subresource blob, na subnet snet-vms-prod. Nomeie o endpoint pe-nexcorp-stg-blob. Verifique a entrada de DNS privado criada automaticamente.

  4. [GUI] Dentro da VM vm-nexcorp-frota-01 (via Bastion), use curl ou nslookup para resolver o FQDN de nexcorpstgbrs01.blob.core.windows.net e confirme que o IP retornado e um IP privado (10.x.x.x) e nao um IP publico da Microsoft.

  5. [GUI] Configure um Service Endpoint para Microsoft.Storage na subnet snet-management. Documente a diferenca entre Service Endpoint (trafego sai pela rede Microsoft mas usando IP publico do storage) e Private Endpoint (IP privado dentro da VNet). Identifique por que o Private Endpoint e a abordagem preferida para a NexCorp.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
IP do Private Endpoint pe-nexcorp-stg-blobPortal, Private endpoint, Network interfaceVerificacao de resolucao DNS
FQDN do BastionPortal, Bastion, propriedadesAcesso futuro as VMs

Criterios de Sucesso:

  • A conexao SSH via Bastion e estabelecida com sucesso para vm-nexcorp-frota-01.
  • nslookup nexcorpstgbrs01.blob.core.windows.net dentro da VM retorna um IP no range 10.x.x.x.
  • O Private Endpoint aparece em Networking da storage account como uma conexao aprovada.

Etapa 23: Configure Azure DNS

Contexto de Negocios: A NexCorp precisa de resolucao DNS interna para seus servicos. Um zone DNS privada sera criada para o dominio interno nexcorp.internal e vinculada as VNets. Alem disso, o subdominio de acesso publico api.nexcorp-logistica.com precisara ser gerenciado no Azure DNS.

Ambiente de Execucao:

TarefaAmbiente
Criacao de DNS zonesPortal Azure (GUI) e Azure CLI
Configuracao de registrosAzure CLI

Tarefas:

  1. [GUI] Crie uma Private DNS Zone chamada nexcorp.internal em rg-nexcorp-network. Vincule-a a ambas as VNets (vnet-nexcorp-hub-eus e vnet-nexcorp-spoke-brs) com auto-registration habilitado.

  2. [GUI] Verifique que as VMs vm-nexcorp-frota-01 e vm-nexcorp-frota-02 foram automaticamente registradas na zona privada com seus hostnames e IPs privados. Documente os registros A criados.

  3. [CLI] Via Azure CLI, adicione manualmente um registro A na zona privada nexcorp.internal: storage-internal apontando para o IP do Private Endpoint da storage account (obtido na Etapa 22). Use TTL de 300 segundos.

  4. [GUI] Crie uma Public DNS Zone chamada nexcorp-logistica.com em rg-nexcorp-network. Adicione um registro A chamado api apontando para o IP publico pip-nexcorp-lb-prod. Documente os Name Servers (NS records) do Azure DNS que precisariam ser configurados no registrador de dominio externo.

  5. [GUI] Dentro de vm-nexcorp-frota-01 (via Bastion), use nslookup vm-nexcorp-frota-02.nexcorp.internal e confirme a resolucao pelo IP privado correto. Em seguida, tente nslookup storage-internal.nexcorp.internal e confirme que o registro manual tambem resolve.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Name Servers da zona publica nexcorp-logistica.comPortal, DNS zone, NS recordsDocumentacao de configuracao de DNS externo
FQDN vm-nexcorp-frota-01.nexcorp.internalPrivate DNS zone, registros ATestes de conectividade interna

Criterios de Sucesso:

  • A zona privada nexcorp.internal mostra registros A auto-registrados para as duas VMs com seus IPs privados.
  • nslookup vm-nexcorp-frota-02.nexcorp.internal dentro de uma VM retorna o IP correto.
  • A zona publica nexcorp-logistica.com aparece no Portal com os 4 NS records do Azure DNS.

Etapa 24: Configure Load Balancer and Troubleshoot Network Connectivity

Contexto de Negocios: O servico de frota precisa de um Load Balancer para distribuir trafego entre as instancias do VMSS. Alem disso, o problema intencional da UDR criado na Etapa 17 precisa ser identificado e corrigido usando ferramentas de troubleshooting de rede.

Ambiente de Execucao:

TarefaAmbiente
Criacao do Load BalancerPortal Azure (GUI)
Troubleshooting de redeAzure Network Watcher (GUI)
Correcao da UDRPortal Azure (GUI)

Tarefas:

  1. [GUI] Crie um Load Balancer publico chamado lb-nexcorp-prod em East US, SKU Standard, associado ao pip-nexcorp-lb-prod. Configure um backend pool incluindo o VMSS vmss-nexcorp-api. Configure uma regra de balanceamento na porta 80 (HTTP) com health probe TCP na porta 80.

  2. [GUI] Configure uma Load Balancing Rule adicional para HTTPS (porta 443) com session persistence Client IP e timeout de 5 minutos.

  3. [GUI] Em Azure Network Watcher, use o Connection Monitor para criar um teste de conectividade de vm-nexcorp-frota-01 para o IP do Load Balancer lb-nexcorp-prod na porta 80. Configure o teste para rodar a cada 30 segundos e documentar o status inicial.

  4. [GUI] Use o Next hop do Network Watcher para verificar qual e o proximo salto de vm-nexcorp-frota-01 para o IP 8.8.8.8 (Google DNS, simulando internet). O resultado devera mostrar o IP 10.0.0.100 da UDR incorreta criada na Etapa 17. Documente a causa raiz do problema de conectividade.

  5. [GUI] Corrija o problema da UDR: acesse rt-nexcorp-spoke e altere a rota 0.0.0.0/0 para ter next hop Internet em vez de Virtual appliance. Aguarde a propagacao e use o Next hop novamente para confirmar que vm-nexcorp-frota-01 agora tem rota direta para internet.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Frontend IP do Load BalancerPortal, LB, Frontend IP configurationTestes de carga e DNS
Connection Monitor IDNetwork Watcher, Connection MonitorEtapa de monitoramento

Criterios de Sucesso:

  • O Load Balancer lb-nexcorp-prod aparece com health probe status Healthy para as instancias do VMSS.
  • Next hop do Network Watcher para 8.8.8.8 a partir de vm-nexcorp-frota-01 retorna Internet apos a correcao da UDR.
  • O Connection Monitor mostra o teste ativo com status reportado a cada 30 segundos.

Etapa 25: Provision Containers: Azure Container Registry, Container Instances, and Container Apps

Contexto de Negocios: O time de desenvolvimento da NexCorp containerizou o microservico de calculo de frete. A imagem sera armazenada no Azure Container Registry e deployada tanto via Container Instances (para processamento batch) quanto via Container Apps (para a API publica).

Ambiente de Execucao:

TarefaAmbiente
Criacao do ACRAzure CLI
Deploy de containerPortal Azure (GUI)
Configuracao de Container AppsPortal Azure (GUI)

Tarefas:

  1. [CLI] Via Azure CLI, crie um Azure Container Registry chamado crnexcorpprod (nome globalmente unico, SKU Standard) em East US, no resource group rg-nexcorp-network. Habilite o admin user. Anote o Login Server.

  2. [CLI] Usando Docker (se disponivel na estacao) ou via Azure Cloud Shell, faca push de uma imagem publica de teste (ex: nginx:alpine) para o registry: autentique-se com az acr login, tageie e faca o push para crnexcorpprod.azurecr.io/nexcorp-frete:v1.0.

  3. [GUI] Provisione uma Azure Container Instance chamada aci-nexcorp-batch usando a imagem crnexcorpprod.azurecr.io/nexcorp-frete:v1.0, 1 vCPU e 1.5 GiB de memoria, em Brazil South, no resource group rg-nexcorp-network. Configure a autenticacao ao ACR usando a identidade gerenciada ou as credenciais de admin.

  4. [GUI] Crie um Container Apps Environment chamado cae-nexcorp-prod em East US, rg-nexcorp-network. Em seguida, provisione uma Container App chamada ca-nexcorp-api-frete usando a mesma imagem, com 0.5 vCPU e 1 GiB de memoria, ingress externo na porta 80, min replicas 1 e max replicas 5.

  5. [GUI] Configure uma regra de scaling na Container App para escalar para 3 replicas quando HTTP concurrent requests > 10. Documente a URL publica gerada para a Container App e confirme que o endpoint responde via curl ou browser.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Login Server do ACRaz acr show --name crnexcorpprod --query loginServerEtapas de CI/CD e troubleshooting de imagem
URL publica da Container AppPortal, Container App, OverviewTestes de integracao e DNS

Criterios de Sucesso:

  • az acr repository list --name crnexcorpprod retorna ["nexcorp-frete"].
  • A ACI aci-nexcorp-batch mostra status Running ou Terminated (dependendo da imagem) em Container instances.
  • A Container App ca-nexcorp-api-frete tem ingress habilitado e a URL publica retorna resposta HTTP 200.

Etapa 26: Create and Configure Azure App Service

Contexto de Negocios: O portal web de acompanhamento de entregas para clientes finais sera hospedado no Azure App Service. O servico precisa de TLS, dominio customizado (simulado), slots de deployment para blue-green e integracao com a VNet da NexCorp.

Ambiente de Execucao:

TarefaAmbiente
Criacao do App Service Plan e AppPortal Azure (GUI)
Configuracao de TLS e dominioPortal Azure (GUI)
Deployment slots e VNet IntegrationPortal Azure (GUI)

Tarefas:

  1. [GUI] Crie um App Service Plan chamado asp-nexcorp-web-prod em Brazil South, tier Standard S1 (S1 e o minimo para slots de deployment), OS Linux, no resource group rg-nexcorp-network.

  2. [GUI] Crie um App Service chamado app-nexcorp-portal-entregas vinculado ao plan asp-nexcorp-web-prod. Configure o Runtime Stack como Node 20 LTS. Aplique as tags obrigatorias.

  3. [GUI] Em Custom domains, adicione um dominio customizado ficticio portal.nexcorp-logistica.com. O Portal exigira validacao de dominio via TXT record ou CNAME. Documente qual valor de TXT record seria necessario adicionar no DNS externo para validar o dominio. (Nao e necessario completar a validacao de DNS externo, apenas documentar o processo.)

  4. [GUI] Em TLS/SSL settings, habilite HTTPS Only para a App. Verifique que o certificado gerenciado pela Microsoft (App Service Managed Certificate) esta disponivel e configure-o para o subdominio app-nexcorp-portal-entregas.azurewebsites.net.

  5. [GUI] Crie um Deployment Slot chamado staging no App Service. Configure VNet Integration no slot de producao para a subnet snet-services de vnet-nexcorp-hub-eus. Realize um Swap entre os slots de staging e production e documente o comportamento das variaveis de ambiente marcadas como slot-sticky versus as que sao trocadas junto com o slot.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
URL padrao do App ServicePortal, App Service, OverviewTestes de acesso e monitoramento
Valor do TXT record para validacao de dominioPortal, Custom domains, validationDocumentacao de processo DNS

Criterios de Sucesso:

  • O App Service app-nexcorp-portal-entregas esta em estado Running e acessivel via https://app-nexcorp-portal-entregas.azurewebsites.net.
  • O slot staging aparece em Deployment slots com URL propria app-nexcorp-portal-entregas-staging.azurewebsites.net.
  • HTTPS Only esta On nas configuracoes de TLS.
  • A VNet Integration mostra subnet snet-services como integrada na aba Networking do App Service.

Etapa 27: Monitor Resources with Azure Monitor

Contexto de Negocios: Com toda a infraestrutura provisionada, o time de operacoes precisa de visibilidade centralizada. O Azure Monitor sera configurado para coletar metricas e logs de VMs, storage e rede, com alertas proativos para as condicoes criticas identificadas durante o dimensionamento.

Ambiente de Execucao:

TarefaAmbiente
Configuracao de Log AnalyticsPortal Azure (GUI)
Configuracao de alertasPortal Azure (GUI)
Consulta de logsPortal Azure (GUI) (KQL)

Tarefas:

  1. [GUI] Crie um Log Analytics Workspace chamado law-nexcorp-prod em East US, rg-nexcorp-network, pricing tier Pay-as-you-go. Em seguida, em Azure Monitor, Diagnostic settings, habilite o envio de logs da storage account nexcorpstgbrs01 (categorias StorageRead, StorageWrite, StorageDelete) para o workspace.

  2. [GUI] Em ambas as VMs (vm-nexcorp-frota-01 e vm-nexcorp-frota-02), habilite o Azure Monitor Agent (AMA) e crie uma Data Collection Rule chamada dcr-nexcorp-vms associando as VMs ao workspace law-nexcorp-prod. Colete Syslog (nivel Warning e acima) e metricas de performance (CPU, memoria, disco).

  3. [GUI] Crie um Alert Rule chamado alert-vm-cpu-high em Azure Monitor: condição Percentage CPU > 85% por 5 minutos nas VMs vm-nexcorp-frota-01 e vm-nexcorp-frota-02, severidade 2, com uma Action Group chamada ag-nexcorp-ops que envia email para o nexcorp-admin-infra.

  4. [GUI] Em Azure Monitor, Logs, execute uma consulta KQL para listar os ultimos 50 eventos de Syslog com severidade Warning ou superior das VMs NexCorp. Salve a consulta como NexCorp-VM-Warnings. Em seguida, execute uma segunda consulta para calcular a media de CPU das VMs nos ultimos 30 minutos usando a tabela Perf.

  5. [GUI] Configure VM Insights para vm-nexcorp-frota-01 e aguarde a coleta inicial. Navegue para a aba Performance e documente as metricas de disco e rede exibidas. Identifique o mapa de dependencias na aba Map e confirme se a VM esta conectada a algum outro recurso detectado.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Resource ID do law-nexcorp-prodPortal, Log Analytics workspace, propertiesEtapas de backup e Site Recovery
Action Group ID ag-nexcorp-opsAzure Monitor, Action groupsAlertas de backup na Etapa 29

Criterios de Sucesso:

  • A Diagnostic Setting de nexcorpstgbrs01 aparece com destino law-nexcorp-prod e tres categorias de log habilitadas.
  • A consulta KQL NexCorp-VM-Warnings e salva e executavel sem erros (mesmo que retorne 0 linhas se nao houver warnings ainda).
  • O Alert Rule alert-vm-cpu-high aparece com status Enabled e a Action Group configurada.

Etapa 28: Use Azure Network Watcher

Contexto de Negocios: O time de redes recebeu reclamacoes de latencia intermitente entre as VMs operacionais em Brazil South e o servico de API em East US. O Network Watcher sera usado para diagnosticar a conectividade e validar as regras de NSG efetivas.

Ambiente de Execucao:

TarefaAmbiente
Diagnostico de redeAzure Network Watcher (GUI)
Analise de NSGAzure Network Watcher (GUI)

Tarefas:

  1. [GUI] Em Network Watcher, confirme que o servico esta habilitado para ambas as regioes (East US e Brazil South). Se necessario, habilite manualmente via Portal.

  2. [GUI] Use o IP flow verify para testar: trafego TCP de vm-nexcorp-frota-01 (IP privado) para o IP privado do VMSS instancia (porta 80). Documente se o trafego e permitido ou negado e qual regra de NSG esta tomando a decisao.

  3. [GUI] Use o Effective security rules na NIC de vm-nexcorp-frota-01 para ver todas as regras de NSG efetivas (incluindo as herdadas da subnet e as aplicadas diretamente na NIC). Identifique a regra de menor prioridade numerica que seria aplicada a trafego entrante na porta 3389.

  4. [GUI] Configure o Connection Monitor (criado na Etapa 24) para adicionar um novo endpoint de destino: o IP privado de vm-nexcorp-frota-02 na porta 22 (SSH). Verifique o resultado do teste e documente a latencia media reportada.

  5. [GUI] Use o Packet capture do Network Watcher para iniciar uma captura de pacotes em vm-nexcorp-frota-01 por 60 segundos, salvando o arquivo .cap na storage account nexcorpstgbrs01 no container logs-auditoria. Confirme que o arquivo foi gerado na storage account.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Nome do arquivo de packet captureStorage account, container logs-auditoriaEvidencia de auditoria de rede

Criterios de Sucesso:

  • IP flow verify retorna um resultado determinisico (Allow ou Deny) com a regra de NSG responsavel identificada.
  • O arquivo de packet capture .cap aparece no container logs-auditoria de nexcorpstgbrs01 apos 60 segundos.
  • A latencia reportada pelo Connection Monitor entre vm-nexcorp-frota-01 e vm-nexcorp-frota-02 e inferior a 50ms (dentro da mesma regiao).

Etapa 29: Implement Backup and Recovery

Contexto de Negocios: O SLA da NexCorp exige RPO de 24 horas e RTO de 4 horas para as VMs de frota. O Azure Backup sera configurado com politicas diferenciadas e o Azure Site Recovery garantira failover para East US em caso de desastre em Brazil South.

Ambiente de Execucao:

TarefaAmbiente
Criacao de Recovery Services VaultPortal Azure (GUI)
Configuracao de backupPortal Azure (GUI)
Configuracao de Site RecoveryPortal Azure (GUI)

Tarefas:

  1. [GUI] Crie um Recovery Services Vault chamado rsv-nexcorp-bkp-brs em Brazil South, rg-nexcorp-network, com redundancia de storage Geo-redundant (GRS). Crie um segundo vault rsv-nexcorp-asr-eus em East US para o Site Recovery.

  2. [GUI] Em rsv-nexcorp-bkp-brs, crie uma Backup Policy customizada chamada policy-nexcorp-vms-daily: backup diario as 22:00 BRT, retencao diaria de 7 dias, retencao semanal (domingo) de 4 semanas, retencao mensal (primeiro domingo) de 12 meses.

  3. [GUI] Habilite o backup para vm-nexcorp-frota-01 e vm-nexcorp-frota-02 usando a policy policy-nexcorp-vms-daily. Inicie um backup imediato (on-demand) para ambas as VMs e aguarde a conclusao. Documente o Recovery point gerado.

  4. [GUI] Apos o backup completar, simule um restore: em vm-nexcorp-frota-01, use Restore VM para criar uma nova VM vm-nexcorp-frota-01-restored a partir do recovery point mais recente. Use a opcao Create new para nao sobrescrever a VM original. Documente o tempo total de restore.

  5. [GUI] Em rsv-nexcorp-asr-eus, configure o Azure Site Recovery para replicar vm-nexcorp-frota-01 de Brazil South para East US. Defina a VNet de destino como vnet-nexcorp-hub-eus, subnet snet-management. Inicie a replicacao e aguarde o status Protected no painel de replicacao. Em seguida, execute um Test Failover para a subnet snet-services e documente os passos de cleanup necessarios apos o teste.

Registro de Variaveis:

ValorOnde EncontrarOnde Sera Usado
Recovery Point ID do backup de vm-nexcorp-frota-01RSV, Backup items, Recovery pointsEvidencia de restore bem-sucedido
Status de replicacao do ASRRSV, Replicated itemsEtapa de failover de teste

Criterios de Sucesso:

  • O backup on-demand de ambas as VMs completa com status Completed em Backup jobs.
  • A VM restaurada vm-nexcorp-frota-01-restored aparece em rg-nexcorp-network com status Running.
  • O item replicado vm-nexcorp-frota-01 no ASR mostra Replication health: Healthy e Status: Protected.
  • O Test Failover completa com sucesso e a VM de teste e visivel na VNet de destino.

4. Validacao Global do Ambiente

Checklist de Recursos Provisionados

ServicoNome do RecursoRegiaoResource GroupStatus Esperado
Microsoft Entra Usersnexcorp-admin-infra, nexcorp-ops-frota, nexcorp-fin-analyst, nexcorp-dev-deployN/AN/AEnabled
Microsoft Entra GroupsNexCorp-Infra-Admins, NexCorp-Ops-Users, NexCorp-FinOps, NexCorp-BrazilUsers, NexCorp-RapiLog-GuestsN/AN/AActive
Management GroupsMG-NexCorp-Root, MG-NexCorp-Production, MG-NexCorp-DevN/AN/AActive
Policy InitiativeNexCorp-Baseline-GovernanceSubscriptionN/ACompliant
Resource Groupsrg-nexcorp-identity, rg-nexcorp-network, rg-nexcorp-storageEast US / Brazil SouthN/AProvisioned
Storage Account (BRS)nexcorpstgbrs01Brazil Southrg-nexcorp-storageAvailable
Storage Account (EUS)nexcorpstgeus01East USrg-nexcorp-storageAvailable
Key Vaultkv-nexcorp-prodEast USrg-nexcorp-storageActive
VNet Hubvnet-nexcorp-hub-eusEast USrg-nexcorp-networkConnected (peered)
VNet Spokevnet-nexcorp-spoke-brsBrazil Southrg-nexcorp-networkConnected (peered)
NSG Spokensg-nexcorp-spoke-vmsEast USrg-nexcorp-networkAssociated to subnet
NSG Hub Mgmtnsg-nexcorp-hub-mgmtEast USrg-nexcorp-networkAssociated to subnet
Azure Bastionbastion-nexcorp-hubEast USrg-nexcorp-networkRunning
Load Balancerlb-nexcorp-prodEast USrg-nexcorp-networkFrontend IP assigned
Private Endpointpe-nexcorp-stg-blobBrazil Southrg-nexcorp-networkApproved
Private DNS Zonenexcorp.internalGlobalrg-nexcorp-networkLinked to both VNets
Public DNS Zonenexcorp-logistica.comGlobalrg-nexcorp-networkActive
VMvm-nexcorp-frota-01Brazil Southrg-nexcorp-networkRunning
VMvm-nexcorp-frota-02Brazil Southrg-nexcorp-networkRunning
Availability Setavset-nexcorp-frotaBrazil Southrg-nexcorp-networkProvisioned
VM Scale Setvmss-nexcorp-apiEast USrg-nexcorp-networkRunning (2 instances)
Container RegistrycrnexcorpprodEast USrg-nexcorp-networkActive
Container Instanceaci-nexcorp-batchBrazil Southrg-nexcorp-networkRunning/Terminated
Container Appca-nexcorp-api-freteEast USrg-nexcorp-networkRunning
App Service Planasp-nexcorp-web-prodBrazil Southrg-nexcorp-networkRunning
App Serviceapp-nexcorp-portal-entregasBrazil Southrg-nexcorp-networkRunning
Log Analytics Workspacelaw-nexcorp-prodEast USrg-nexcorp-networkActive
Recovery Services Vault (Backup)rsv-nexcorp-bkp-brsBrazil Southrg-nexcorp-networkActive
Recovery Services Vault (ASR)rsv-nexcorp-asr-eusEast USrg-nexcorp-networkActive

Testes de Integracao End-to-End

Teste 1: Autenticacao e Acesso RBAC

Faca login no Portal Azure com nexcorp-fin-analyst. Tente criar um recurso em qualquer resource group. O resultado esperado e um erro de permissao insuficiente (Reader nao pode criar). Em seguida, navegue para Cost Management e confirme que o usuario ve os alertas de budget configurados na Etapa 11.

Teste 2: Conectividade Privada VM para Storage

Via Bastion, conecte-se a vm-nexcorp-frota-01. Use curl para acessar a URL do Private Endpoint da storage: https://nexcorpstgbrs01.blob.core.windows.net/artefatos-deploy?restype=container&comp=list com o SAS token da stored access policy. O resultado esperado e uma resposta XML listando os blobs do container, com o DNS resolvendo para o IP privado do Private Endpoint.

Teste 3: Resolucao DNS Interna Cross-VNet

Via Bastion em vm-nexcorp-frota-01 (Brazil South, spoke), resolva o hostname vm-nexcorp-frota-01.nexcorp.internal. O resultado esperado e o IP privado da propria VM, confirmando que o DNS privado com auto-registration funciona via peering de VNets.

Teste 4: Escalabilidade do VMSS e Load Balancer

No VMSS vmss-nexcorp-api, aumente manualmente a capacidade de 2 para 4 instancias via Portal. Verifique que as 4 instancias aparecem como Healthy no backend pool do Load Balancer lb-nexcorp-prod. Em seguida, reduza para 2 instancias e confirme que o Load Balancer atualiza automaticamente.

Teste 5: Backup e Restore de Storage (Azure Files)

Em nexcorpstgbrs01, habilite o backup de Azure Files para o file share fs-nexcorp-frota usando o vault rsv-nexcorp-bkp-brs. Execute um backup on-demand. Em seguida, delete o arquivo rota-config-sample.json do file share e restaure-o a partir do recovery point usando a opcao File Recovery do Azure Backup. Confirme que o arquivo e restaurado com sucesso.


Tabela de Troubleshooting

SintomaCausa ProvavelSolucao Esperada
Criacao de recurso falha com RequestDisallowedByPolicyPolicy NexCorp-Baseline-Governance bloqueando por localizacao ou tag ausenteVerificar a regiao do recurso (deve ser East US ou Brazil South) e adicionar a tag Environment = Production
Usuario nao consegue acessar resource group mesmo sendo membro de grupo com ContributorCache de token RBAC (pode levar ate 30 minutos para propagar)Aguardar ou forcar novo login com az account clear && az login
VM nao resolve hostname interno vm-nexcorp-frota-02.nexcorp.internalDNS privado nao vinculado a VNet ou auto-registration desabilitadoVerificar os virtual network links da zona privada e confirmar que auto-registration esta habilitado
AzCopy falha com 403 Forbidden ao acessar storageFirewall da storage account bloqueando IP da estacao ou IP nao adicionadoAdicionar o IP publico atual da estacao nas excecoes do firewall de nexcorpstgbrs01
VMSS nao escalona mesmo com CPU altaRegra de autoscale com condicao de tempo muito longa ou metrica incorretaVerificar que a metrica usada e Percentage CPU (nao Available Memory) e que o periodo de cooldown nao esta impedindo o scale
Bastion nao conecta a VMVM sem agente Bastion ou NSG na NIC bloqueando porta 22 ou 3389Verificar que nao ha NSG na NIC da VM com regra Deny para as portas de acesso. O Bastion usa o IP de gerenciamento da Microsoft, nao o IP do cliente
Container App nao inicia com erro de pull de imagemACR sem permissao para a identidade gerenciada da Container App EnvironmentAtribuir o role AcrPull ao principal da Container App no ACR crnexcorpprod
Site Recovery mostra Replication health: CriticalConectividade de saida da VM bloqueada (UDR incorreta ou NSG) para os endpoints do ASRVerificar UDR na subnet snet-vms-prod e confirmar que a rota default aponta para Internet apos a correcao da Etapa 24
Alerta do Azure Monitor nao disparaAction Group com email invalido ou condicao de alerta com dimensao incorretaVerificar o email do destinatario na Action Group e confirmar que a dimensao do alerta nao esta filtrada por um nome de VM incorreto
Lock ReadOnly em resource group impede operacoes de leitura de metadataLocks ReadOnly tambem bloqueiam operacoes de escritas de metadata (como listar chaves de storage)Para operacoes de manutencao legitimas, remover o lock temporariamente com Remove-AzResourceLock, executar a operacao e reaplicar o lock

Diagrama da Arquitetura Final

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Fim do Laboratorio AZ-104 NexCorp Logistica S.A.
Todos os recursos devem ser removidos apos a conclusao para evitar custos desnecessarios. Execute az group delete em cada resource group ou delete manualmente pelo Portal.