Segurança no Serviço de Aplicativo do AzureSecurity in Azure App Service

Este artigo mostra como o Serviço de Aplicativo do Azure ajuda a proteger o aplicativo Web, back-end de aplicativo móvel, aplicativo de API e aplicativo de funções.This article shows you how Azure App Service helps secure your web app, mobile app back end, API app, and function app. Ele também mostra como é possível proteger ainda mais o aplicativo com os recursos internos do Serviço de Aplicativo.It also shows how you can further secure your app with the built-in App Service features.

Os componentes de plataforma do Serviço de Aplicativo, incluindo VMs do Azure, armazenamento, conexões de rede, estruturas da Web, recursos de integração e gerenciamento, são ativamente seguros e protegidos.The platform components of App Service, including Azure VMs, storage, network connections, web frameworks, management and integration features, are actively secured and hardened. O Serviço de Aplicativo passa por verificações de conformidade rigorosas continuamente para garantir que:App Service goes through vigorous compliance checks on a continuous basis to make sure that:

  • Os recursos do aplicativo estejam protegidos dos recursos do Azure de outros clientes.Your app resources are secured from the other customers' Azure resources.
  • Instâncias de VM e software de runtime são atualizados regularmente para tratar vulnerabilidades recentemente descobertas.VM instances and runtime software are regularly updated to address newly discovered vulnerabilities.
  • A comunicação de segredos (como cadeias de conexão) entre o aplicativo e outros recursos do Azure (como Banco de Dados SQL) permanece no Azure e não ultrapassa limites de rede.Communication of secrets (such as connection strings) between your app and other Azure resources (such as SQL Database) stays within Azure and doesn't cross any network boundaries. Segredos sempre são criptografados quando armazenados.Secrets are always encrypted when stored.
  • Toda a comunicação sobre os recursos de conectividade do Serviço de Aplicativo, como conexão híbrida, é criptografada.All communication over the App Service connectivity features, such as hybrid connection, is encrypted.
  • As conexões com ferramentas de gerenciamento remoto como Azure PowerShell, CLI do Azure, SDKs do Azure, APIs REST são todas criptografadas.Connections with remote management tools like Azure PowerShell, Azure CLI, Azure SDKs, REST APIs, are all encrypted.
  • O gerenciamento de ameaças 24 horas protege a infraestrutura e a plataforma contra malware, ataque de DDoS (negação de serviço distribuído), MITM (man-in-the-middle) e outras ameaças.24-hour threat management protects the infrastructure and platform against malware, distributed denial-of-service (DDoS), man-in-the-middle (MITM), and other threats.

Para saber mais sobre segurança de plataforma e infraestrutura no Azure, confira Centro de Confiabilidade do Azure.For more information on infrastructure and platform security in Azure, see Azure Trust Center.

As seções a seguir mostram como proteger ainda mais o aplicativo do Serviço de Aplicativo contra ameaças.The following sections show you how to further protect your App Service app from threats.

HTTPS e certificadosHTTPS and Certificates

O Serviço de Aplicativo permite que você proteja os aplicativos com HTTPS.App Service lets you secure your apps with HTTPS. Quando seu aplicativo é criado, seu nome de domínio padrão ( <app_name> . azurewebsites.net) já está acessível usando HTTPS.When your app is created, its default domain name (<app_name>.azurewebsites.net) is already accessible using HTTPS. Se você configurar um domínio personalizado para o aplicativo, também deverá protegê-lo com um certificado TLS/SSL para que os navegadores do cliente possam estabelecer conexões HTTPS seguras com o domínio personalizado.If you configure a custom domain for your app, you should also secure it with a TLS/SSL certificate so that client browsers can make secured HTTPS connections to your custom domain. Há vários tipos de certificados compatíveis com o Serviço de Aplicativo:There are several types of certificates supported by App Service:

  • Certificado gerenciado do Serviço de Aplicativo gratuitoFree App Service Managed Certificate
  • Certificado de Serviço de AplicativoApp Service certificate
  • Certificado de terceirosThird-party certificate
  • Certificado importado do Azure Key VaultCertificate imported from Azure Key Vault

Para obter mais informações, confira Adicionar um certificado TLS/SSL no Serviço de Aplicativo do Azure.For more information, see Add a TLS/SSL certificate in Azure App Service.

Protocolos não seguros (HTTP, TLS 1.0, FTP)Insecure protocols (HTTP, TLS 1.0, FTP)

Para proteger o aplicativo contra todas as conexões não criptografadas (HTTP), o Serviço de Aplicativo fornece configuração com um clique para impor o HTTPS.To secure your app against all unencrypted (HTTP) connections, App Service provides one-click configuration to enforce HTTPS. As solicitações não seguras serão recusadas antes mesmo de alcançarem o código do aplicativo.Unsecured requests are turned away before they even reach your application code. Para mais informações, consulte Impor o HTTPS.For more information, see Enforce HTTPS.

TLS 1.0 não é mais considerado seguro pelos padrões do setor, como PCI DSS.TLS 1.0 is no longer considered secure by industry standards, such as PCI DSS. O Serviço de Aplicativo permite desabilitar os protocolos desatualizados impondo o TLS 1.1/1.2.App Service lets you disable outdated protocols by enforcing TLS 1.1/1.2.

O Serviço de Aplicativo dá suporte ao FTP e FTPS para implantar os arquivos.App Service supports both FTP and FTPS for deploying your files. No entanto, utilize FTPS em vez de FTP, se possível.However, FTPS should be used instead of FTP, if at all possible. Quando um ou ambos os protocolos não estiverem em uso será necessário desabilitá-los.When one or both of these protocols are not in use, you should disable them.

Restrições de IP estáticoStatic IP restrictions

Por padrão, o aplicativo do Serviço de Aplicativo aceita solicitações de todos os endereços IP da Internet, mas é possível limitar esse acesso a um pequeno subconjunto de endereços IP.By default, your App Service app accepts requests from all IP addresses from the internet, but you can limit that access to a small subset of IP addresses. O Serviço de Aplicativo no Windows permite definir uma lista de endereços IP com permissão para acessar o aplicativo.App Service on Windows lets you define a list of IP addresses that are allowed to access your app. A lista permitida pode incluir endereços IP individuais ou um intervalo de endereços IP definidos por uma máscara de sub-rede.The allowed list can include individual IP addresses or a range of IP addresses defined by a subnet mask. Para obter mais informações, consulte Restrições de IP estático do Serviço de Aplicativo do Azure.For more information, see Azure App Service Static IP Restrictions.

Para o serviço de aplicativo no Windows, você também pode restringir os endereços IP dinamicamente Configurando o web.config. Para obter mais informações, consulte <dynamicIpSecurity> segurança de IP dinâmico.For App Service on Windows, you can also restrict IP addresses dynamically by configuring the web.config. For more information, see Dynamic IP Security <dynamicIpSecurity>.

Autenticação e autorização do clienteClient authentication and authorization

O Serviço de Aplicativo do Azure fornece autenticação e autorização imediata de usuários ou aplicativos clientes.Azure App Service provides turn-key authentication and authorization of users or client apps. Quando habilitado, ele pode entrar em usuários e aplicativos clientes com pouco ou nenhum código do aplicativo.When enabled, it can sign in users and client apps with little or no application code. É possível implementar sua própria solução de autorização e autenticação ou permitir que o Serviço de Aplicativo processa isso para você.You may implement your own authentication and authorization solution, or allow App Service to handle it for you instead. O módulo de autenticação e autorização processa solicitações da Web antes de entregá-las ao código do aplicativo e nega solicitações não autorizadas antes que elas atinjam o código.The authentication and authorization module handles web requests before handing them off to your application code, and it denies unauthorized requests before they reach your code.

A autenticação e autorização do Serviço de Aplicativo dão suporte a vários provedores de autenticação, incluindo o Azure Active Directory, contas da Microsoft, Facebook, Google e Twitter.App Service authentication and authorization support multiple authentication providers, including Azure Active Directory, Microsoft accounts, Facebook, Google, and Twitter. Para saber mais, confira Autenticação e autorização no Serviço de Aplicativo do Azure.For more information, see Authentication and authorization in Azure App Service.

Autenticação serviço a serviçoService-to-service authentication

Ao autenticar um serviço de back-end, o Serviço de Aplicativo fornece dois mecanismos diferentes, dependendo da necessidade:When authenticating against a back-end service, App Service provides two different mechanisms depending on your need:

Conectividade para recursos remotosConnectivity to remote resources

Há três tipos de recursos remotos que o aplicativo pode precisar acessar:There are three types of remote resources your app may need to access:

Em cada um desses casos, o Serviço de Aplicativo fornece uma maneira para fazer conexões seguras, no entanto, você ainda deve observar as melhores práticas de segurança.In each of these cases, App Service provides a way for you to make secure connections, but you should still observe security best practices. Por exemplo, sempre use conexões criptografadas mesmo se o recurso de back-end permitir conexões não criptografadas.For example, always use encrypted connections even if the back-end resource allows unencrypted connections. Além disso, verifique se o serviço back-end do Azure permite o conjunto mínimo de endereços IP.Furthermore, make sure that your back-end Azure service allows the minimum set of IP addresses. É possível localizar os endereços IP de saída para aplicativo em Endereços IP de entrada e saída no Serviço de Aplicativo do Azure.You can find the outbound IP addresses for your app at Inbound and outbound IP addresses in Azure App Service.

Recursos do AzureAzure resources

Quando o aplicativo conecta os recursos do Azure, como Banco de Dados SQL e Armazenamento do Microsoft Azure, a conexão permanece no Azure e não ultrapassa limites de rede.When your app connects to Azure resources, such as SQL Database and Azure Storage, the connection stays within Azure and doesn't cross any network boundaries. No entanto, a conexão passa pela rede compartilhada no Azure e, portanto, sempre verifique se a conexão está criptografada.However, the connection goes through the shared networking in Azure, so always make sure that your connection is encrypted.

Se o aplicativo estiver hospedado em um ambiente do Serviço de Aplicativo , você deverá conectar os serviços do Azure com suporte usando pontos de extremidade de serviço de Rede Virtual.If your app is hosted in an App Service environment, you should connect to supported Azure services using Virtual Network service endpoints.

Recursos dentro de uma Rede Virtual do Microsoft AzureResources inside an Azure Virtual Network

O aplicativo pode acessar recursos em uma Rede Virtual do Microsoft Azure através da integração de Rede Virtual.Your app can access resources in an Azure Virtual Network through Virtual Network integration. A integração é estabelecida com uma Rede Virtual usando uma VPN ponto a site.The integration is established with a Virtual Network using a point-to-site VPN. O aplicativo pode acessar os recursos na rede virtual usando os endereços IP privados.The app can then access the resources in the Virtual Network using their private IP addresses. A conexão ponto a site, no entanto, ainda ultrapassa as redes compartilhadas no Azure.The point-to-site connection, however, still traverses the shared networks in Azure.

Para isolar completamente a conectividade de recursos das redes compartilhadas no Azure, crie o aplicativo em um ambiente do Serviço de Aplicativo.To isolate your resource connectivity completely from the shared networks in Azure, create your app in an App Service environment. Como um ambiente do Serviço de Aplicativo é sempre implantado em uma Rede Virtual dedicada, a conectividade entre o aplicativo e os recursos dentro da Rede Virtual é totalmente isolada.Since an App Service environment is always deployed to a dedicated Virtual Network, connectivity between your app and resources within the Virtual Network is fully isolated. Para outros aspectos da segurança de rede em um ambiente do Serviço de Aplicativo, consulte Isolamento de rede.For other aspects of network security in an App Service environment, see Network isolation.

Recursos locaisOn-premises resources

É possível acessar os recursos locais com segurança, como bancos de dados, de três maneiras:You can securely access on-premises resources, such as databases, in three ways:

Segredos do aplicativoApplication secrets

Não armazene segredos do aplicativo, como credenciais de banco de dados, tokens de API e chaves privadas nos arquivos de configuração ou código.Don't store application secrets, such as database credentials, API tokens, and private keys in your code or configuration files. A abordagem comumente aceita é acessá-los como variáveis de ambiente usando o padrão standard na linguagem de sua escolha.The commonly accepted approach is to access them as environment variables using the standard pattern in your language of choice. No Serviço de Aplicativo, a maneira de definir variáveis de ambiente é através de configurações de aplicativo (e, especialmente para aplicativo .NETs, cadeias de conexão).In App Service, the way to define environment variables is through app settings (and, especially for .NET applications, connection strings). As configurações de aplicativo e as cadeias de conexão são armazenadas criptografadas no Azure e serão descriptografadas somente antes de serem injetadas na memória de processo do aplicativo quando o aplicativo for iniciado.App settings and connection strings are stored encrypted in Azure, and they're decrypted only before being injected into your app's process memory when the app starts. As chaves de criptografia são giradas regularmente.The encryption keys are rotated regularly.

Como alternativa, é possível integrar o aplicativo do Serviço de Aplicativo ao Azure Key Vault para gerenciamento de segredos avançado.Alternatively, you can integrate your App Service app with Azure Key Vault for advanced secrets management. Ao acessar o Key Vault com uma identidade gerenciada, o aplicativo do Serviço de Aplicativo poderá acessar com segurança os segredos que você precisa.By accessing the Key Vault with a managed identity, your App Service app can securely access the secrets you need.

Isolamento da redeNetwork isolation

Exceto para tipo de preço Isolado todas as camadas executam os aplicativos na infraestrutura de rede compartilhada no Serviço de Aplicativo.Except for the Isolated pricing tier, all tiers run your apps on the shared network infrastructure in App Service. Por exemplo, os endereços IP públicos e os balanceadores de carga front-end são compartilhados com outros locatários.For example, the public IP addresses and front-end load balancers are shared with other tenants. A camada Isolado oferece isolamento de rede completo, executando os aplicativos em um Ambiente do Serviço de Aplicativo dedicado.The Isolated tier gives you complete network isolation by running your apps inside a dedicated App Service environment. Um ambiente do Serviço de Aplicativo é executado na própria instância da Rede Virtual do Microsoft Azure.An App Service environment runs in your own instance of Azure Virtual Network. Isso permite que você:It lets you:

  • Atenda os aplicativos por meio de um pondo de extremidade público dedicado, com front-ends dedicados.Serve your apps through a dedicated public endpoint, with dedicated front ends.
  • Atenda o aplicativo interno usando um ILB (balanceador de carga interno), que permite o acesso somente de dentro da Rede Virtual do Microsoft Azure.Serve internal application using an internal load balancer (ILB), which allows access only from inside your Azure Virtual Network. O ILB tem um endereço IP da sub-rede privada, que fornece isolamento total dos aplicativos da Internet.The ILB has an IP address from your private subnet, which provides total isolation of your apps from the internet.
  • Use um ILB atrás de um WAF (firewall do aplicativo Web).Use an ILB behind a web application firewall (WAF). O WAF oferece proteção de nível empresarial para aplicativos voltados ao público, como proteção contra DDoS, filtragem de URI e prevenção de injeção de SQL.The WAF offers enterprise-level protection to your public-facing applications, such as DDoS protection, URI filtering, and SQL injection prevention.

Para obter mais informações, consulte Introdução aos Ambientes do Serviço de Aplicativo do Azure.For more information, see Introduction to Azure App Service Environments.