<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Azure InfraGurus articles</title>
    <link>https://techcommunity.microsoft.com/t5/azure-infragurus/bg-p/AzureInfraGurus</link>
    <description>Azure InfraGurus articles</description>
    <pubDate>Tue, 19 May 2026 13:40:12 GMT</pubDate>
    <dc:creator>AzureInfraGurus</dc:creator>
    <dc:date>2026-05-19T13:40:12Z</dc:date>
    <item>
      <title>Detectando Anomalias de Custo no Azure com FinOps Hub + SRE Agent</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/detectando-anomalias-de-custo-no-azure-com-finops-hub-sre-agent/ba-p/4513809</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Introdução&lt;/H1&gt;
&lt;P&gt;Um dos maiores desafios em ambientes cloud é manter a visibilidade sobre os custos. Picos inesperados podem passar despercebidos por dias e quando chegam na fatura, já é tarde demais.&lt;/P&gt;
&lt;P&gt;Neste artigo, vou mostrar como configurei uma &lt;STRONG&gt;análise automática diária de anomalias de custo&lt;/STRONG&gt; usando o &lt;STRONG&gt;Azure SRE Agent&lt;/STRONG&gt;, conectado ao &lt;STRONG&gt;FinOps Hub (Azure Data Explorer)&lt;/STRONG&gt;, com &lt;STRONG&gt;notificação automática no Microsoft Teams&lt;/STRONG&gt; quando algo fora do padrão é detectado.&lt;/P&gt;
&lt;H2&gt;🏗️ Arquitetura da Solução&lt;/H2&gt;
&lt;P&gt;FinOps Hub (ADX)&amp;nbsp; →&amp;nbsp; SRE Agent (Scheduled Task)&amp;nbsp; →&amp;nbsp; KQL Anomaly Detection&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ↓ anomalia detectada?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SIM → Adaptive Card → Teams Channel&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NÃO → Log: 'custos dentro do esperado'&lt;/P&gt;
&lt;H1&gt;Pré-requisitos&lt;/H1&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Requisito&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Detalhe&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;✅&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;FinOps Hub implantado&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Com dados de custo sendo ingeridos no Azure Data Explorer&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;✅&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Azure SRE Agent configurado&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Com acesso à subscription onde o FinOps Hub está&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;✅&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Canal no Microsoft Teams&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Onde as notificações serão postadas&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;✅&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Permissões adequadas&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Managed Identity com Viewer no database Hub do ADX&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Passo a Passo&lt;/H1&gt;
&lt;H2&gt;① Identificar o Cluster ADX do FinOps Hub&lt;/H2&gt;
&lt;P&gt;O primeiro passo é localizar o cluster Azure Data Explorer onde o FinOps Hub armazena os dados de custo. No Azure SRE Agent, usamos o Azure Resource Graph:&lt;/P&gt;
&lt;P&gt;az graph query -q "Resources | where type =~ 'Microsoft.Kusto/clusters'" --first 10 --subscription &amp;lt;subscription-id&amp;gt;&lt;/P&gt;
&lt;P&gt;No meu caso como exemplo, o cluster retornado foi:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Propriedade&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Valor&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Nome&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;finopshubadx&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;URI&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;https://finopshubadx.northcentralus.kusto.windows.net&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Database&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Hub&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;SKU&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Dev(No SLA)_Standard_D11_v2&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Região&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;North Central US&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;② Configurar Permissões (RBAC no ADX)&lt;/H2&gt;
&lt;P&gt;A managed identity do SRE Agent precisa de acesso &lt;STRONG&gt;Viewer&lt;/STRONG&gt; ao database &lt;STRONG&gt;Hub&lt;/STRONG&gt; do ADX. Sem isso, a query KQL falhará com erro 403.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Opção A — Azure CLI:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;az kusto database-principal-assignment create \&lt;BR /&gt;&amp;nbsp; --cluster-name finopshubadx \&lt;BR /&gt;&amp;nbsp; --database-name Hub \&lt;BR /&gt;&amp;nbsp; --resource-group &amp;lt;resource-group&amp;gt; \&lt;BR /&gt;&amp;nbsp; --subscription &amp;lt;subscription-id&amp;gt; \&lt;BR /&gt;&amp;nbsp; --principal-assignment-name "sre-agent-viewer" \&lt;BR /&gt;&amp;nbsp; --principal-id "&amp;lt;managed-identity-client-id&amp;gt;" \&lt;BR /&gt;&amp;nbsp; --principal-type App --role Viewer&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Opção B — Portal:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ADX → Cluster → Database Hub → Permissions → Add → Viewer → Selecionar managed identity&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Opção C — KQL (ADX Web UI):&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;.add database Hub viewers ('aadapp=&amp;lt;client-id&amp;gt;') 'SRE Agent'&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;③ A Query KQL de Detecção de Anomalias&lt;/H2&gt;
&lt;P&gt;Esta query utiliza &lt;STRONG&gt;series_decompose_anomalies&lt;/STRONG&gt; do Kusto para detectar padrões anômalos nos custos diários ao longo dos últimos 12 meses:&lt;/P&gt;
&lt;P&gt;let numberOfMonths = 12;&lt;BR /&gt;let start = startofmonth(ago(numberOfMonths * 30d));&lt;BR /&gt;let end = now();&lt;BR /&gt;let interval = 1d;&lt;BR /&gt;&lt;BR /&gt;Costs()&lt;BR /&gt;| where ChargePeriodStart between (start .. end)&lt;BR /&gt;| summarize DailyCost = sum(EffectiveCost)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by bin(ChargePeriodStart, interval)&lt;BR /&gt;| make-series CostSeries = sum(DailyCost)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; on ChargePeriodStart from start to end step interval&lt;BR /&gt;| extend anomalies = series_decompose_anomalies(CostSeries)&lt;BR /&gt;| project ChargePeriodStart, CostSeries, anomalies&lt;/P&gt;
&lt;H3&gt;💡 Como a query funciona&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Costs() → Função do FinOps Hub que retorna dados de custo consolidados&lt;/LI&gt;
&lt;LI&gt;make-series → Cria série temporal diária contínua (sem gaps)&lt;/LI&gt;
&lt;LI&gt;series_decompose_anomalies → Algoritmo ML nativo do Kusto que detecta spikes e drops usando decomposição sazonal + STL&lt;/LI&gt;
&lt;LI&gt;Score &amp;gt; 0 → custo acima do esperado | Score &amp;lt; 0 → abaixo do esperado&lt;/LI&gt;
&lt;LI&gt;Quanto maior o |score|, mais significativa a anomalia&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;④ Configurar Webhook no Microsoft Teams&lt;/H2&gt;
&lt;P&gt;Para receber notificações no Teams, criamos um &lt;STRONG&gt;Incoming Webhook via Power Automate Workflows&lt;/STRONG&gt; (método recomendado pela Microsoft):&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;No canal do Teams, clique nos 3 pontos (...) → Workflows&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Pesquise "Post to a channel when a webhook request is received"&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Selecione o Team e Channel desejados → Add workflow&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Copie a URL gerada (formato: https://prod-xx...logic.azure.com/...)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Ative o workflow no Power Automate (My flows → Turn on)&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ Atenção: &lt;/STRONG&gt;O workflow pode ser criado com status 'Suspended'. Ative em: Power Automate → My flows → Turn on.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;⑤ Criar a Scheduled Task no SRE Agent&lt;/H2&gt;
&lt;P&gt;Agora a parte principal: criar a &lt;STRONG&gt;tarefa agendada (Scheduled Task)&lt;/STRONG&gt; no Azure SRE Agent. Basta pedir em linguagem natural:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"Crie uma tarefa diária para analisar anomalias de custo no FinOps Hub e me notificar pelo Teams quando houver anomalias detectadas."&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;O SRE Agent criará a task com os seguintes parâmetros:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Parâmetro&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Valor&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Nome&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Daily FinOps Cost Anomaly Analysis&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Schedule&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;0 8 * * * (diariamente às 08:00 UTC)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;ADX Cluster&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;https://finopshubadx.northcentralus.kusto.windows.net&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Database&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Hub&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Query&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;KQL com series_decompose_anomalies (12 meses)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Notificação&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Adaptive Card no Teams via webhook&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Escalação&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;HIGH se anomalias por 3+ dias consecutivos&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Idempotência&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Sem anomalia = 'custos dentro do esperado'&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;img /&gt;
&lt;P&gt;Task details:&lt;/P&gt;
&lt;P&gt;Obs: Modificar os campos na task para adequar seu ambiente&lt;/P&gt;
&lt;LI-CODE lang="markdown"&gt;Autonomous Scheduled Run - Daily FinOps Cost Anomaly Analysis

## Scope
- Subscription: xxxxxxx-xxxxxxx-xxxxxx-xxxx-xxxxx
- ADX Cluster: https://finopshub.northcentralus.kusto.windows.net
- Database: Hub
- Resource Group: finopshub-rg

## Goal
Detect cost anomalies in Azure spending using the FinOps Hub data. Run the KQL query against the ADX cluster, analyze results, and notify via Teams if anomalies are found.

## Step 1: Execute KQL Query
Use the KustoQuery subagent to run this query against the ADX cluster (https://finopshubadx.northcentralus.kusto.windows.net, database: Hub):

```kql
let numberOfMonths = 12;
let start = startofmonth(ago(numberOfMonths * 30d));
let end = now();
let interval = 1d;
Costs()
| where ChargePeriodStart between (start .. end)
| summarize DailyCost = sum(EffectiveCost) by bin(ChargePeriodStart, interval)
| make-series CostSeries = sum(DailyCost) on ChargePeriodStart from start to end step interval
| extend anomalies = series_decompose_anomalies(CostSeries)
| project ChargePeriodStart, CostSeries, anomalies
```

## Step 2: Analyze Results
- Parse the anomalies array from series_decompose_anomalies output
- Identify days where anomaly score is significantly positive (cost spike) or negative (unusual drop)
- For each anomaly found, calculate: the date, actual cost value, expected baseline, and percentage deviation
- Focus on the last 7 days of data for actionable anomalies, but use the full 12-month history for context

## Step 3: Generate Report
Create a summary with:
- Total anomalies detected in the last 7 days
- For each anomaly: date, cost value, deviation from expected, severity (high/medium/low)
- Trend analysis: whether costs are trending up, down, or stable
- Top recommendations (e.g., investigate specific resource groups, check for new deployments, review reserved instances)

## Step 4: Teams Notification (ONLY if anomalies detected in last 7 days)
If anomalies are found, send a notification to Microsoft Teams using the executing_code skill (ExecutePythonCode) to POST to this webhook URL:
https://839eace659ab424397eca5b8fcc104.e4.environment.api.powerplatform.com:443/powerautomate/automations/direct/workflows/88ec6b6c43014d8f8cb13999714dddd8/triggers/manual/paths/invoke?api-version=1&amp;amp;sp=%2Ftriggers%2Fmanual%2Frun&amp;amp;sv=1.0&amp;amp;sig=br2rNi4x1zKjWp6CgKWcajvEUW_7EUBkHrkbnp6Hk2g

Use Adaptive Card format for the Teams message with:
- Title: "⚠️ Azure Cost Anomaly Detected"
- Summary of anomalies (dates, values, deviations)
- Severity indicator
- Link back to this SRE Agent thread for details

Python code example for the webhook POST:
```python
import urllib.request
import json

webhook_url = "&amp;lt;colar-url-webhook-aqui&amp;gt;"

card = {
    "type": "message",
    "attachments": [{
        "contentType": "application/vnd.microsoft.card.adaptive",
        "content": {
            "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
            "type": "AdaptiveCard",
            "version": "1.4",
            "body": [
                {"type": "TextBlock", "text": "⚠️ Azure Cost Anomaly Detected", "weight": "Bolder", "size": "Large"},
                {"type": "TextBlock", "text": "&amp;lt;ANOMALY_SUMMARY_HERE&amp;gt;", "wrap": True},
                {"type": "FactSet", "facts": [
                    {"title": "Date", "value": "&amp;lt;DATE&amp;gt;"},
                    {"title": "Actual Cost", "value": "&amp;lt;COST&amp;gt;"},
                    {"title": "Expected", "value": "&amp;lt;EXPECTED&amp;gt;"},
                    {"title": "Deviation", "value": "&amp;lt;DEVIATION&amp;gt;%"},
                    {"title": "Severity", "value": "&amp;lt;SEVERITY&amp;gt;"}
                ]}
            ],
            "actions": [{"type": "Action.OpenUrl", "title": "View in SRE Agent", "url": "https://sre.azure.com/agents/subscriptions/&amp;lt;sua-subscricao&amp;gt;/resourceGroups/finopshub-rg/providers/Microsoft.App/agents/finopshub/views/thread/7314d219-77d6-4e12-a3fb-f30606d13077"}]
        }
    }]
}

req = urllib.request.Request(webhook_url, data=json.dumps(card).encode('utf-8'), headers={'Content-Type': 'application/json'}, method='POST')
response = urllib.request.urlopen(req)
```

## Step 5: Report in Thread
Always post a summary in this thread with:
- Whether anomalies were found or not
- Key metrics and trends
- If no anomalies: "No material cost anomalies detected. Daily costs within expected range."

## Constraints
- Read-only operations only against ADX
- Max 5 KQL queries per execution
- Do not modify any Azure resources

## Idempotence
If no anomalies detected in the last 7 days and costs are within normal thresholds, output: "No material cost anomalies detected. Daily costs within expected range."

## Escalation
If anomalies are detected for 3+ consecutive days, flag as HIGH severity in the Teams notification and recommend immediate investigation.&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;⑥ Notificação no Teams (Adaptive Card)&lt;/H2&gt;
&lt;P&gt;Quando anomalias são detectadas, o SRE Agent envia um Adaptive Card rico para o Teams:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;⚠️ AZURE COST ANOMALY DETECTED&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;🔴 HIGH — 2026-04-21&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Custo Real&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$1,847.32&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Custo Esperado&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$623.15&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Desvio&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;+196.5% (↑ $1,224.17)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Score Anomalia&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;4.7 (threshold: 1.5)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;🟡 MEDIUM — 2026-04-20&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Custo Real&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$987.44&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Desvio&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;+59.5% (↑ $368.54)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;📊 Trend (7d)&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$601 → $615 → $622 → $619 → $987 → $1,847&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;EM&gt;Exemplo de Adaptive Card enviado ao canal do Teams&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;O card inclui botões: Ver Detalhes no SRE Agent e Abrir FinOps Hub (ADX) para investigação.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;⑦ Testar a Integração (Simular Anomalia)&lt;/H2&gt;
&lt;P&gt;Antes de confiar no agendamento, teste pedindo ao SRE Agent:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"Simular uma anomalia de custo para eu receber no Teams"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;O agente enviará um Adaptive Card de teste com dados simulados para validar que o webhook está funcionando.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Dica: &lt;/STRONG&gt;Se o webhook retornar erro 400 - WorkflowTriggerIsNotEnabled, ative o flow em: Power Automate → My flows → Turn on.&lt;/P&gt;
&lt;img /&gt;
&lt;H1&gt;Como Funciona no Dia a Dia&lt;/H1&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Horário&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Ação&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Resultado&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;08:00 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;SRE Agent executa query KQL no ADX&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Dados de custo (12 meses)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;08:01 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Análise de anomalias (últimos 7 dias)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identifica spikes e drops&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;08:02 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Se anomalia → Teams notification&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Adaptive Card no canal&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;08:02 UTC&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Se normal → log no thread&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;"Custos dentro do esperado"&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Contínuo&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;3+ dias anomalia → escalação HIGH&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Investigação recomendada&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;col style="width: 33.33%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Gerenciamento da Task&lt;/H2&gt;
&lt;P&gt;Após criada, a tarefa pode ser gerenciada pelo SRE Agent:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt; Pausar: &lt;/STRONG&gt;"Pausar a tarefa de anomalia de custo"&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Retomar: &lt;/STRONG&gt;"Retomar a tarefa"&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Alterar horário: &lt;/STRONG&gt;"Mudar para executar às 10h UTC"&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Ver histórico: &lt;/STRONG&gt;"Mostrar histórico de execuções"&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Cancelar: &lt;/STRONG&gt;"Cancelar a tarefa de anomalia"&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Conclusão&lt;/H1&gt;
&lt;P&gt;Com essa configuração, você tem um &lt;STRONG&gt;sistema inteligente de vigilância de custos&lt;/STRONG&gt; que:&lt;/P&gt;
&lt;P&gt;🔍 Analisa 12 meses de histórico para detectar padrões sazonais&lt;/P&gt;
&lt;P&gt;🤖 Usa ML nativo do Kusto — sem infraestrutura adicional&lt;/P&gt;
&lt;P&gt;📱 Notifica proativamente no Teams — só quando há anomalia&lt;/P&gt;
&lt;P&gt;📈 Escala automaticamente a severidade em anomalias persistentes&lt;/P&gt;
&lt;P&gt;💬 Mantém histórico completo no thread do SRE Agent&lt;/P&gt;
&lt;P&gt;🔧 É gerenciável por linguagem natural — sem YAML, sem pipelines&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A combinação &lt;STRONG&gt;FinOps Hub + Azure SRE Agent + Teams&lt;/STRONG&gt; transforma a governança de custos de reativa (olhar dashboards) em &lt;STRONG&gt;proativa e automatizada&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;🚀 Quer implementar na sua organização?&lt;/H2&gt;
&lt;P&gt;Se você quer testar, o Azure SRE Agent está disponível como preview. Configure um agente na sua subscription e comece a conversar em linguagem natural.&lt;/P&gt;
&lt;P&gt;Já usa &lt;A class="lia-external-url" href="https://microsoft.github.io/finops-toolkit/hubs" target="_blank" rel="noopener"&gt;FinOps Hub&lt;/A&gt;? Conte nos comentários como você monitora anomalias de custo hoje!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;#FinOps&amp;nbsp; #Azure&amp;nbsp; #SREAgent&amp;nbsp; #CostManagement&amp;nbsp; #AzureDataExplorer&amp;nbsp; #CloudGovernance&amp;nbsp; #DevOps&amp;nbsp; #MicrosoftTeams&amp;nbsp; #AIOps&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 23 Apr 2026 12:59:25 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/detectando-anomalias-de-custo-no-azure-com-finops-hub-sre-agent/ba-p/4513809</guid>
      <dc:creator>arsilvan</dc:creator>
      <dc:date>2026-04-23T12:59:25Z</dc:date>
    </item>
    <item>
      <title>FinOps Hub Privado: Implementação Manual em Ambientes Corporativos</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/finops-hub-privado-implementa%C3%A7%C3%A3o-manual-em-ambientes/ba-p/4509993</link>
      <description>&lt;P&gt;&lt;STRONG&gt;O que é o FinOps Hub?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O FinOps Hub é uma solução open source da Microsoft, parte do FinOps Toolkit, que fornece uma base escalável e extensível para análise, governança e otimização de custos em nuvem. A solução centraliza dados de custos por meio de recursos de armazenamento e pipelines de dados, permitindo que as organizações padronizem a forma como analisam seus gastos na nuvem, adotando o modelo de dados FOCUS definido pela FinOps Foundation.&lt;/P&gt;
&lt;P&gt;Além de disponibilizar relatórios e dashboards prontos, o FinOps Hub expõe os dados de custos de forma estruturada por meio do Azure Data Explorer ou do Microsoft Fabric, possibilitando a criação de relatórios customizados no Power BI e o desenvolvimento de soluções internas sob medida, de acordo com as necessidades do negócio.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Objetivo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Esse artigo visa orientar a implementação manual do acesso privado ao FinOps Hub após uma implementação pública, sem usar diretamente a opção de implementação privada oferecida pelo template.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Por que implementar o FinOps Hub com acesso privado de forma manual?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O &lt;A href="https://learn.microsoft.com/en-gb/cloud-computing/finops/toolkit/hubs/deploy?tabs=azure-portal%2Cadx-dashboard#deploy-the-finops-hub-template" target="_blank" rel="noopener"&gt;template&lt;/A&gt; disponibilizado para a implementação do FinOps Hub permite que selecionemos&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-gb/cloud-computing/finops/toolkit/hubs/private-networking#comparing-network-access-options" target="_blank" rel="noopener"&gt;duas formas de implementação&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pública: forma de implementação mais simples e comum. Os recursos são provisionados com acesso público habilitado, sendo acessados por meio de seus endpoints públicos padrões do Azure. O controle de acesso é feito exclusivamente via permissões RBAC.&lt;/LI&gt;
&lt;LI&gt;Privada: forma de implementação mais segura. Os recursos são provisionados com acesso público desabilitado e expostos apenas por meio de private endpoints, ficando acessíveis somente através de redes privadas que possuem conectividade com a rede onde esses endpoints estão implementados.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Embora a comunicação privada traga ganhos significativos de segurança, sua habilitação através do template do FinOps Hub introduz algumas implicações importantes no processo de implantação. O template, de forma automática, tenta:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Criar uma rede virtual (/26);&lt;/LI&gt;
&lt;LI&gt;Provisionar Private DNS Zones;&lt;/LI&gt;
&lt;LI&gt;Criar os registros DNS associados aos private endpoints;&lt;/LI&gt;
&lt;LI&gt;Configurar os links entre as VNets e as zonas DNS.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Em muitas organizações, esse tipo de configuração é restrito por políticas internas. A criação de redes, zonas DNS e seus respectivos vínculos costuma ser responsabilidade de times especializados, que garantem a padronização e a aderência às diretrizes arquiteturais definidas pela empresa.&lt;/P&gt;
&lt;P&gt;Em cenários onde a organização adota, por exemplo, uma topologia Hub &amp;amp; Spoke, com landing zones bem definidas para workloads e conectividade, é fundamental considerar alguns pontos adicionais:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Garantir que a rede criada para os private endpoints não tenha sobreposição (overlap) com outras redes existentes;&lt;/LI&gt;
&lt;LI&gt;Assegurar que exista peering com a VNet de hub;&lt;/LI&gt;
&lt;LI&gt;Integrar os registros DNS dos novos private endpoints às Private DNS Zones centralizadas;&lt;/LI&gt;
&lt;LI&gt;Configurar corretamente os VNet links;&lt;/LI&gt;
&lt;LI&gt;Garantir que a resolução de nomes esteja funcional no ambiente on-premises, permitindo o acesso ao FinOps Hub por meio de VPN, ExpressRoute ou outras formas de conectividade híbrida.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Esses fatores explicam por que, em muitos casos, o uso do template com configuração privada se torna inviável quando utilizado de forma isolada. Isso ocorre porque, frequentemente, o time de FinOps não é o mesmo time responsável por redes e DNS, possuindo permissão para implantar apenas parte dos recursos necessários.&lt;/P&gt;
&lt;P&gt;Nesses cenários, a implementação privada exige a orquestração entre diferentes times, cada um atuando dentro de suas responsabilidades. Como resultado, algumas etapas que o template tenta executar automaticamente precisam ser realizadas manualmente, conforme descrito nas próximas seções.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Passo a Passo para Implementação&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Faça a implementação do template &lt;A href="https://learn.microsoft.com/en-gb/cloud-computing/finops/toolkit/hubs/deploy?tabs=azure-portal%2Cadx-dashboard#deploy-the-finops-hub-template" target="_blank" rel="noopener"&gt;seguindo o tutorial documentado&lt;/A&gt;, com “Networking” em modo público.&lt;/LI&gt;
&lt;LI&gt;Assim que o template é implementado, alguns scripts de configuração são executados. Aguarde até que esses scripts sejam executados, ou seja, desapareçam do grupo de recursos onde o FinOps Hub foi implementado para seguir com os próximos passos. Exemplos dos “Deployment Scripts” que desaparecerão:&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="4"&gt;
&lt;LI&gt;Crie uma rede de tamanho mínimo /26 – valide com o time de infraestrutura o espaçamento que pode ser utilizado. Dentro dessa rede implemente uma subrede:
&lt;UL&gt;
&lt;LI&gt;private-endpoint-subnet (/28) – subrede para os private endpoints.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Garanta a existência das Private DNS Zones: se seu ambiente possui zonas de DNS privadas centralizadas pré-configuradas. Garanta que as seguintes zonas já existam na subscription padrão para os seus recursos de rede:
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;privatelink.blob.core.windows.net&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;– para o Data Explorer e storage&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;privatelink.dfs.core.windows.net&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;– para o Data Explorer and o data lake hospedando os dados de FinOps data e configuração das pipelines&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;privatelink.table.core.windows.net&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;– para Data Explorer&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;privatelink.queue.core.windows.net&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;– para o Data Explorer&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;privatelink.{location}.kusto.windows.net&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;– para Data Explorer&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configurando a Storage Account com Acesso Privado&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O primeiro recurso que a ser configurado será a Storage Account.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;A configuração a seguir deve ser realizada duas vezes uma para o target sub-resource “blob” e outra para o target sub-resource “dfs”.
&lt;UL&gt;
&lt;LI&gt;Acesse “Networking” e a aba “Private Endpoints”&lt;/LI&gt;
&lt;LI&gt;Na aba “Basics” defina:
&lt;UL&gt;
&lt;LI&gt;Subscription: mesma que o FinOps Hub foi implementado&lt;/LI&gt;
&lt;LI&gt;Resource Group: mesmo que o FinOps Hub foi implementado&lt;/LI&gt;
&lt;LI&gt;Name: use um nome que remeta ao recurso criado (private endpoint) e o sub recurso que ele fará exposição (blob/dfs). Exemplo: pe-storageaccount-blob/ pe-storageaccount-dfs&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Na aba “Resource” defina o target sub-resource para o qual a configuração está sendo feita. No caso, primeiro foi feito para “blob” e depois “dfs”.&lt;/LI&gt;
&lt;LI&gt;Na aba “Virtual Network”, deve-se selecionar a rede criada para os private endpoints bem como a subrede (private-endpoint-subnet).&lt;/LI&gt;
&lt;LI&gt;Na aba “DNS” selecione a private DNS zone na qual são realizados os registros do seus private endpoints. Quando estiver configurando o private endpoint para blob será &lt;STRONG&gt;privatelink.blob.core.windows.net&lt;/STRONG&gt; e para dfs &lt;STRONG&gt;privatelink.dfs.core.windows.net&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Adicione Tags caso seja necessário.&lt;/LI&gt;
&lt;LI&gt;Clique em “Review + create”.&lt;/LI&gt;
&lt;LI&gt;Ao final, dois private endpoints devem estar criados para a storage account:&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Agora será necessário configurar o private endpoint usado pelo Data Factory para acessar a Storage Account.
&lt;UL&gt;
&lt;LI&gt;Acesse o Data Factory e clique em "Launch Studio".&lt;/LI&gt;
&lt;LI&gt;No menu lateral, selecione a opção "Manage" -&amp;gt; "Linked services":&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Selecione o serviço correspondente ao Azure Data Lake Storage Gen2.&lt;/LI&gt;
&lt;LI&gt;Em “Connect via integration runtime” substitua “AutoResolveIntegrationRuntime” por New+:&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Em “Integration runtime setup” selecione “Azure” -&amp;gt; Botão “Continue”:&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Na aba “Settings”, apenas altere o campo “Name”. Use algo como “ManagedIntegrationRuntime”. Os demais campos, mantenha como estão:&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Na aba “Virtual Network”, configure conforme a imagem abaixo:&lt;img /&gt;&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Por fim, na aba “Data flow runtime”, use as configurações abaixo:&lt;/LI&gt;
&lt;LI&gt;Clique em “Create”.&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Agora, voltando a página “Edit linked Service”, adicione o “Managed Private Endpoint”. Ele ficará em estado “Pending”.&lt;/LI&gt;
&lt;LI&gt;Clique em “Save”.&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Além disso, use a managed identity fornecida na página “Edit linked Service”, e lhe dê os seguintes acessos na storage account:
&lt;UL&gt;
&lt;LI&gt;Reader&lt;/LI&gt;
&lt;LI&gt;Storage Account Contributor&lt;/LI&gt;
&lt;LI&gt;Storage Blob Data Contributor&lt;img /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Por fim, acesse a seção “Networking” da Storage Account novamente, selecione o private endpoint criado pelo Data Factory e clique no botão “Approve”.&amp;nbsp;&lt;img /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Configurando o Linked Service ftkRepo no Data Factory&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Voltando na seção “Manage” do Azure Data Factory, será necessário editar o serviço “ftkRepo”. Nele, o único campo a ser alterado é o “Connect via integration runtime” usando o “ManagedIntegrationRuntime” criado na etapa de configuração da storage account.&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Clique em “Save”.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configurando o Azure Data Explorer com Acesso Privado&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Acesse a seção “Networking” cluster do Data Explorer criado pelo script do FinOps Hub e acesse a aba “Private Endpoint Connections”&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Clique em “+ Private Endpoint”.&lt;/LI&gt;
&lt;LI&gt;Em “Basics” inclua um nome para o private endpoint e garanta que a região selecionada é a de implementação do seu FinOps Hub e da vnet criada para ele.&lt;/LI&gt;
&lt;LI&gt;Na aba “Virtual Network” selecione a rede e subrede criadas para os private endpoints.&lt;/LI&gt;
&lt;LI&gt;Na aba “DNS”, associar cada configuração a sua private DNS zone correspondente. Se essas zonas já existirem no ambiente e forem utilizadas de forma centralizada, usar as existentes. Caso contrário, a configuração poderá criar private DNS zones novas:&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Novamente será preciso configurar o private endpoint gerenciado pelo Data Factory. Para isso, acesse “Managed” -&amp;gt; “Linked Services” e selecione o serviço referente ao Azure Data Explorer.&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Nessa seção, o único campo a ser editado é o “Connect via integration runtime” usando o “ManagedIntegrationRuntime” criado na etapa de configuração da storage account.&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Agora ainda em “Manage” no Data Factory, selecione a opção “Managed Private Endpoints”. Clique em “+New” -&amp;gt; “Azure Data Explorer (Kusto)”&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Forneça um nome para o private endpoint, marque a subscription na qual o Data Explorer foi implementado e em "Cluster" selecione o recurso implementado via template do FinOps Hub:&lt;img /&gt;&lt;/LI&gt;
&lt;LI&gt;Ao final, deve-se ter dois private endpoints configurados no Azure Data Explorer:&lt;img /&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ajustes Finais e Validações de Conectividade&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Tanto para a Storage Account quanto para o Data Explorer, acesse as configurações de rede e altere o Public network access para “Disabled”.&lt;/LI&gt;
&lt;LI&gt;Por fim, no seu servidor local de DNS, crie o registro para o Data Explorer apontando para o forwarder correto no Azure seja ele uma máquina virtual ou o inbound endpoint do Azure Private Resolver. Não use o domínio com privatelink, mas sim o padrão, no caso do Data Explorer a forma geral é &amp;lt;localização&amp;gt;.kusto.windows.net conforme o exemplo abaixo:&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;UL&gt;
&lt;LI&gt;Ao configurar os apontamentos corretamente, será possível configurar os dashboards em máquinas locais/on-premises que tenham acesso privado ao ambiente Azure. Os dashboards precisam ser capazes de resolver a URL do cluster Data Explorer que é apontado como parâmetro do Dashboard em PowerBI.&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;Se desejar validar a comunicação antes de configurar o dashboard de Power BI, teste da sua máquina local a resolução da URI do Data Explorer implementado para o FinOps Hub, usando nslookup conforme o exemplo abaixo.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 10 Apr 2026 16:51:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/finops-hub-privado-implementa%C3%A7%C3%A3o-manual-em-ambientes/ba-p/4509993</guid>
      <dc:creator>carolinamelo</dc:creator>
      <dc:date>2026-04-10T16:51:20Z</dc:date>
    </item>
    <item>
      <title>Segurança Corporativa no Azure VMware Solution (AVS): Como Inspecionar o Tráfego com Firewall NVA</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/seguran%C3%A7a-corporativa-no-azure-vmware-solution-avs-como/ba-p/4501226</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Muitas vezes faz sentido usar uma NVA (Network Virtual Appliance) como firewall dentro do AVS, porque permite&lt;STRONG&gt; reaproveitar a solução de firewall já existente &lt;/STRONG&gt;(Palo Alto, Check Point, etc..) e manter a proficiência do time de segurança, evita parte da&lt;STRONG&gt; complexidade de roteamento&lt;/STRONG&gt; que pode surgir ao forçar o tráfego passar por um firewall “fora” do AVS . Além disso, administrar esse firewall dentro do AVS continua familiar para quem já opera VMware, e você ganha acesso a &lt;STRONG&gt;recursos avançados de inspeção &lt;/STRONG&gt;do fabricante (como filtragem por aplicação em camada 7 e inspeção SSL/TLS), que são muito úteis para controle de tráfego outbound e políticas corporativas.&lt;/P&gt;
&lt;P&gt;Neste artigo eu demonstro e um laboratório prático de inspeção de tráfego &lt;STRONG&gt;Norte-Sul e Leste-Oeste&lt;/STRONG&gt;, fazendo isolamento por ambiente (DEV/PRD) dentro do &lt;STRONG&gt;Azure VMware Solution (AVS) &lt;/STRONG&gt;usando&lt;STRONG&gt; NSX-T (Tier-0/Tier-1)&lt;/STRONG&gt; e um &lt;STRONG&gt;Firewall NVA (pfSense)&lt;/STRONG&gt; implantado no SDDC. Também serão demonstradas as &lt;STRONG&gt;principais configurações no NSX&lt;/STRONG&gt; (criação/associação de segments, gateways T0/T1 e ajustes de roteamento necessários para forçar o tráfego a passar pela NVA).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Arquitetura&lt;/H3&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Informações do Laboratório&lt;/STRONG&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;STRONG&gt;Segmentos de Trânsito&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Transit_Outside &amp;nbsp; | CIDR: 192.168.30.0/24 | GW: 192.168.30.1&lt;/LI&gt;
&lt;LI&gt;Transit_PRD&amp;nbsp; | CIDR: 192.168.21.0/24 | GW: 192.168.21.1&lt;/LI&gt;
&lt;LI&gt;Transit_DEV&amp;nbsp; | CIDR: 192.168.22.0/24 | GW: 192.168.22.1&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Segmentos de Workloads&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;PRD_WEB | CIDR: 192.168.70.0/24 | GW: 192.168.70.1&lt;/LI&gt;
&lt;LI&gt;PRD_DATA | CIDR: 192.168.71.0/24 | GW: 192.168.71.1&lt;/LI&gt;
&lt;LI&gt;DEV_WEB | CIDR: 192.168.80.0/24 | GW: 192.168.80.1&lt;/LI&gt;
&lt;LI&gt;DEV_DATA | CIDR: 192.168.81.0/24&amp;nbsp; | GW: 192.168.81.1&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Interfaces da NVA (pfSense)&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;Transit_Outside: 192.168.30.5&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Transit_PRD: 192.168.21.5&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Transit_DEV: 192.168.22.5&amp;nbsp;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Configuração do Azure VMware Solution&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Na configuração &lt;STRONG&gt;Internet connectivity (egress/ingress) &lt;/STRONG&gt;do &lt;STRONG&gt;Azure VMware Solution (AVS) &lt;/STRONG&gt;irei utilizar a opção &lt;STRONG&gt;"Connect using Public IP down to the NSX Edge"&lt;/STRONG&gt;. Isso permite usar o NSX Data Center para criar regras de &lt;STRONG&gt;outbound e inbound&lt;/STRONG&gt; (DNAT/SNAT) usando esses IPs públicos diretamente no Edge do AVS.&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Configuração de SNAT e NoSnat no NSX&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Regras “No SNAT”&lt;/STRONG&gt; : Define que não deve haver tradução de origem quando o tráfego vai para redes privadas RFC1918. Isso preserva o IP original de origem para comunicação interna (ex.: on-prem, Azure, spoke VNets/rotas privadas), evita quebra de roteamento/retorno.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Regra “SNAT”&lt;/STRONG&gt;: Aplica tradução de origem para o restante do tráfego (Internet). Ou seja, quando uma VM com IP privado sai para fora, o NSX troca o IP de origem pelo IP público configurado ( 20.20.138.0/32).&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Criação dos Gateways TIER-1 (PRD e DEV).&lt;/STRONG&gt;&lt;/H4&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&amp;nbsp;&lt;/H5&gt;
&lt;H5&gt;&lt;STRONG&gt;Importante: Estes gateway são "Isolados", portando não serão conectados ao TIER-0&lt;/STRONG&gt;&lt;/H5&gt;
&lt;H5&gt;T1_PRD_Isolado&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;T1_DEV_Isolado&lt;/H5&gt;
&lt;img /&gt;
&lt;H4&gt;Resultado&lt;/H4&gt;
&lt;img /&gt;
&lt;H3&gt;&lt;STRONG&gt;Criação dos Segmentos de Trânsito PRD e DEV&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Importante: Estes Segmentos estarão conectados ao Tier-1 Gateway PRD (T1_PRD_Isolado) e DEV ( T1_DEV_Isolado) respectivamente criados na etapa anterior&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;TRANSIT_PRD&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;TRANSIT_DEV&lt;/H5&gt;
&lt;img /&gt;
&lt;H3&gt;&lt;STRONG&gt;Criação do Segmento PRD WEB e DATA&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Importante: Estes Segmentos estarão conectados ao Tier-1 Gateway PRD (T1_PRD_isolado) e DEV ( T1_DEV_Isolado) respectivamente criados na etapa anterior&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;PRD_WEB&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;PRD_DATA&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;DEV_WEB&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;DEV_DATA&lt;/H5&gt;
&lt;img /&gt;
&lt;H5&gt;Visão Geral dos Segmentos&lt;/H5&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;STRONG&gt;Configuração de Rotas&lt;/STRONG&gt;&lt;/H4&gt;
&lt;H4&gt;&lt;STRONG&gt;Rotas no Gateway T1 Default&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;No Gateway T1 Default que está conectado ao T0 , irei configurar rotas para todos os segmentos com Next Hop ao ip da interface Outside do meu PFsense (192.168.30.5) .&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;obs: o nome do gateway T1 é diferente em cada AVS SDDC, no meu ambiente é "TNT13-T1"&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Informei o CIDR da Rede , neste caso é para o segmento TRANSIT_PRD&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Next Hop aqui é o ip da interface Outside do PFsense ( 192.168.30.5) , que está conectada diretamente a este GW T1.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Repeti os mesmos passos para todos os outros Segmentos, sempre com next hop para 192.168.30.5.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H4&gt;&amp;nbsp;&lt;/H4&gt;
&lt;H4&gt;&lt;STRONG&gt;Interfaces Firewall Pfsense&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Neste cenário o Firewall possui apenas &lt;STRONG&gt;três interfaces.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Deve ser configurada a rota default ( 0.0.0.0/0) para o gateway do Segmento Transit Outside ( 192.168.30.1)&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Interfaces do Pfsense&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Rotas no Gateways de Transito : T1_PRD_isolado&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Estarei criado uma rota default ( 0.0.0.0/0 ) , com next hop para a interface do Inside do PFsense (192.168.21.5 ) conectada ao Gateway T1 PRD. Devido a limitações do NSX, é necessário "quebrar" em duas:&amp;nbsp; 0.0.0.0/1 e 128.0.0.1/1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Configuração da Rodas default&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Next Hop para ip da Interface Inside PFsense.&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Rotas no Gateways de Transito : T1_DEV_Isolado&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Estarei criado uma rota default ( 0.0.0.0/0 ) , com next hop para a interface do Inside do PFsense (192.168.22.5 ) conectada ao Gateway T1 PRD. Devido a limitações do NSX, é necessário "quebrar" em duas:&amp;nbsp; 0.0.0.0/1 e 128.0.0.1/1&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Configuração da Rodas default&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Next Hop para ip da Interface Inside PFsense.&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Teste de Acesso&lt;/STRONG&gt;&lt;/H4&gt;
&lt;H5&gt;&lt;STRONG&gt;Tráfego Norte-Sul ( Saída Internet)&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;Para comprovar que conseguimos agora ter o tráfego Norte-Sul, pelo NVA PFense , irei fazer um teste a partir da máquina no segmento PRD_WEB , com ip 192.168.70.1&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;É possivel observar que o ip públlico de saída é do AVS&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Agora vou criar uma regra no Pfsense bloqueando a porta 443 , mas deixando liberada as outras portas.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Podemos comprovar que o tráfego está sendo inspersionado fazendo um teste de conexão na porta 53 e outro teste https.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;No Pfsense podemos ver o bloqueio&lt;/P&gt;
&lt;img /&gt;
&lt;H5&gt;&lt;STRONG&gt;Tráfego Leste-Oeste&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;Para testar o tráfego leste oeste entre os Segmentos PRD_WEB ( VM 192.168.70.10 )&amp;nbsp; e DEV_WEB&amp;nbsp; ( VM 192.168.80.10) , irei deixar ICMP liberado e bloquear a porta 3389 ( RDP)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Fazendo o teste a partir da máquina 192.168.70.10&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Verificando no PFsense o &lt;STRONG&gt;bloqueio da porta 3389&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Resumo&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Neste laboratório demonstrei como integrar uma NVA ao Azure VMware Solution usando NSX-T com Tier-0/Tier-1, criando T1s isolados para DEV e PRD, segments de trânsito e a configuração de SNAT/NoSNAT no NSX para controlar o egress. Também mostrei o ajuste de rotas&amp;nbsp; para garantir que o tráfego siga pelo caminho de inspeção no firewall. Validei a arquitetura com testes práticos de tráfego Norte-Sul (saída para Internet com IP público do AVS) e Leste-Oeste (controle entre DEV e PRD), comprovando a inspeção via logs e bloqueios aplicados no pfSense. Como próximos passos para produção, recomenda-se padronizar regras, logging, e revisar resiliência/HA do firewall e rotas para reduzir pontos únicos de falha.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Referências&lt;/STRONG&gt;&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/firewall-integration-in-azure-vmware-solution/2254961" target="_blank" rel="noopener"&gt;Firewall integration in Azure VMware Solution | Microsoft Community Hub&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.youtube.com/watch?v=ycbZmdI9TMQ&amp;amp;t=4s" target="_blank" rel="noopener"&gt;AVS How-to: 3rd Party Firewalls in Azure VMware Solution&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 11 Mar 2026 14:50:40 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/seguran%C3%A7a-corporativa-no-azure-vmware-solution-avs-como/ba-p/4501226</guid>
      <dc:creator>LeandroBarbosa</dc:creator>
      <dc:date>2026-03-11T14:50:40Z</dc:date>
    </item>
    <item>
      <title>Protegendo Máquinas no Azure VMware Solution com Azure Firewall</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/protegendo-m%C3%A1quinas-no-azure-vmware-solution-com-azure-firewall/ba-p/4462359</link>
      <description>&lt;P&gt;O&amp;nbsp; Azure VMware Solution oferece três opções principais de conectividade &lt;STRONG&gt;outbound para a Internet&lt;/STRONG&gt;.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A primeira é o &lt;STRONG&gt;Managed SNAT&lt;/STRONG&gt;, opção padrão e totalmente gerenciada pela plataforma, em que o próprio AVS realiza a tradução de endereços (SNAT) para permitir o acesso à Internet. Essa abordagem é simples e não requer configuração adicional, porém não oferece controle sobre os endereços IP públicos utilizados.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A segunda opção é o uso de &lt;STRONG&gt;Public IPs no NSX-T Edge&lt;/STRONG&gt;, onde o administrador atribui endereços públicos diretamente ao edge do ambiente AVS. Com isso, o tráfego de saída das máquinas virtuais utiliza esses IPs específicos, permitindo maior controle, ideal para cenários em que é necessário manter IPs fixos ou previamente autorizados em listas de acesso externas.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Por fim, há a opção de &lt;STRONG&gt;rotear o tráfego via rede Azure&lt;/STRONG&gt; (ou Azure Virtual WAN), em que uma rota padrão é anunciada por meio do ExpressRoute, direcionando o tráfego de saída para uma rede Azure que contém NVAs, Azure Firewall ou proxies. Essa abordagem oferece o maior nível de controle e segurança, pois permite aplicar inspeção, políticas e NAT centralizados, de forma integrada à arquitetura de rede do cliente.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Neste artigo será demonstrado em um ambiente de laboratório como utilizar o &lt;STRONG&gt;Virtual Wan com Azure Firewall &lt;/STRONG&gt;para inspeção do tráfego de saída das Vms em um &lt;STRONG&gt;segmento do AVS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A arquitetura do laboratório.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Virtual Wan com Azure Firewall&lt;/LI&gt;
&lt;LI&gt;ER Gateway conectado ao Express Route do Azure VMware Solution&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Os passos necessários são:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Configuração da opção de Internet Connectivity do AVS&lt;/LI&gt;
&lt;LI&gt;Habilitar a propagação da Rota no Vwan&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Configuração do Routing Intent&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4&gt;Configuração do Azure VMware Solution.&lt;/H4&gt;
&lt;P&gt;Acesse o Private Cloud no portal do Azure e certifique que a opção abaixo esteja selecionada.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Fazendo um "dump" das rotas no T0 do NSX, é possível verificar que não temos a rota default sendo propagada.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Portanto não temos conectividade para internet a partir da máquina VM1 que está no AVS.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Habilitando a propagação da Rota default no Virtual Wan&lt;/H4&gt;
&lt;P&gt;Devemos agora habilitar a propagação da rota default pelo Virtual Wan , e para isso é necessário editar a conexão do Express Route do AVS, conectado ao Hub do Vwan .&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Habilite a propagação da Rota default&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&amp;nbsp;Routing Intent&lt;/H4&gt;
&lt;P&gt;O &lt;STRONG&gt;Routing Intent&lt;/STRONG&gt; no &lt;STRONG&gt;Azure Virtual WAN&lt;/STRONG&gt; é um recurso que &lt;STRONG&gt;simplifica e automatiza o roteamento de tráfego&lt;/STRONG&gt; dentro do hub do Virtual WAN. Ele define &lt;STRONG&gt;como o tráfego entre redes (VNets, branches, e Internet)&lt;/STRONG&gt; deve ser direcionado, sem necessidade de configurar manualmente tabelas de rotas complexas&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Observação:&lt;/STRONG&gt; Em geral, no Brasil, caso já exista um Express Route On-premises, o Routing Intent já deve estar ativado para permitir o tráfego na comunicação com o Express Route do AVS, devido a não disponibilidade na região do Brasil do Express Route Global Reach&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Nas configurações do HUB, habilite o &lt;STRONG&gt;Routing Intent.&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Fazendo um novo "dump"das rotas BGP no NSX, agora é possível observar a rota default sendo propagada.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;Testando a partir da VM no AVS&lt;/H4&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Conforme esperado é o mesmo IP público do meu Firewall no Vwan&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Nos Logs do Azure Firewall, comprovamos que o tráfego da VM (10.145.0.10) realmente está passando pelo Azure Firewall&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Referências: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-vmware/disable-internet-access" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/azure-vmware/disable-internet-access&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Oct 2025 20:49:10 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/protegendo-m%C3%A1quinas-no-azure-vmware-solution-com-azure-firewall/ba-p/4462359</guid>
      <dc:creator>LeandroBarbosa</dc:creator>
      <dc:date>2025-10-17T20:49:10Z</dc:date>
    </item>
    <item>
      <title>Zonas de Disponibilidade no Azure: Entendendo a Diferença entre Zonas Lógicas e Físicas</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/zonas-de-disponibilidade-no-azure-entendendo-a-diferen%C3%A7a-entre/ba-p/4447134</link>
      <description>&lt;P&gt;&lt;STRONG&gt;O que é o mapeamento de zonas do Azure (Zona Lógica vs Zona Física)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No Azure, as Zonas de Disponibilidade (AZs) são agrupamentos de datacenters fisicamente separados dentros de uma mesma região. Cada zona possui infraestrutura independente - energia, refrigeração e rede - garantindo alta disponibilidade e resiliência.&lt;/P&gt;
&lt;P&gt;Porém, há uma distinção entre:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Tipo de Zona&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Definição&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Zona Lógica&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identificador exibido no portal do Azure (AZ1, AZ2, AZ3).&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Zona Física&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Grupo real de datacenters. O mapeamento entre lógica e física varia por assinatura&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;O mapeamento entre zonas lógicas e físicas não é fixo. Isso significa que:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AZ1 na assinatura A pode ser fisicamente igual à AZ3 na assinatura B.&lt;/LI&gt;
&lt;LI&gt;Sem verificação, você pode estar executando produção e DR na mesma infraestrutura física, anulando os benefícios da separação.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Esse comportamento é intencional e inspirado no modelo da AWS, que também não garante consistência entre zonas lógicas em diferentes contas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Qual o objetivo desse design?&lt;/STRONG&gt;&lt;BR /&gt;A motivação por trás desse mapeamento dinâmico é:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Distribuir a carga de consumo de forma mais eficiente entre os datacenters.&lt;/LI&gt;
&lt;LI&gt;Evitar hotspots e garantir resiliência operacional.&lt;/LI&gt;
&lt;LI&gt;Permitir flexibilidade de alocação conforme a capacidade física disponível.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Esse modelo ajuda a balancear o uso da infraestrutura global, sem expor diretamente a topologia física aos clientes — o que também reforça a segurança e abstração da plataforma.&lt;/P&gt;
&lt;P&gt;Essa distinção é essencial: a zona lógica AZ1 em uma assinatura pode, na prática, ser a mesma zona física que a AZ3 em outra. Sem uma verificação adequada, o cliente pode acabar executando cargas de produção e de DR (Disaster Recovery) na mesma infraestrutura física, o que anula os benefícios esperados da separação entre zonas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Exemplo prático de risco&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Vamos considerar o seguinte cenário de um cliente:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Produção: AZ1 e AZ2 em uma assinatura A&lt;/LI&gt;
&lt;LI&gt;DR: AZ3 em outra assinatura B, na mesma região&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;O cliente acredita estar distribuindo suas cargas entre três zonas distintas. No entanto, ao verificar o mapeamento real, encontra a seguinte saída:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 93.4259%; height: 239px; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr style="height: 239px;"&gt;&lt;td style="height: 239px;"&gt;
&lt;P&gt;[&lt;/P&gt;
&lt;P&gt;&amp;nbsp;{ "logicalZone": "1", "physicalZone": "brazilsouth-az3" },&lt;/P&gt;
&lt;P&gt;&amp;nbsp;{ "logicalZone": "2", "physicalZone": "brazilsouth-az1" },&lt;/P&gt;
&lt;P&gt;&amp;nbsp;{ "logicalZone": "3", "physicalZone": "brazilsouth-az2" }&lt;/P&gt;
&lt;P&gt;]&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Neste exemplo, a AZ3 lógica está mapeada para a AZ2 física, que já está sendo usada na produção. Ou seja, não há separação física real.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Como verificar o mapeamento de zonas?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para evitar esse problema, é essencial verificar o mapeamento entre zonas lógicas e físicas em cada assinatura. Use o seguinte comando via Azure CLI:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 93.7037%; border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;az rest --method get \&lt;/P&gt;
&lt;P&gt;&amp;nbsp;--uri "/subscriptions/&amp;lt;subscription-id&amp;gt;/locations?api-version=2022-12-01" \&lt;/P&gt;
&lt;P&gt;&amp;nbsp;--query "value[?name=='&amp;lt;region-name&amp;gt;'].{displayName: displayName,name: name,availabilityZoneMappings: availabilityZoneMappings }" \&lt;/P&gt;
&lt;P&gt;&amp;nbsp;-o json&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Substitua &amp;lt;subscription-id&amp;gt; e &amp;lt;region-name&amp;gt; (ex: brazilsouth) conforme necessário.&lt;/P&gt;
&lt;P&gt;Veja abaixo um exemplo de saída obtida no meu ambiente de laboratório, onde tenho duas assinaturas. Vou executar o mapeamento de zonas entre elas para a região Brazil South.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Na primeira subscription 1 temos o seguinte mapeamento.&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Zona lógica: 1 &amp;nbsp;– Zona Física: &amp;nbsp;brazilsouth-az1&lt;/LI&gt;
&lt;LI&gt;Zona lógica: 2 – Zona Física: brazilsouth-az2&lt;/LI&gt;
&lt;LI&gt;Zona lógica: 3 &amp;nbsp;– Zona Física: brazilsouth-az3&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Na segunda subscription 2 temos o seguinte mapeamento.&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Zona lógica: 1 &amp;nbsp;– Zona Física: &amp;nbsp;brazilsouth-az3&lt;/LI&gt;
&lt;LI&gt;Zona lógica: 2 – Zona Física: brazilsouth-az1&lt;/LI&gt;
&lt;LI&gt;Zona lógica: 3 &amp;nbsp;– Zona Física: brazilsouth-az2&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resumindo:&lt;/STRONG&gt; Se minha estratégia de DR envolve o uso das zonas lógicas 1 e 2 na subscription 1, pois elas estão mapeadas fisicamente para as zonas AZ1 e AZ2, então, na subscription 2 destinada ao DR, devo utilizar a zona lógica 1 — já que, nessa assinatura, ela está mapeada fisicamente para a AZ3.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Boas práticas&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Sempre verifique o mapeamento entre zonas lógicas e físicas antes de definir sua estratégia de DR.&lt;/LI&gt;
&lt;LI&gt;Evite assumir que AZ1, AZ2 e AZ3 representam zonas físicas distintas entre diferentes assinaturas.&lt;/LI&gt;
&lt;LI&gt;Considere utilizar regiões diferentes para DR quando a separação física for um requisito crítico.&lt;/LI&gt;
&lt;LI&gt;Documente e compartilhe o mapeamento com sua equipe de arquitetura e operações para garantir alinhamento e evitar riscos.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Referência oficial&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para mais detalhes, consulte a documentação oficial da Microsoft:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/availability-zones/az-overview" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/availability-zones/az-overview&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/architecture/aws-professional/regions-zones" target="_blank"&gt;Comparing AWS and Azure regions and zones - Azure Architecture Center | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 26 Aug 2025 13:17:42 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/zonas-de-disponibilidade-no-azure-entendendo-a-diferen%C3%A7a-entre/ba-p/4447134</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2025-08-26T13:17:42Z</dc:date>
    </item>
    <item>
      <title>Conectando o Azure Vmware Solution (AVS) com VPN Site to Site em topologia Hub Spoke.</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/conectando-o-azure-vmware-solution-avs-com-vpn-site-to-site-em/ba-p/4410454</link>
      <description>&lt;P&gt;A conexão de VPN entre AVS e o ambiente On-premises na maioria das vezes é realizada através do Virtual WAN, conforme descrito em: &lt;U&gt;https://learn.microsoft.com/en-us/azure/azure-vmware/configure-site-to-site-vpn-gateway&lt;/U&gt;.&lt;/P&gt;
&lt;P&gt;Contudo, caso necessário utilizar em uma topologia Hub-Spoke, existem componentes adicionais que devem ser considerados para permitir o trânsito entre o ExpressRoute do AVS e o VPN Gateway, bem como a propagação das rotas para o ambiente On-premises, assim como é feito por padrão com o Virtual WAN.&lt;/P&gt;
&lt;P&gt;Nesta topologia, o Azure Route Server deve ser integrado para habilitar esse trânsito (propagação de rotas)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O objetivo deste artigo é demonstrar em um ambiente de laboratório como conectar um ambiente On-premises com o Azure VMware Solution (AVS) através de uma VPN Site-to-Site em topologia Hub-Spoke.&lt;/P&gt;
&lt;P&gt;Arquitetura do Laboratório com topologia Hub-Spoke.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Componentes Azure.&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Vnet 10.90.0.0/16 com 3 Subnets.
&lt;UL&gt;
&lt;LI&gt;Gateway Subnet - 10.90.0.0/24&lt;/LI&gt;
&lt;LI&gt;RouteServerSubnet - 10.90.1.0/24&lt;/LI&gt;
&lt;LI&gt;VmSubnet : 10.90.2.0/24&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Virtual Network Gateway - VPN&lt;/LI&gt;
&lt;LI&gt;Virtual Network Gateway - Express Route&lt;/LI&gt;
&lt;LI&gt;Azure Route Server&lt;/LI&gt;
&lt;LI&gt;Azure Vm Linux Ubuntu&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Componentes On-premises&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Firewall VPN PfSense - 192.168.90.0/24 , 192.168.200.0/22 , 192.168.92.0/24&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Componetes Azure Vmware Solution&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;VMware SDDC&lt;/LI&gt;
&lt;LI&gt;Circuito Express Route&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;*Este laboratório presume que os componentes como o Azure Vmware Solution e ambiente On-premises com Pfsense ou qualquer outro equipamento esteja presente.&lt;/P&gt;
&lt;H5&gt;1. Deploy componentes Azure&lt;/H5&gt;
&lt;LI-CODE lang="bash"&gt;# 1. Variáveis - Altere conforme necessário
RESOURCE_GROUP="rg-avs-lab"
LOCATION="eastus2"
VNET_NAME="vnet-avs-lab"
VNET_ADDRESS_PREFIX="10.90.0.0/16"
SUBNET_GATEWAY_PREFIX="10.90.0.0/24"
SUBNET_ROUTE_SERVER_PREFIX="10.90.1.0/24"
SUBNET_GATEWAY_NAME="GatewaySubnet"
SUBNET_ROUTE_SERVER_NAME="RouteServerSubnet"

EXPRESSROUTE_GW_NAME="er-avs-lab"
VPN_GW_NAME="vpn-avs-lab"
VPN_GW_IP1_NAME="vpn-gw-ip1"
VPN_GW_IP2_NAME="vpn-gw-ip2"
VPN_GW_ASN=65515

EXPRESSROUTE_IP_NAME="er-ip"
LOCAL_NETWORK_GATEWAY_NAME="local-gw-avs-lab"
BGP_PEER_IP="192.168.90.1"
ASN_LOCAL=65503

ROUTE_SERVER_NAME="rserver-avs-lab"

# Variáveis para subnet e VM
SUBNET_VM_NAME="subnet-vm"
SUBNET_VM_PREFIX="10.90.5.0/24"
VM_NAME="vm-ubuntu"
VM_ADMIN_USERNAME='azureuser'
VM_ADMIN_PASSWORD='P@ssword123!' # Use um método seguro em produção
VM_NIC_NAME="vm-ubuntu-nic"
VM_IMAGE="Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest"
VM_SIZE="Standard_B2ms"

# 2. Criar grupo de recursos
az group create --name $RESOURCE_GROUP --location $LOCATION

# 3. Criar VNet e subnets
az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --name $VNET_NAME \
  --address-prefixes $VNET_ADDRESS_PREFIX \
  --subnet-name $SUBNET_GATEWAY_NAME \
  --subnet-prefix $SUBNET_GATEWAY_PREFIX

az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $SUBNET_ROUTE_SERVER_NAME \
  --address-prefix $SUBNET_ROUTE_SERVER_PREFIX

# Criar subnet para a VM
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name $SUBNET_VM_NAME \
  --address-prefix $SUBNET_VM_PREFIX

# 4. Criar IP público para ExpressRoute
az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $EXPRESSROUTE_IP_NAME \
  --sku Standard \
  --allocation-method Static

# 5. Criar Gateway ExpressRoute
az network vnet-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $EXPRESSROUTE_GW_NAME \
  --location $LOCATION \
  --vnet $VNET_NAME \
  --public-ip-addresses $EXPRESSROUTE_IP_NAME \
  --gateway-type ExpressRoute \
  --sku Standard 

# 6. Criar IPs públicos para VPN Gateway ativo-ativo
az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_IP1_NAME \
  --sku Standard \
  --allocation-method Static

az network public-ip create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_IP2_NAME \
  --sku Standard \
  --allocation-method Static

# 7. Criar VPN Gateway 
az network vnet-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_NAME \
  --location $LOCATION \
  --vnet $VNET_NAME \
  --public-ip-addresses $VPN_GW_IP1_NAME $VPN_GW_IP2_NAME \
  --gateway-type Vpn \
  --vpn-type RouteBased \
  --sku VpnGw1

# Após a criação, configurar ativo-ativo e BGP
az network vnet-gateway update \
  --resource-group $RESOURCE_GROUP \
  --name $VPN_GW_NAME \
  --set activeActive=true enableBgp=true bgpSettings.asn=$VPN_GW_ASN

# 8. Criar Local Network Gateway com BGP e ASN
az network local-gateway create \
  --resource-group $RESOURCE_GROUP \
  --name $LOCAL_NETWORK_GATEWAY_NAME \
  --gateway-ip-address $BGP_PEER_IP \
  --local-address-prefixes "192.168.90.0/24" \
  --asn $ASN_LOCAL \
  --bgp-peering-address $BGP_PEER_IP \
  --location $LOCATION

# 9. Criar conexão VPN entre o Gateway de VPN e o Local Network Gateway
az network vpn-connection create \
  --resource-group $RESOURCE_GROUP \
  --name vpn-s2s-connection \
  --vnet-gateway1 $VPN_GW_NAME \
  --local-gateway2 $LOCAL_NETWORK_GATEWAY_NAME \
  --shared-key 'teste@123' \
  --enable-bgp


# 10. Criar NIC para a VM 
az network nic create \
  --resource-group $RESOURCE_GROUP \
  --name $VM_NIC_NAME \
  --vnet-name $VNET_NAME \
  --subnet $SUBNET_VM_NAME

# 12. Criar VM com Ubuntu
az vm create \
  --resource-group $RESOURCE_GROUP \
  --name $VM_NAME \
  --nics $VM_NIC_NAME \
  --image $VM_IMAGE \
  --admin-username $VM_ADMIN_USERNAME \
  --admin-password $VM_ADMIN_PASSWORD \
  --size $VM_SIZE \
  --location $LOCATION&lt;/LI-CODE&gt;
&lt;H5&gt;2. Conectando o Express Route do AVS no VPN Gateway da Hub.&lt;/H5&gt;
&lt;P&gt;No Virtual Network Gateway de ER , adicione uma conexão&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Defina o connection type como ExpressRoute&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No AVS, copie o authorization key e o ExpressRoute ID&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Para este cenário será utilizado o modelo de resiliência standard, o Virtual network gateway, informe um nome para conexão, insira a "authorization key" e "ExpressRoute ID" (per cirtuit URI) copiados nos passos acima e execute o deploy.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Verificando que a conexão foi estabelecida com sucesso.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Verificando as rotas na Vm de teste.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Ao verificar as rotas do Pfsense ( onprem) ,&amp;nbsp; é possível observar que não temos as rotas do AVS, somente da Vnet do Azure.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Para habilitar o trânsito e troca de rotas entre o Express Route do AVS e o VPN gateway precisamos inserir o Azure Route Server.&lt;/P&gt;
&lt;H5&gt;3. Deploy do Azure Route Server.&lt;/H5&gt;
&lt;LI-CODE lang="bash"&gt;
#Criar Azure Route Server 
#Cria Public IP para o Route Server
az network public-ip create --resource-group $RESOURCE_GROUP --name routeserver-pip --sku Standard --allocation-method Static

# Identifica o ID da Subnet do Route Server
SUBNET_ID=$(az network vnet subnet list --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --query "[?name=='$SUBNET_ROUTE_SERVER_NAME'].id" --output tsv)

# Cria o Route Server
az network routeserver create \
  --resource-group $RESOURCE_GROUP \
  --name $ROUTE_SERVER_NAME \
  --hosted-subnet $SUBNET_ID \
  --location $LOCATION \
  --public-ip-address routeserver-pip&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Após criado habilitamos a opção Branch-to-Branch&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Podemos verificar que agora as rotas do AVS (172.30.0.0/22), agora foram propagadas para o Pfsense.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Validando acesso ao Vcenter do AVS.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Referências:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/route-server/overview" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/route-server/overview&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/architecture/networking/architecture/hub-spoke&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 05 May 2025 14:46:04 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/conectando-o-azure-vmware-solution-avs-com-vpn-site-to-site-em/ba-p/4410454</guid>
      <dc:creator>LeandroBarbosa</dc:creator>
      <dc:date>2025-05-05T14:46:04Z</dc:date>
    </item>
    <item>
      <title>Acessar o Azure ARC com Private Endpoint e Azure Firewall Explicit Proxy - Parte 1</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/acessar-o-azure-arc-com-private-endpoint-e-azure-firewall/ba-p/4366837</link>
      <description>&lt;H1&gt;&lt;A class="lia-anchor" target="_blank" name="_Toc181912501"&gt;&lt;/A&gt;Benefícios de Usar o Azure ARC&lt;/H1&gt;
&lt;P&gt;O Azure ARC permite gerenciar recursos de TI, independentemente de onde eles estejam hospedados, seja no &lt;STRONG&gt;Azure&lt;/STRONG&gt;, em &lt;STRONG&gt;outras nuvens&lt;/STRONG&gt; ou em &lt;STRONG&gt;infraestruturas locais &lt;/STRONG&gt;(&lt;EM&gt;on-premises&lt;/EM&gt;).&lt;/P&gt;
&lt;img&gt;Azure Arc solution overview architecture&lt;/img&gt;
&lt;P&gt;Fonte: &amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/overview" target="_blank" rel="noopener"&gt;Azure Arc overview - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Entre os principais benefícios de usar o Azure ARC podemos citar os seguintes.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Gestão Centralizada&lt;/STRONG&gt;: Permite o gerenciamento de recursos multi-cloud e &lt;EM&gt;on-premises&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Consistência de Ferramentas&lt;/STRONG&gt;: Com o Azure ARC, é possível usar as mesmas ferramentas e processos que você já utiliza no Azure para gerenciar recursos em qualquer infraestrutura, proporcionando uma experiência consistente.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Segurança e Conformidade&lt;/STRONG&gt;: A tecnologia permite aplicar políticas de segurança e conformidade de maneira uniforme em todos os ambientes, garantindo que os padrões corporativos sejam mantidos em qualquer lugar.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Escalabilidade&lt;/STRONG&gt;: O Azure ARC facilita a escala de operações de TI de acordo com as necessidades do negócio, sem as limitações típicas das infraestruturas locais.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Automatização&lt;/STRONG&gt;: A automatização de processos de gerenciamento através de scripts e ferramentas Azure &lt;EM&gt;Resource Manager&lt;/EM&gt; (ARM) pode ser estendida a recursos fora do Azure, melhorando a eficiência operacional.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitoramento e &lt;EM&gt;Insights&lt;/EM&gt;&lt;/STRONG&gt;: O Azure ARC integra-se com ferramentas de monitoramento do Azure, permitindo visibilidade centralizada e insights detalhados sobre o desempenho e a integridade de todos os recursos.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Ao utilizar o Azure ARC, as organizações podem maximizar os investimentos existentes em infraestrutura, melhorar a governança e aprimorar a flexibilidade e a agilidade operacionais, tudo isso enquanto mantêm uma gestão centralizada e consistente.&lt;/P&gt;
&lt;H1&gt;&lt;A class="lia-anchor" target="_blank" name="_Toc181912502"&gt;&lt;/A&gt;Benefício de usar Private &lt;EM&gt;Endpoints&lt;/EM&gt;&lt;/H1&gt;
&lt;P&gt;Utilizando o Azure ARC com &lt;EM&gt;private endpoints&lt;/EM&gt;, o tráfego de rede entre os recursos gerenciados e o Azure permanece dentro da rede privada, aumentando a segurança, proteção dos dados e o desempenho. Essa configuração reduz a exposição a ameaças externas e cumpre exigências regulatórias ao assegurar que os dados sensíveis não transitem pela internet pública.&lt;/P&gt;
&lt;H1&gt;Desafios no Acesso ao Azure Arc com Azure Firewall, Explicit Proxy e Private Endpoint&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Conectar um recurso local ao Azure por meio do Azure Arc e utilizar extensões habilitadas para Arc requer comunicação com um conjunto de serviços do Azure, cada um com seus próprios endpoints de destino. Para clientes que utilizam proxies corporativos, é necessário permitir o acesso a todos esses endpoints.&lt;/LI&gt;
&lt;LI&gt;Atualmente, o gateway do Arc reduz o número de url's que precisam ser permitidos por meio de um proxy corporativo, mas exige que o tráfego seja roteado para o Azure pela Internet pública. No entanto, alguns clientes precisam que todo o tráfego alcance o Azure por meio do seu circuito de ExpressRoute ou através da VPN Site a Site.&lt;/LI&gt;
&lt;LI&gt;Embora parte dos endpoints necessários podem ser roteados pelo Microsoft Peering ou Private&amp;nbsp; Peering do ExpressRoute, nem todos os endpoints são compatíveis com essas opções.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Firewall do Azure como um proxy sobre ER ou VPN site a site&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Os clientes que precisam que todo o tráfego alcance o Azure por meio do ExpressRoute ou VPN Site-to-Site pode hospedar um proxy de encaminhamento em sua rede virtual do Azure. ​&lt;/LI&gt;
&lt;LI&gt;O agente Arc pode então se comunicar com esse proxy de encaminhamento por meio de um IP privado, seja por meio do ExpressRoute ou VPN Site-to-Site. ​&lt;/LI&gt;
&lt;LI&gt;O Firewall do Azure com o recurso Proxy Explícito (Visualização Pública) pode ser aproveitado como esse proxy de encaminhamento.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Disclaimer:&lt;/STRONG&gt; O &lt;STRONG&gt;Azure Firewall com Explicit Proxy&lt;/STRONG&gt; é um recurso atualmente em &lt;STRONG&gt;preview&lt;/STRONG&gt;. Isso significa que ele está sujeito a alterações e pode não estar disponível em todas as regiões ou com todas as funcionalidades de produção. Para mais informações, consulte os &lt;A href="https://azure.microsoft.com/en-us/support/legal/preview-supplemental-terms/" target="_blank"&gt;termos de uso para preview&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O diagrama abaixo representa essa arquitetura&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Etapas para o uso do Azure Firewall com explicit proxy&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Passo 1: &lt;/STRONG&gt;Precisamos habilitar o uso do Azure Firewall com a feature de Explicit Proxy conforme a documentação de referência&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/pt-br/azure/firewall/explicit-proxy" target="_blank" rel="noopener"&gt;aqui&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Passo 2:&lt;/STRONG&gt; Em seguida realizado o onboard dos servidores para o Azure ARC. Observe que o IP privado do Firewall do Azure como o proxy de encaminhamento nas configurações.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;No Portal do Azure&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Usando a CLI de comando&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Servidores ARC&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;azcmagent config set proxy.url &amp;lt;Azure Firewall Private IP:Port&amp;gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/azcmagent-config" target="_blank" rel="noopener"&gt;azcmagent config CLI reference - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Passo 3:&lt;/STRONG&gt; Crie uma regra de aplicativo para &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud" target="_blank" rel="noopener"&gt;permitir os endpoints necessários do Azure ARC&lt;/A&gt; para seu cenário de acesso através do Firewall&lt;/P&gt;
&lt;P&gt;​&lt;/P&gt;
&lt;P&gt;No próximo artigo, vamos montar um laboratório passo a passo, detalhando as configurações e os requisitos necessários para utilizar o private endpoint e o explicit proxy do Azure Firewall, conforme ilustrado no diagrama abaixo&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Referências:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure Arc overview - &lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/overview" target="_blank" rel="noopener"&gt;Azure Arc overview - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Informações gerais e preço - &lt;A href="https://azure.microsoft.com/en-us/products/azure-arc/" target="_blank" rel="noopener"&gt;Azure Arc – Hybrid and Multi-Cloud Management and Solution (microsoft.com)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Azure Firewall Explicit Proxy - &lt;A href="https://learn.microsoft.com/en-us/azure/firewall/explicit-proxy" target="_blank" rel="noopener"&gt;Azure Firewall Explicit proxy (preview) | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 22 Jan 2025 17:03:37 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/acessar-o-azure-arc-com-private-endpoint-e-azure-firewall/ba-p/4366837</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2025-01-22T17:03:37Z</dc:date>
    </item>
    <item>
      <title>Passo a Passo para Criar um Filtro de Tag no FinOps Hub</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/passo-a-passo-para-criar-um-filtro-de-tag-no-finops-hub/ba-p/4249215</link>
      <description>&lt;P&gt;Recentemente, publiquei um blog sobre implementação e gerenciamento de custos do Azure usando FinOps Hub no formato FOCUS. &lt;A href="https://techcommunity.microsoft.com/t5/azure-infragurus/como-implementar-e-gerenciar-seus-custos-do-azure-com-finops-hub/ba-p/4152983" target="_blank" rel="noopener"&gt;Confira aqui&lt;/A&gt;. Agora, vou explicar como criar um filtro de Tag no FinOps Hub para otimizar a gestão de custos.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;1. Acesse o Dashboard CostSummary do FinOps Hub&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Primeiro, abra o seu dashboard CostSummary do FinOps Hub. Esta versão que estamos trabalhando seria a V0.4. Em seguida, clique na aba de Resources. Você vai notar na tabela que existe uma coluna de Tag, porém ela não está formatada e não possui um filtro. O objetivo é corrigir a coluna e adicionar um filtro de tag para centro de custo. As Tags são referentes ao meu ambiente.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;De acordo com a figura abaixo, selecione a opção para transformar dados e adicionaremos o filtro de tag.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;2. Navegue até a Seção de Filtragem&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No painel principal, localize e clique em CostDetails. Em seguida, encontre a coluna x_TagsDictionary, clique no item ao lado do nome e selecione a Tag centro_de_custo. No meu exemplo, também adicionei a Tag Environment. Antes de clicar em OK, desmarque a opção "Use original column name as prefix." E em seguida clique em OK&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_3" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;H2&gt;3. Selecione "Criar Novo Filtro"&lt;/H2&gt;
&lt;P&gt;Ao clicar em OK, serão adicionadas mais duas colunas, centro_de_custo e Environment, conforme ilustrado no exemplo abaixo. Em seguida clique em Close &amp;amp; Apply&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_9" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H2&gt;4. Criação do Fitro de Tag&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Na View de Resources, copie e cole o filtro de subscription com Ctrl+C e Ctrl+V e arraste-o para perto da view de Total Savings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_12" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;H2&gt;5. Alterar o Filtro Subscription para Filtro de Tag&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Selecione o filtro Subscription e, em Data, localize a tag centro_de_custo. Arraste o item centro_de_custo para field e depois exclua o Field Subscription.&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_14" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_15" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_16" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV id="tinyMceEditorarsilvan_17" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H2&gt;6. Nova View para o Filtro Centro de Custo&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A visualização será parecida com o exemplo a seguir&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_22" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;7. Alterar a Tabela para fitrar por Tag Centro De Custo&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Precisamos agora modificar a tabela para aplicar o filtro ao centro de custo.&lt;/P&gt;
&lt;P&gt;Selecione a tabela e encontre no campo Data a tag centro_de_custo.&lt;/P&gt;
&lt;DIV id="tinyMceEditorarsilvan_23" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Arraste o item centro_de_custo nas Colunas, como mostrado abaixo, e remova Tags da coluna.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Com essas etapas concluídas, você deve ter uma nova visualização que reflete o filtro aplicado ao centro de custo. Essa configuração permitirá uma análise mais detalhada e específica, facilitando a identificação de gastos associados a cada centro de custo.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finalmente, salve as alterações feitas e atualize o dashboard para garantir que todas as modificações foram aplicadas corretamente. Agora, ao utilizar o filtro de centro de custo, você poderá visualizar apenas os dados relevantes conforme sua necessidade, tornando a análise financeira mais eficiente e direcionada.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Sep 2024 15:01:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/passo-a-passo-para-criar-um-filtro-de-tag-no-finops-hub/ba-p/4249215</guid>
      <dc:creator>arsilvan</dc:creator>
      <dc:date>2024-09-20T15:01:20Z</dc:date>
    </item>
    <item>
      <title>Configurando Azure ARC com Private Link.</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/configurando-azure-arc-com-private-link/ba-p/4127290</link>
      <description>&lt;P&gt;O Azure Arc facilita o gerenciamento em ambientes híbridos e multi-cloud por meio de um único painel. Com o Azure Arc, é possivel aplicar os recursos de gerenciamento e segurança do Azure aos seus recursos de outras nuvens, e on-premises, como servidores, clusters Kubernetes e serviços de dados.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Gerenciar&amp;nbsp; recursos do Azure Arc em diferentes redes e firewalls pode apresentar alguns desafios como por exemplo precisar expor pontos de extremidade públicos para seus recursos, o que pode aumentar o risco de acesso não autorizado e ataques maliciosos.&lt;/P&gt;
&lt;P&gt;Desta forma, o&lt;STRONG&gt; Azure Arc Private Links&lt;/STRONG&gt; é uma solução que facilita e segura a conexão entre seus recursos do Azure Arc e o Azure. Com o Azure Arc Private Links, é possiível criar pontos de extremidade privados para seus recursos do Azure Arc dentro de uma rede virtual do Azure e acessá-los usando endereços IP privados e assim evitar expor pontos de extremidade públicos e proteger seus recursos de riscos de rede. Você também pode diminuir a latência e os custos de largura de banda da rede, direcionando o tráfego pela rede principal do Azure.&lt;/P&gt;
&lt;P&gt;Ao utilizar extensões de VM que funcionam com os servidores no Azure Arc, como por exemolo : Gerenciamento de Atualizações, Automação do Azure ou o Azure Monitor, esses recursos se conectam a outros recursos do Azure, como o Workspace do Log Analytics, Conta de Automação do Azure, Cofre de Chave do Azure e o Armazenamento de Blobs que também devem ter seus próprios links privados.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No entanto, até o momento deste artigo, existem algumas restrições em que o tráfego ainda precisa ser realizadas para URLS públicas, como por exemplo, para acesso ao Entra ID, Azure Resource Manager, Windows Admin Center e SSH.&amp;nbsp; A figura abaixo apresenta este fluxo de conexão.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Objetivo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O propósito deste artigo é demostrar em um ambiente de laboratório como configurar o Azure ARC com private link e ajustar o agente do azure arc para acessar as urls públicas por meio de um proxy. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;O ambiente de laborátorio consiste em:&lt;/P&gt;
&lt;P&gt;On-premises&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Servidor Active Directory - &amp;nbsp;Domain Controller (ADDS) : 10.168.101.4&lt;/LI&gt;
&lt;LI&gt;Servidor (para onboard no arc) com Windows Sever 2022 : VM01&lt;/LI&gt;
&lt;LI&gt;Proxy&amp;nbsp; Server ( Pfsense/squid) :&amp;nbsp;&amp;nbsp; 192.168.101.1&lt;/LI&gt;
&lt;LI&gt;VPN Site to Site&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Azure&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Vnet Hub com :
&lt;UL&gt;
&lt;LI&gt;Servidor Active Directory - &amp;nbsp;Domain Controller (ADDS) : 10.10.0.4&lt;/LI&gt;
&lt;LI&gt;VPN Gateway&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Arquitetura do ambiente de laboratório.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Criando o ARC Private Scope&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No portal do Azure , pesquise por Azure ARC e selecione “Private link scopes” e depois em “Create”&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Insira a subscription , resource goup , região &amp;nbsp;e o nome para o Private link Scope.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Selecione “Create” para criar o Private Endpoint e complete as informações a direita. Utilizarei uma já existente chamada “Vnet-Arc” e Mantenha habilitada a opção de DNS Integration&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Valide as informações e depois vai em : “create”.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Valide os recursos criados no RG.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Realizando Link do Private DNS Zone.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Ao acessar a zona de DNS privada que foi criada, é possível ver que o link com a Vnet-Arc já foi feito automaticamente. Como meu servidor de DNS (Controlador de Domínio) está em uma vnet diferente, eu também preciso criar o link com ela.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Integração DNS do Private Endpoint &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para integração de dns com private endpoint existem vários modelos : &lt;A href="https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns-integration" target="_blank" rel="noopener"&gt;Azure Private Endpoint DNS integration | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;No meu caso utilizarei o modelo de integração com custom DNS,&lt;SPAN&gt; pois já tenho um Domain Controller no Azure. &lt;/SPAN&gt;Assim, vou usar encaminhadores condicionais, conforme descrito em:&amp;nbsp; &lt;A href="https://github.com/dmauser/PrivateLink/tree/master/DNS-Integration-Scenarios#42-custom-dns-server" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://github.com/dmauser/PrivateLink/tree/master/DNS-Integration-Scenarios#42-custom-dns-server&lt;/SPAN&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Para isso irei configurar encaminhadores no meu DC on-premises e também no Azure.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DNS do Domain Controller on-premises.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No meu Domain Controller on-premises estarei criando o Encaminhador Condicional : &lt;STRONG&gt;his.arc.azure.com&lt;/STRONG&gt; e &lt;STRONG&gt;guestconfiguration.azure.com&lt;/STRONG&gt; &amp;nbsp;apontando para meu Domain Controller no Azure (10.10.0.4).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DNS do Domain Controller no Azure &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No servidor Domain Controller do Azure eu crios os mesmos &amp;nbsp;Contional Forwarders &lt;STRONG&gt;his.arc.azure.com&lt;/STRONG&gt; e &lt;STRONG&gt;guestconfiguration.azure.com&lt;/STRONG&gt; , porém apontando para o Ip do Azure DNS (168.63.129.16) .&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Validando a Resolução de nomes.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Vou testar com nslookup a resolução dos endereços gbl.his.arc.azure.com e gbl.privatelink.his.arc.azure.com, o resultado esperado é o ip 10.13.0.10 conforme abaixo.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A partir do servidor on-premises, o resultado é conforme esperado.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conectando no ARC&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para fazer o onboarding no ARC vou gerar um o Script de Configuração.&lt;/P&gt;
&lt;P&gt;Pesquisar por ARC , na coluna selecione “Machines” , depois em add/create .&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Para este lab criarei o script para somente um servidor.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Selecione o Método de conectividade como Private Endpoint e selecione o Link Scope criado anteriormente e “Download and run”&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Será apresentado o script para copiar ou fazer o download.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Instalação do Agente no Servidor on-premises.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Conforme Documentação oficial mesmo com private link algumas URLS, públicas ainda precisam ser liberadas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud#urls" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud#urls&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Após a liberação das URLs no servidor proxy realizei a configuração de proxy settings na máquina onde irei rodar o script, inclusive inserindo as urls do private endpoint para o não uso de proxy.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Porém ao executar o script de onboarding recebi o erro: “The remote server returned an error: (504) Gateway Timeout”&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Devido este cenário de "rede dividida", em que algumas URLs, como por exemplo de autenticação no Entra ID, devem ir pela internet via proxy, mas o tráfego para os endpoints privados do ARC não. É necessário configurar o agente do ARC para os serviços que devem usar o proxy.&lt;/P&gt;
&lt;P&gt;Para isto pode-se configurar dois parâmetros :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;config set proxy.url : Endereço do Proxy.&lt;/LI&gt;
&lt;LI&gt;config set proxy.bypass&amp;nbsp; :&amp;nbsp; Valor conforme tabela abaixo da &amp;nbsp;URls &amp;nbsp;privadas&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Desta forma, vou fazer a instalação do agente de forma manual direto pelo link &amp;nbsp;&amp;nbsp;&lt;A href="https://aka.ms/AzureConnectedMachineAgent" target="_blank" rel="noopener"&gt;https://aka.ms/AzureConnectedMachineAgent&lt;/A&gt;&amp;nbsp; , &amp;nbsp;(em um ambiente Entreprise poderia ser via SCCM, Gpo ,Intune, etc.)&lt;/P&gt;
&lt;P&gt;Ao realizar um check de conectividade com o comando :&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;*Altere o parâmetro “location” conforme foi região onde foi criado o private link. No meu caso é EastUS&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;azcmagent check --location "eastus" --enable-pls-check  &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;É possível observar no resultado que os endpoints privados estão sendo alcançados, porém os públicos não.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No script de onboarding gerado anteriormente vou comentar as linhas que fazem a instalação do agente ( já instalado) e adicionar as linhas a seguir com os parâmetros para o proxy.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;amp; “$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" config set proxy.url "&lt;A href="http://192.168.101.1:3128" target="_blank" rel="noopener"&gt;http://192.168.101.1:3128&lt;/A&gt;"&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;amp; "$env:ProgramW6432\AzureConnectedMachineAgent\azcmagent.exe" config set proxy.bypass "Arc"&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ao executar novamente o script recebo o prompt para login e insiro as credenciais.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Realizando a verificação de conectividade novamente pelo comando :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;azcmagent check --location "eastus" --enable-pls-check &lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;É possível observar que agora todos os endpoints estão alcançáveis. E os endereços públicos estão com o proxy configurado ( set) e realizando o bypass para o endereços privados.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ao acessar o portal do azure é possível que a máquina está com o status de conectada no ARC.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Referências&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/manage-agent?tabs=windows#proxy-bypass-for-private-endpoints" target="_blank" rel="noopener"&gt;Managing the Azure Connected Machine agent - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/virtual-network/what-is-ip-address-168-63-129-16" target="_blank" rel="noopener"&gt;What is IP address 168.63.129.16? | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud#urls" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/azure-arc/network-requirements-consolidated?tabs=azure-cloud#urls&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/dmauser/PrivateLink/tree/master/DNS-Integration-Scenarios#42-custom-dns-server" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://github.com/dmauser/PrivateLink/tree/master/DNS-Integration-Scenarios#42-custom-dns-server&lt;/SPAN&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/private-link-security" target="_blank" rel="noopener"&gt;Use Azure Private Link to securely connect servers to Azure Arc - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 26 Jun 2024 00:03:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/configurando-azure-arc-com-private-link/ba-p/4127290</guid>
      <dc:creator>LeandroBarbosa</dc:creator>
      <dc:date>2024-06-26T00:03:02Z</dc:date>
    </item>
    <item>
      <title>Como Implementar e Gerenciar Seus Custos do Azure com FinOps Hub no Formato FOCUS 🚀</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/como-implementar-e-gerenciar-seus-custos-do-azure-com-finops-hub/ba-p/4152983</link>
      <description>&lt;H1&gt;Tutorial Implementação do FinOps Hub para Análise de Custos&lt;/H1&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Se você está buscando uma plataforma confiável para analisar seus custos, obter insights e tomar ações baseadas em dados, está no lugar certo. Neste artigo, vou mostrar o passo a passo de como implementar a solução do FinOps Hub no seu ambiente e aproveitar os diversos relatórios de custos disponíveis no repositório deste projeto.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;O Que é o FinOps?&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Antes de começarmos, é importante entender o que é o FinOps e como o kit de Ferramentas do FinOps Hub vai ajudá-lo na análise de custos.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;FinOps é uma estrutura operacional e prática cultural que maximiza o valor comercial da nuvem. Ela permite a tomada de decisões baseadas em dados e cria responsabilidade financeira por meio da colaboração entre equipes de engenharia, finanças, tecnologia e operações comerciais. Esta disciplina envolve o uso de ferramentas de gerenciamento de custos na nuvem, como o Microsoft Cost Management, e práticas recomendadas, como:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Analisar e acompanhar os gastos com a nuvem.&lt;/LI&gt;
&lt;LI&gt;Identificar oportunidades de redução de custos.&lt;/LI&gt;
&lt;LI&gt;Alocar custos para equipes, projetos ou produtos específicos.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;A Microsoft recentemente anunciou uma parceria estratégica com a &lt;A title="FinOps Foundation" href="https://www.finops.org/" target="_blank" rel="noopener"&gt;FinOps.org&lt;/A&gt;, uma organização líder no desenvolvimento de práticas de gerenciamento financeiro em nuvem. Essa colaboração visa aprimorar as capacidades de governança financeira e otimização de custos para empresas que utilizam a plataforma Azure.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Combinando a expertise da Microsoft em tecnologia de nuvem com as práticas recomendadas e frameworks desenvolvidos pela &lt;A title="FinOps Foundation" href="https://www.finops.org/" target="_blank" rel="noopener"&gt;FinOps.org&lt;/A&gt;, as organizações poderão obter maior transparência, controle e eficiência em seus investimentos em nuvem. Essa aliança promete fortalecer as ferramentas e recursos disponíveis para empresas, facilitando uma gestão financeira mais inteligente e estratégica no ambiente digital.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Benefícios do FinOps Hub&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O FinOps Hub vai ampliar o gerenciamento de custos ao exportar detalhes para uma conta de armazenamento consolidada, superando algumas limitações quando coletamos estes dados por API. Na sua forma básica, ele habilita opções adicionais de relatórios no Power BI. Em um nível avançado, ele serve como base para criar sua própria solução de gerenciamento e otimização de custos.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Princípios de Design do FinOps Hub&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O FinOps Hub se concentra em três princípios básicos de design:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Padronizado&lt;/STRONG&gt;: Este princípio se esforça para ser o exemplo máximo do Framework de FinOps, demonstrando seus princípios, práticas e valores de forma exemplar.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Construído para Escala&lt;/STRONG&gt;: Projetado para suportar as maiores contas e organizações.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Aberto e Extensível&lt;/STRONG&gt;: Abraça o ecossistema e prioriza a habilitação da plataforma.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Comparação com o Microsoft Cost Management&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Uma pergunta comum é por que usar o FinOps Hub se já existe o Cost Management. Muitas organizações que utilizam o Microsoft Cost Management encontram obstáculos quando necessitam de recursos que não estão disponíveis nativamente. Nessas situações, as opções são limitadas a utilizar ferramentas de terceiros ou desenvolver uma solução do zero. O FinOps Hub oferece uma base para facilitar a criação de soluções personalizadas de gerenciamento de custos.&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Vantagens do FinOps Hub&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Acesso Simplificado&lt;/STRONG&gt;: Você não precisa conceder acesso no portal do Azure para utilizar o Cost Management.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Templates de Relatórios&lt;/STRONG&gt;: Ele oferece templates de relatórios do Power BI que podem ser publicados online.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Funcionamento do FinOps Hub&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A exportação é baseada no FinOps Open Cost and Usage Specification (FOCUS), uma iniciativa para definir um formato comum para dados de faturamento. O FOCUS inclui dados atuais e amortizados, reduzindo até 30% de dados no storage account e processamento, e está alinhado com o Framework do FinOps.&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Processo de Exportação e Ingestão de Dados&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;O Gerenciamento de Custos exporta detalhes de custo bruto para o contêiner msexports.&lt;/LI&gt;
&lt;LI&gt;O pipeline de msexports_ExecuteETL inicia o processo ETL (extract-transform-load) quando os arquivos são adicionados ao armazenamento.&lt;/LI&gt;
&lt;LI&gt;O pipeline msexports_ETL_ingestion salva os dados exportados em formato parquet no contêiner de ingestão.&lt;/LI&gt;
&lt;LI&gt;O Power BI lê dados de custo do contêiner de ingestão.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Custos do FinOps Hub&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O custo médio é de 25 dólares por 1 milhão de linhas, mas o custo exato da solução pode variar, principalmente devido ao armazenamento de dados e à frequência de ingestão dos dados. Os pipelines operam uma vez por dia por exportação, ajudando a manter os custos sob controle e garantindo uma gestão eficiente dos dados.&lt;/P&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;H3&gt;Conclusão&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Considerando os ganhos em termos de eficiência, automação e precisão que essa solução pode oferecer, o investimento pode ser justificado, trazendo retorno em médio a longo prazo. Agora, vamos para a prática!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O FinOps Hub é projetado pela comunidade. Você pode se juntar à discussão pelo link na descrição do vídeo e comentar o que gostaria de ver a seguir ou aprender a contribuir e fazer parte da equipe.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Quer assistir ao vídeo com o passo a passo para implementar o FinOps Hub baseado no Focus? Aperte o play no vídeo abaixo ou, se preferir, acesse&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;div data-video-id="https://youtu.be/xB7GO72yOCA" data-video-remote-vid="https://youtu.be/xB7GO72yOCA" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FxB7GO72yOCA%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DxB7GO72yOCA&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FxB7GO72yOCA%2Fhqdefault.jpg&amp;amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Deseja contribuir com o projeto e interagir com a comunidade? Visite o &lt;A href="https://microsoft.github.io/finops-toolkit/hubs" target="_blank" rel="noopener"&gt;FinOps hubs - FinOps toolkit (microsoft.github.io)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Até mais!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 03 Jun 2024 16:48:40 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/como-implementar-e-gerenciar-seus-custos-do-azure-com-finops-hub/ba-p/4152983</guid>
      <dc:creator>arsilvan</dc:creator>
      <dc:date>2024-06-03T16:48:40Z</dc:date>
    </item>
    <item>
      <title>Azure Arc Enabled Servers (ESU) - BackBilling</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/azure-arc-enabled-servers-esu-backbilling/ba-p/4024425</link>
      <description>&lt;H2&gt;Explorando a Gestão de Atualizações de Segurança Estendidas no Azure Arc Enabled Servers(ESU)&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Introdução&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Com o surgimento da computação híbrida e a necessidade de gerenciar servidores distribuídos em vários locais, a Microsoft introduziu o Azure Arc. Essa plataforma permite estender os serviços do Azure para qualquer infraestrutura, incluindo servidores locais. Neste artigo, vamos explorar como o Azure Arc, para este exemplo foi utilizado o Azure Update Management (também podemos usar soluções como Windows Update, Windows Server Update Service e Catalogo) e Atualizações de Segurança Estendidas (ESU), oferece uma solução abrangente para manter servidores Windows Server 2012 e Windows Server 2012 R2 em conformidade e seguros.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Arc Enabled Servers&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O Azure Arc permite que você gerencie servidores Windows e Linux, independentemente de onde eles residam, como extensões do Azure. Com o Azure Arc Enabled Servers, você pode aproveitar recursos do Azure, como o Azure Policy, Azure Monitor e muito mais, mesmo em seus servidores onpremise ou em outros provedores de nuvem. Para saber mais sobre como conectar servidores para o Azure visite a documentação &lt;A href="https://learn.microsoft.com/pt-br/azure/azure-arc/servers/agent-overview" target="_blank" rel="noopener"&gt;Visão geral do agente do Azure Connected Machine - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Atualizações de Segurança Estendidas (ESU)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Alguns ambientes exigem suporte estendido para atualizações de segurança além dos ciclos de vida padrão. Aqui é onde entra o conceito de Atualizações de Segurança Estendidas (ESU). Com o Azure Arc Enabled Servers, você pode estender a cobertura de segurança para servidores que precisam de suporte adicional. Com ESUs, os clientes que executam o Windows Server 2012 e Windows Server 2012 R2 no local ou em outras nuvens podem obter mais três anos de atualizações críticas de segurança da Microsoft para proteger seu fim do suporte.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Entendendo o Back-Billing para Azure Arc (Windows Server 2012 e Windows Server 2012 R2)&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No mundo do Azure Arc e suas extensões de segurança estendidas (ESU), o conceito de Back-Billing pode parecer desconhecido ou negligenciado por muitos. No entanto, é um aspecto crucial que merece atenção ao ativar serviços para sistemas como o Windows Server 2012 e 2012 R2 no Azure Arc.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O Que é Back-Billing?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para elucidar, o Back-Billing refere-se a uma cobrança retroativa que pode ocorrer ao ativar serviços como ESU em determinados sistemas, como experimentei em primeira mão. Ao ativar o serviço em um determinado dia, podemos notar que vamos ter uma cobrança em nossa fatura retroativa, considerando-a como uma cobrança atrasada a partir de 10/10/2023 referente a ativação.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A seguir iremos verificar a funcionalidade do ESU na prática. Para o nosso laboratório não iremos detalhar a instalação do agente, ficará para um próximo artigo e sim iremos validar e ESU em um computador com Windows Server 2012 previamente conectado ao Azure Arc.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pré-requisitos para o ESU&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Prepare o&amp;nbsp; agente do Azure Connected Machine (versão 1.34 ou superior) nos computadores com Windows Server 2012 e Windows Server 2012 R2 para conexão com o Azure Arc. O ESU terá suporte para as edições do Windows Server 2012 e Windows Server 2012 R2 Standard e Datacenter.&lt;/LI&gt;
&lt;LI&gt;Siga a documentação&amp;nbsp;&lt;A href="https://support.microsoft.com/en-us/topic/kb5031043-procedure-to-continue-receiving-security-updates-after-extended-support-has-ended-on-october-10-2023-c1a20132-e34c-402d-96ca-1e785ed51d45" target="_blank" rel="noopener"&gt;KB5031043: Procedure to continue receiving security updates after extended support has ended on October 10, 2023 - Microsoft Support&lt;/A&gt; para a instalação do pacote de licenciamento e da atualização da stack de serviços (SSU) do servidores Windows Server 2012 e Windows Server 2012 R2 habilitados para Azure Arc.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Updates Windows Server 2012 e Windows Server 2012 R2&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Windows Server 2012 R2&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Stack update (SSU) (KB5029368)&lt;/LI&gt;
&lt;LI&gt;Extended Security Updates (ESU) Licensing Preparation Package that is dated August 10, 2022 (KB5017220).&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Windows Server 2012&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;Stack update (SSU) (KB5029369)&lt;/LI&gt;
&lt;LI&gt;Extended Security Updates (ESU) Licensing Preparation Package that is dated August 10, 2022 (KB5017221)&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Verifique o modo de conexão do agente com o Azure Arc. As opções de conectividade incluem o endpoints públicos, servidor proxy e link privado. Examine os pré-requisitos de rede para preparar ambientes não Azure para implantação no Azure Arc.&lt;/LI&gt;
&lt;LI&gt;Se você estiver usando servidores habilitados para Azure Arc apenas para fins de Atualizações de Segurança Estendidas do Windows Server 2012 e Windows Server 2012 R2 (ESU), poderá habilitar o seguinte subconjunto de pontos de extremidade mencionados na documentação&amp;nbsp;&lt;A href="https://learn.microsoft.com/pt-br/azure/azure-arc/servers/prepare-extended-security-updates?tabs=azure-cloud#networking" target="_blank" rel="noopener"&gt;Como se preparar para fornecer Atualizações de Segurança Estendidas para o Windows Server 2012 por meio do Azure Arc - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Em nosso laboratório temos um computador local com Windows Server 2012 previamente conectado aos serviços do Azure Arc e com as atualizações requeridas para o ESU.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Verificar licenças de ESU Windows 2012 e vincular ao Windows 2012&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Não iremos passar pelas etapas de criação da licença do ESU, este será um tema dedicado para outro artigo, mas como referência visite a documentação&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/deliver-extended-security-updates#create-azure-arc-ws2012-licenses" target="_blank" rel="noopener"&gt;Deliver Extended Security Updates for Windows Server 2012 - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;No nosso laboratório temos uma licença provisionado do ESU e vinculada para a nossa máquina de teste.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;Por meio de um navegador, entre no&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://portal.azure.com/" target="_blank" rel="noopener" data-linktype="external"&gt;portal do Azure&lt;/A&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Na página do&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Azure Arc&lt;/STRONG&gt;, selecione&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Azure Arc | Extended Security Updates&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;no painel esquerdo. Podemos visualizar nossa licença de Windows 2012 Datacenter&amp;nbsp;&lt;STRONG&gt;esu-wk12.&lt;/STRONG&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Selecione a licença e em seguida clique em "&lt;STRONG&gt;Linked resources&lt;/STRONG&gt;", podemos visualizar que a licença do ESU está atribuída para a nossa máquina &lt;STRONG&gt;srv1-2012.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Verificar Cost Management&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Podemos verificar no Cost Analysis da nossa subscription o valor referente ao ESU Back Billing referente o total acumulado desde 10 de Outubro de 2023 até o momento que habilitado este recurso no meu ambiente e o valor.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;FAQ&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Consulte o documento de&amp;nbsp;&lt;A href="https://learn.microsoft.com/pt-br/lifecycle/faq/extended-security-updates#quais-s-o-as-expectativas-de-suporte-ao-solicitar-suporte-para-um-produto-que-utiliza-esus-" target="_blank" rel="noopener"&gt;Perguntas Frequentes sobre Ciclo de Vida do Produto ‒ Atualizações de Segurança Estendida&lt;/A&gt;, temos informações como expectativas de suporte, critérios de classificação e implantação e muito mais.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resumo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;O Azure Arc Back Billing impõe cobranças retroativas para licenças provisionadas após a data de Fim do Suporte (EOS) em outubro de 2023.&amp;nbsp;&amp;nbsp;Por exemplo, uma licença ESU provisionada em dezembro de 2023 será faturada retroativamente para outubro e novembro após o provisionamento como mencionado na documentação&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/billing-extended-security-updates#back-billing-for-esus-enabled-by-azure-arc" target="_self"&gt;Billing service for Extended Security Updates for Windows Server 2012 through Azure Arc&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Mais informações&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/pt-br/azure/azure-arc/servers/overview" target="_blank" rel="noopener"&gt;Visão geral de servidores habilitados para Azure Arc - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://support.microsoft.com/en-us/topic/kb5031043-procedure-to-continue-receiving-security-updates-after-extended-support-has-ended-on-october-10-2023-c1a20132-e34c-402d-96ca-1e785ed51d45" target="_blank" rel="noopener"&gt;KB5031043: Procedure to continue receiving security updates after extended support has ended on October 10, 2023 - Microsoft Support&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/pt-br/azure/azure-arc/servers/prepare-extended-security-updates?tabs=azure-cloud" target="_blank" rel="noopener"&gt;Como se preparar para fornecer Atualizações de Segurança Estendidas para o Windows Server 2012 por meio do Azure Arc - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/pt-br/azure/azure-arc/servers/deliver-extended-security-updates?toc=%2Fwindows-server%2Fget-started%2Ftoc.json&amp;amp;bc=%2Fwindows-server%2Fbreadcrumbs%2Ftoc.json#manage-esu-licenses" target="_blank" rel="noopener"&gt;Fornecer atualizações de segurança estendidas para o Windows Server 2012 - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-arc/servers/billing-extended-security-updates#back-billing-for-esus-enabled-by-azure-arc" target="_blank" rel="noopener"&gt;Billing service for Extended Security Updates for Windows Server 2012 through Azure Arc - Azure Arc | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 30 Jan 2024 13:08:23 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/azure-arc-enabled-servers-esu-backbilling/ba-p/4024425</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2024-01-30T13:08:23Z</dc:date>
    </item>
    <item>
      <title>Monitorando Recursos Criados na Azure com Kusto Query Language (KQL) e Log Analytics</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/monitorando-recursos-criados-na-azure-com-kusto-query-language/ba-p/3888757</link>
      <description>&lt;H2&gt;&lt;STRONG&gt;Monitorando Recursos Criados na Azure com Kusto Query Language (KQL) e Log Analytics&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Este artigo técnico destina-se a fornecer uma visão geral básica de como monitorar recursos recém-criados na plataforma Microsoft Azure usando a Linguagem de Consulta Kusto (KQL) e o recurso Log Analytics. O AzureActivity é uma tabela especial do Log Analytics que registra todas as atividades do Azure. Através da análise e filtragem dos registros nesta tabela usando KQL, é possível identificar e acompanhar recursos criados recentemente, auxiliando na detecção de possíveis eventos indesejados ou suspeitos.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Introdução&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;O monitoramento de atividades em nuvem é essencial para garantir a segurança, o desempenho e a conformidade das implantações na Microsoft Azure. A tabela &lt;STRONG&gt;AzureActivity,&lt;/STRONG&gt; disponível no serviço Log Analytics, fornece informações detalhadas sobre todas as atividades realizadas em uma assinatura do Azure, incluindo criação de recursos, atualizações e exclusões. Usando a Linguagem de Consulta Kusto (KQL), podemos filtrar e analisar esses registros para obter insights valiosos sobre os recursos recém-criados.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Pré-requisitos:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Uma conta do Microsoft Azure com permissões de acesso ao serviço Log Analytics.&lt;/LI&gt;
&lt;LI&gt;Familiaridade básica com Kusto Query Language (KQL) e conceitos de Log Analytics.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 1: Acessando o Log Analytics e a tabela AzureActivity &lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Antes de começar a consulta, certifique-se de que possui acesso ao serviço Log Analytics e à tabela AzureActivity em sua assinatura do Azure. Verifique se você possui permissões adequadas para executar consultas no Log Analytics.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 2: Escrevendo a Consulta Kusto (KQL) &lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;A consulta Kusto que utilizaremos para monitorar recursos criados na Azure é a seguinte:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;AzureActivity
| where TimeGenerated &amp;gt; ago(7d)
| extend isValidGuid = Caller matches regex "[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[1-5][A-Fa-f0-9]{3}-[89ABab][A-Fa-f0-9]{3}-[A-Fa-f0-9]{12}"
| where OperationNameValue endswith "Write" and ActivitySubstatusValue contains "Created" and not (isValidGuid)
| where not( OperationNameValue has_any ("Deployments","SSHPUBLICKEYS","NETWORKWATCHERS","VIRTUALMACHINES/EXTENSIONS","ACTIONGROUPS","SCHEDULEDQUERYRULES"))
| order by TimeGenerated asc
| project SubscriptionId, ResourceGroup, Caller, CallerIpAddress, OperationNameValue, ActivitySubstatusValue, _ResourceId&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 3: Explicação da Consulta Agora, vamos entender cada etapa da consulta Kusto:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;A cláusula &lt;STRONG&gt;AzureActivity&lt;/STRONG&gt; indica que estamos consultando a tabela AzureActivity.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;| where TimeGenerated &amp;gt; ago(7d)&lt;/STRONG&gt;: Filtra os registros para incluir apenas aqueles gerados nos últimos 7 dias.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;| extend isValidGuid = Caller matches regex "[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[1-5][A-Fa-f0-9]{3}-[89ABab][A-Fa-f0-9]{3}-[A-Fa-f0-9]{12}"&lt;/STRONG&gt;: Cria uma nova coluna chamada &lt;STRONG&gt;isValidGuid&lt;/STRONG&gt; que verifica se o valor da coluna &lt;STRONG&gt;Caller&lt;/STRONG&gt; corresponde a um padrão de GUID válido.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;| where OperationNameValue endswith "Write" and ActivitySubstatusValue contains "Created" and not (isValidGuid)&lt;/STRONG&gt;: Filtra os registros para incluir apenas aqueles em que:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;OperationNameValue&lt;/STRONG&gt; termina com a string "Write".&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ActivitySubstatusValue&lt;/STRONG&gt; contém a string "Created".&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;isValidGuid&lt;/STRONG&gt; é falso, ou seja, o valor da coluna &lt;STRONG&gt;Caller&lt;/STRONG&gt; não corresponde a um GUID válido.&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;| where not( OperationNameValue has_any ("Deployments","SSHPUBLICKEYS","NETWORKWATCHERS","VIRTUALMACHINES/EXTENSIONS","ACTIONGROUPS","SCHEDULEDQUERYRULES"))&lt;/STRONG&gt;: Filtra os registros para excluir aqueles em que o valor da coluna &lt;STRONG&gt;OperationNameValue&lt;/STRONG&gt; tem algumas strings específicas, como "Deployments" e "VIRTUALMACHINES/EXTENSIONS".&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;| order by TimeGenerated asc&lt;/STRONG&gt;: Classifica os resultados em ordem crescente com base no valor da coluna &lt;STRONG&gt;TimeGenerated&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;| project SubscriptionId, ResourceGroup, Caller, CallerIpAddress, OperationNameValue, ActivitySubstatusValue, _ResourceId&lt;/STRONG&gt;: Exibe apenas as colunas &lt;STRONG&gt;SubscriptionId&lt;/STRONG&gt;, &lt;STRONG&gt;ResourceGroup&lt;/STRONG&gt;, &lt;STRONG&gt;Caller&lt;/STRONG&gt;, &lt;STRONG&gt;CallerIpAddress&lt;/STRONG&gt;, &lt;STRONG&gt;OperationNameValue&lt;/STRONG&gt;, &lt;STRONG&gt;ActivitySubstatusValue&lt;/STRONG&gt; e &lt;STRONG&gt;_ResourceId&lt;/STRONG&gt; nos resultados.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 4: Verificando os registros&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Ao executar esta query no workspace do log Analytics onde os logs de atividades estão sendo armazenado, consigo verificar a lista de recursos criados nos últimos 7 dias.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 5: Visualizando os dados através de um workbook&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Uma possibilidade será criar um alerta ou visualizar as informações através de painel de monitoramento ou de um workbook.&lt;/P&gt;
&lt;P&gt;Iremos comentar &amp;nbsp;a linha 2 da query correspondente ao time range desejado, pois iremos usar um parâmetro de &lt;STRONG&gt;“TimeRange”&lt;/STRONG&gt; do Workbook.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Para construir o workbook clique em &lt;STRONG&gt;“Pin to”&lt;/STRONG&gt; conforme ilustrado na imagem e selecione a opção &lt;STRONG&gt;“Send to workbook”.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Podemos criar um workbook ou usar um existente, mas no nosso caso iremos criar um novo workbook para visualização dos recursos criados. Marque a opção &lt;STRONG&gt;“Add a time range parameter ans have generated steps reference it”&lt;/STRONG&gt; e selecione o query correspondente conforme ilustrado na imagem.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Com isso temos nosso workbook que nos ajudará a visualizar os recursos criados na Azure.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusão&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Através da Linguagem de Consulta Kusto (KQL) e da tabela AzureActivity no Log Analytics, podemos monitorar e rastrear recursos recém-criados na plataforma Azure. A consulta apresentada neste artigo permite identificar atividades suspeitas e potencialmente indesejadas, ajudando os administradores a garantirem a segurança e o compliance de suas implantações na nuvem. Monitore constantemente a tabela &lt;STRONG&gt;AzureActivity &lt;/STRONG&gt;e adapte suas consultas conforme necessário para manter seu ambiente seguro e eficiente na Microsoft Azure.&lt;/P&gt;
&lt;P&gt;Mais informações&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/activity-log?tabs=powershell" target="_blank" rel="noopener"&gt;Azure activity log - Azure Monitor | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/" target="_blank" rel="noopener"&gt;Kusto Query Language (KQL) overview | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/visualize/workbooks-create-workbook" target="_blank" rel="noopener"&gt;Creating an Azure Workbook - Azure Monitor | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-overview" target="_blank" rel="noopener"&gt;Overview of Azure Monitor alerts - Azure Monitor | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Oct 2023 14:35:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/monitorando-recursos-criados-na-azure-com-kusto-query-language/ba-p/3888757</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2023-10-30T14:35:03Z</dc:date>
    </item>
    <item>
      <title>Provisionando um Azure Kubernetes Services (AKS) com AGIC + SSL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/provisionando-um-azure-kubernetes-services-aks-com-agic-ssl/ba-p/3886696</link>
      <description>&lt;H2&gt;&lt;STRONG&gt;Introdução&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;A implantação de aplicativos em contêineres tem se tornado uma prática cada vez mais comum no mundo da tecnologia, oferecendo flexibilidade, escalabilidade e agilidade no desenvolvimento e na operação de aplicações. O Azure Kubernetes Service (AKS) é uma das soluções mais populares para orquestração de contêineres, permitindo que as equipes de desenvolvimento gerenciem de maneira eficiente clusters de contêineres em larga escala.&lt;/P&gt;
&lt;P&gt;Um dos principais desafios ao implantar aplicativos em contêineres é fornecer uma maneira confiável e segura para que os usuários externos acessem esses aplicativos. É aqui que o Azure Application Gateway Ingress Controller (AGIC) desempenha um papel fundamental. O AGIC atua como um controlador de ingresso, direcionando o tráfego externo para os serviços corretos dentro do cluster AKS, tornando mais fácil e seguro o acesso a aplicativos em contêineres.&lt;/P&gt;
&lt;P&gt;Além disso, para garantir a segurança dos dados transmitidos pela aplicação, a utilização de SSL (Secure Socket Layer) ou TLS (Transport Layer Security) é essencial. Isso ajuda a proteger as informações confidenciais durante a comunicação entre o cliente e o servidor.&lt;/P&gt;
&lt;P&gt;A combinação do AKS com o AGIC e a implementação de SSL oferecem uma solução poderosa para implantar aplicativos de forma segura e confiável. Os benefícios incluem:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Balanceamento de Carga Avançado&lt;/STRONG&gt;: O Azure Application Gateway oferece recursos de balanceamento de carga avançados, permitindo distribuir o tráfego de entrada de maneira eficiente entre os pods do AKS.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Roteamento Baseado em Regras&lt;/STRONG&gt;: Com o AGIC, é possível configurar regras de roteamento personalizadas para direcionar solicitações para serviços específicos com base em caminhos de URL ou cabeçalhos HTTP.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Gerenciamento Centralizado&lt;/STRONG&gt;: O AGIC é totalmente integrado ao AKS, facilitando o gerenciamento centralizado do tráfego de entrada para todos os serviços no cluster.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Segurança e Criptografia&lt;/STRONG&gt;: A configuração de SSL/TLS com certificados gerenciados do Azure assegura que as comunicações entre os usuários e a aplicação sejam protegidas e criptografadas.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Redução de Complexidade&lt;/STRONG&gt;: A combinação do AKS com o AGIC simplifica a configuração de infraestrutura, permitindo que as equipes de desenvolvimento se concentrem no código da aplicação.&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Em resumo, a implantação do Azure Kubernetes Service com o Azure Application Gateway Ingress Controller e a implementação de SSL oferecem uma solução robusta para a execução confiável e segura de aplicativos em contêineres. Essa abordagem garante alta disponibilidade, escalabilidade e proteção dos dados, permitindo que as empresas entreguem seus aplicativos com confiança e eficiência.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Arquitetura AKS com Ingress Controller (AGIC)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H3 class="lia-align-center"&gt;&lt;img /&gt;&lt;/H3&gt;
&lt;P&gt;O cenário desta arquitetura envolve o uso do Azure Application Gateway Ingress Controller (AGIC) com o Azure Kubernetes Service (AKS) para gerenciar o tráfego externo e encaminhá-lo para os pods desejados no AKS. Vamos dividir o processo em etapas:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Criação do AKS com AGIC:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O AKS é um serviço gerenciado de Kubernetes fornecido pelo Azure. Você criou um cluster AKS que é a base da sua aplicação.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O AGIC é instalado como um addon do AKS. Ele fornece a integração do AKS com o Azure Application Gateway (App Gateway), que é um balanceador de carga avançado do Azure.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Configuração do Azure Application Gateway (App Gateway):&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O App Gateway é criado e configurado para trabalhar como um ponto de entrada para o tráfego externo. Ele age como um balanceador de carga e um controlador de ingresso.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O App Gateway é configurado para aceitar tráfego HTTPS (porta 443) dos usuários externos.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Configuração do DNS:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Um registro DNS é configurado para apontar o domínio personalizado (exemplo: &lt;A href="http://www.seusite.com/" target="_new"&gt;www.seusite.com&lt;/A&gt;) para o endereço IP público do App Gateway.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Requisições dos Usuários Externos:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Quando um usuário externo faz uma requisição HTTPS para o domínio personalizado (&lt;A href="http://www.seusite.com/" target="_new"&gt;www.seusite.com&lt;/A&gt;), a solicitação é enviada para o endereço IP público do App Gateway.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Encaminhamento do Tráfego pelo AGIC:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O AGIC intercepta a requisição no App Gateway e encaminha a solicitação para o AKS.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O AGIC atua como um controlador de ingresso (Ingress Controller), observando os recursos Ingress definidos no AKS para determinar como encaminhar o tráfego para os serviços corretos no cluster.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Encaminhamento pelo AKS:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O AKS recebe a requisição e verifica o recurso Ingress definido para o domínio (&lt;A href="http://www.seusite.com/" target="_new"&gt;www.seusite.com&lt;/A&gt;).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O Ingress mapeia o domínio para o serviço apropriado dentro do cluster AKS.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Encaminhamento para o Pod:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O serviço dentro do AKS encaminha a requisição para um dos pods que implementa o serviço.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O pod contém a aplicação web ou aplicação de back-end que responde à requisição do usuário.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;STRONG&gt;Resposta para o Usuário:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;O pod processa a requisição e retorna uma resposta ao App Gateway.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;O App Gateway, por sua vez, retorna a resposta ao usuário externo que fez a solicitação inicial.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Todo esse processo acontece de forma transparente para o usuário externo. O AGIC e o AKS trabalham em conjunto para gerenciar o tráfego de entrada e encaminhá-lo para a aplicação correta. O uso do App Gateway e do AGIC oferece recursos avançados de balanceamento de carga, gerenciamento de tráfego e segurança para o seu AKS, permitindo que você gerencie eficientemente o tráfego de entrada e saída da sua aplicação.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Implantação do Laboratório &lt;/STRONG&gt;&lt;/H2&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 1: Declarar variaveis&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Antes de começar, certifique-se de ter o Azure CLI instalado no Terminal Bash (ex: Azure Cloud Shell bash), o que permitirá que você gerencie recursos na nuvem por meio de comandos de linha de comando. Em seguida atualize e declare as variáveis que usaremos para a implementação do nosso ambiente:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;# Informações da Assinatura
tenantId="&amp;lt;coloque o iD do seu Tenant aqui&amp;gt;"
subscriptionId="&amp;lt;coloque o id da sua subscription aqui&amp;gt;"
regionName="westus"

# Informações do usuário (pode ser obtido em Azure AD &amp;gt; Users &amp;gt; Seu usuario &amp;gt; User principal name)
userPrincipalName="&amp;lt;Coloque o seu UserPrincipalName aqui&amp;gt;"

# Nomes dos Grupos de Recursos
rgDnsName="rg-h-wus-dns01"
rgNetName="rg-h-wus-net01"
rgJmpName="rg-h-wus-jmp01"
rgAksName="rg-h-wus-aks01"

# Pares de Tags
tagPairs="foo=bar baz=qux"

# Informações do Domínio Público do Azure App Service
publicDomainName="aksagiclab.com"

# Informações da Rede Virtual do AKS
vNetName="vnet-h-wus-01"

# Informações do Cluster AKS
aksClusterName="aks-h-wus-01"
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 2: Autenticação usando Azure CLI&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Em seguida, autentique-se com sua conta do Azure usando o seguinte comando:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;az login --tenant $tenantId

az account set --subscription $subscriptionId&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 3: Criação dos Grupos de Recursos&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Os grupos de recursos são contêineres lógicos que agrupam recursos relacionados. Execute os comandos abaixo para criar os grupos de recursos:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;az group create --name $rgDnsName --location $regionName --tags $tagPairs

az group create --name $rgNetName --location $regionName --tags $tagPairs

az group create --name $rgAksName --location $regionName --tags $tagPairs&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 4: Implantação da Rede Virtual&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Agora, criaremos a rede virtual (VNet) para o nosso ambiente AKS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powerquery"&gt;az network vnet create --name $vNetName --resource-group $rgNetName --address-prefixes "10.251.0.0/16" --location $regionName --subnet-name "snet-vnet-h-wus-aks-01" --subnet-prefixes "10.251.10.0/23" --tags $tagPairs

az network vnet subnet create --name "snet-vnet-h-wus-agic-01" --resource-group $rgNetName --vnet-name $vNetName --address-prefix "10.251.20.0/24"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 5: Implantação do Azure App Service Domain&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;O Azure App Service Domain permite que você gerencie domínios personalizados para os serviços do Azure. Vamos criar um domínio para o Application Gateway:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;# Generate tree random characters
randomCharcters=$(generate_random_char() { chars="abcdefghijklmnopqrstuvwxyz0123456789"; echo -n "${chars:$((RANDOM % ${#chars})):1}"; }; generate_random_string() { random_string=""; for ((i = 0; i &amp;lt; 3; i++)); do random_string+=`generate_random_char`; done; echo "$random_string"; }; random_string=$(generate_random_string); echo $random_string)

# Download the contact_info form
wget https://raw.githubusercontent.com/AzureAppServiceCLI/appservice_domains_templates/master/contact_info.json

# Edit and update the contact_info form
vi ./contact_info.json

# Deploy Azure App Service Domain
az appservice domain create --resource-group $rgDnsName --hostname "$randomCharcters$publicDomainName" --contact-info=@'./contact_info.json' --accept-terms --privacy --tags $tagPairs&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 6: Implantação do Azure Application Gateway&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Agora, implantaremos o Application Gateway para fornecer um balanceador de carga para o AKS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;agicSubnetId=$(az network vnet subnet list --resource-group $rgNetName --vnet-name $vNetName --query "[?name=='snet-vnet-h-wus-agic-01'].id" --output tsv)

az network application-gateway create --name "appgw-$aksClusterName" --resource-group $rgAksName --capacity 1 --frontend-port 80 --http-settings-cookie-based-affinity "Disabled" --http-settings-port 80 --http-settings-protocol "Http" --location $regionName --max-capacity 2 --min-capacity 1 --priority 100 --private-ip-address "10.251.20.10" --public-ip-address "appgw-$aksClusterName-pip" --sku "Standard_v2" --subnet $agicSubnetId --tags $tagPairs&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 7: Registro dos Nomes DNS&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Agora, registraremos os nomes DNS para que nosso ambiente AKS seja acessível:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;agicPubIp=$(az network public-ip show --resource-group $rgAksName --name "appgw-$aksClusterName-pip" --query "ipAddress" --output tsv)

az network dns record-set a add-record --resource-group $rgDnsName --zone-name "$randomCharcters$publicDomainName" --record-set-name "app01" --ipv4-address $agicPubIp --ttl 300

az network dns record-set a add-record --resource-group $rgDnsName --zone-name "$randomCharcters$publicDomainName" --record-set-name "app02" --ipv4-address $agicPubIp --ttl 300

az network dns record-set a add-record --resource-group $rgDnsName --zone-name "$randomCharcters$publicDomainName" --record-set-name "app03" --ipv4-address $agicPubIp --ttl 300
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 8: Implantação do AKS Cluster&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Agora é o momento de implantar o nosso Cluster AKS e atribuir as permissões de acesso:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;aksSubnetId=$(az network vnet subnet list --resource-group $rgNetName --vnet-name $vNetName --query "[?name=='snet-vnet-h-wus-aks-01'].id" --output tsv)

az aks create --name $aksClusterName --resource-group $rgAksName --auto-upgrade-channel "node-image" --disable-local-accounts --dns-name-prefix $aksClusterName --dns-service-ip "10.252.0.10" --enable-aad --enable-addons "azure-keyvault-secrets-provider" --enable-azure-rbac --enable-blob-driver --enable-cluster-autoscaler --enable-managed-identity --generate-ssh-keys --kubernetes-version "1.25.6" --load-balancer-sku "standard" --location $regionName --max-count 2 --max-pods 50 --min-count 1 --network-dataplane "azure" --network-plugin "azure" --network-policy "azure" --node-count 1 --node-osdisk-size 63 --node-vm-size "Standard_D2as_v4" --nodepool-labels "pooltype=system" --nodepool-name "syspool1" --service-cidr "10.252.0.0/16" --tags $tagPairs --tier "free" --vnet-subnet-id $aksSubnetId --yes

az aks nodepool add --cluster-name $aksClusterName --name "usrpool1" --resource-group $rgAksName --enable-cluster-autoscaler --kubernetes-version "1.25.6" --labels "pooltype=user" --max-count 2 --max-pods 50 --min-count 1 --mode "User" --node-count 1 --node-osdisk-size 63 --node-vm-size "Standard_D2as_v4" --tags $tagPairs --vnet-subnet-id $aksSubnetId&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Passo 9: Validar os recursos criados&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;STRONG&gt;Grupo de Recursos:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;img /&gt;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Cluster Azure Kubernetes Services (AKS):&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;img /&gt;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;App Domain e registros DNS:&lt;/STRONG&gt;&lt;/H3&gt;
&lt;H3&gt;&lt;img /&gt;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;img /&gt;&lt;/H3&gt;
&lt;H3&gt;&amp;nbsp;&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;FONT color="#DF0000"&gt;&lt;STRONG&gt;Importante:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;Perceba que temos alguns registros DNS para os seguintes FQDNs apontando para o IP Público do Application Gateway, o qual iremos integrar com nosso Cluster AKS como Ingress Controller (AGIC):&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Atribuindo Permissões AKS RBAC&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Para gerenciar o cluster AKS, é necessário atribuir permissões adequadas ao usuário principal. Execute os comandos abaixo para atribuir a função "Azure Kubernetes Service RBAC Cluster Admin" ao usuário:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;userId=$(az ad user show --id $userPrincipalName --query "id" --output tsv)

rgId=$(az group show --name $rgAksName --query "id" --output tsv)

az role assignment create --assignee $userId --role "Azure Kubernetes Service RBAC Cluster Admin" --scope $rgId&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Visualizando o resultado da atribuição ao usuário ao AKS pelo portal:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Integração AKS com Application Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Agora, vamos integrar o AKS com o Application Gateway para redirecionar o tráfego externo para o cluster AKS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;agicResId=$(az network application-gateway show --name "appgw-$aksClusterName" --resource-group $rgAksName --query "id" --output tsv)

az aks enable-addons --name $aksClusterName --resource-group $rgAksName --addon "ingress-appgw" --appgw-id $agicResId

# Get application gateway id from AKS addon profile
appGatewayId=$(az aks show --name $aksClusterName --resource-group $rgAksName -o tsv --query "addonProfiles.ingressApplicationGateway.config.effectiveApplicationGatewayId")

# Get Application Gateway subnet id
appGatewaySubnetId=$(az network application-gateway show --ids $appGatewayId -o tsv --query "gatewayIPConfigurations[0].subnet.id")

# Get AGIC addon identity
agicAddonIdentity=$(az aks show --name $aksClusterName --resource-group $rgAksName -o tsv --query "addonProfiles.ingressApplicationGateway.identity.clientId")

# Assign network contributor role to AGIC addon identity to subnet that contains the Application Gateway
az role assignment create --assignee $agicAddonIdentity --scope $appGatewaySubnetId --role "Network Contributor"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Revisão das Permissões do AKS Managed Identity (ingressapplicationgateway-cluster-name) para o Application Gateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Certifique-se de que a Identidade Gerenciada do AKS tenha as permissões adequadas para o Application Gateway:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Grupo de Recursos do AKS - Função de Leitura (Reader)&lt;/LI&gt;
&lt;LI&gt;Grupo de Recursos do AKS/Nodes MC (AKS Managed Clusters) - Função de Contribuinte (Contributor)&lt;/LI&gt;
&lt;LI&gt;Recurso/Grupo de Recursos do Application Gateway - Função de Contribuinte (Contributor)&lt;/LI&gt;
&lt;LI&gt;Sub-rede do Application Gateway - Função de Contribuinte de Rede (Network Contributor)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A identidade gerenciada “&lt;STRONG&gt;ingressapplicationgateway-cluster-name&lt;/STRONG&gt;” foi criada automaticamente durante a integração entre o Application Gateway e o cluster AKS:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Implantação e Exposição de Aplicativos&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Antes de prosseguir com a implantação dos aplicativos, certifique-se de ter o utilitário "kubectl" instalado. Se ainda não o tiver, você pode instalá-lo executando o seguinte comando:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;az aks install-cli&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Em seguida, faça o download das credenciais do cluster AKS para autenticação e a conversão para kubelogin:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;az aks get-credentials --resource-group $rgAksName --name $aksClusterName

kubelogin convert-kubeconfig -l azurecli&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;AGIC Sample App with Public IP&lt;/STRONG&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P&gt;O AKS está configurado com uma integração completa com o Application Gateway, permitindo o roteamento de tráfego externo para aplicativos implantados no cluster. Você pode usar o utilitário "kubectl" para implantar os aplicativos no cluster e expô-los para acesso externo.&lt;/P&gt;
&lt;P&gt;Vamos supor que você tenha um aplicativo ASP.NET Core para implantar. Crie um arquivo de manifesto para o aplicativo e, em seguida, faça a implantação:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;vi AgicSampleApp-PUB.yml&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;apiVersion: v1
kind: Namespace
metadata:
  name: aspnetapp01
  labels:
    name: aspnetapp01
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aspnetapp01
  namespace: aspnetapp01
  labels:
    app: aspnetapp01
spec:
  replicas: 3
  selector:
    matchLabels:
      app: aspnetapp01
  template:
    metadata:
      labels:
        app: aspnetapp01
    spec:
      nodeSelector:
        kubernetes.azure.com/mode: user
      containers:
      - name: aspnetapp-image
        image: "mcr.microsoft.com/dotnet/samples:aspnetapp"
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: aspnetapp01
  namespace: aspnetapp01
spec:
  selector:
    app: aspnetapp01
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: aspnetapp01
  namespace: aspnetapp01
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/"
    appgw.ingress.kubernetes.io/ssl-redirect: "false"
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
    appgw.ingress.kubernetes.io/cookie-based-affinity: "false"
    appgw.ingress.kubernetes.io/request-timeout: "30"
    appgw.ingress.kubernetes.io/use-private-ip: "false"
    appgw.ingress.kubernetes.io/backend-protocol: "http"
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          service:
            name: aspnetapp01
            port:
              number: 80
        pathType: Prefix&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Salve o conteúdo acima em um arquivo chamado &lt;STRONG&gt;AgicSampleApp-PUB.yml&lt;/STRONG&gt;. Em seguida, implante o aplicativo com o seguinte comando:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;kubectl apply -f AgicSampleApp-PUB.yml&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Verifique o ingress criado através do comando abaixo:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;kubectl get ingress aspnetapp01 -n aspnetapp01
NAME          CLASS    HOSTS   ADDRESS         PORTS   AGE
aspnetapp01   &amp;lt;none&amp;gt;   *       13.83.132.111   80      101s&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Perceba que o ingress recebeu o IP &lt;STRONG&gt;&amp;nbsp;“13.83.132.111”&lt;/STRONG&gt; que é o IP Público do nosso Application Gateway como Ingress Controller do nosso cluster. Ao acessar no browser esse endereço IP batemos no Application Gateway/AGIC e ele o redirecionará para a aplicação no AKS.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Agora para a próxima implementação iremos realizar a implantação de uma aplicação com nome de host e certificado SSL com Ingress.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;AGIC Sample App with Public IP + Host + Cert (issued by Cert-Manager with Let's Encrypt)&lt;/H3&gt;
&lt;P&gt;Agora vamos prosseguir com a implantação de um aplicativo no AKS usando o IP público no Application Gateway e um certificado gerenciado pelo Cert Manager.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cert Manager&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Primeiro, vamos implantar o Cert Manager para gerenciar os certificados TLS automaticamente. Cert Manager é uma ferramenta para automatizar a emissão e renovação de certificados TLS. Ele usa a Autoridade de Certificação ACME (Automatic Certificate Management Environment) para emissão e renovação de certificados Let's Encrypt:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;# Install the CustomResourceDefinition resources separately
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.3/cert-manager.crds.yaml

# Create the namespace for cert-manager
kubectl create namespace cert-manager

# Label the cert-manager namespace to disable resource validation
kubectl label namespace cert-manager cert-manager.io/disable-validation=true

# Add the Jetstack Helm repository
helm repo add --force-update jetstack https://charts.jetstack.io

# Update your local Helm chart repository cache
helm repo update

# Install the cert-manager Helm chart
# Helm v3+
helm --install cert-manager jetstack/cert-manager --namespace cert-manager --version v1.12.3 --set extraArgs='{--logging-format=json}' --set webhook.extraArgs='{--logging-format=json}' --set cainjector.extraArgs='{--logging-format=json}'&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Deploy Cluster Issuer Resource&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Agora, vamos criar um objeto Cluster Issuer que nos permitirá emitir certificados automaticamente para o Application Gateway:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;vi ClusterIssuer.yml&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # You must replace this email address with your own.
    # Let's Encrypt uses this to contact you about expiring
    # certificates, and issues related to your account.
    email: your.email@address.com
    # ACME server URL for Let’s Encrypt’s Prod environment.
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # Secret resource used to store the account's private key.
      name: letsencrypt-secret
    # Enable the HTTP-01 challenge provider
    # you prove ownership of a domain by ensuring that a particular
    # file is present at the domain
    solvers:
      - http01:
           ingress:
              class: azure/application-gateway&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;kubectl apply -f ClusterIssuer.yml&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Crie o arquivo de manifesto para implantação da aplicação com SSL&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Agora, vamos criar um arquivo de manifesto para implantar nosso aplicativo no AKS usando um IP privado no Application Gateway e um certificado gerenciado pelo Cert Manager.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Crie o arquivo &lt;STRONG&gt;AgicSampleApp-PUB-Host-Cert-LE.yml&lt;/STRONG&gt;&amp;nbsp;e adicione o seguinte conteúdo:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="yaml"&gt;apiVersion: v1
kind: Namespace
metadata:
  name: aspnetapp03
  labels:
    name: aspnetapp03
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aspnetapp03
  namespace: aspnetapp03
  labels:
    app: aspnetapp03
spec:
  replicas: 3
  selector:
    matchLabels:
      app: aspnetapp03
  template:
    metadata:
      labels:
        app: aspnetapp03
    spec:
      nodeSelector:
        kubernetes.azure.com/mode: user
      containers:
      - name: aspnetapp-image
        image: "mcr.microsoft.com/dotnet/samples:aspnetapp"
        ports:
        - containerPort: 8080
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: aspnetapp03
  namespace: aspnetapp03
spec:
  selector:
    app: aspnetapp03
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: aspnetapp03
  namespace: aspnetapp03
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    cert-manager.io/cluster-issuer: letsencrypt-prod
    cert-manager.io/acme-challenge-type: http01
    appgw.ingress.kubernetes.io/use-private-ip: "false"
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
    appgw.ingress.kubernetes.io/cookie-based-affinity: "false"
    appgw.ingress.kubernetes.io/request-timeout: "30"
spec:
  tls:
    - hosts:
      - app03.aksagiclab.com  # update domain same as "$randomCharcters$publicDomainName"
      secretName: app03.aksagiclab.com-secret  # update domain same as "$randomCharcters$publicDomainName"
  rules:
  - host: app03.aksagiclab.com  # update domain same as "$randomCharcters$publicDomainName"
    http:
      paths:
      - path: /
        backend:
          service:
            name: aspnetapp03
            port:
              number: 80
        pathType: Prefix&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Realize a implantação do manifesto através do comando abaixo:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;kubectl apply -f AgicSampleApp-PUB-Host-Cert-LE.yml

namespace/aspnetapp03 created
deployment.apps/aspnetapp03 created
service/aspnetapp03 created
ingress.networking.k8s.io/aspnetapp03 created&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Visualize o ingress no namespace aspnetapp03 através do comando abaixo:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;kubectl get ingress -n aspnetapp03
NAME          CLASS    HOSTS                   ADDRESS         PORTS     AGE
aspnetapp03   &amp;lt;none&amp;gt;   app03.aksagiclab.com   13.83.132.111   80, 443   76&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Acessando a aplicação pelo host &lt;STRONG&gt;"app03.aksagiclab.com"&lt;/STRONG&gt;&amp;nbsp;usando SSL:&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Conclusão&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Neste guia, você aprendeu como implantar um cluster Azure Kubernetes Service (AKS) com integração Azure Active Directory (AAD) e Application Gateway. Com esses recursos habilitados, você pode fornecer uma experiência segura e confiável para seus aplicativos em contêineres, permitindo um gerenciamento mais eficiente, escalabilidade elástica e uma resposta rápida a eventos críticos.&lt;/P&gt;
&lt;P&gt;Agora que seu ambiente AKS está configurado e funcionando corretamente, você pode continuar explorando e implantando seus próprios aplicativos em contêineres para aproveitar ao máximo a infraestrutura de nuvem altamente disponível e resiliente que o Microsoft Azure oferece.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Mais informações&lt;/STRONG&gt;&lt;/H3&gt;
&lt;DIV&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-new" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-new&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-existing?source=recommendations" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-existing?source=recommendations&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-annotations" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-annotations&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-migration" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-migration&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-expose-service-over-http-https" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-expose-service-over-http-https&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-letsencrypt-certificate-application-gateway" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-letsencrypt-certificate-application-gateway&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/tutorials/tutorial.general.md#expose-services-over-https" target="_blank" rel="noopener"&gt;https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/tutorials/tutorial.general.md#expose-services-over-https&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/tutorials/tutorial.e2e-ssl.md" target="_blank" rel="noopener"&gt;https://github.com/Azure/application-gateway-kubernetes-ingress/blob/master/docs/tutorials/tutorial.e2e-ssl.md&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-disable-addo" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/application-gateway/ingress-controller-disable-addo&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/internal-lb" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/en-us/azure/aks/internal-lb&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 18 Oct 2023 22:06:37 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/provisionando-um-azure-kubernetes-services-aks-com-agic-ssl/ba-p/3886696</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2023-10-18T22:06:37Z</dc:date>
    </item>
    <item>
      <title>Engenharia de Confiabilidade no Microsoft Azure (Realiability)</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/engenharia-de-confiabilidade-no-microsoft-azure-realiability/ba-p/3886122</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Confiabilidade na Arquitetura em Nuvem&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;O pilar de confiabilidade do Well-Architected Framework concentra-se na capacidade do sistema de se recuperar automaticamente de falhas e gerenciar mudanças de forma segura e eficiente. Isso envolve a implementação de práticas e padrões para garantir que os sistemas sejam altamente disponíveis, resilientes e confiáveis.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introdução&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A confiabilidade é um aspecto crítico da arquitetura em nuvem que garante que aplicativos e sistemas operem perfeitamente, mesmo diante de falhas ou desafios imprevistos. No ambiente em nuvem, onde os recursos são dinâmicos e distribuídos, projetar para confiabilidade se torna fundamental para atender às demandas das aplicações modernas.&lt;/P&gt;
&lt;P&gt;O Framework de Boas Práticas da Microsoft para Arquitetura (Well-Architected Framework) fornece um guia abrangente para construir soluções em nuvem robustas, confiáveis e resilientes. Dentro desse framework, o pilar de Confiabilidade concentra-se em permitir que aplicativos se recuperem automaticamente de falhas e se adaptem a mudanças, mantendo alta disponibilidade e desempenho.&lt;/P&gt;
&lt;P&gt;Segue um breve resumo das áreas de domínio de confiabilidade (reliability) do Well-Architected Framework da Microsoft com os links da documentação relevante.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Fundamentos de Confiabilidade&lt;/STRONG&gt;:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Descrição: Compreenda os princípios e as práticas fundamentais para construir sistemas confiáveis e resilientes.&lt;/LI&gt;
&lt;LI&gt;Documentação: &lt;A href="https://learn.microsoft.com/pt-br/azure/well-architected/resiliency/principles" target="_blank" rel="noopener"&gt;Fundamentos de Confiabilidade no Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Recuperação de Falhas&lt;/STRONG&gt;:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Descrição: Aprenda como projetar sistemas que possam se recuperar automaticamente de falhas para minimizar o impacto dos incidentes.&lt;/LI&gt;
&lt;LI&gt;Documentação: &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/backup-and-recovery" target="_blank" rel="noopener"&gt;Recuperação de Falhas no Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Arquitetura Multi-Região e Recuperação de Desastres&lt;/STRONG&gt;:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Descrição: Explore como criar arquiteturas distribuídas em várias regiões para garantir a disponibilidade contínua e a recuperação de desastres.&lt;/LI&gt;
&lt;LI&gt;Documentação: &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/cross-region-replication-azure" target="_blank" rel="noopener"&gt;Arquitetura Multi-Região e Recuperação de Desastres no Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitoramento e Diagnóstico&lt;/STRONG&gt;:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Descrição: Saiba como configurar monitoramento e diagnóstico eficientes para identificar problemas e tomar ações corretivas.&lt;/LI&gt;
&lt;LI&gt;Documentação: &lt;A href="https://learn.microsoft.com/pt-br/azure/well-architected/resiliency/monitor-checklist" target="_blank" rel="noopener"&gt;Monitoramento e Diagnóstico no Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Gestão de Capacidade&lt;/STRONG&gt;:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Descrição: Entenda como dimensionar e gerenciar a capacidade de recursos para atender às demandas do sistema sem comprometer a performance.&lt;/LI&gt;
&lt;LI&gt;Documentação: &lt;A href="https://learn.microsoft.com/pt-br/azure/well-architected/resiliency/design-best-practices#design-for-scalability" target="_blank" rel="noopener"&gt;Gestão de Capacidade no Azure Well-Architected Framework&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/OL&gt;
&lt;P&gt;Essas áreas de domínio são essenciais para garantir que seus sistemas sejam altamente disponíveis, confiáveis e resilientes na nuvem do Microsoft Azure. Ao seguir as práticas recomendadas e utilizar as ferramentas fornecidas, você pode projetar e implementar soluções robustas e de alto desempenho.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Boas Práticas para a Confiabilidade&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Design do Aplicativo&lt;/STRONG&gt;: Comece criando uma arquitetura de aplicativo bem projetada, considerando princípios como modularidade, isolamento de falhas e degradação graciosa. Realize análise de modos de falha para antecipar pontos potenciais de falha e desenvolver estratégias para lidar com eles de forma eficaz.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Design&lt;/STRONG&gt;: Crie arquiteturas de aplicativos bem planejadas, considerando os princípios de design, para garantir que sejam altamente disponíveis e confiáveis. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/design-checklist" target="_blank" rel="noopener"&gt;Design for reliability&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Failure Mode Analysis&lt;/STRONG&gt;: Identifique possíveis pontos de falha e desenvolva estratégias para mitigar e lidar com falhas no sistema. &lt;A href="https://learn.microsoft.com/en-us/azure/architecture/resiliency/failure-mode-analysis" target="_blank" rel="noopener"&gt;Failure mode analysis&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Targets &amp;amp; Non-Functional Requirements&lt;/STRONG&gt;: Estabeleça metas claras de desempenho e requisitos não funcionais para medir a confiabilidade do aplicativo e garantir que ele atenda aos padrões esperados. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/design-requirements" target="_blank" rel="noopener"&gt;Targets and non-functional requirements&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;&lt;STRONG&gt;Modelagem e Monitoramento da Saúde&lt;/STRONG&gt;: Devemos implementar o monitoramento abrangente nos níveis de aplicativo, recursos e infraestrutura. Colete métricas relevantes e configure mecanismos de alerta para detectar e responder a problemas de forma proativa.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Application-Level Monitoring&lt;/STRONG&gt;: Implemente monitoramento em nível de aplicativo para coletar métricas importantes e detectar problemas de desempenho ou confiabilidade. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/monitoring" target="_blank" rel="noopener"&gt;Application-level monitoring&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Resource and Infrastructure Level Monitoring&lt;/STRONG&gt;: Monitore recursos e infraestrutura subjacentes para entender o impacto no desempenho e na disponibilidade do aplicativo. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/monitor-checklist" target="_blank" rel="noopener"&gt;Resource and infrastructure monitoring&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitoring and Measurement&lt;/STRONG&gt;: Defina métricas significativas e estabeleça acordos de nível de serviço (SLAs) para medir a saúde do aplicativo. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/monitor-model" target="_blank" rel="noopener"&gt;Monitoring and measurement&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Dependencies&lt;/STRONG&gt;: Identifique dependências externas e monitore seu comportamento para evitar problemas relacionados a interações externas. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/design-resiliency" target="_blank" rel="noopener"&gt;Dependencies&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Data Interpretation &amp;amp; Health Modelling&lt;/STRONG&gt;: Analise os dados coletados para entender tendências, prever problemas e melhorar a confiabilidade geral. &lt;A href="https://docs.microsoft.com/en-us/azure/architecture/framework/reliability/data-interpretation-health-modeling" target="_blank" rel="noopener"&gt;Data interpretation and health modeling&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Alerting&lt;/STRONG&gt;: Estabeleça alertas e notificações para a equipe de operações reagir proativamente a eventos críticos. &lt;A href="https://learn.microsoft.com/en-us/azure/service-health/service-health-overview" target="_blank" rel="noopener"&gt;Alerting&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Planejamento de Capacidade e Disponibilidade do Serviço&lt;/STRONG&gt;: Planejar a escalabilidade e capacidade para lidar com a demanda esperada e os picos de tráfego. Garanta alta disponibilidade do serviço para minimizar o tempo de inatividade não planejado.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Scalability &amp;amp; Capacity Model&lt;/STRONG&gt;: Planeje a capacidade de recursos para acomodar a demanda esperada e os picos de tráfego. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/scalability/capacity" target="_blank" rel="noopener"&gt;Scalability and capacity model&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Service Availability&lt;/STRONG&gt;: Garanta alta disponibilidade dos serviços, minimizando o tempo de inatividade não planejado. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/availability-zones-service-support#azure-services-with-availability-zone-support" target="_blank" rel="noopener"&gt;Service availability&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Disponibilidade da Plataforma de Dados&lt;/STRONG&gt;: Escolher a camada de serviço apropriada e implementar replicação e redundância de dados para manter a consistência dos dados e garantir disponibilidade contínua é essencial em uma arquitetura para garantir a disponibilidade e resiliência da aplicação
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Service SKU&lt;/STRONG&gt;: Escolha a camada de serviço apropriada para garantir o nível adequado de disponibilidade. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/availability-service-by-category#service-categories-across-region-types" target="_blank" rel="noopener"&gt;Service SKU&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Consistency&lt;/STRONG&gt;: Mantenha a consistência dos dados para garantir a integridade das operações e a confiabilidade geral. Mantendo a consistência dos dados no contexto de computação em nuvem e sistemas distribuídos é uma preocupação crítica para garantir a integridade das operações e a confiabilidade geral do ambiente. A consistência se refere à ideia de que os dados em um sistema distribuído estão sempre em um estado válido e coerente, independentemente do número de réplicas ou de como os dados são acessados. &lt;A href="https://learn.microsoft.com/en-us/azure/cosmos-db/consistency-levels" target="_blank" rel="noopener"&gt;Consistency Level CosmosDB&lt;/A&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-features#consistency" target="_blank" rel="noopener"&gt;Consistency Level EventHub&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Replication and Redundancy&lt;/STRONG&gt;: Implemente replicação e redundância de dados para mitigar riscos de perda de dados e garantir a disponibilidade contínua. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/cross-region-replication-azure" target="_blank" rel="noopener"&gt;Replication and redundancy&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Modelo Operacional e DevOps&lt;/STRONG&gt;: Estabelecer procedimentos operacionais eficientes é fundamental para garantir que sua equipe possa responder rapidamente a eventos críticos e gerenciar incidentes de forma eficaz. Esses procedimentos são essenciais para manter a disponibilidade, segurança e integridade dos sistemas e serviços em nuvem. Defina claramente os papéis e responsabilidades dentro da equipe. Estabeleça procedimentos operacionais para o gerenciamento de incidentes e resposta rápida a eventos críticos.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Roles &amp;amp; Responsibilities&lt;/STRONG&gt;: Defina claramente os papéis e responsabilidades da equipe para garantir a eficiência operacional e a colaboração adequada. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/security/design-identity-role-definitions" target="_blank" rel="noopener"&gt;Roles and responsibilities&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Operational Procedures&lt;/STRONG&gt;: Estabeleça procedimentos operacionais para garantir uma resposta rápida a eventos críticos e gerenciamento eficiente de incidentes. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/mission-critical/mission-critical-operational-procedures" target="_blank" rel="noopener"&gt;Operational procedures&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Rede e Conectividade&lt;/STRONG&gt;: Assegure uma conectividade confiável entre os componentes do aplicativo e serviços externos. Assegurar uma conectividade confiável entre os componentes do aplicativo e serviços externos é crucial para garantir o desempenho, a disponibilidade e a escalabilidade do sistema na nuvem. Além disso, o uso de serviços cientes de zona é uma prática importante para aumentar a tolerância a falhas e a resiliência do aplicativo.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Connectivity&lt;/STRONG&gt;: Garanta conectividade confiável entre os componentes do aplicativo e serviços externos. &lt;A href="https://learn.microsoft.com/en-us/azure/expressroute/" target="_blank" rel="noopener"&gt;Connectivity&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Zone-Aware Services&lt;/STRONG&gt;: Projete serviços para serem cientes da zona e tolerantes a falhas de zonas. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/availability-service-by-category" target="_blank" rel="noopener"&gt;Availabilit Service by Category&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Gestão de Desempenho do Aplicativo&lt;/STRONG&gt;: Gerencie o tamanho dos dados e seu crescimento, otimize o throughput da rede e projete aplicativos para escalar elasticamente com base na demanda.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Service SKU&lt;/STRONG&gt;: Escolha a camada de serviço apropriada para garantir a disponibilidade e o desempenho desejados. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/availability-zones-migration-overview" target="_blank" rel="noopener"&gt;Service SKU&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Compute Availability&lt;/STRONG&gt;: Garanta a disponibilidade dos recursos de computação para evitar falhas devido a escassez de recursos. &lt;A href="https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree" target="_blank" rel="noopener"&gt;Compute availability&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Segurança e Conformidade&lt;/STRONG&gt;: Utilize o Controle de Acesso Baseado em Função (RBAC) para garantir acesso autorizado aos recursos e manter um ambiente seguro.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Control-plane RBAC&lt;/STRONG&gt;: Utilize o controle de acesso baseado em função (RBAC) para garantir que as operações sejam executadas apenas por usuários autorizados. &lt;A href="https://learn.microsoft.com/en-us/azure/role-based-access-control/overview" target="_blank" rel="noopener"&gt;Control-plane RBAC&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Procedimentos operacionais: &lt;/STRONG&gt;Procedimentos operacionais bem definidos desempenham um papel fundamental na manutenção de operações confiáveis e na resposta rápida a eventos críticos. A adoção desses procedimentos operacionais no Microsoft Azure ajudará a garantir a confiabilidade do seu aplicativo ou serviço, minimizando o tempo de inatividade não planejado, melhorando a resiliência e proporcionando uma experiência positiva para os usuários finais. Lembre-se de revisar e atualizar regularmente esses procedimentos para atender às necessidades em constante evolução do seu ambiente na nuvem Azure.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Recovery &amp;amp; Failover&lt;/STRONG&gt;: Crie planos de recuperação e failover para garantir a disponibilidade contínua em caso de falhas ou desastres. &lt;A href="https://learn.microsoft.com/en-us/azure/reliability/business-continuity-management-program" target="_blank" rel="noopener"&gt;Recovery and failover&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Configuration &amp;amp; Secrets Management&lt;/STRONG&gt;: Gerencie as configurações e segredos do aplicativo de maneira segura para evitar riscos de segurança. &lt;A href="https://learn.microsoft.com/en-us/azure/key-vault/secrets/about-secrets" target="_blank" rel="noopener"&gt;Configuration and secrets management&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Performance Management&lt;/STRONG&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Data Size/Growth&lt;/STRONG&gt;: Gerencie o tamanho dos dados e o crescimento para evitar gargalos de desempenho. &lt;A href="https://azure.microsoft.com/en-us/blog/advancing-microsoft-azure-reliability/" target="_blank" rel="noopener"&gt;Data size/growth&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Network Throughput and Latency&lt;/STRONG&gt;: Otimize o throughput de rede e reduza a latência para melhorar o desempenho do aplicativo. &lt;A href="https://learn.microsoft.com/en-us/azure/networking/azure-network-latency" target="_blank" rel="noopener"&gt;Network throughput and latency&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Elasticity&lt;/STRONG&gt;: Programe o aplicativo para escalar automaticamente com base na demanda para garantir desempenho adequado. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/scalability/design-scale" target="_blank" rel="noopener"&gt;Elasticity&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Desenvolvimento e Testes&lt;/STRONG&gt;: Implemente práticas seguras de implantação, crie ambientes de compilação padronizados e conduza testes e validações abrangentes.
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Application Code Deployments&lt;/STRONG&gt;: Implemente práticas de implantação seguras e automatizadas para garantir a confiabilidade das implantações. &lt;A href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2018/connect/azure-deploy-your-code-the-right-way-with-azure-pipelines" target="_blank" rel="noopener"&gt;Application code deployments&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Build Environments&lt;/STRONG&gt;: Crie ambientes de compilação padronizados e consistentes para melhorar a qualidade do código. &lt;A href="https://learn.microsoft.com/en-us/azure/deployment-environments/overview-what-is-azure-deployment-environments" target="_blank" rel="noopener"&gt;Build environments&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Testing &amp;amp; Validation&lt;/STRONG&gt;: Realize testes e validações para garantir que o aplicativo atenda aos requisitos de confiabilidade e desempenho. &lt;A href="https://learn.microsoft.com/en-us/azure/well-architected/resiliency/test-checklist" target="_blank" rel="noopener"&gt;Testing and validation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Resumo&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A confiabilidade é um pilar fundamental na construção de soluções em nuvem bem-sucedidas. Ao seguir as boas práticas delineadas no Framework de Boas Práticas da Microsoft para Arquitetura, você pode projetar, implantar e gerenciar aplicativos altamente disponíveis, resilientes e capazes de se recuperar de falhas com elegância.&lt;/P&gt;
&lt;P&gt;Destacando um design de aplicativo robusto, implementando um monitoramento efetivo e planejando a capacidade e disponibilidade da plataforma de dados, você dará passos cruciais para garantir uma arquitetura em nuvem confiável. Aliado a procedimentos operacionais sólidos, práticas eficientes de DevOps e aderência aos padrões de segurança, seus aplicativos baseados em nuvem estarão preparados para enfrentar desafios, entregar desempenho consistente e proporcionar uma experiência de usuário perfeita.&lt;/P&gt;
&lt;P&gt;Incorporar esses princípios de confiabilidade em sua arquitetura em nuvem elevará não apenas o desempenho de seus aplicativos, mas também contribuirá para construir uma base sólida para o sucesso no ambiente dinâmico e em constante evolução da nuvem.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Aug 2023 13:58:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/engenharia-de-confiabilidade-no-microsoft-azure-realiability/ba-p/3886122</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2023-08-01T13:58:16Z</dc:date>
    </item>
    <item>
      <title>Adicionar sub-rede para um nodePool do AKS usando plugin Azure CNI</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/adicionar-sub-rede-para-um-nodepool-do-aks-usando-plugin-azure/ba-p/3855344</link>
      <description>&lt;P&gt;O Plugin de rede CNI usado nos ambientes produtivos requer um bom planejamento para os clusters do Azure Kubernetes Services (AKS) para evitar que a exaustão de endereços IP fornecidos pela sub-rede do cluster devido ao crescimento do ambiente, tendo a necessidade de recriar o cluster para atender a essa demanda.&lt;/P&gt;
&lt;P&gt;Este artigo irá passar sobre este cenário que encontramos em muitos ambientes produtivos, com a possibilidade de adicionar um novo bloco de endereçamento IP da rede virtual do AKS e dedicá-la para um conjunto de nodepool.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introdução&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Um aspecto importante na arquitetura de um cluster do Azure Kubernetes Services (AKS) é relacionado ao seu planejamento de conectividade de rede e segurança. Dentro deste planejamento a escolha do modelo de rede entre CNI ou Kubelet é um fator essencial para a administração do cluster.&lt;/P&gt;
&lt;P&gt;Uma breve explicação entre os dois modos de rede no AKS:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure CNI&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Plugin indicado para ambientes produtivos, requer um planejamento adequado, pois requer uma rede virtual e sub-rede para alocações dos nodes e pods do cluster AKS.&lt;/P&gt;
&lt;P&gt;Pontos importantes sobre a CNI:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cada node e pod recebe um endereço IP na rede virtual do Azure, sem necessidade de roteamento extra para se comunicar com outros serviços ou recursos.&lt;/LI&gt;
&lt;LI&gt;A sub-rede deve ser grande o suficiente para fornecer endereços IP para cada node, pods e garantir nodes adicionais para escala e upgrade do cluster.&lt;/LI&gt;
&lt;LI&gt;Cada node tem um parâmetro de configuração para o número máximo de pods aos quais ele dá suporte, portanto a quantidade de endereçamento IP é reservada antecipadamente na sub-rede para uso no cluster.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;FONT color="#DF0000"&gt;&lt;STRONG&gt;Importante!&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;O uso do plugin CNI Azure requer planejamento para não levar à exaustão de endereço IP ou à necessidade de recriar o cluster para uma nova sub-rede.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Kubelet&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Opção de rede usando kubelet é considerada modelo básico padrão para clusters do AKS&lt;/P&gt;
&lt;P&gt;Pontos importantes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Os Nodes recebem endereçamento IP da sub-rede virtual do Azure.&lt;/LI&gt;
&lt;LI&gt;Os Pods recebem endereçamento IP de outro bloco de endereço diferente da rede virtual.&lt;/LI&gt;
&lt;LI&gt;Tráfego entre Pods e Nodes usando roteamento extra através de UDR pode reduzir o desempenho da rede.&lt;/LI&gt;
&lt;LI&gt;NAT é configurado para que os Pods possam alcançar recursos na rede virtual.&lt;/LI&gt;
&lt;LI&gt;Conexões com as redes locais existentes ou entre peering com outras redes virtuais podem ser tornar complexas.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Quando considerar o uso do plugin kubelet:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Workloads pequenos, ambientes de teste ou desenvolvimento.&lt;/LI&gt;
&lt;LI&gt;Sites simples com baixo tráfego.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Temos um cluster AKS com dois nodepool sendo um de system e outro de user conforme a ilustração abaixo.&lt;/P&gt;
&lt;P&gt;Para saber mais sobre a diferença entre node system e user system recomendo a leitura da documentação &lt;A href="https://learn.microsoft.com/en-us/azure/aks/use-system-pools?tabs=azure-cli#system-and-user-node-pools" target="_blank" rel="noopener"&gt;Use system node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O cluster está alocado em uma rede virtual com o bloco de endereço 10.200.0.0/23 e uma única sub-rede no qual está ocupando todo o endereçamento IP.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Adicionar um novo nodepool para uma sub-rede dedicada&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Uma aplicação dentro do AKS pode exigir que os nodes de um cluster sejam divididos em nodepools separados para isolamento lógico. Essa separação também pode se beneficiar com o suporte de sub-redes dedicadas a cada nodepool o que também atende a necessidade de maior alocação de endereço IP usando CNI.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Primeira Etapa:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Adicionar novo bloco de endereço IP na rede virtual e criar a sub-rede correspondente.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Segunda etapa:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Iremos usar a CLI para adição do novo nodepool na sub-rede SNT-AKS-2&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#DF0000"&gt;&lt;STRONG&gt;Importante!&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Valide a versão do AZ CLI está na versão 2.35.0 ou acima&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Encontrar o ID da Subnet&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;# az network vnet subnet show -g AKS-PRD-BR -n SNT-AKS-2  --vnet-name VNET-AKS-PRD-BR
{
  "addressPrefix": "10.100.0.0/24",
  "addressPrefixes": null,
  "applicationGatewayIpConfigurations": null,
  "delegations": [],
  "etag": "W/\"6c3026f7-0a21-4fd6-af97-d9eb41c1ef3b\"",
  "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/AKS-PRD-BR/providers/Microsoft.Network/virtualNetworks/VNET-AKS-PRD-BR/subnets/SNT-AKS-2",
  "ipAllocations": null,
  "ipConfigurationProfiles": null,
  "ipConfigurations": null,
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A saída do comando copie a linha correspondente ao seu SubnetID&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Verificar os nodes do cluster&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;# kubectl get node -o wide
NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP
aks-agentpool-41582112-vmss000000   Ready    agent   45m    v1.24.9    10.200.0.53
aks-prdnode01-41582112-vmss000000   Ready    agent   45m   v1.24.9   10.200.0.4
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Na saída do comando visualizamos os nodes &lt;STRONG&gt;"agentpool"&lt;/STRONG&gt; e &lt;STRONG&gt;"prdnode01"&lt;/STRONG&gt; recebendo endereçamento IP do bloco &lt;STRONG&gt;10.200.0.0/23&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Adicionar nodepool prdnode02 na sub-rede SNT-AKS-2&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Como adicionados um novo bloco de endereço IP na rede virtual devemos atualizar o cluster com o comando &lt;FONT color="#DF0000"&gt;"az aks update -g &amp;lt;resourceGroup&amp;gt; -n &amp;lt;clusterName&amp;gt;"&lt;/FONT&gt; sem argumentos opcionais. Esse comando executará uma operação de atualização sem fazer nenhuma alteração.&lt;/P&gt;
&lt;P&gt;Para mais informações veja a documentação &lt;A href="https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet" target="_blank" rel="noopener"&gt;Use multiple node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;az aks update -g AKS-PRD-BR -n aks-prd-br-01&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Após execução do comando az aks update, execute o bloco de comandos abaixo para adicionar o novo nodepool na sub-rede dedicada.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;az aks nodepool add \
    --resource-group AKS-PRD-BR \
    --cluster-name aks-prd-br-01 \
    --name prdnode02 \
    --node-count 2 \
    --vnet-subnet-id /subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/AKS-PRD-BR/providers/Microsoft.Network/virtualNetworks/VNET-AKS-PRD-BR/subnets/SNT-AKS-2
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Após a execução do comando podemos visualizar novamente os nodes do cluster AKS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;kubectl get nodes -o wide
NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP   EXTERNAL-IP
aks-agentpool-41582112-vmss000000   Ready    agent   83m     v1.24.9   10.200.0.53
aks-prdnode01-41582112-vmss000000   Ready    agent   83m     v1.24.9   10.200.0.4
aks-prdnode02-14816076-vmss000000   Ready    agent   3m31s   v1.24.9   10.100.0.4
aks-prdnode02-14816076-vmss000001   Ready    agent   3m34s   v1.24.9   10.100.0.33
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Adicionados um novo nodepool &lt;STRONG&gt;"prdnode02"&lt;/STRONG&gt; com duas instancias e visualizamos que estes novos nodes recebem endereço IP da sub-rede dedicada &lt;STRONG&gt;10.100.0.0/24.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Verificando as informações pelo portal.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Tela do Azure mostrando o novo nodepool criado.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Tela do Azure com as propriedades do novo nodepool, visualizamos em qual sub-rede os nodes estão associados.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusão&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Neste artigo vimos como podemos adicionar um novo nodepool de um cluster do AKS em uma sub-rede dedicada em cenários nos quais os clientes precisam isolamento lógico dos nodes em sub-redes separadas ou resolver problemas de exaustão de endereçamento IP sem a necessidade de recriar o cluster.&lt;/P&gt;
&lt;P&gt;Atualização do diagrama com a adição do novo nodepool em uma subre-rede dedicada.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Referências&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/use-multiple-node-pools#add-a-node-pool-with-a-unique-subnet" target="_blank" rel="noopener"&gt;Use multiple node pools in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/concepts-network" target="_blank" rel="noopener"&gt;Concepts - Networking in Azure Kubernetes Services (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/configure-azure-cni#plan-ip-addressing-for-your-cluster" target="_blank" rel="noopener"&gt;Configure Azure CNI networking in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/aks/operator-best-practices-network" target="_blank" rel="noopener"&gt;Best practices for network resources in Azure Kubernetes Service (AKS) - Azure Kubernetes Service | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 14 Jul 2023 13:55:33 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/adicionar-sub-rede-para-um-nodepool-do-aks-usando-plugin-azure/ba-p/3855344</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2023-07-14T13:55:33Z</dc:date>
    </item>
    <item>
      <title>Inspeção do tráfego destinado aos Private Endpoints para o Azure Firewall ou NVA</title>
      <link>https://techcommunity.microsoft.com/t5/azure-infragurus/inspe%C3%A7%C3%A3o-do-tr%C3%A1fego-destinado-aos-private-endpoints-para-o-azure/ba-p/3846721</link>
      <description>&lt;P&gt;Este artigo possui a finalidade de demonstrar como podemos inspecionar o tráfego com destino aos recursos de Private Endpoint para o Azure Firewall ou NVA.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O que é private Endpoint?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Um private Endpoint fornece um endereço IP privado para uma lista de serviços de plataforma na Azure permitindo a comunicação privada com estes recursos.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Como usar uma solução de firewall para inspecionar o tráfego destinado a um private endpoint?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Um requisito de segurança talvez seja inspecionar ou bloquear o tráfego de clientes para os serviços expostos de forma privada por meio do private Endpoint. Porém para atingir esse objetivo devemos conhecer algumas características referente ao uso do private Endpoint.&lt;/P&gt;
&lt;P&gt;As seguintes características se aplicam ao uso do private endpoint:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;O tráfego dos grupos de segurança de rede (NSG) é ignorado nos private endpoints&lt;/LI&gt;
&lt;LI&gt;O tráfego das rotas definidas pelo usuário (UDR) é ignorado nos private endpoints. As rotas definidas pelo usuário podem ser usadas para substituir o tráfego destinado ao private Endpoint.&lt;/LI&gt;
&lt;LI&gt;Uma única tabela de rotas pode ser anexada a uma sub-rede&lt;/LI&gt;
&lt;LI&gt;Uma tabela de rotas dá suporte a até 400 rotas&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Ao criar um private Endpoint com o serviço do private link é injetado nas sub-redes uma rota mais especifica /32 contendo o endereçamento ip privado destinado ao private Endpoint, devido a este cenário temos alguns cenários de como inspecionar o tráfego destinado ao private Endpoint para uma solução do Azure Firewall ou NVA (Network Virtual Applicance)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A seguinte documentação &lt;A href="https://learn.microsoft.com/en-us/azure/private-link/inspect-traffic-with-azure-firewall" target="_blank" rel="noopener"&gt;Use Azure Firewall to inspect traffic destined to a private endpoint - Azure Private Link | Microsoft Learn&lt;/A&gt; &amp;nbsp;relata 4 cenários possíveis para inspeção do private endpoint, porém irei cobrir aqui um novo cenário usando o recurso de Network Policy no qual irá facilitar o nosso objetivo.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A documentação relata quatro opções possíveis para realizar a inspeção do private endpoint para o Azure Firewall.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário 1: Arquitetura Hub e Spoke usando uma rede virtual dedicada para private endpoint.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;Neste cenário de arquitetura Hub e Spoke usamos uma rede virtual inteira para o private endpoint.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Hub Vnet: 10.0.0.0/16&lt;/LI&gt;
&lt;LI&gt;Spoke VNET: 10.1.0.0/16&lt;/LI&gt;
&lt;LI&gt;Private vNET: 10.2.0.0/16&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Neste cenário é criado uma Route Table da sub-rede da rede virtual Spoke VNET com a seguinte regra para alcançar a rede 10.20.0./16 passando pelo Azure Firewall. Essa configuração reduz a sobrecarga administrativa e impedindo a possibilidade de alcançar o limite de 400 rotas da UDR&lt;/P&gt;
&lt;P&gt;Este cenário se aplica nos clientes que possuem uma rede virtual dedicada para o serviço do private endpoint.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário 2: Arquitetura Hub e Spoke usando rede virtual compartilhada entre as máquinas virtuais e private endpoint&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Este cenário cobre grande parte das arquiteturas encontradas nos clientes no qual temos uma rede virtual Spoke com sub-rede para as máquinas virtuais e outra sub-rede para o private endpoint. Este cenário é implementado quando não é possível ter uma rede virtual dedicada para os private endpoints.&lt;/P&gt;
&lt;P&gt;Neste caso será injetado rotas de sistema nas sub-redes das máquinas /32 apontando para cada private endpoint.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Veja abaixo o exemplo das rotas efetivas de uma máquina virtual&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Neste caso para que o tráfego destinado ao private endpoint seja encaminhado para o firewall será necessário adicionar uma rota para cada endereço ip privado dos private endpoints o que aumenta a carga administrativa de manutenção das tabelas de rota e a possibilidade de atingir o limite de 400 rotas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário 3: Rede virtual única&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Neste cenário temos apenas uma única rede virtual e as mesmas considerações do cenário 2 são aplicadas aqui.&lt;/P&gt;
&lt;P&gt;Isso acontece devido a injeção das rotas /32 dos private endpoints para as subnets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário 4: Tráfego on-premises para private endpoints&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Neste cenário temos a necessidade de inspecionar no Firewall tráfego vindo do datacenter para os private endpoints. Também temos as mesmas considerações do cenário 2. Para que o tráfego destinado aos private endpoints sejam inspecionados pelo Azure Firewall devemos adicionar na tabela de rota da GatewaySubnet uma rota para cada endereço IP /32 dos private endpoints para o Firewall.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Irei cobri aqui um novo cenário cobrindo os cenários dois e quatro, usando o recurso de Network Policy o que irá auxiliar no controle de rotas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Cenário 5: Hub e Spoke usando Network Policy&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Este cenário seria uma adição do cenário dois e do cenário quatro, porém iremos habilitar o recurso de Network Policy na sub-rede dedicada para private endpoint.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O que é Network Policy?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Por padrão, as políticas de rede são desabilitadas para uma sub-rede em uma rede virtual. Para utilizar políticas de rede como suporte a Rotas Definidas pelo Usuário e Grupos de Segurança de Rede será necessário habilitar este serviço do Network Policy na sub-rede dos private endpoints pois essa configuração é aplicável somente a estes recursos.&lt;/P&gt;
&lt;P&gt;Ao habilitar o Network Policy as rotas /32 que são geradas pelos private endpoints e propagadas para todas as sub-redes em sua própria VNet e VNets diretamente emparelhadas serão invalidadas.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Etapa 1: Cenário antes de habilitar o Network Policy&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Por padrão o Network Policy não é habilitado nas sub-redes. Com isso ao criar um private endpoint uma rota de sistema /32 com endereço ip privado do private endpoint será automaticamente injetada nas sub-redes da rede virtual.&lt;/P&gt;
&lt;P&gt;O diagrama abaixo ilustra este comportamento das rotas efetivas na máquina virtual 10.100.0.4 e percebemos que a rota de sistema foi adicionada automaticamente após a criação do private endpoint para uma conta de armazenamento recebendo o endereçamento privado 10.100.1.4.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Etapa 2: Cenário após habilitar o Network Policy&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No nosso laboratório habilitamos o Network Policy na sub-rede &lt;STRONG&gt;10.100.1.0/25&lt;/STRONG&gt; dedicada para private endpoints.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As rotas injetadas /32 serão invalidadas conforme a imagem abaixo.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;O diagrama abaixo ilustra as atividades executadas aqui.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Etapa 3: Adicionado rotas para inspeção passando pelo Azure Firewall&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Com isso será possível configurar nas UDRs todo tráfego destinado à sub-rede do private endpoint 10.100.1.0/25 serão encaminhadas para o Firewall sem a necessidade de adicionar cada rota /32 individualmente para casa private endpoint existente dentro do ambiente.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tabela de rota aplicada na sub-rede da máquina virtual:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tabela de rota aplicada na SubnetGateway&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Podemos adicionar a rota na GatewaySubnet na rede virtual hub, para que o tráfego vindo do on-premises para os serviços de private endpoints também seja encaminhado para o Firewall.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Olhando novamente no nosso desenho do laboratório vemos as respectivas tabelas de rota configuradas e como o uso do Network Policy facilita essa configuração pois não temos a necessidade de adicionar individualmente cada endereço IP /32 na tabela rota.&lt;/P&gt;
&lt;P&gt;Ao final temos arquitetura do nosso laboratório como ilustrado na imagem abaixo.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Teste e validações:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para simular os testes temos uma conta de armazenamento com private endpoint configurado para a sub-rede destinada aos private endpoints &lt;STRONG&gt;10.100.1.0/25&lt;/STRONG&gt; recebendo o endereçamento privado &lt;STRONG&gt;10.100.4.4&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No Azure Firewall temos uma regra de rede negando as conexões para a sub-rede 10.100.1.0/25 de qualquer origem, porta e protocolo. Relembrando está é a nossa sub-rede dedicada para os private endpoints.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Faremos os testes de resolução DNS e de conexão com a storage Account a partir das máquinas virtuais simulando on-premises e Spoke. A resolução DNS para a conta de armazenamento com private endpoint irá retornar o IP privado, porém a conexão para listar os Blobs dentro da conta de armazenamento usando a CLI irá falhar devido a regra de DENY do Firewall&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Comandos utilizados:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;nslookup stalabnonprod01.blob.core.windows.net&lt;/LI&gt;
&lt;LI&gt;az storage blob list --account-name stalabnonprod01 --container-name teste --account-key &amp;lt;KEY DA CONTA DE ARMAZENAMENTO&amp;gt; --output table&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conexão a partir da máquina On-premises&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;VM-Onpremises
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;IP:&lt;/STRONG&gt; 192.168.10.11&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Resolução DNS OK&lt;/P&gt;
&lt;P&gt;Tentativa de listar os blobs da conta de armazenamento stalabnonprod01 sem sucesso&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conexão a partir da máquina virtual Spoke&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;VM-Spoke:
&lt;UL&gt;
&lt;LI&gt;IP: 10.100.0.4&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Resolução DNS OK&lt;/P&gt;
&lt;P&gt;Tentativa de listar os blobs da conta de armazenamento stalabnonprod01 sem sucesso&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;No Log do Firewall podemos validar a tentativa de conexão através da seguinte query de NetworkRule adicionado apenas ao final da query para trazer as conexões com a ação de &lt;STRONG&gt;“DENY”.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="applescript"&gt;// Network rule log data
// Parses the network rule log data.
AzureDiagnostics
| where Category == "AzureFirewallNetworkRule"
| where OperationName == "AzureFirewallNatRuleLog" or OperationName == "AzureFirewallNetworkRuleLog"
//case 1: for records that look like this:
//PROTO request from IP:PORT to IP:PORT.
| parse msg_s with Protocol " request from " SourceIP ":" SourcePortInt:int " to " TargetIP ":" TargetPortInt:int *
//case 1a: for regular network rules
| parse kind=regex flags=U msg_s with * ". Action\\: " Action1a "\\."
//case 1b: for NAT rules
//TCP request from IP:PORT to IP:PORT was DNAT'ed to IP:PORT
| parse msg_s with * " was " Action1b:string " to " TranslatedDestination:string ":" TranslatedPort:int *
//Parse rule data if present
| parse msg_s with * ". Policy: " Policy ". Rule Collection Group: " RuleCollectionGroup "." *
| parse msg_s with * " Rule Collection: "  RuleCollection ". Rule: " Rule
//case 2: for ICMP records
//ICMP request from 10.0.2.4 to 10.0.3.4. Action: Allow
| parse msg_s with Protocol2 " request from " SourceIP2 " to " TargetIP2 ". Action: " Action2
| extend
SourcePort = tostring(SourcePortInt),
TargetPort = tostring(TargetPortInt)
| extend
    Action = case(Action1a == "", case(Action1b == "",Action2,Action1b), split(Action1a,".")[0]),
    Protocol = case(Protocol == "", Protocol2, Protocol),
    SourceIP = case(SourceIP == "", SourceIP2, SourceIP),
    TargetIP = case(TargetIP == "", TargetIP2, TargetIP),
    //ICMP records don't have port information
    SourcePort = case(SourcePort == "", "N/A", SourcePort),
    TargetPort = case(TargetPort == "", "N/A", TargetPort),
    //Regular network rules don't have a DNAT destination
    TranslatedDestination = case(TranslatedDestination == "", "N/A", TranslatedDestination),
    TranslatedPort = case(isnull(TranslatedPort), "N/A", tostring(TranslatedPort)),
    //Rule information
    Policy = case(Policy == "", "N/A", Policy),
    RuleCollectionGroup = case(RuleCollectionGroup == "", "N/A", RuleCollectionGroup ),
    RuleCollection = case(RuleCollection == "", "N/A", RuleCollection ),
    Rule = case(Rule == "", "N/A", Rule)
| project TimeGenerated, msg_s, Protocol, SourceIP,SourcePort,TargetIP,TargetPort,Action, TranslatedDestination, TranslatedPort, Policy, RuleCollectionGroup, RuleCollection, Rule
| where Action contains "Deny"&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Visualizamos que o tráfego originando das máquinas &lt;STRONG&gt;10.100.0.4 (SpokeVM)&lt;/STRONG&gt; e &lt;STRONG&gt;192.168.10.11 (VM Onpremises)&lt;/STRONG&gt; para o destino &lt;STRONG&gt;10.100.1.4 (endereço ip do private endpoint da conta de armazenamento)&lt;/STRONG&gt; foi negado este tráfego pela regra do Azure Firewall &lt;STRONG&gt;“DenyPrivateEndpoint”.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Com isso validamos a inspeção do tráfego destinado para o private endpoint encaminhando esse tráfego para tratamento pelo Azure Firewall.&lt;/P&gt;
&lt;P&gt;Para finalizar iremos excluir a regra de Deny no Azure Firewall, e com isso o acesso para a conta de armazenamento será permitida.&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Testando novamente:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Acesso permitido a partir da VM Onpremises&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Acesso permitido a partir da VM Spoke&lt;/P&gt;
&lt;P&gt;&lt;img /&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Resumo:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Network Policy habilitado na sub-rede destinado aos private endpoints.&lt;/LI&gt;
&lt;LI&gt;A injeção da rota de sistema /32 nas sub-redes será invalidada.&lt;/LI&gt;
&lt;LI&gt;Adicionar a rota com destino a sub-rede do private endpoint com Next Hop o Azure Firewall ou outra solução de NVA de terceiros&lt;/LI&gt;
&lt;LI&gt;Caso o tráfego de origem vindo do on-premises para o private endpoint também seja encaminhado para o firewall basta adicionar a rota na UDR da SubnetGateway&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Links para mais informações:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-overview" target="_blank" rel="noopener"&gt;What is a private endpoint? - Azure Private Link | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/private-link/inspect-traffic-with-azure-firewall" target="_blank" rel="noopener"&gt;Use Azure Firewall to inspect traffic destined to a private endpoint - Azure Private Link | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/private-link/disable-private-endpoint-network-policy?tabs=network-policy-portal" target="_blank" rel="noopener"&gt;Manage network policies for private endpoints - Azure Private Link | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/storage/blobs/blob-containers-cli" target="_blank" rel="noopener"&gt;Manage blob containers using Azure CLI - Azure Storage | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 13 Jun 2023 17:37:57 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-infragurus/inspe%C3%A7%C3%A3o-do-tr%C3%A1fego-destinado-aos-private-endpoints-para-o-azure/ba-p/3846721</guid>
      <dc:creator>fabiodasilva</dc:creator>
      <dc:date>2023-06-13T17:37:57Z</dc:date>
    </item>
  </channel>
</rss>

