Planejar e implementar configurações de segurança de rede para um ASE (Ambiente do Serviço de Aplicativo)

Concluído

Um ASE (Ambiente do Serviço de Aplicativo) é uma implantação do Serviço de Aplicativo do Azure em uma sub-rede da instância da Rede Virtual do Azure de um cliente. Um ASE é formado por:

  • Front-ends: onde termina o HTTP ou HTTPS em um Ambiente do Serviço de Aplicativo
  • Funções de Trabalho: os recursos que hospedam os aplicativos
  • Banco de Dados: contém informações que definem o ambiente
  • Armazenamento: usado para hospedar os aplicativos publicados pelo cliente

Implante um ASE com um VIP (IP virtual) externo ou interno para o acesso ao aplicativo. A implantação com um VIP externo é geralmente chamada de ASE externo. A implantação com um VIP interno é chamada de ILB ASE, porque ele usa um ILB (balanceador de carga interno).

Criar um aplicativo em um ASE

Para criar um aplicativo em um ASE, use o mesmo processo usado ao criar o aplicativo normalmente, mas com algumas pequenas diferenças. Quando você cria um novo plano do Serviço de Aplicativos:

  • Em vez de escolher uma localização geográfica na qual implantar o aplicativo, escolha um ASE como a localização.
  • Todos os planos do Serviço de Aplicativo criados em um ASE só podem estar em um tipo de preço Isolado.

Se você não tiver um ASE, crie um seguindo as instruções em Criar um Ambiente do Serviço de Aplicativo.

Para criar um aplicativo em um ASE:

  1. Selecione Criar um recurso, Web + Celular, Aplicativo Web.
  2. Insira um nome do aplicativo. Se você já selecionou um plano do Serviço de Aplicativo em um ASE, o nome de domínio do aplicativo reflete o nome de domínio do ASE:

Captura de tela mostrando um exemplo de como criar um aplicativo Web.

  1. Selecione uma assinatura.
  2. Insira um nome para um novo grupo de recursos ou selecione Usar existente e escolha um na lista suspensa.
  3. Selecione seu SO.
  4. Selecione um plano do Serviço de Aplicativo existente no ASE ou crie um novo com as seguintes etapas:
    a. No menu do lado esquerdo do portal do Azure, selecione Criar um recurso>Aplicativo Web.
    b. Selecione a assinatura.
    c. Escolha ou crie o grupo de recursos.
    d. Insira o nome do seu aplicativo Web.
    e. Selecione Código ou DockerContainer.
    f. Selecione uma pilha de runtime.
    g. Selecione Linux ou Windows.
    h. Selecione o ASE na lista suspensa Região.
    i. Selecione ou crie um novo plano do Serviço de Aplicativo. Se estiver criando um novo plano do Serviço de Aplicativo, selecione o tamanho de SKU Isolado apropriado.

Captura de tela mostrando o painel do seletor de especificação.

  1. Selecione Examinar + criar, verifique se as informações estão corretas e, em seguida, selecione Criar.

Como funciona a escala

Cada aplicativo do Serviço de Aplicativo é executado em um plano do Serviço de Aplicativo. Os Ambientes do Serviço de Aplicativo contêm os planos do Serviço de Aplicativo; que por sua vez contêm os aplicativos. Ao dimensionar um aplicativo, você também dimensionará o Plano do Serviço de Aplicativo e todos os aplicativos nesse mesmo plano.

Quando você dimensiona um Plano do Serviço de Aplicativo, a infraestrutura necessária é adicionada automaticamente. Há um atraso de tempo nas operações de escala, conforme a infraestrutura é adicionada. Se você fizer várias operações de escala em sequência, a primeira solicitação de escala de infraestrutura será acionada e as outras serão enfileiradas. Quando a primeira operação de escala for concluída, a outra infraestrutura solicitará todas as operações juntas. E, quando a infraestrutura é adicionada, os planos do Serviço de Aplicativo são atribuídos conforme apropriado. A criação de um novo plano do Serviço de Aplicativo é, por si só, uma operação de dimensionamento pois solicita hardware adicional. Uma operação de escala geralmente leva de 30 a 60 minutos para ser concluída.

No Serviço de Aplicativo multilocatário, o dimensionamento é imediato, porque um pool de recursos está imediatamente disponível para dar suporte. Em um ASE, não há nenhum buffer desse tipo e os recursos são alocados com base na necessidade.

Em um ASE, é possível escalar um plano do Serviço de Aplicativo verticalmente até 100 instâncias. Um ASE pode ter até 201 instâncias em todos os planos do Serviço de Aplicativo nesse ASE.

Endereços IP

O Serviço de Aplicativo pode alocar um endereço IP dedicado a um aplicativo. Essa funcionalidade ficará disponível depois de configurar uma associação de TLS/SSL baseado em IP, conforme descrito em Associar um certificado TLS/SSL personalizado existente Serviço de Aplicativo do Azure. Em um ASE ILB (balanceador de carga interno), não é possível adicionar mais endereços IP a serem usados para a associação TLS/SSL baseada em IP.

Com um ASE externo, você pode configurar a associação de TLS/SSL baseado em IP para seu aplicativo da mesma maneira que no Serviço de Aplicativo multilocatário. Sempre há um endereço extra no ASE, com até 30 endereços IP. Sempre que você usar um, outro será adicionado, de forma que sempre haja um endereço imediatamente disponível. É necessário um atraso para alocar outro endereço IP. Esse atraso impede a adição de endereços IP em sucessão rápida.

Dimensionamento de front-end

Ao escalar horizontalmente os planos do Serviço de Aplicativo, as funções de trabalho são adicionadas automaticamente para dar suporte a eles. Cada ASE é criado com dois front-ends. Os front-ends são automaticamente escalados horizontalmente a uma taxa de um front-end para cada conjunto de 15 instâncias do Plano do Serviço de Aplicativo. Por exemplo, se você tiver três planos de Serviço de Aplicativo com cinco instâncias cada, você terá um total de 15 instâncias e três front-ends. Se você dimensionar um total de 30 instâncias, você terá quatro front-ends. Esse padrão continua conforme você escala horizontalmente.

O número de front-ends alocados por padrão é suficiente para uma carga moderada. Você pode diminuir a taxa para um front-end para cada cinco instâncias. Você também pode alterar o tamanho dos front-ends. Por padrão, eles possuem um núcleo único. No portal do Azure, você pode alterar seu tamanho para dois ou quatro núcleos.

A alteração da taxa ou dos tamanhos de front-end é cobrada. Para saber mais, veja Preços do Serviço de Aplicativo do Azure. Se desejar melhorar a capacidade de carga de seu ASE, você obterá mais melhorias, dimensionando, primeiramente, para front-ends de dois núcleos antes de ajustar a taxa de escala. A alteração no tamanho do núcleo de seus front-ends causará uma atualização de seu ASE, e deve ser feita fora do horário comercial normal.

Os recursos do front-end são o ponto de extremidade HTTP/HTTPS do ASE. Com a configuração de front-end padrão, o uso de memória por front-end é consistentemente cerca de 60%. O principal motivo para dimensionar seus front-ends é o uso da CPU, que é basicamente controlada pelo tráfego HTTPS.

Acesso ao aplicativo

Em um ASE Externo, o sufixo do domínio usado para a criação do aplicativo é .<asename>.p.azurewebsites.net. Se o ASE for nomeado como external-ase e você hospedar um aplicativo chamado contoso nesse ASE, você o alcançará nessas URLs:

  • contoso.external-ase.p.azurewebsites.net
  • contoso.scm.external-ase.p.azurewebsites.net

Em um ASE ILB, o sufixo de domínio usado para a criação do aplicativo é .<asename>.appserviceenvironment.net. Se o ASE for chamado ilb-ase e você hospedar um aplicativo chamado contoso nesse ASE, você o acessaria nas seguintes URLs:

  • contoso.ilb-ase.appserviceenvironment.net
  • contoso.scm.ilb-ase.appserviceenvironment.net

A URL do SCM (Gerenciamento de Configuração de Software) é usada para acessar o console do Kudu ou publicar seu aplicativo usando a Implantação da Web. O console do Kudu fornece uma interface do usuário da Web para depuração, upload de arquivos, edição de arquivos e muito mais.

Configuração de DNS

Quando você usa um ASE Externo, os aplicativos criados no ASE são registrados com o DNS do Azure. Não há etapas adicionais em um ASE Externo para os aplicativos fiquem disponíveis publicamente. Com um ASE do ILB, você precisa gerenciar seu DNS. Você pode fazer isso em seu servidor DNS ou em Zonas Privadas do DNS do Azure.

Para configurar o DNS em seu servidor DNS com o ASE do ILB:

  1. Criar uma zona para o <nome do ASE>.appserviceenvironment.net
  2. Criar um registro A nessa zona que aponte * para o endereço IP ILB
  3. Criar um registro A nessa zona que aponte @ para o endereço IP ILB
  4. Criar uma zona no <nome do ASE>.appserviceenvironment.net chamada scm
  5. Criar um registro A na zona scm que aponta * para o endereço IP ILB

Para configurar o DNS em Zonas Privadas do DNS do Azure:

  1. Criar uma zona privada DNS do Azure chamada <Nome do ASE>.appserviceenvironment.net
  2. Criar um registro A nessa zona que aponte * para o endereço IP ILB
  3. Criar um registro A nessa zona que aponte @ para o endereço IP ILB
  4. Criar um registro A nessa zona que aponte *.scm para o endereço IP ILB

As configurações de DNS do sufixo de domínio padrão do ASE não restringem seus aplicativos a serem acessados apenas por esses nomes. Você pode definir um nome de domínio personalizado sem nenhuma validação em seus aplicativos em um ASE do ILB. Se quiser criar uma zona chamada contoso.net, você poderá fazer isso e apontá-la para o endereço IP do ILB. O nome de domínio personalizado funciona para solicitações de aplicativo, mas não para o site do scm. O site do scm só está disponível em <appname>.scm.<asename>.appserviceenvironment.net.

A zona chamada .<asename>.appserviceenvironment.net é globalmente exclusiva. Antes de maio de 2019, os usuários podiam especificar o sufixo de domínio do ASE do ILB. Se quisesse usar .contoso.com como sufixo de domínio, você poderia fazer isso e o site do scm seria incluído. Havia desafios com esse modelo, incluindo o gerenciamento do certificado TLS/SSL padrão, a falta de logon único com o site do SCM e a necessidade de usar um certificado curinga. O processo de atualização de certificado padrão do ASE do ILB também era problemático e causava a reinicialização do aplicativo. Para resolver esses problemas, o comportamento do ASE do ILB foi alterado de maneira a passar a usar um sufixo de domínio baseado no nome do ASE e com um sufixo de propriedade da Microsoft. A alteração no comportamento do ASE do ILB afeta apenas o ASEs do ILB criados após maio de 2019. Os ASEs ILB preexistentes ainda devem gerenciar o certificado padrão do ASE e sua configuração de DNS. Se o ASE ILB V2 tiver sido criado após maio de 2019, você não precisará gerenciar o certificado padrão do ILB, pois ele é gerenciado pela Microsoft.

Publicando

Em um ASE, assim como ocorre com o Serviço de Aplicativo multilocatário, é possível publicar por meio destes métodos:

  • Implantação da Web
  • FTP
  • CI (Integração contínua)
  • Operação de arrastar e soltar no console do Kudu
  • Um IDE como o Visual Studio, Eclipse ou IntelliJ IDEA

Com um ASE externo, todas essas opções de publicação atuam da mesma maneira. Para saber mais, veja Implantação no Serviço de Aplicativo do Azure.

Com um ILB ASE, os pontos de extremidade de publicação estão disponíveis apenas por meio do ILB. O ILB está em um IP privado na sub-rede do ASE, na rede virtual. Se você não tiver acesso à rede ao ILB, não poderá publicar nenhum aplicativo nesse ASE. Conforme observado em Criar e usar um ASE ILB, você deve configurar o DNS para os aplicativos no sistema. Este requisito inclui o ponto de extremidade SCM. Se os pontos de extremidade não estiverem definidos corretamente, você não poderá publicar. Os IDEs também precisam ter acesso à rede ao ILB para publicar diretamente nele.

Sem alterações adicionais, os sistemas de CI baseados na Internet, como GitHub e Azure DevOps, não funcionam com um ILB ASE, pois o ponto de extremidade de publicação não pode ser acessado pela Internet. Você pode habilitar a publicação em um ILB ASE do Azure DevOps instalando um agente de liberação auto-hospedado na rede virtual que contém o ILB ASE. Alternativamente, você também pode usar um sistema de CI que usa um modelo pull, como o Dropbox.

Os pontos de extremidade de publicação para aplicativos em um ASE ILB usam o domínio com o qual o ASE ILB foi criado. Você pode vê-lo no perfil de publicação do aplicativo e no painel do portal do aplicativo (em Visão Geral > Essentials e também em Propriedades).

Armazenamento

Um ASE tem 1 TB de armazenamento para todos os aplicativos no ASE. Um Plano do Serviço de Aplicativo na SKU de preço Isolado tem um limite de 250 GB. Em um ASE, 250 GB de armazenamento são adicionados por Plano do Serviço de Aplicativo até o limite de 1 TB. Você pode ter mais do que quatro Planos do Serviço de Aplicativo, mas nenhum armazenamento além do limite de 1 TB é adicionado.

Monitoramento

Como cliente, você deve monitorar os planos do Serviço de Aplicativo e os aplicativos individuais em execução e executar as ações apropriadas. Para o Ambiente do Serviço de Aplicativo v2, você também deve prestar atenção às métricas em torno da infraestrutura da plataforma. Essas métricas lhe darão insights sobre como a infraestrutura de plataforma e os servidores front-end (multifunções) estão se saindo, e você poderá tomar medidas se eles são muito utilizados e você não estiver recebendo a taxa de transferência máxima.

Por meio do portal do Azure e da CLI, é possível e configurar a taxa de escala dos servidores front-end entre 5 e 15 (padrão 15) instâncias do plano do Serviço de Aplicativo por servidor front-end. Um Ambiente do Serviço de Aplicativo sempre terá um mínimo de dois servidores front-end. Você também pode aumentar o tamanho dos servidores front-end.

O escopo de métricas usado para monitorar a infraestrutura de plataforma é chamado Microsoft.Web/hostingEnvironments/multiRolePools.

Você verá um escopo chamado Microsoft.Web/hostingEnvironments/workerPools. As métricas aqui só são aplicáveis ao Ambiente do Serviço de Aplicativo v1.

Log

Você pode integrar o ASE ao Azure Monitor para enviar logs sobre o ASE para o Armazenamento do Microsoft Azure, os Hubs de Eventos do Azure ou o Log Analytics. Estes itens estão registrados hoje:

Situação Message
ASE não íntegro O ASE especificado não está íntegro devido a uma configuração de rede virtual inválida. O ASE será suspenso se o estado não íntegro continuar.
A sub-rede do ASE está quase sem espaço O ASE especificado está em uma sub-rede que está quase sem espaço. Há {0} endereços restantes. Depois que esses endereços forem esgotados, o ASE não poderá ser dimensionado.
O ASE está se aproximando do limite de instância total O ASE especificado está se aproximando do limite de instância total do ASE. Atualmente, ele contém {0} instâncias do Plano do Serviço de Aplicativo de um máximo de 201 instâncias.
O ASE não consegue alcançar uma dependência O ASE especificado não pode alcançar {0}.
O ASE está suspenso O ASE especificado está suspenso. A suspensão do ASE pode ser devido a uma deficiência de conta ou uma configuração inválida da rede virtual. Resolva a causa raiz e retome o ASE para continuar fornecendo tráfego.
A atualização do ASE foi iniciada Uma atualização da plataforma para o ASE especificado foi iniciada. Atrasos nas operações de dimensionamento são esperados.
A atualização do ASE foi concluída Uma atualização da plataforma para o ASE especificado foi concluída.
Operações de escala iniciadas Um Plano do Serviço de Aplicativo ({0}) começou a ser colocado em escala. Status desejado: {1} I{2} trabalhos.
As operações de escala foram concluídas Um Plano do Serviço de Aplicativo ({0}) terminou de ser colocado em escala. Estado atual: {1} I{2} trabalhos.
Falha nas operações de escala Um Plano do Serviço de Aplicativo ({0}) falhou ao ser escalado. Estado atual: {1} I{2} trabalhos.

Para habilitar o registro em log em seu ASE:

  1. No portal, vá para Configurações de diagnóstico.
  2. Selecione Adicionar configuração de diagnóstico.
  3. Forneça um nome para a integração de log.
  4. Selecione e configure os destinos de log desejados.
  5. Selecione AppServiceEnvironmentPlatformLogs.

Captura de tela mostrando a página de configurações de diagnóstico.

Se você se integrar ao Log Analytics, poderá ver os logs selecionando Logs no portal do ASE e criando uma consulta em AppServiceEnvironmentPlatformLogs. Os logs são emitidos somente quando o ASE tem um evento que vai dispará-los. Se o ASE não tiver tal evento, não haverá nenhum log. Para ver rapidamente um exemplo de logs em seu workspace do Log Analytics, execute uma operação de escala com um dos Planos do Serviço de Aplicativo em seu ASE. Em seguida, você pode fazer uma consulta em AppServiceEnvironmentPlatformLogs para ver esses logs.

Criando um alerta

Para criar um alerta em seus logs, siga as instruções fornecidas em Criar, exibir e gerenciar alertas de log usando o Azure Monitor. Em resumo:

  • Abra a página Alertas em seu portal do ASE
  • Selecione Nova regra de alerta
  • Selecione seu Recurso para ser seu workspace do Log Analytics
  • Defina sua condição com uma pesquisa de logs personalizada para usar uma consulta como "AppServiceEnvironmentPlatformLogs | em que ResultDescription contém "começou a ser colocado em escala" ou o que você desejar. Defina o limite conforme apropriado.
  • Adicione ou crie um grupo de ação conforme desejado. O grupo de ações é onde você define a resposta para o alerta, como enviar um email ou uma mensagem de SMS
  • Nomeie o alerta e salve-o.

Preferência de atualização

Se você tiver vários ASEs, talvez queira que alguns ASEs sejam atualizados antes de outros. Esse comportamento pode ser habilitado por meio do portal do ASE. Em Configuração, você tem a opção de definir Atualizar preferência. Os três valores possíveis são:

  • Nenhum: o Azure atualizará seu ASE em qualquer lote. Esse valor é o padrão.
  • Antecipado: seu ASE será atualizado na primeira metade das atualizações do Serviço de Aplicativo.
  • Tardio: seu ASE será atualizado na segunda metade das atualizações do Serviço de Aplicativo.

Selecione o valor desejado e selecione Salvar. O padrão para qualquer ASE é Nenhum.

Captura de tela mostrando a página de configuração do ambiente do serviço de aplicativo.

O recurso upgradePreferences faz mais sentido quando você tem vários ASEs, pois seus ASEs "Antecipados" serãos atualizados antes de seus ASEs "Tardios". Quando você tiver vários ASEs, defina seu ASEs de desenvolvimento e teste como "Antecipado" e seus ASEs de produção como "Tardio".

Preços

O SKU de preço chamado Isolado é para uso apenas com ASEs. Todos os planos do Serviço de Aplicativo que são hospedados no ASE estão no SKU de preços Isolado. As taxas isoladas para os planos do Serviço de Aplicativo podem variar de acordo com a região.

Além do preço dos planos do Serviço de Aplicativo, há um valor fixo para o ASE em si. Esse preço fixo não é alterado com base no tamanho do ASE. Ele paga a infraestrutura do ASE em uma taxa de escala padrão de um front-end adicional para cada 15 instâncias do plano do Serviço de Aplicativo.

Se a taxa de escala padrão de um front-end para cada 15 instâncias do plano do Serviço de Aplicativo não for rápida o suficiente, você poderá ajustar a taxa na qual front-ends são adicionados ou o tamanho dos front-ends. Ao ajustar a taxa ou o tamanho, pagará pelos núcleos de front-end que não seriam adicionados por padrão.

Por exemplo, se você ajustar a taxa de escala para 10, um front-end será adicionado para cada 10 instâncias nos planos do Serviço de Aplicativo. O valor fixo abrange uma taxa de escala de um front-end para cada 15 instâncias. Com uma taxa escala de 10, você pode pagar uma taxa para o terceiro front-end adicionado para as 10 instâncias de plano de Serviço de Aplicativo. Você não precisará pagar por ele quando você chegar a 15 instâncias porque ele terá sido adicionado automaticamente.

Se você ajustar o tamanho dos front-ends para dois núcleos, mas não ajustar a taxa, você pagará pelos núcleos extras. Um ASE é criado com dois front-ends, então, até mesmo abaixo do limite de dimensionamento automático você pagaria por dois núcleos adicionais se aumentasse o tamanho para front-ends com dois núcleos.

Excluir um ASE

Para excluir um ASE:

  1. Selecione Excluir na parte superior do painel Ambiente do Serviço de Aplicativo. Insira o nome do seu ASE para confirmar que deseja excluí-lo. Quando você exclui um ASE, exclui todo o conteúdo dentro dele também.
  2. Selecione OK.

Captura de tela mostrando como excluir um ambiente de serviço de aplicativo.

CLI do ASE

Há recursos de linha de comando a serem administrados em um ASE. Os comandos da CLI do Azure estão indicados abaixo.

C:\>az appservice ase --help Group az appservice ase : Manage App Service Environments v2. This command group is in preview. It may be changed/removed in a future release. Commands: create : Create app service environment. delete : Delete app service environment. list : List app service environments. list-addresses : List VIPs associated with an app service environment. list-plans : List app service plans associated with an app service environment. show : Show details of an app service environment. update : Update app service environment. For more specific examples, use: az find "az appservice ase"