[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
| Recurso | Especificacao Minima | Observacao |
|---|---|---|
| Subscription Azure | Pay-As-You-Go ou Visual Studio | Permissao de Owner obrigatoria |
| Microsoft Entra ID Tenant | Tenant proprio (nao guest) | Licenca P1 ou P2 necessaria para SSPR |
| Estacao de Trabalho | Windows 11 ou Ubuntu 22.04 | Acesso ao Portal Azure |
| PowerShell | 7.4 ou superior com modulo Az 11.x | Install-Module Az |
| Azure CLI | 2.59 ou superior | az --version para confirmar |
| Bicep CLI | 0.26 ou superior | az bicep version |
| Visual Studio Code | Ultima versao com extensao Bicep | Para edicao de templates |
| Git | 2.x | Para versionamento dos templates |
Credenciais Base
| Identidade | Funcao Inicial | Observacao |
|---|---|---|
admin@<tenant>.onmicrosoft.com | Global Administrator | Sua conta principal |
| Conta pessoal externa (Gmail ou Outlook) | Simulacao de usuario RapiLog | Para 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
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:
| Tarefa | Ambiente |
|---|---|
| Criacao de usuarios | Portal Azure (GUI) e PowerShell (CLI) |
| Criacao de grupos | Portal Azure (GUI) |
| Atribuicao de membros a grupos | Portal Azure (GUI) |
Tarefas:
-
[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) enexcorp-fin-analyst@<tenant>(Display Name: "Analyst Financeiro NexCorp", Usage Location: BR). Exija alteracao de senha no primeiro login para todos. -
[CLI]Usando PowerShell com o modulo Az, crie um quarto usuarionexcorp-dev-deploy@<tenant>(Display Name: "Deploy Agent NexCorp") com senha temporaria definida via parametro seguro, sem usar o Portal. -
[GUI]Crie tres grupos do tipo Security (nao Microsoft 365):NexCorp-Infra-Admins(Assigned),NexCorp-Ops-Users(Assigned) eNexCorp-FinOps(Assigned). Adicione os respectivos usuarios criados como membros diretos de cada grupo. -
[GUI]Crie um grupo dinamico do tipo Security chamadoNexCorp-BrazilUserscom uma regra de associacao dinamica baseada na propriedadeusageLocationigual aBR. Verifique que os tres usuarios com Usage Location BR foram automaticamente incluidos. -
[CLI]Via Azure CLI (az ad), liste todos os membros do grupoNexCorp-Infra-Adminse confirme a saida em formato JSON.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Object ID do grupo NexCorp-Infra-Admins | Entra ID, propriedades do grupo | Etapa 3 (atribuicao de funcoes) |
Object ID do grupo NexCorp-FinOps | Entra ID, propriedades do grupo | Etapa 3 (atribuicao de funcoes) |
UPN do usuario nexcorp-admin-infra | Entra ID, perfil do usuario | Etapas 3, 4 e 5 |
Object ID do usuario nexcorp-dev-deploy | Entra ID, perfil do usuario | Etapa 13 (ACR e deploy) |
Criterios de Sucesso:
- No Portal, a aba Members de
NexCorp-BrazilUsersexibe os tres usuarios comusageLocation = BRsem atribuicao manual. - O comando
az ad group member list --group NexCorp-Infra-Adminsretorna um array JSON com pelo menos um objeto contendodisplayName. - Todos os quatro usuarios aparecem em Users com status Enabled e
Sign-in statusativo.
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:
| Tarefa | Ambiente |
|---|---|
| Edicao de propriedades | PowerShell (CLI) |
| Verificacao | Portal Azure (GUI) |
Tarefas:
-
[CLI]Via PowerShell (Update-MgUser), atualize os seguintes campos paranexcorp-ops-frota:Department = "Operacoes de Frota",JobTitle = "Coordenador de Frota",OfficeLocation = "Brazil South",CompanyName = "NexCorp Logistica S.A.". -
[CLI]Para os usuariosnexcorp-admin-infraenexcorp-dev-deploy, definaDepartment = "Infraestrutura TI"eJobTitleadequados aos seus papeis, usando um loop PowerShell que itere sobre um array de Object IDs. -
[CLI]Via Azure CLI, adicione o atributoMobilePhoneao usuarionexcorp-fin-analystcom um numero de telefone ficticio no formato+55 11 9XXXX-XXXX. Verifique que a propriedade foi persistida comaz ad user show. -
[GUI]No Portal, confirme que a regra dinamica do grupoNexCorp-BrazilUsersainda inclui todos os membros esperados apos as atualizacoes de propriedade. Navegue para a aba Dynamic membership rules e valide o status de processamento. -
[GUI]No grupoNexCorp-Ops-Users, adicionenexcorp-fin-analystcomo 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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Confirmacao de Department atualizado | az ad user show --id <UPN> --query department | Evidencia de auditoria |
Criterios de Sucesso:
Get-MgUser -UserId <UPN> -Property Department,JobTitle,OfficeLocationretorna todos os campos preenchidos corretamente paranexcorp-ops-frota.- O grupo
NexCorp-BrazilUsersnao perdeu membros apos as atualizacoes. nexcorp-fin-analystaparece como membro tanto emNexCorp-BrazilUsers(por regra dinamica) quanto emNexCorp-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:
| Tarefa | Ambiente |
|---|---|
| Atribuicao de licencas por grupo | Portal Azure (GUI) |
| Verificacao de licencas por usuario | Portal Azure (GUI) e PowerShell |
Tarefas:
-
[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). -
[GUI]Atribua a licenca Entra ID P1 ao grupoNexCorp-Infra-Admins. Certifique-se de que todos os planos de servico necessarios para SSPR estao habilitados e que nenhum plano conflitante esta desativado. -
[GUI]Atribua a mesma licenca ao grupoNexCorp-FinOps, habilitando apenas os planos de servico relevantes para usuarios nao tecnicos (mantenha o Azure AD Premium P1 habilitado, avalie desabilitar planos desnecessarios). -
[CLI]Via PowerShell (Get-MgUserLicenseDetail), confirme que o usuarionexcorp-admin-infraherdou a licenca do grupoNexCorp-Infra-Adminse que o estado de atribuicao eInheritedFromGroup. -
[GUI]Simule um conflito: tente atribuir diretamente aonexcorp-admin-infraa 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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| SKU ID da licenca P1 | Entra ID, Licenses, SKU ID | Referencia em scripts futuros |
Criterios de Sucesso:
Get-MgUserLicenseDetail -UserId <UPN_infra_admin>retorna um objeto comSkuPartNumbercontendoAAD_PREMIUMeAssignedByGroupcom o Object ID do grupo.nexcorp-fin-analystnao 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:
| Tarefa | Ambiente |
|---|---|
| Convite de usuarios externos | Portal Azure (GUI) |
| Criacao de grupo para externos | Portal Azure (GUI) |
| Revisao de acesso | Portal Azure (GUI) |
Tarefas:
-
[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. -
[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. -
[GUI]Apos o convite ser aceito (ou usando o estado pending), crie o grupoNexCorp-RapiLog-Guestsdo tipo Security (Assigned) e adicione o usuario externo convidado como membro. -
[GUI]Verifique as propriedades do usuario convidado: confirme que o campoUser typeesta como Guest, que oSourceindica a origem externa correta e que oExternal email addressesta populado. -
[GUI]Em Identity Governance, habilite uma Access Review para o grupoNexCorp-RapiLog-Guestscom revisao mensal, revisor definido comonexcorp-admin-infrae acao ao expirar configurada para remover o acesso automaticamente. Documente o ID da Access Review criada.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Object ID do usuario Guest | Entra ID, perfil do usuario externo | Etapa 3 (possivelmente para RBAC restrito) |
Object ID do grupo NexCorp-RapiLog-Guests | Entra ID, propriedades do grupo | Etapas subsequentes de RBAC |
Criterios de Sucesso:
- O usuario externo aparece na lista de usuarios com
User type = GuesteSource = External Microsoft Entra IDouSource = Microsoft account, conforme a conta usada. - O grupo
NexCorp-RapiLog-Guestsexibe 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:
| Tarefa | Ambiente |
|---|---|
| Configuracao de SSPR | Portal Azure (GUI) |
| Teste de SSPR | Portal Azure (GUI) com usuario de teste |
Tarefas:
-
[GUI]No Microsoft Entra ID, em Password reset, habilite o SSPR para o grupoNexCorp-Infra-Admins(escopo Selected, nao All). Nao habilite para todos os usuarios neste momento. -
[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. -
[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 como180. -
[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. -
[GUI]Acesse o portal de SSPR (https://aka.ms/sspr) com o usuarionexcorp-admin-infrae complete o fluxo de registro de metodos de autenticacao. Documente quais metodos foram registrados com sucesso.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Status de registro SSPR do nexcorp-admin-infra | Entra ID, Password reset, Registration report | Evidencia de compliance |
Criterios de Sucesso:
- O relatorio em Password reset, Registration mostra
nexcorp-admin-infracomo registrado. - Um usuario do grupo
NexCorp-FinOps(nao habilitado para SSPR) ao acessarhttps://aka.ms/ssprrecebe 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de resource groups | Portal Azure (GUI) |
| Atribuicao de funcoes | Portal Azure (GUI) e Azure CLI |
| Verificacao de acesso | Azure CLI |
Tarefas:
-
[GUI]Crie tres Resource Groups na subscription:rg-nexcorp-identity(East US),rg-nexcorp-network(East US) erg-nexcorp-storage(Brazil South). Use a tagEnvironment = ProductioneCostCenter = NexCorp-ITem todos. -
[GUI]Atribua a funcao Contributor ao grupoNexCorp-Infra-Adminsno escopo da Subscription (nao nos resource groups individualmente). Documente o Assignment ID gerado. -
[CLI]Via Azure CLI, atribua a funcao Reader ao grupoNexCorp-FinOpsno escopo da Subscription usandoaz role assignment create. Use o parametro--assignee-object-idcom o Object ID do grupo (nao o nome do grupo). -
[CLI]Atribua a funcao Contributor ao usuarionexcorp-dev-deployexclusivamente no resource grouprg-nexcorp-storage, usando Azure CLI. Esta atribuicao e mais restrita que a do grupo de infraestrutura. -
[CLI]Executeaz 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 entreprincipalType = UsereprincipalType = Groupna saida JSON.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Assignment ID da funcao Contributor no grupo NexCorp-Infra-Admins | Portal, IAM da subscription, Role assignments | Etapa 6 (interpretacao de acesso) |
| Resource Group IDs dos tres RGs | Portal, propriedades de cada RG | Todas as etapas subsequentes |
| Subscription ID | Portal, Subscriptions | Todas 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 comroleDefinitionName = 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 comContributornaquele 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:
| Tarefa | Ambiente |
|---|---|
| Analise de acesso efetivo | Portal Azure (GUI) |
| Interpretacao de heranca | Portal Azure (GUI) e PowerShell |
Tarefas:
-
[GUI]No IAM do resource grouprg-nexcorp-network, navegue para Check access e insira o usuarionexcorp-ops-frota. Documente todas as funcoes que aparecem, incluindo as herdadas da subscription. -
[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 mostramInheritedversusDirect. -
[CLI]Via PowerShell, useGet-AzRoleAssignment -SignInName <UPN_fin_analyst>e filtre os resultados para listar apenas as atribuicoes comScopecontendo/subscriptions/. Confirme que o analyst possui apenas Reader. -
[GUI]Identifique um cenario de conflito potencial:nexcorp-dev-deploypossui Contributor emrg-nexcorp-storage(atribuicao direta) e o grupoNexCorp-Infra-Adminspossui Contributor na subscription. Senexcorp-dev-deployfor adicionado ao grupo, qual seria o acesso efetivo? Verifique sem adicionar o usuario ao grupo. -
[GUI]No IAM derg-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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Numero total de role assignments na subscription | Portal IAM, filtro "All" | Baseline para auditoria futura |
Criterios de Sucesso:
- A verificacao de acesso efetivo de
nexcorp-ops-frotaemrg-nexcorp-networkmostraContributorherdado da subscription (via grupoNexCorp-Infra-Admins). nexcorp-fin-analysttem apenasReadere nenhuma outra funcao em nenhum escopo.- A aba Deny assignments de
rg-nexcorp-storageaparece 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:
| Tarefa | Ambiente |
|---|---|
| Criacao e atribuicao de policies | Portal Azure (GUI) |
| Teste de compliance | Portal Azure (GUI) e Azure CLI |
Tarefas:
-
[GUI]No servico Policy, atribua a policy built-in "Allowed locations" no escopo da subscription, configurando apenasEast USeBrazil Southcomo localizacoes permitidas. Definaenforcement modecomo Enabled. -
[GUI]Atribua a policy built-in "Require a tag and its value on resources" ao escopo da subscription, configurando o parEnvironmenteProduction. Configure o effect como Deny. -
[GUI]Crie uma Policy Initiative (Policy Set) chamadaNexCorp-Baseline-Governanceque agrupe as duas policies atribuidas acima. Atribua a initiative no escopo da subscription substituindo as duas atribuicoes individuais. -
[CLI]Via Azure CLI, tente criar um resource group na regiaoWest Europeusandoaz group create. Documente a mensagem de erro exata retornada pela policy. Este e um cenario de troubleshooting intencional: a policy deve bloquear a criacao. -
[GUI]Em Policy, Compliance, aguarde o ciclo de avaliacao (ou force viaaz policy state trigger-scan) e verifique o compliance state dos tres resource groups criados na Etapa 6. Identifique por querg-nexcorp-identitypode aparecer como Non-compliant e corrija o problema.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Policy Assignment ID da initiative NexCorp-Baseline-Governance | Policy, Assignments, propriedades | Etapas de troubleshooting |
| Mensagem de erro da tentativa de criacao em West Europe | Output do Azure CLI | Evidencia de funcionamento correto |
Criterios de Sucesso:
az group create --name rg-test-westeurope --location westeuroperetorna erro comRequestDisallowedByPolicy.- Tentativa de criar um recurso sem a tag
Environment = Productione bloqueada com mensagem de policy denial. - O dashboard de Policy, Compliance mostra a initiative
NexCorp-Baseline-Governancecom 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de locks | Portal Azure (GUI) e PowerShell |
| Teste de comportamento | Portal Azure (GUI) |
Tarefas:
-
[GUI]Emrg-nexcorp-network, aplique um lock do tipo Delete com nomelock-network-nodeletee descricao clara indicando a justificativa operacional. -
[GUI]Emrg-nexcorp-identity, aplique um lock do tipo Read-only com nomelock-identity-readonly. -
[CLI]Via PowerShell (New-AzResourceLock), aplique um lock Delete emrg-nexcorp-storagecom nomelock-storage-nodelete. -
[GUI]Tente excluir o resource grouprg-nexcorp-networkpelo Portal. Documente o comportamento exato, incluindo a mensagem de erro. Este e um cenario de troubleshooting intencional. -
[GUI]Com o lock Read-only emrg-nexcorp-identity, tente criar um novo recurso (por exemplo, um segundo resource group ou qualquer recurso dentro derg-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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Lock ID de lock-network-nodelete | PowerShell: Get-AzResourceLock | Referencia para remocao controlada futura |
Criterios de Sucesso:
Get-AzResourceLock -ResourceGroupName rg-nexcorp-networkretorna o lock comLockType = CanNotDelete.- A tentativa de exclusao de
rg-nexcorp-networkfalha com erroScopeLocked. - A tentativa de criar recursos em
rg-nexcorp-identity(com lock ReadOnly) falha comScopeLockedindicando 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:
| Tarefa | Ambiente |
|---|---|
| Aplicacao de tags | Portal Azure (GUI) e Azure CLI |
| Consulta de tags | Azure CLI e PowerShell |
Tarefas:
-
[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). -
[CLI]Via Azure CLI, useaz tag updatepara adicionar a tagCreatedDate = 2024-01-15emrg-nexcorp-storagesem remover as tags existentes (use a operacaomerge, naoreplace). -
[CLI]Via PowerShell, liste todos os resource groups que possuem a tagEnvironment = ProductionusandoGet-AzResourceGroup -Tag @{Environment = "Production"}. Confirme que todos os tres RGs aparecem. -
[CLI]Via Azure CLI, liste todos os recursos (nao apenas RGs) na subscription que possuem a tagCostCenter = NexCorp-IT. Neste momento, apenas os RGs devem aparecer. Guarde o comando para reuso nas etapas seguintes. -
[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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Output do comando de listagem de recursos por tag | Azure CLI output | Validacao nas etapas de storage e compute |
Criterios de Sucesso:
az tag listna subscription mostra as chavesEnvironment,CostCenter,ProjecteManagedBycomo tags existentes.Get-AzResourceGroup -Tag @{Environment = "Production"}retorna exatamente 3 resource groups.- Nenhum recurso orfao sem a tag
Environmentexiste 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de Management Groups | Portal Azure (GUI) |
| Configuracao de budgets e alertas | Portal Azure (GUI) |
| Analise de recomendacoes | Portal Azure (GUI) |
Tarefas:
-
[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-ProductioneMG-NexCorp-Dev. Mova a subscription atual paraMG-NexCorp-Production. -
[GUI]Em Cost Management, Budgets, crie um budget mensal chamadobudget-nexcorp-monthlycom 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 donexcorp-fin-analyst. -
[GUI]Crie um segundo budget chamadobudget-nexcorp-computeespecificamente para o resource grouprg-nexcorp-network(que abrigara VMs nas proximas etapas), com valor de R$ 2.000 mensais e alerta em 90%. -
[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). -
[GUI]Verifique se a policyNexCorp-Baseline-Governancefoi herdada pela subscription apos a movimentacao para o Management GroupMG-NexCorp-Production. Navegue para Policy, Compliance e confirme o escopo de heranca.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
ID do Management Group MG-NexCorp-Production | Portal, Management groups, propriedades | Atribuicoes de policy no nivel MG |
Budget ID budget-nexcorp-monthly | Cost Management, Budgets, propriedades | Monitoramento 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-Governanceaparece 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de storage accounts | Bicep (IaC) |
| Configuracao de redundancia e replicacao | Portal Azure (GUI) |
| Verificacao | Azure CLI |
Tarefas:
-
[IaC]Crie um arquivo Bicep chamadonexcorp-storage.bicepque provisione duas storage accounts:nexcorpstgbrs01(Brazil South, SKUStandard_GRS, kindStorageV2, access tierHot) enexcorpstgeus01(East US, SKUStandard_LRS, kindStorageV2, access tierCool). Aplique as tags obrigatorias via parametros. Implante no resource grouprg-nexcorp-storage. -
[GUI]Apos o deploy, emnexcorpstgbrs01, configure Object Replication para replicar o conteudo de um container chamadoartefatos-deploypara um container de mesmo nome emnexcorpstgeus01. Anote o Policy ID gerado. -
[GUI]Emnexcorpstgbrs01, altere a redundancia deGRSparaZRSpelo 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. -
[CLI]Via Azure CLI, habilite a criptografia com chave gerenciada pelo cliente (Customer-Managed Key) paranexcorpstgbrs01usando um Azure Key Vault. Primeiro, crie o Key Vaultkv-nexcorp-prodem East US no RGrg-nexcorp-storage, gere uma chave RSA 2048 e associe a storage account. Documente cada comando necessario. -
[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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Nome da storage account Brazil South | nexcorpstgbrs01 | Etapas 13, 14, 15 |
| Nome da storage account East US | nexcorpstgeus01 | Etapa de replicacao e backup |
| Object Replication Policy ID | Portal, storage account, Object replication | Verificacao de replicacao |
| Key Vault Name | kv-nexcorp-prod | Etapas de VM (disk encryption) |
| Resource ID do Key Vault | az keyvault show --name kv-nexcorp-prod --query id | Etapa 18 (VMs com encryption at host) |
Criterios de Sucesso:
az storage account show --name nexcorpstgbrs01 --resource-group rg-nexcorp-storage --query skuretorna 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.keySourceretornaMicrosoft.Keyvaultapos 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:
| Tarefa | Ambiente |
|---|---|
| Configuracao de SAS tokens | Portal Azure (GUI) e Azure CLI |
| Configuracao de firewall | Portal Azure (GUI) |
| Configuracao de stored access policy | Azure CLI |
Tarefas:
-
[GUI]Emnexcorpstgbrs01, navegue para Shared access signature e gere um SAS token no nivel de Account com permissoesRead, Write, Listpara o servico Blob, validade de 2 horas a partir do momento atual. Copie a SAS token string e a Blob service SAS URL. -
[CLI]Via Azure CLI, crie uma Stored Access Policy chamadapolicy-deploy-agentno containerartefatos-deploycom permissoesr,w,le 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. -
[GUI]Emnexcorpstgbrs01, 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. -
[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. -
[GUI]Em Access keys denexcorpstgbrs01, 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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| SAS Token (stored access policy) | Output do Azure CLI | Etapa de teste com AzCopy |
| Blob service SAS URL | Portal, SAS generation output | Etapa 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-agentpode ser revogado deletando ou alterando a stored access policy. - Apos habilitar o firewall, acesso sem IP autorizado retorna
AuthorizationFailureou403 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de file share | Portal Azure (GUI) |
| Configuracao de acesso por identidade | Portal Azure (GUI) |
| Transferencia de dados | AzCopy (CLI) |
Tarefas:
-
[GUI]Emnexcorpstgbrs01, crie um File Share chamadofs-nexcorp-frotacom quota de 100 GiB e tier Transaction Optimized. -
[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. -
[GUI]Atribua o RBAC role Storage File Data SMB Share Contributor ao grupoNexCorp-Ops-Usersno escopo do file sharefs-nexcorp-frota(nao no nivel da storage account). -
[CLI]Use o AzCopy para fazer upload de um arquivo de teste chamadorota-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. -
[GUI]No Azure Storage Explorer, conecte-se anexcorpstgbrs01usando OAuth (sua conta de administrador), navegue ate o file sharefs-nexcorp-frotae verifique o arquivo enviado. Em seguida, crie um Snapshot manual do file share e documente o nome do snapshot gerado.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Nome do File Share | fs-nexcorp-frota | Etapa de backup (Azure Backup for Files) |
| Nome do snapshot do file share | Storage Explorer, propriedades do snapshot | Etapa de restore na secao de backup |
Criterios de Sucesso:
- O file share aparece em File shares com status
Availablee quota100 GiB. - O arquivo
rota-config-sample.jsonesta 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 Contributorao grupoNexCorp-Ops-Userse 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:
| Tarefa | Ambiente |
|---|---|
| Configuracao de blob containers | Portal Azure (GUI) |
| Lifecycle management | Portal Azure (GUI) |
| Versioning | Portal Azure (GUI) |
Tarefas:
-
[GUI]Emnexcorpstgbrs01, verifique que o containerartefatos-deployexiste (criado na Etapa 12 para replicacao). Se nao existir, crie-o com nivel de acesso Private (no anonymous access). -
[GUI]Habilite Blob versioning emnexcorpstgbrs01. Faca o upload de um arquivodeploy-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. -
[GUI]Configure uma regra de Lifecycle Management chamadarule-nexcorp-tieringcom 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 containerartefatos-deployusando filtros de prefixo. -
[GUI]Configure uma segunda regra de lifecycle chamadarule-nexcorp-versionspara deletar versoes anteriores de blobs com mais de 60 dias, mantendo apenas as 3 versoes mais recentes. -
[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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Nome do container artefatos-deploy | Storage account, Containers | Etapas de deploy e AzCopy |
Criterios de Sucesso:
- O versionamento mostra pelo menos 2 versoes do arquivo
deploy-manifest.jsoncom timestamps distintos. - A regra de lifecycle
rule-nexcorp-tieringaparece 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:
| Tarefa | Ambiente |
|---|---|
| Interpretacao e exportacao | Portal Azure (GUI) e Azure CLI |
| Modificacao de templates | Visual Studio Code (IaC) |
| Deploy | Azure CLI (IaC) |
Tarefas:
-
[GUI]No Portal, exporte o template ARM do resource grouprg-nexcorp-storage(que contem a storage account e o Key Vault) usando Export template no nivel do RG. Salve o arquivonexcorp-storage-export.jsonlocalmente e abra-o no VS Code. -
[IaC]Use o Azure CLI para converter o template ARM exportado em Bicep:az bicep decompile --file nexcorp-storage-export.json. Analise o arquivo.bicepgerado e identifique pelo menos 3 diferencas sintaticas entre o ARM JSON e o Bicep equivalente. -
[IaC]Modifique o arquivo Bicep exportado para adicionar um novo container Blob chamadologs-auditoriana storage accountnexcorpstgbrs01. O container deve ter nivel de acessoPrivatee a modificacao deve ser feita no Bicep (nao no ARM JSON). -
[IaC]Deploy o Bicep modificado em modo Incremental no resource grouprg-nexcorp-storageusandoaz deployment group create. Confirme que apenas o novo container foi adicionado e que os recursos existentes nao foram alterados. -
[CLI]Via Azure CLI, verifique o historico de deployments do resource group comaz deployment group list --resource-group rg-nexcorp-storage. Identifique o deployment ID do ultimo deploy e useaz deployment group showpara ver os outputs e parametros usados.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Deployment ID do ultimo deploy em rg-nexcorp-storage | az deployment group list output | Referencia para troubleshooting |
Nome do container logs-auditoria | Portal, storage account, Containers | Etapas de monitoramento e auditoria |
Criterios de Sucesso:
- O arquivo
nexcorp-storage-export.bicepe gerado sem erros pelo comandoaz bicep decompile. - O container
logs-auditoriaaparece emnexcorpstgbrs01apos o deploy incremental. az deployment group list --resource-group rg-nexcorp-storagemostra pelo menos dois deployments com statusSucceeded.
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:
| Tarefa | Ambiente |
|---|---|
| Criacao de VNets e subnets | Bicep (IaC) |
| Configuracao de peering | Portal Azure (GUI) |
| Verificacao de conectividade | Azure CLI |
Tarefas:
-
[IaC]Crie um arquivo Bicepnexcorp-network.bicepque provisione: VNetvnet-nexcorp-hub-eus(10.0.0.0/16) em East US com subnetssnet-management(10.0.1.0/24),snet-services(10.0.2.0/24) eAzureBastionSubnet(10.0.3.0/27, nome obrigatorio para Bastion). VNetvnet-nexcorp-spoke-brs(10.1.0.0/16) em Brazil South com subnetssnet-vms-prod(10.1.1.0/24) esnet-containers(10.1.2.0/24). Implante emrg-nexcorp-network. -
[GUI]Configure o VNet Peering bidirecional entrevnet-nexcorp-hub-eusevnet-nexcorp-spoke-brs. Nomeie os peerings comopeer-hub-to-spokeepeer-spoke-to-hub. Habilite Allow forwarded traffic e Allow gateway transit no lado do hub. -
[GUI]Configure dois Public IP Addresses estaticos (SKU Standard):pip-nexcorp-bastion(East US) para o Azure Bastion epip-nexcorp-lb-prod(East US) para o Load Balancer que sera configurado adiante. Atribua a tagEnvironment = Production. -
[GUI]Crie uma User-Defined Route (UDR) chamadart-nexcorp-spokecom uma rota0.0.0.0/0com next hop Virtual appliance apontando para um IP ficticio10.0.0.100(simulando um NVA/Firewall no hub). Associe esta UDR a subnetsnet-vms-prod. -
[GUI]Identifique o problema intencional: com a UDR apontando para um IP inexistente, as VMs emsnet-vms-prodnao 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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Resource ID de vnet-nexcorp-hub-eus | Portal, VNet properties | Etapas de Bastion, NSG e Load Balancer |
Resource ID de vnet-nexcorp-spoke-brs | Portal, VNet properties | Etapas de VM e containers |
IP de pip-nexcorp-bastion | Portal, Public IP, propriedades | Etapa 22 (Azure Bastion) |
IP de pip-nexcorp-lb-prod | Portal, Public IP, propriedades | Etapa 25 (Load Balancer) |
Subnet ID de snet-vms-prod | Portal ou az network vnet subnet show | Etapas de VM |
Subnet ID de AzureBastionSubnet | Portal ou CLI | Etapa 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-networkretornapeeringState = Connected.- Ambos os peerings aparecem com status Connected no Portal.
- A UDR
rt-nexcorp-spokeesta associada asnet-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:
| Tarefa | Ambiente |
|---|---|
| Criacao de NSGs e ASGs | Azure CLI (CLI) |
| Associacao a subnets | Portal Azure (GUI) |
| Verificacao de regras efetivas | Portal Azure (GUI) |
Tarefas:
-
[CLI]Via Azure CLI, crie dois Application Security Groups emrg-nexcorp-network:asg-nexcorp-webserverseasg-nexcorp-vmops. Esses ASGs serao referenciados nas regras de NSG em vez de IPs fixos. -
[CLI]Via Azure CLI, crie um NSG chamadonsg-nexcorp-spoke-vmscom as seguintes regras de entrada (inbound): Prioridade 100: permitir HTTPS (TCP 443) deInternetparaasg-nexcorp-webservers. Prioridade 200: permitir RDP (TCP 3389) desnet-management(10.0.1.0/24) paraasg-nexcorp-vmops. Prioridade 300: negar todo trafego deInternetpara qualquer destino. Configure todas as regras usandoaz network nsg rule create. -
[GUI]Associe o NSGnsg-nexcorp-spoke-vmsa subnetsnet-vms-prodemvnet-nexcorp-spoke-brs. -
[CLI]Crie um segundo NSGnsg-nexcorp-hub-mgmte associe-o asnet-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. -
[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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Resource ID do nsg-nexcorp-spoke-vms | az network nsg show | Etapa de criacao de VMs (NIC configuration) |
Resource ID do asg-nexcorp-webservers | az network asg show | Etapa de VM e configuracao de NIC |
Resource ID do asg-nexcorp-vmops | az network asg show | Etapa 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 tableexibe as tres regras com prioridades 100, 200 e 300.- O NSG aparece associado a
snet-vms-prodem Subnets na aba Overview do NSG. - A regra de prioridade 300 (DenyAllInternet) aparece com
access = Denyna 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de VMs | Portal Azure (GUI) para a primeira, Azure CLI para a segunda |
| Configuracao de discos | Portal Azure (GUI) |
| Encryption at host | Azure CLI |
Tarefas:
-
[GUI]Crie um Availability Set chamadoavset-nexcorp-frotaemrg-nexcorp-network(Brazil South) com 2 fault domains e 5 update domains. -
[GUI]Crie a primeira VM:vm-nexcorp-frota-01(Brazil South, SKUStandard_B2s, Ubuntu Server 22.04 LTS, authentication SSH public key). Coloque-a no Availability Setavset-nexcorp-frota, subnetsnet-vms-prod, sem IP publico, sem extensao de monitoramento por enquanto. Atribua o ASGasg-nexcorp-vmopsna NIC. Aplique as tags obrigatorias. -
[CLI]Via Azure CLI, crie a segunda VMvm-nexcorp-frota-02com as mesmas configuracoes, mas referenciando o Availability Set e o ASG via seus Resource IDs (parametros--availability-sete sem--nsg, pois o NSG ja esta na subnet). -
[CLI]Habilite Encryption at host para ambas as VMs usandoaz vm update --set securityProfile.encryptionAtHost=true. Antes, verifique se o feature esta registrado na subscription comaz feature show --namespace Microsoft.Compute --name EncryptionAtHost. -
[GUI]Paravm-nexcorp-frota-01, adicione um Data disk gerenciado de 128 GiB (SKUPremium_LRS) pelo Portal. Em seguida, usando o Portal, mova a VM para um Resource Group diferente: tente mover pararg-nexcorp-storage. Documente o comportamento e identifique quais recursos vinculados (NIC, disco) tambem precisam ser movidos juntos.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Resource ID de vm-nexcorp-frota-01 | Portal, VM properties | Etapas de monitoramento, backup e Site Recovery |
Resource ID de vm-nexcorp-frota-02 | Portal, VM properties | Etapas de monitoramento e backup |
Private IP de vm-nexcorp-frota-01 | Portal, NIC properties | Etapas de Load Balancer e troubleshooting de rede |
Private IP de vm-nexcorp-frota-02 | Portal, NIC properties | Etapas 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 securityProfileretornaencryptionAtHost: true.- O data disk de 128 GiB aparece como disco de dados em
vm-nexcorp-frota-01com statusAttached.
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:
| Tarefa | Ambiente |
|---|---|
| Redimensionamento de VMs | Azure CLI |
| Gerenciamento de discos | Portal Azure (GUI) |
Tarefas:
-
[CLI]Via Azure CLI, liste os tamanhos de VM disponiveis em Brazil South usandoaz vm list-sizes --location brazilsouthe filtre para mostrar apenas SKUs com 4 ou mais vCPUs e no minimo 8 GB de RAM. IdentifiqueStandard_D4s_v3na lista. -
[CLI]Redimensionevm-nexcorp-frota-01paraStandard_D4s_v3usandoaz vm resize. A VM precisara ser desalocada. Documente a sequencia de comandos necessaria (deallocate, resize, start) e o tempo aproximado de cada operacao. -
[GUI]Para o data disk adicionado na Etapa 19, altere o SKU dePremium_LRSparaUltraSSD_LRSpelo Portal. Documente o comportamento do Portal (e possivel fazer esta mudanca com a VM ligada? Quais restricoes aparecem?). -
[GUI]Crie um Snapshot manual do disco do SO devm-nexcorp-frota-01chamadosnap-nexcorp-frota01-os-pre-resize. Verifique o tipo do snapshot (Full ou Incremental) e documente a diferenca entre os dois tipos. -
[CLI]Via Azure CLI, detache o data disk devm-nexcorp-frota-01usandoaz vm disk detach. Confirme que o disco agora aparece como Unattached na lista de Managed Disks derg-nexcorp-network. Reattache o disco em seguida.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Nome do snapshot snap-nexcorp-frota01-os-pre-resize | Portal, Snapshots em rg-nexcorp-network | Referencia de restauracao |
Criterios de Sucesso:
az vm show --name vm-nexcorp-frota-01 --query hardwareProfile.vmSizeretornaStandard_D4s_v3.- O snapshot aparece em Disks, Snapshots com o nome correto e
Source diskindicando o disco de SO da VM. - O data disk re-attachado aparece como
Attachedavm-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:
| Tarefa | Ambiente |
|---|---|
| Criacao de VMSS | Bicep (IaC) |
| Configuracao de autoscaling | Portal Azure (GUI) |
Tarefas:
-
[IaC]Crie um arquivo Bicepnexcorp-vmss.bicepque provisione um Virtual Machine Scale Set chamadovmss-nexcorp-apiem East US,rg-nexcorp-network, distribuido nas Availability Zones 1, 2 e 3. Use SKUStandard_B2s, Ubuntu Server 22.04 LTS, minimo 2 instancias, maximo 10, capacidade inicial 2. Coloque na subnetsnet-servicesdevnet-nexcorp-hub-eus. -
[GUI]Apos o deploy do VMSS, configure uma regra de Autoscale (Custom autoscale) chamadaautoscale-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. -
[GUI]Verifique a distribuicao das instancias iniciais entre as Availability Zones. Confirme que as 2 instancias iniciais estao em zonas distintas. -
[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--zoneno CLI). -
[GUI]Atualize o modelo do VMSS para adicionar a tagComponent = API-Trackingusando Edit model no Portal. Confirme se as instancias existentes precisam ser re-imaged para receber a nova configuracao.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Resource ID do VMSS vmss-nexcorp-api | Portal, VMSS properties | Etapas de Load Balancer e monitoramento |
| Numero de instancias iniciais | Portal, VMSS, Instances | Baseline para validacao de autoscaling |
Criterios de Sucesso:
az vmss show --name vmss-nexcorp-api --resource-group rg-nexcorp-network --query skumostraname = Standard_B2secapacity = 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:
| Tarefa | Ambiente |
|---|---|
| Criacao do Bastion | Portal Azure (GUI) |
| Configuracao de Private Endpoint | Portal Azure (GUI) e Azure CLI |
| Configuracao de Service Endpoint | Portal Azure (GUI) |
Tarefas:
-
[GUI]Implante o Azure Bastion no tier Basic emAzureBastionSubnetdevnet-nexcorp-hub-eus, associado aopip-nexcorp-bastioncriado na Etapa 17. Nomeie comobastion-nexcorp-hub. -
[GUI]Conecte-se avm-nexcorp-frota-01via Bastion usando autenticacao SSH (chave privada). Confirme que a conexao e estabelecida sem IP publico na VM. -
[GUI]Configure um Private Endpoint para a storage accountnexcorpstgbrs01, subresourceblob, na subnetsnet-vms-prod. Nomeie o endpointpe-nexcorp-stg-blob. Verifique a entrada de DNS privado criada automaticamente. -
[GUI]Dentro da VMvm-nexcorp-frota-01(via Bastion), usecurlounslookuppara resolver o FQDN denexcorpstgbrs01.blob.core.windows.nete confirme que o IP retornado e um IP privado (10.x.x.x) e nao um IP publico da Microsoft. -
[GUI]Configure um Service Endpoint paraMicrosoft.Storagena subnetsnet-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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
IP do Private Endpoint pe-nexcorp-stg-blob | Portal, Private endpoint, Network interface | Verificacao de resolucao DNS |
| FQDN do Bastion | Portal, Bastion, propriedades | Acesso 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.netdentro da VM retorna um IP no range10.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:
| Tarefa | Ambiente |
|---|---|
| Criacao de DNS zones | Portal Azure (GUI) e Azure CLI |
| Configuracao de registros | Azure CLI |
Tarefas:
-
[GUI]Crie uma Private DNS Zone chamadanexcorp.internalemrg-nexcorp-network. Vincule-a a ambas as VNets (vnet-nexcorp-hub-eusevnet-nexcorp-spoke-brs) com auto-registration habilitado. -
[GUI]Verifique que as VMsvm-nexcorp-frota-01evm-nexcorp-frota-02foram automaticamente registradas na zona privada com seus hostnames e IPs privados. Documente os registros A criados. -
[CLI]Via Azure CLI, adicione manualmente um registro A na zona privadanexcorp.internal:storage-internalapontando para o IP do Private Endpoint da storage account (obtido na Etapa 22). Use TTL de 300 segundos. -
[GUI]Crie uma Public DNS Zone chamadanexcorp-logistica.comemrg-nexcorp-network. Adicione um registro A chamadoapiapontando para o IP publicopip-nexcorp-lb-prod. Documente os Name Servers (NS records) do Azure DNS que precisariam ser configurados no registrador de dominio externo. -
[GUI]Dentro devm-nexcorp-frota-01(via Bastion), usenslookup vm-nexcorp-frota-02.nexcorp.internale confirme a resolucao pelo IP privado correto. Em seguida, tentenslookup storage-internal.nexcorp.internale confirme que o registro manual tambem resolve.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Name Servers da zona publica nexcorp-logistica.com | Portal, DNS zone, NS records | Documentacao de configuracao de DNS externo |
FQDN vm-nexcorp-frota-01.nexcorp.internal | Private DNS zone, registros A | Testes de conectividade interna |
Criterios de Sucesso:
- A zona privada
nexcorp.internalmostra registros A auto-registrados para as duas VMs com seus IPs privados. nslookup vm-nexcorp-frota-02.nexcorp.internaldentro de uma VM retorna o IP correto.- A zona publica
nexcorp-logistica.comaparece 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:
| Tarefa | Ambiente |
|---|---|
| Criacao do Load Balancer | Portal Azure (GUI) |
| Troubleshooting de rede | Azure Network Watcher (GUI) |
| Correcao da UDR | Portal Azure (GUI) |
Tarefas:
-
[GUI]Crie um Load Balancer publico chamadolb-nexcorp-prodem East US, SKU Standard, associado aopip-nexcorp-lb-prod. Configure um backend pool incluindo o VMSSvmss-nexcorp-api. Configure uma regra de balanceamento na porta 80 (HTTP) com health probe TCP na porta 80. -
[GUI]Configure uma Load Balancing Rule adicional para HTTPS (porta 443) com session persistence Client IP e timeout de 5 minutos. -
[GUI]Em Azure Network Watcher, use o Connection Monitor para criar um teste de conectividade devm-nexcorp-frota-01para o IP do Load Balancerlb-nexcorp-prodna porta 80. Configure o teste para rodar a cada 30 segundos e documentar o status inicial. -
[GUI]Use o Next hop do Network Watcher para verificar qual e o proximo salto devm-nexcorp-frota-01para o IP8.8.8.8(Google DNS, simulando internet). O resultado devera mostrar o IP10.0.0.100da UDR incorreta criada na Etapa 17. Documente a causa raiz do problema de conectividade. -
[GUI]Corrija o problema da UDR: acessert-nexcorp-spokee altere a rota0.0.0.0/0para ter next hop Internet em vez de Virtual appliance. Aguarde a propagacao e use o Next hop novamente para confirmar quevm-nexcorp-frota-01agora tem rota direta para internet.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Frontend IP do Load Balancer | Portal, LB, Frontend IP configuration | Testes de carga e DNS |
| Connection Monitor ID | Network Watcher, Connection Monitor | Etapa de monitoramento |
Criterios de Sucesso:
- O Load Balancer
lb-nexcorp-prodaparece com health probe status Healthy para as instancias do VMSS. - Next hop do Network Watcher para
8.8.8.8a partir devm-nexcorp-frota-01retornaInternetapos 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:
| Tarefa | Ambiente |
|---|---|
| Criacao do ACR | Azure CLI |
| Deploy de container | Portal Azure (GUI) |
| Configuracao de Container Apps | Portal Azure (GUI) |
Tarefas:
-
[CLI]Via Azure CLI, crie um Azure Container Registry chamadocrnexcorpprod(nome globalmente unico, SKUStandard) em East US, no resource grouprg-nexcorp-network. Habilite o admin user. Anote o Login Server. -
[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 comaz acr login, tageie e faca o push paracrnexcorpprod.azurecr.io/nexcorp-frete:v1.0. -
[GUI]Provisione uma Azure Container Instance chamadaaci-nexcorp-batchusando a imagemcrnexcorpprod.azurecr.io/nexcorp-frete:v1.0, 1 vCPU e 1.5 GiB de memoria, em Brazil South, no resource grouprg-nexcorp-network. Configure a autenticacao ao ACR usando a identidade gerenciada ou as credenciais de admin. -
[GUI]Crie um Container Apps Environment chamadocae-nexcorp-prodem East US,rg-nexcorp-network. Em seguida, provisione uma Container App chamadaca-nexcorp-api-freteusando a mesma imagem, com 0.5 vCPU e 1 GiB de memoria, ingress externo na porta 80, min replicas 1 e max replicas 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 viacurlou browser.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Login Server do ACR | az acr show --name crnexcorpprod --query loginServer | Etapas de CI/CD e troubleshooting de imagem |
| URL publica da Container App | Portal, Container App, Overview | Testes de integracao e DNS |
Criterios de Sucesso:
az acr repository list --name crnexcorpprodretorna["nexcorp-frete"].- A ACI
aci-nexcorp-batchmostra statusRunningouTerminated(dependendo da imagem) em Container instances. - A Container App
ca-nexcorp-api-fretetem 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:
| Tarefa | Ambiente |
|---|---|
| Criacao do App Service Plan e App | Portal Azure (GUI) |
| Configuracao de TLS e dominio | Portal Azure (GUI) |
| Deployment slots e VNet Integration | Portal Azure (GUI) |
Tarefas:
-
[GUI]Crie um App Service Plan chamadoasp-nexcorp-web-prodem Brazil South, tier Standard S1 (S1 e o minimo para slots de deployment), OS Linux, no resource grouprg-nexcorp-network. -
[GUI]Crie um App Service chamadoapp-nexcorp-portal-entregasvinculado ao planasp-nexcorp-web-prod. Configure o Runtime Stack como Node 20 LTS. Aplique as tags obrigatorias. -
[GUI]Em Custom domains, adicione um dominio customizado ficticioportal.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.) -
[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 subdominioapp-nexcorp-portal-entregas.azurewebsites.net. -
[GUI]Crie um Deployment Slot chamadostagingno App Service. Configure VNet Integration no slot de producao para a subnetsnet-servicesdevnet-nexcorp-hub-eus. Realize um Swap entre os slots destagingeproductione documente o comportamento das variaveis de ambiente marcadas como slot-sticky versus as que sao trocadas junto com o slot.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| URL padrao do App Service | Portal, App Service, Overview | Testes de acesso e monitoramento |
| Valor do TXT record para validacao de dominio | Portal, Custom domains, validation | Documentacao de processo DNS |
Criterios de Sucesso:
- O App Service
app-nexcorp-portal-entregasesta em estado Running e acessivel viahttps://app-nexcorp-portal-entregas.azurewebsites.net. - O slot
stagingaparece em Deployment slots com URL propriaapp-nexcorp-portal-entregas-staging.azurewebsites.net. - HTTPS Only esta On nas configuracoes de TLS.
- A VNet Integration mostra subnet
snet-servicescomo 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:
| Tarefa | Ambiente |
|---|---|
| Configuracao de Log Analytics | Portal Azure (GUI) |
| Configuracao de alertas | Portal Azure (GUI) |
| Consulta de logs | Portal Azure (GUI) (KQL) |
Tarefas:
-
[GUI]Crie um Log Analytics Workspace chamadolaw-nexcorp-prodem East US,rg-nexcorp-network, pricing tierPay-as-you-go. Em seguida, em Azure Monitor, Diagnostic settings, habilite o envio de logs da storage accountnexcorpstgbrs01(categorias StorageRead, StorageWrite, StorageDelete) para o workspace. -
[GUI]Em ambas as VMs (vm-nexcorp-frota-01evm-nexcorp-frota-02), habilite o Azure Monitor Agent (AMA) e crie uma Data Collection Rule chamadadcr-nexcorp-vmsassociando as VMs ao workspacelaw-nexcorp-prod. Colete Syslog (nivel Warning e acima) e metricas de performance (CPU, memoria, disco). -
[GUI]Crie um Alert Rule chamadoalert-vm-cpu-highem Azure Monitor: condiçãoPercentage CPU > 85%por 5 minutos nas VMsvm-nexcorp-frota-01evm-nexcorp-frota-02, severidade 2, com uma Action Group chamadaag-nexcorp-opsque envia email para onexcorp-admin-infra. -
[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 comoNexCorp-VM-Warnings. Em seguida, execute uma segunda consulta para calcular a media de CPU das VMs nos ultimos 30 minutos usando a tabelaPerf. -
[GUI]Configure VM Insights paravm-nexcorp-frota-01e 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:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Resource ID do law-nexcorp-prod | Portal, Log Analytics workspace, properties | Etapas de backup e Site Recovery |
Action Group ID ag-nexcorp-ops | Azure Monitor, Action groups | Alertas de backup na Etapa 29 |
Criterios de Sucesso:
- A Diagnostic Setting de
nexcorpstgbrs01aparece com destinolaw-nexcorp-prode tres categorias de log habilitadas. - A consulta KQL
NexCorp-VM-Warningse salva e executavel sem erros (mesmo que retorne 0 linhas se nao houver warnings ainda). - O Alert Rule
alert-vm-cpu-highaparece 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:
| Tarefa | Ambiente |
|---|---|
| Diagnostico de rede | Azure Network Watcher (GUI) |
| Analise de NSG | Azure Network Watcher (GUI) |
Tarefas:
-
[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. -
[GUI]Use o IP flow verify para testar: trafego TCP devm-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. -
[GUI]Use o Effective security rules na NIC devm-nexcorp-frota-01para 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. -
[GUI]Configure o Connection Monitor (criado na Etapa 24) para adicionar um novo endpoint de destino: o IP privado devm-nexcorp-frota-02na porta 22 (SSH). Verifique o resultado do teste e documente a latencia media reportada. -
[GUI]Use o Packet capture do Network Watcher para iniciar uma captura de pacotes emvm-nexcorp-frota-01por 60 segundos, salvando o arquivo.capna storage accountnexcorpstgbrs01no containerlogs-auditoria. Confirme que o arquivo foi gerado na storage account.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
| Nome do arquivo de packet capture | Storage account, container logs-auditoria | Evidencia 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
.capaparece no containerlogs-auditoriadenexcorpstgbrs01apos 60 segundos. - A latencia reportada pelo Connection Monitor entre
vm-nexcorp-frota-01evm-nexcorp-frota-02e 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:
| Tarefa | Ambiente |
|---|---|
| Criacao de Recovery Services Vault | Portal Azure (GUI) |
| Configuracao de backup | Portal Azure (GUI) |
| Configuracao de Site Recovery | Portal Azure (GUI) |
Tarefas:
-
[GUI]Crie um Recovery Services Vault chamadorsv-nexcorp-bkp-brsem Brazil South,rg-nexcorp-network, com redundancia de storage Geo-redundant (GRS). Crie um segundo vaultrsv-nexcorp-asr-eusem East US para o Site Recovery. -
[GUI]Emrsv-nexcorp-bkp-brs, crie uma Backup Policy customizada chamadapolicy-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. -
[GUI]Habilite o backup paravm-nexcorp-frota-01evm-nexcorp-frota-02usando a policypolicy-nexcorp-vms-daily. Inicie um backup imediato (on-demand) para ambas as VMs e aguarde a conclusao. Documente o Recovery point gerado. -
[GUI]Apos o backup completar, simule um restore: emvm-nexcorp-frota-01, use Restore VM para criar uma nova VMvm-nexcorp-frota-01-restoreda partir do recovery point mais recente. Use a opcao Create new para nao sobrescrever a VM original. Documente o tempo total de restore. -
[GUI]Emrsv-nexcorp-asr-eus, configure o Azure Site Recovery para replicarvm-nexcorp-frota-01de Brazil South para East US. Defina a VNet de destino comovnet-nexcorp-hub-eus, subnetsnet-management. Inicie a replicacao e aguarde o status Protected no painel de replicacao. Em seguida, execute um Test Failover para a subnetsnet-servicese documente os passos de cleanup necessarios apos o teste.
Registro de Variaveis:
| Valor | Onde Encontrar | Onde Sera Usado |
|---|---|---|
Recovery Point ID do backup de vm-nexcorp-frota-01 | RSV, Backup items, Recovery points | Evidencia de restore bem-sucedido |
| Status de replicacao do ASR | RSV, Replicated items | Etapa 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-restoredaparece emrg-nexcorp-networkcom status Running. - O item replicado
vm-nexcorp-frota-01no 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
| Servico | Nome do Recurso | Regiao | Resource Group | Status Esperado |
|---|---|---|---|---|
| Microsoft Entra Users | nexcorp-admin-infra, nexcorp-ops-frota, nexcorp-fin-analyst, nexcorp-dev-deploy | N/A | N/A | Enabled |
| Microsoft Entra Groups | NexCorp-Infra-Admins, NexCorp-Ops-Users, NexCorp-FinOps, NexCorp-BrazilUsers, NexCorp-RapiLog-Guests | N/A | N/A | Active |
| Management Groups | MG-NexCorp-Root, MG-NexCorp-Production, MG-NexCorp-Dev | N/A | N/A | Active |
| Policy Initiative | NexCorp-Baseline-Governance | Subscription | N/A | Compliant |
| Resource Groups | rg-nexcorp-identity, rg-nexcorp-network, rg-nexcorp-storage | East US / Brazil South | N/A | Provisioned |
| Storage Account (BRS) | nexcorpstgbrs01 | Brazil South | rg-nexcorp-storage | Available |
| Storage Account (EUS) | nexcorpstgeus01 | East US | rg-nexcorp-storage | Available |
| Key Vault | kv-nexcorp-prod | East US | rg-nexcorp-storage | Active |
| VNet Hub | vnet-nexcorp-hub-eus | East US | rg-nexcorp-network | Connected (peered) |
| VNet Spoke | vnet-nexcorp-spoke-brs | Brazil South | rg-nexcorp-network | Connected (peered) |
| NSG Spoke | nsg-nexcorp-spoke-vms | East US | rg-nexcorp-network | Associated to subnet |
| NSG Hub Mgmt | nsg-nexcorp-hub-mgmt | East US | rg-nexcorp-network | Associated to subnet |
| Azure Bastion | bastion-nexcorp-hub | East US | rg-nexcorp-network | Running |
| Load Balancer | lb-nexcorp-prod | East US | rg-nexcorp-network | Frontend IP assigned |
| Private Endpoint | pe-nexcorp-stg-blob | Brazil South | rg-nexcorp-network | Approved |
| Private DNS Zone | nexcorp.internal | Global | rg-nexcorp-network | Linked to both VNets |
| Public DNS Zone | nexcorp-logistica.com | Global | rg-nexcorp-network | Active |
| VM | vm-nexcorp-frota-01 | Brazil South | rg-nexcorp-network | Running |
| VM | vm-nexcorp-frota-02 | Brazil South | rg-nexcorp-network | Running |
| Availability Set | avset-nexcorp-frota | Brazil South | rg-nexcorp-network | Provisioned |
| VM Scale Set | vmss-nexcorp-api | East US | rg-nexcorp-network | Running (2 instances) |
| Container Registry | crnexcorpprod | East US | rg-nexcorp-network | Active |
| Container Instance | aci-nexcorp-batch | Brazil South | rg-nexcorp-network | Running/Terminated |
| Container App | ca-nexcorp-api-frete | East US | rg-nexcorp-network | Running |
| App Service Plan | asp-nexcorp-web-prod | Brazil South | rg-nexcorp-network | Running |
| App Service | app-nexcorp-portal-entregas | Brazil South | rg-nexcorp-network | Running |
| Log Analytics Workspace | law-nexcorp-prod | East US | rg-nexcorp-network | Active |
| Recovery Services Vault (Backup) | rsv-nexcorp-bkp-brs | Brazil South | rg-nexcorp-network | Active |
| Recovery Services Vault (ASR) | rsv-nexcorp-asr-eus | East US | rg-nexcorp-network | Active |
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
| Sintoma | Causa Provavel | Solucao Esperada |
|---|---|---|
Criacao de recurso falha com RequestDisallowedByPolicy | Policy NexCorp-Baseline-Governance bloqueando por localizacao ou tag ausente | Verificar 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 Contributor | Cache 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.internal | DNS privado nao vinculado a VNet ou auto-registration desabilitado | Verificar os virtual network links da zona privada e confirmar que auto-registration esta habilitado |
AzCopy falha com 403 Forbidden ao acessar storage | Firewall da storage account bloqueando IP da estacao ou IP nao adicionado | Adicionar o IP publico atual da estacao nas excecoes do firewall de nexcorpstgbrs01 |
| VMSS nao escalona mesmo com CPU alta | Regra de autoscale com condicao de tempo muito longa ou metrica incorreta | Verificar 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 VM | VM sem agente Bastion ou NSG na NIC bloqueando porta 22 ou 3389 | Verificar 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 imagem | ACR sem permissao para a identidade gerenciada da Container App Environment | Atribuir o role AcrPull ao principal da Container App no ACR crnexcorpprod |
Site Recovery mostra Replication health: Critical | Conectividade de saida da VM bloqueada (UDR incorreta ou NSG) para os endpoints do ASR | Verificar 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 dispara | Action Group com email invalido ou condicao de alerta com dimensao incorreta | Verificar 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 metadata | Locks 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
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.