Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Muitos aplicativos têm mais de um único componente. Por exemplo, você pode ter um front-end acessível publicamente e que se conecta a uma API de back-end ou aplicativo Web. Os recursos de back-end podem se conectar a um banco de dados, conta de armazenamento, cofre de chaves, outra máquina virtual ou uma combinação desses recursos. Essa arquitetura é a base de um aplicativo de N camadas. É importante que aplicativos como esse sejam projetados para proteger os recursos de back-end na maior medida possível.
Este tutorial descreve como implantar um aplicativo seguro de N camadas com um aplicativo Web de front-end que se conecta a outro aplicativo Web isolado de rede. Todo o tráfego é isolado na sua Rede Virtual do Azure por meio da integração com a Rede Virtual e de pontos de extremidade privados. Para obter diretrizes mais abrangentes que incluem outros cenários, confira:
- Balanceamento de carga de aplicativos de várias regiões
- Padrão de aplicativo Web confiável para .NET
Neste tutorial, você:
- Criar uma rede virtual e sub-redes para integração de rede virtual do Serviço de Aplicativo
- Criar zonas DNS privadas e pontos de extremidade privados
- Configurar a integração de rede virtual no Serviço de Aplicativo
- Desabilitar a autenticação básica no serviço de aplicativo
- Implantar continuamente em um aplicativo Web de back-end com acesso restrito
Pré-requisitos
O tutorial usa dois aplicativos de Node.js de exemplo hospedados no GitHub. Caso você ainda não tenha uma conta do GitHub, crie uma conta gratuitamente.
Se você ainda não tiver uma conta do Azure, crie uma conta gratuita antes de começar.
Para concluir este tutorial:
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para saber mais, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
Examinar a arquitetura do cenário
Este tutorial demonstra como configurar uma arquitetura ilustrada no diagrama a seguir. O cenário representa uma das configurações possíveis de N camadas no Serviço de Aplicativo. Você pode usar os conceitos abordados neste tutorial para criar aplicativos de N camadas mais complexos.
A arquitetura tem uma rede virtual que contém duas sub-redes. Uma sub-rede é integrada ao aplicativo Web de front-end e a outra sub-rede tem um ponto de extremidade privado para o aplicativo Web de back-end. A rede virtual bloqueia todo o tráfego de rede de entrada, exceto o tráfego direcionado ao aplicativo de front-end integrado.
Um aplicativo Web de front-end é integrado à rede virtual e acessível pela Internet pública.
Um aplicativo Web de back-end só pode ser acessado por meio do ponto de extremidade privado na rede virtual.
Um ponto de extremidade privado se integra ao aplicativo Web de back-end e torna o aplicativo Web acessível por meio de um endereço IP privado.
Uma zona DNS privada permite a resolução de um nome DNS para o endereço IP do ponto de extremidade privado.
Observação
Para configurar a integração de rede virtual e pontos de extremidade privados, você precisa da camada Basic de Serviço de Aplicativo do Azure ou uma camada mais alta. A camada Gratuita não dá suporte a esses recursos.
O cenário neste tutorial fornece o seguinte comportamento:
- O tráfego público para o aplicativo de back-end está bloqueado.
- O tráfego de saída do App Service é roteado para a rede virtual e pode acessar o aplicativo de backend.
- O App Service pode realizar a resolução de DNS para o aplicativo de back-end.
Criar os dois aplicativos Web
Você precisa de dois aplicativos Web do Serviço de Aplicativo, um para o front-end e outro para o back-end. Os aplicativos podem ser executados no mesmo local da região. Para configurar a integração de rede virtual e trabalhar com pontos de extremidade privados, use pelo menos a camada Basic de Serviço de Aplicativo do Azure. Você configurará a integração com a rede virtual e outras configurações mais tarde.
Crie um grupo de recursos para gerenciar todos os recursos deste tutorial.
Defina o placeholder
<resource-group>com o nome do seu novo grupo de recursos, comozava-resources. Defina o marcador<region-location>como a região do seu novo grupo de recursos, comoeastus.# Define variables for the resource group name and region location resourceGroupName=<resource-group> regionLocation=<region-location> # Create the resource group az group create --name $resourceGroupName --location $regionLocationPara obter mais informações, consulte a referência de comando az group create .
Crie um plano do Serviço de Aplicativo para seus recursos.
Defina o marcador
<app-service-plan>como o nome do seu novo plano do App Service, comozava-app-service-plan.O exemplo do tutorial define o
--skuparâmetro comoP1V3(Premium V3). Você pode usar esse valor ou especificar um SKU diferente. A SKU deve dar suporte aos recursos de rede necessários para este tutorial. Selecione a camada Básica ou superior.# Define a variable for the App Service plan name appServicePlanName=<app-service-plan> # Create the App Service plan az appservice plan create --name $appServicePlanName --resource-group $resourceGroupName --is-linux --location $regionLocation --sku P1V3Para obter mais informações, consulte a referência do comando az appservice plan create.
Crie os aplicativos Web de front-end e back-end.
O exemplo do tutorial cria dois aplicativos de Node.js de exemplo, em que a versão do idioma do runtime é
NODE:24-lts. Se preferir usar seus próprios aplicativos, defina o valor do--runtimeparâmetro<language-version>adequadamente. Você pode executar oaz webapp list-runtimescomando para a lista de runtimes disponíveis:az webapp list-runtimesDefina o
<frontend-app-name>placeholder com o nome do seu novo aplicativo Web de front-end, comozava-frontend-app. O nome deve ser globalmente exclusivo e consistir em caracteres válidos (a-z, ,0-9).-Da mesma forma, defina o marcador de posição<backend-app-name>com o nome do novo aplicativo Web de back-end, comozava-backend-app.# Define variables for the App Service web app names frontendAppName=<frontend-app-name> backendAppName=<backend-app-name> # Create the web apps az webapp create --name $frontendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts" az webapp create --name $backendAppName --resource-group $resourceGroupName --plan $appServicePlanName --runtime "NODE:24-lts"Para obter mais informações, consulte a referência de comando az webapp create .
Criar a infraestrutura de rede
A infraestrutura de rede virtual consiste nos seguintes recursos:
- Uma instância de Rede Virtual do Azure
- Uma sub-rede para a integração de rede virtual do Serviço de Aplicativo
- Outra sub-rede para o endpoint privado
- Uma zona de Azure DNS privado
- Um ponto de extremidade privado
Crie uma rede virtual do Azure.
Defina o espaço reservado
<virtual-network-name>com o nome da sua nova rede virtual, comozava-virtual-network. O nome deve ser globalmente exclusivo.# Define a variable for the virtual network name virtualNetworkName=<virtual-network-name> # Create the virtual network az network vnet create --resource-group $resourceGroupName --location $regionLocation --name $virtualNetworkName --address-prefixes 10.0.0.0/16Para obter mais informações, consulte a referência de comando az network vnet create .
Crie uma sub-rede para a integração de rede virtual do Serviço de Aplicativo.
Defina o
<network-integration-subnet>marcador como o nome da sua nova sub-rede que dá suporte à integração com rede virtual, comozava-integration-subnet.Para o Serviço de Aplicativo, é recomendável que a sub-rede de integração VNet tenha um bloco CIDR de
/26no mínimo./24é mais do que suficiente.--delegations Microsoft.Web/serverfarmsespecifica que a sub-rede é delegada para integração de rede virtual do Serviço de Aplicativo.# Define a variable for the integration subnet name networkIntegrationSubnet=<network-integration-subnet> # Create the subnet for virtual network integration az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $networkIntegrationSubnet \ --address-prefixes 10.0.0.0/24 --delegations Microsoft.Web/serverfarms \ --disable-private-endpoint-network-policies falsePara obter mais informações, consulte a referência do comando az network vnet subnet create.
Crie uma nova sub-rede para os endpoints privados.
Defina o
<private-endpoint-subnet>marcador como o nome da sua nova sub-rede que dá suporte a um endpoint privado, comozava-endpoint-subnet.# Define a variable for the private endpoint subnet name privateEndpointSubnet=<private-endpoint-subnet> # Create the subnet for the private endpoint az network vnet subnet create --resource-group $resourceGroupName --vnet-name $virtualNetworkName --name $privateEndpointSubnet \ --address-prefixes 10.0.1.0/24 \ --disable-private-endpoint-network-policies truePara sub-redes de ponto de extremidade privado, você deve desativar as políticas de rede de ponto de extremidade privado definindo o sinalizador
--disable-private-endpoint-network-policiescomotrue. Para obter mais informações, consulte os parâmetros opcionais para o comando az network vnet subnet create .Observação
A flag
--private-endpoint-network-policiespode em breve substituir a flag--disable-private-endpoint-network-policies.Crie a zona Azure DNS privado.
Defina o marcador
<private-zone-name>com o nome da sua nova zona de DNS privado, comozava-private.azurewebsites.net.# Define a variable for the Private DNS zone privateDNSZone=<private-zone-name> # Create the Private DNS zone az network private-dns zone create --resource-group $resourceGroupName --name $privateDNSZonePara obter mais informações, consulte a referência do comando az network vnet subnet create. Para obter mais informações sobre como configurar a zona de DNS privado, consulte configuração da zona de DNS do serviço Azure.
Observação
Se você criar o ponto de extremidade privado no portal Azure, uma zona de Azure DNS privado será criada automaticamente para sua configuração. Para manter a consistência processual neste tutorial, você criará a zona DNS privada e o ponto de extremidade privado separadamente usando a CLI do Azure.
Vincule a zona de DNS privado à rede virtual.
Defina o marcador
<dns-link-name>com o nome do seu novo link DNS, por exemplo,zava-private-link.# Define a variable for the DNS link name dnsLinkName=<dns-link-name> # Create the link between the Private DNS zone and the virtual network az network private-dns link vnet create --resource-group $resourceGroupName --name $dnsLinkName --zone-name $privateDNSZone \ --virtual-network $virtualNetworkName --registration-enabled FalsePara obter mais informações, consulte a referência de comando az network private-dns link vnet create .
Na sub-rede de ponto de extremidade privado da rede virtual, crie um ponto de extremidade privado para seu aplicativo Web de back-end.
Defina o marcador
<private-endpoint-name>com o nome do novo endpoint privado do seu aplicativo Web de back-end, comozava-backend-endpoint. Defina o marcador<service-connection-name>com o nome da nova conexão de serviço, comozava-backend-connection.# Define variables for the private endpoint and service connection privateEndpointName=<private-endpoint-name> serviceConnectionName=<service-connection-name> # Get the resource ID of the backend web app resourceId=$(az webapp show --resource-group $resourceGroupName --name $backendAppName --query id --output tsv) # Create the private endpoint for the backend web app by using the resource ID az network private-endpoint create --resource-group $resourceGroupName --name $privateEndpointName --location $regionLocation \ --connection-name $serviceConnectionName --private-connection-resource-id $resourceId \ --group-id sites --vnet-name $virtualNetworkName --subnet $privateEndpointSubnetPara obter mais informações, consulte a referência de comando az network private-endpoint create .
Vincule o endpoint privado à zona de DNS Privado com um grupo de zonas DNS para o endpoint privado do aplicativo Web de back-end.
Defina o
<dns-zone-group-name>placeholder como nome do seu novo grupo de zonas DNS, comozava-dns-zone-group. O grupo de zonas DNS ajuda na atualização automática da zona DNS privada quando o ponto de extremidade privado é atualizado.# Define a variable for the DNS Zone group dnsZoneGroupName=<dns-zone-group-name> # Link the private endpoint to the Private DNS az network private-endpoint dns-zone-group create --resource-group $resourceGroupName --endpoint-name $privateEndpointName \ --name $dnsZoneGroupName --private-dns-zone $privateDNSZone --zone-name $privateDNSZonePara obter mais informações, consulte a referência do comando az network private-endpoint dns-zone-group create.
Confirme se o acesso direto ao seu endpoint privado está negado.
Quando você cria um ponto de extremidade privado para um aplicativo do Serviço de Aplicativo, o acesso público é desabilitado implicitamente. Se você tentar acessar seu aplicativo Web de back-end usando sua URL padrão, seu acesso será negado.
Em um navegador, insira a URL padrão para seu aplicativo Web de back-end, como
<backend-app-name>.azurewebsites.net.A mensagem do navegador indica que o acesso direto foi negado:
Para obter mais informações sobre restrições de ao Serviço de Aplicativo com pontos de extremidade privados, confira Restrições de acesso ao Serviço de Aplicativo do Azure.
Configurar a integração de rede virtual
Depois de criar a infraestrutura de rede virtual, você pode configurar a integração de rede virtual em seu aplicativo Web de front-end. A integração de rede virtual permite que o tráfego de saída flua diretamente para a rede virtual. Por padrão, somente o tráfego IP local definido no protocolo Espaço de Endereços Privados RFC-1918 > é roteado para a rede virtual. Esse nível de roteamento é necessário para ativar endpoints privados.
Habilite a integração de rede virtual em seu aplicativo Web de front-end. O comando a seguir pressupõe que a sub-rede e o aplicativo Web estejam localizados no mesmo grupo de recursos.
az webapp vnet-integration add --resource-group $resourceGroupName --name $frontendAppName --vnet $virtualNetworkName --subnet $networkIntegrationSubnet
Para obter mais informações, consulte a referência do comando az webapp vnet-integration add.
Para rotear todo o tráfego para a rede virtual, consulte Gerenciar o roteamento de integração de rede virtual. O roteamento de todo o tráfego também poderá ser usado se você quiser rotear o tráfego da Internet por meio de sua rede virtual, como por meio de uma NAT Rede Virtual do Azure ou Firewall do Azure.
Habilitar a implantação para a aplicação web de back-end
Como seu aplicativo Web de back-end não está acessível publicamente, você deve permitir que sua ferramenta de implantação contínua acesse seu aplicativo tornando o site do SCM publicamente acessível pela Internet. O aplicativo Web principal pode continuar negando todo o tráfego.
Habilite o acesso público para o aplicativo Web de back-end.
az webapp update --resource-group $resourceGroupName --name $backendAppName --set publicNetworkAccess=EnabledDefina a ação de regra sem correspondência para o aplicativo Web principal a fim de negar todo o tráfego.
Essa configuração nega o acesso público ao aplicativo Web principal, mesmo que a configuração de acesso geral do aplicativo esteja definida para permitir o acesso público.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=DenyDefina a ação de regra sem correspondência para o site do SCM a fim de permitir todo o tráfego.
az resource update --resource-group $resourceGroupName --name $backendAppName --namespace Microsoft.Web \ --resource-type sites --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow
Restringir o acesso de FTP e SCM
Como o site do SCM de back-end é acessível publicamente, você precisa bloqueá-lo com melhor segurança.
Desative o acesso FTP para o aplicativo web de front-end e back-end:
az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name ftp --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=falseDesabilite o acesso por autenticação básica às portas do WebDeploy e aos sites do SCM/de ferramentas avançadas para ambos os aplicativos web:
az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<frontend-app-name> --set properties.allow=false az resource update --resource-group $resourceGroupName --name scm --namespace Microsoft.Web \ --resource-type basicPublishingCredentialsPolicies --parent sites/<backend-app-name> --set properties.allow=false
Ao desabilitar a autenticação básica no App Service, você limita o acesso aos pontos de extremidade FTP e SCM aos usuários registrados no Microsoft Entra ID. Essa ação protege ainda mais seus aplicativos. Para obter mais informações sobre como desabilitar a autenticação básica, incluindo como testar e monitorar logons, consulte Desabilitando a autenticação básica no Serviço de Aplicativo.
Configurar a implantação contínua com GitHub Actions
Para este procedimento, você precisa de dois aplicativos prontos para implantar em seus aplicativos de front-end e back-end do Serviço de Aplicativo. Para acessar os aplicativos Web, você precisa de uma entidade de serviço e uma implantação contínua com GitHub Actions.
Obter aplicativos Web para teste de implantação
Os repositórios Azure Samples em GitHub fornecem aplicativos Node.js de exemplo para implantação.
Em um navegador, vá para o aplicativo de exemplo Node.js Back-end.
Bifurque o repositório GitHub para que você tenha sua própria cópia para fazer alterações. Este exemplo cria um aplicativo 'Olá, Mundo'. Você implanta esse aplicativo em seu aplicativo Web de back-end.
Repita o mesmo processo para o aplicativo de exemplo Node.js Frontend.
Bifurque o repositório GitHub para que você tenha sua própria cópia para fazer alterações. Este exemplo cria um aplicativo Web que busca e exibe o conteúdo de uma URL. Você implanta esse aplicativo em seu aplicativo Web de front-end.
Configurar a entidade de serviço
Você precisa de uma entidade de serviço para o seu aplicativo Web de front-end e o seu aplicativo Web de back-end.
Crie uma entidade de serviço.
Defina o marcador
<service-principal-name>com o nome da sua nova principal de serviço, comozava-service-principal.Substitua os outros valores do parâmetro
<placeholder>pelas informações dos seus próprios recursos.# Define a variable for the service principal name servicePrincipalName=<service-principal-name> # Link the private endpoint to the Private DNS az ad sp create-for-rbac --name <service-principal-name> --role contributor --scopes \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<frontend-app-name> \ /subscriptions/<subscription-ID>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<backend-app-name>A saída é um objeto JSON com as credenciais de atribuição de função que fornecem acesso a seus aplicativos do Serviço de Aplicativo.
{ "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "displayName": "<service-principal-name>", "password": "0Aa!1Bb!2Cc!3Dd!4Ee!5Ff!6Gg!7Hh!8Ii!9Jj!", "tenantId": "aaaabbbb-6666-cccc-7777-dddd8888eeee" }O JSON inclui a senha do service principal, que está visível apenas neste momento.
Dica
É uma boa prática conceder acesso mínimo. Neste exemplo, o escopo é limitado apenas aos aplicativos, não a todo o grupo de recursos.
Copie o objeto JSON para que você tenha um registro do nome da entidade de serviço.
Forneça suas credenciais de entidade de serviço para a operação de entrar no Azure como parte do fluxo de trabalho do GitHub Actions.
Armazene as credenciais como segredos do GitHub, que são referenciados no seu fluxo de trabalho.
No navegador, acesse o repositório derivado do seu aplicativo de back-end em Node.js no GitHub.
Vá para Configurações> Segredosde Segurança>e variáveis>Ações.
Selecione Novo segredo do repositório e crie um segredo para cada uma das configurações a seguir.
Use os valores da saída JSON.
Configuração Valor Exemplo AZURE_CLIENT_ID <application/client-id>00001111-aaaa-2222-bbbb-3333cccc4444AZURE_TENANT_ID <tenant-id>aaaabbbb-6666-cccc-7777-dddd8888eeeeAZURE_SUBSCRIPTION_ID <subscription-id>cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6aRepita esse processo para o repositório bifurcado do aplicativo de Node.js de front-end no GitHub.
Configurar a implantação contínua com GitHub Actions
Você pode configurar a implantação contínua com GitHub Actions.
No portal Azure, acesse a página Overview para seu aplicativo Web de front-end.
No menu à esquerda, selecione Implantação>Centro de Implantação.
Na guia Settings, defina a opção Source como GitHub:
Ao realizar a primeira implantação pelo GitHub, selecione Autorizar e siga os prompts de autorização. Para usar o repositório de um usuário diferente, selecione Alterar conta.
Depois de autorizar sua conta de Azure com GitHub, selecione o Organization, Repository e Branch para configurar CI/CD. Se você não conseguir encontrar uma organização ou repositório, talvez seja necessário habilitar mais permissões no GitHub. Para obter mais informações, consulte Gerenciar o acesso do usuário aos repositórios da sua organização.
Configuração Valor Organização <your-GitHub-organization>Repositório <forked-repository-name>Branch principal Clique em Salvar.
Repita esse processo para o seu aplicativo web backend e o repositório derivado do fork correspondente.
Validar conexões e acesso ao aplicativo
Agora você está pronto para verificar as conexões e o acesso aos seus aplicativos Web de front-end e back-end.
Tente acessar diretamente o seu aplicativo web backend com a URL dele,
https://<backend-app-name>.azurewebsites.net.Você deverá ver a seguinte mensagem do navegador:
Se você puder acessar o aplicativo, verifique sua configuração:
Confirme se o ponto de extremidade privado está configurado corretamente.
Confirme se as restrições de acesso para seu aplicativo estão definidas para negar todo o tráfego para o aplicativo Web principal.
Agora tente acessar diretamente seu aplicativo web frontend usando a URL
https://<frontend-app-name>.azurewebsites.net.Quando a conexão for bem-sucedida, você verá a seguinte página:
Na caixa de URL, insira a URL do seu aplicativo web de back-end,
https://<backend-app-name>.azurewebsites.net, e selecione Buscar.Se você configurar as conexões corretamente, a página será atualizada para mostrar o conteúdo da mensagem do aplicativo Web de back-end:
Todo o tráfego de saída do aplicativo Web de front-end é roteado pela rede virtual. Seu aplicativo Web de front-end está se conectando com segurança ao seu aplicativo Web de back-end por meio do ponto de extremidade privado.
Se algo estiver errado com suas conexões, você verá a mensagem Erro 403 – Proibido na saída.
Estabelecer uma sessão SSH e abrir um shell remoto
Valide se o aplicativo Web de front-end está atingindo o aplicativo Web de back-end por meio do link privado usando SSH para uma instância de front-end.
Estabeleça uma sessão SSH para o contêiner da Web do seu aplicativo e abra um shell remoto no navegador:
az webapp ssh --resource-group $resourceGroupName --name $frontendAppNamePara obter mais informações, consulte a referência de comando ssh do az webapp.
Depois que o shell abrir no navegador, confirme se seu aplicativo web de back-end está sendo acessado usando o endereço IP privado desse aplicativo web de back-end.
Nos comandos a seguir, substitua os valores do parâmetro
<placeholder>pelas informações do seu próprio recurso.Executar o comando
nslookup:nslookup <backend-app-name>.azurewebsites.netExecute o
curlcomando para validar o conteúdo do site novamente:curl https://<backend-app-name>.azurewebsites.net
O comando
nslookupdeve ser resolvido como o endereço IP privado do seu aplicativo Web de back-end. O endereço IP privado deve ser um endereço de sua rede virtual.Você pode confirmar seu endereço IP privado no portal do Azure. Vá para a página Configurações>Rede do seu aplicativo web de back-end.
Repita os mesmos comandos
nslookupecurlem outro terminal (um que não seja uma sessão SSH nas suas instâncias de front-end).
O
nslookupcomando retorna o IP público para o aplicativo Web de back-end. Como o acesso público ao aplicativo Web de back-end está desabilitado, se você tentar acessar o IP público, receberá um erro de acesso negado. Esse erro significa que o site não está acessível pela Internet pública, que é o comportamento pretendido.O
nslookupcomando não é resolvido para o IP privado porque o endereço é resolvível somente de dentro da rede virtual por meio da zona DNS privada. Somente o aplicativo Web de front-end está dentro da rede virtual. Se você tentar executar ocurlcomando no aplicativo Web de back-end do terminal externo, o HTML retornado conterá a mensagem Erro 403, Proibido – o aplicativo Web que você tentou acessar bloqueou seu acesso. Alguns terminais também exibem o mesmo HTML que a página de erro retornada quando você tenta acessar diretamente o aplicativo Web de back-end.
Limpar os recursos
Nas etapas anteriores, você criou os recursos do Azure em um grupo de recursos. Se você acha que não precisará desses recursos no futuro, exclua o grupo de recursos executando o seguinte comando no Cloud Shell.
Substitua o valor do <placeholder> parâmetro pelas informações do seu próprio recurso:
az group delete --name <resource-group>
Esse comando pode levar vários minutos para ser concluído.
Perguntas frequentes
Neste tutorial, você implantou uma infraestrutura de linha de base para dar suporte a um aplicativo Web seguro de N camadas. O Serviço de Aplicativo fornece recursos que podem ajudá-lo a garantir que você esteja executando aplicativos que seguem as melhores práticas e recomendações de segurança.
Esta seção contém respostas para perguntas frequentes que podem ajudá-lo a proteger ainda mais seus aplicativos e implantar e gerenciar seus recursos de acordo com as práticas recomendadas.
Implantar com outros métodos além de uma entidade de serviço
Neste tutorial, você desabilitou a autenticação básica. Você não pode se autenticar no site de SCM de back-end com um nome de usuário e senha nem com um perfil de publicação. No entanto, em vez de fazer a autenticação usando uma entidade de serviço, você pode usar as credenciais do OpenID Connect .
Configurar a implantação com o GitHub Actions no App Service
Azure gera automaticamente um arquivo de fluxo de trabalho em seu repositório. Novos commits no repositório e na branch selecionados são implantados continuamente no seu aplicativo do App Service. Você pode acompanhar as confirmações e implantações na guia Logs no GitHub.
Um arquivo de fluxo de trabalho padrão que usa um perfil de publicação para autenticar no Serviço de Aplicativo é adicionado ao seu repositório GitHub. Você pode exibir esse arquivo acessando o diretório <repo-name>/.github/workflows/.
Confirmar o acesso público seguro do site do SCM de back-end
Quando você restringe o acesso ao FTP e ao SCM, pode garantir que apenas identidades respaldadas pelo Microsoft Entra possam acessar o endpoint do SCM, embora o endpoint seja publicamente acessível. Essa configuração ajuda a garantir que seu aplicativo Web de back-end ainda esteja seguro.
Implantar sem um site SCM de back-end aberto
Se você estiver preocupado em habilitar o acesso público ao site do SCM ou tiver restrições de política, considere outras opções de implantação do Serviço de Aplicativo, como executar em um pacote ZIP.
Implantar essa arquitetura com um modelo
Os recursos que você criou neste tutorial podem ser implantados usando um modelo do Azure Resource Manager (ARM template) ou modelo Bicep. O aplicativo conectado a um arquivo Bicep de um aplicativo Web de back-end permite que você crie uma solução segura de aplicativo em N camadas.
Para saber como implantar modelos ARM e Bicep, consulte Deploy Bicep Files com o CLI do Azure.