Usar o firewall para restringir o tráfego de saída usando a CLI do Azure
Importante
O Azure HDInsight no AKS se aposentou em 31 de janeiro de 2025. Saiba mais com este comunicado.
Você precisa migrar suas cargas de trabalho para microsoft fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho.
Importante
Esse recurso está atualmente em versão prévia. Os termos de uso complementares para o Microsoft Azure Previews incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, consulte Azure HDInsight em informações de visualização do AKS. Para perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para mais atualizações na Comunidade Azure HDInsight .
Quando uma empresa deseja usar sua própria rede virtual para as implantações de cluster, a proteção do tráfego da rede virtual torna-se importante. Este artigo fornece as etapas para proteger o tráfego de saída do seu HDInsight no cluster AKS via Firewall do Azure usando CLI do Azure.
O diagrama a seguir ilustra o exemplo usado neste artigo para simular um cenário empresarial:
O exemplo demonstrado neste artigo está usando do Shell do Azure Could .
Definir as variáveis
Copiar e executar no Azure Cloud Shell para definir os valores dessas variáveis.
PREFIX="hdiaks-egress"
RG="${PREFIX}-rg"
LOC="eastus"
HDIAKS_CLUSTER_POOL=${PREFIX}
VNET_NAME="${PREFIX}-vnet"
HDIAKS_SUBNET_NAME="${PREFIX}-subnet"
# DO NOT CHANGE FWSUBNET_NAME - This is currently a requirement for Azure Firewall.
FWSUBNET_NAME="AzureFirewallSubnet"
FWNAME="${PREFIX}-fw"
FWPUBLICIP_NAME="${PREFIX}-fwpublicip"
FWIPCONFIG_NAME="${PREFIX}-fwconfig"
FWROUTE_NAME="${PREFIX}-fwrn"
FWROUTE_NAME_INTERNET="${PREFIX}-fwinternet"
Criar uma rede virtual e sub-redes
Crie um grupo de recursos usando o comando az group create.
az group create --name $RG --location $LOC
Crie uma rede virtual e duas sub-redes.
Rede virtual com sub-rede para HDInsight no pool de clusters do AKS
az network vnet create \ --resource-group $RG \ --name $VNET_NAME \ --location $LOC \ --address-prefixes 10.0.0.0/8 \ --subnet-name $HDIAKS_SUBNET_NAME \ --subnet-prefix 10.1.0.0/16
Sub-rede do Firewall do Azure.
az network vnet subnet create \ --resource-group $RG \ --vnet-name $VNET_NAME \ --name $FWSUBNET_NAME \ --address-prefix 10.2.0.0/16
Importante
- Se você adicionar NSG na sub-rede
HDIAKS_SUBNET_NAME
, precisará adicionar algumas regras de saída e de entrada manualmente. Siga e use o NSG para restringir o tráfego. - Por padrão, a tabela de rotas não será associada à sub-rede. Se necessário, o usuário precisará criar uma tabela de rotas e associá-la ao pool de clusters.
- Se você adicionar NSG na sub-rede
Criar o HDInsight no pool de clusters do AKS usando o portal do Azure
Crie um pool de clusters.
Crie uma tabela de rotas.
Crie uma tabela de rotas e associe-a ao pool de clusters. Para obter mais informações, consulte criar uma tabela de rotas.
Obter detalhes do cluster AKS associados ao pool de clusters
Siga as etapas para obter as informações do cluster do AKS, que são úteis nas etapas subsequentes.
AKS_MANAGED_RG=$(az network vnet subnet show --name $HDIAKS_SUBNET_NAME --vnet-name $VNET_NAME --resource-group $RG --query routeTable.resourceGroup -o tsv)
AKS_ID=$(az group show --name $AKS_MANAGED_RG --query managedBy -o tsv)
HDIAKS_MANAGED_RG=$(az resource show --ids $AKS_ID --query "resourceGroup" -o tsv)
API_SERVER=$(az aks show --name $HDIAKS_CLUSTER_POOL --resource-group $HDIAKS_MANAGED_RG --query fqdn -o tsv)
Criar firewall
Crie um recurso de IP público de SKU Padrão. Esse recurso é usado como o endereço de front-end do Firewall do Azure.
az network public-ip create -g $RG -n $FWPUBLICIP_NAME -l $LOC --sku "Standard"
Registre a extensão da CLI de visualização do Firewall do Azure para criar um Firewall do Azure.
az extension add --name azure-firewall
Crie um Firewall do Azure e habilite o proxy DNS.
az network firewall create -g $RG -n $FWNAME -l $LOC --enable-dns-proxy true
Crie uma configuração de IP do Firewall do Azure.
az network firewall ip-config create -g $RG -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBLICIP_NAME --vnet-name $VNET_NAME
Depois que o comando de configuração de IP for bem-sucedido, salve o endereço IP de front-end do firewall para configuração posteriormente.
FWPUBLIC_IP=$(az network public-ip show -g $RG -n $FWPUBLICIP_NAME --query "ipAddress" -o tsv) FWPRIVATE_IP=$(az network firewall show -g $RG -n $FWNAME --query "ipConfigurations[0].privateIPAddress" -o tsv)
Adicionar regras de rede e de aplicativo ao firewall
Crie as regras de rede.
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 1194 --action allow --priority 100 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$LOC" --destination-ports 9000 az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'apiserver' --protocols 'TCP' --source-addresses '*' --destination-fqdns "$API_SERVER" --destination-ports 443 #Add below step, in case you are integrating log analytics workspace az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'azuremonitor' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureMonitor" --destination-ports 443
Crie as regras do aplicativo.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'aks-fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'acr' --source-addresses '*' --protocols 'https=443' --target-fqdns "hiloprodrpacr00.azurecr.io" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'blob' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.blob.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'servicebus' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.servicebus.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gsm' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.table.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'gcsmonitoring' --source-addresses '*' --protocols 'https=443' --target-fqdns "gcs.prod.monitoring.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'graph' --source-addresses '*' --protocols 'https=443' --target-fqdns "graph.microsoft.com"
Criar rota na tabela de rotas para redirecionar o tráfego para o firewall
Crie uma tabela de rotas a ser associada ao HDInsight no pool de clusters do AKS. Para obter mais informações, consulte comandos para criar tabela de rotas.
Criar cluster
Nas etapas anteriores, roteamos o tráfego de rede para o firewall.
As etapas a seguir fornecem detalhes sobre as regras de rede e de aplicativo específicas necessárias para cada tipo de cluster. Você pode consultar as páginas de criação de clusters para criar clusters do Apache Flink , Trino e Apache Spark com base em sua necessidade.
Importante
Antes de criar um cluster, execute as regras específicas do cluster a seguir para permitir o tráfego.
Trino
Adicione as seguintes regras de rede e aplicativo para um cluster Trino.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net" az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
Altere o
Sql.<Region>
na sintaxe a seguir para sua região de acordo com suas necessidades. Por exemplo:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses Sql.<Region> --destination-ports "11000-11999"
Apache Flink
Adicione a seguinte regra de aplicativo para um cluster do Apache Flink.
az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
Apache Spark
Adicione as seguintes regras de rede e de aplicativo para um cluster Spark.
Altere o
Storage.<Region>
na sintaxe a seguir para sua região de acordo com suas necessidades. Por exemplo:Storage.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'smb' --protocols 'TCP' --source-addresses '*' --destination-addresses "Storage.<Region>" --destination-ports 445 az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'dfs' --source-addresses '*' --protocols 'https=443' --target-fqdns "*.dfs.core.windows.net"
Altere o
Sql.<Region>
na sintaxe a seguir para sua região de acordo com suas necessidades. Por exemplo:Sql.EastUS
az network firewall network-rule create -g $RG -f $FWNAME --collection-name 'aksfwnr' -n 'mysql' --protocols 'TCP' --source-addresses '*' --destination-addresses "Sql.<Region>" --destination-ports '11000-11999' az network firewall application-rule create -g $RG -f $FWNAME --collection-name 'aksfwar' -n 'mysql' --source-addresses '*' --protocols 'mssql=1433' --target-fqdns "*.database.windows.net"
Resolver problema de roteamento simétrico
As etapas a seguir permitem que você solicite o serviço de redirecionamento de entrada do balanceador de carga por cluster e verifique se o tráfego de resposta da rede não é direcionado para o firewall. Adicione uma rota à tabela de rotas para redirecionar o tráfego de resposta do IP do seu cliente para a Internet e assim, você poderá acessar o cluster diretamente.
az network route-table route create -g $AKS_MANAGED_RG --name clientip --route-table-name $ROUTE_TABLE_NAME --address-prefix {Client_IPs} --next-hop-type Internet
Se você não conseguir acessar o cluster depois de configurar o NSG, siga as instruções para usar o NSG para restringir o tráfego e para permitir o tráfego.
Dica
Se você quiser permitir mais tráfego, poderá configurá-lo por meio do firewall.
Como depurar
Se você encontrar que o cluster funciona inesperadamente, poderá verificar os logs de firewall para localizar qual tráfego está bloqueado.