Executar uma aplicação web básica no AzureRun a basic web application in Azure

Esta arquitetura de referência mostra práticas comprovadas para uma aplicação web que utiliza App Service do Azure and Azure SQL Database.This reference architecture shows proven practices for a web application that uses Azure App Service and Azure SQL Database. Implementar esta solução.Deploy this solution.

Arquitetura de referência para uma aplicação web básica no Azure

Transferir uma ficheiro do Visio dessa arquitetura.Download a Visio file of this architecture.

ArquiteturaArchitecture

Nota

Esta arquitetura não se concentra no desenvolvimento de aplicações nem assume qualquer estrutura de aplicação em particular.This architecture does not focus on application development, and does not assume any particular application framework. O objetivo é compreender como vários serviços do Azure encaixam.The goal is to understand how various Azure services fit together.

A arquitetura é composta pelos seguintes componentes:The architecture has the following components:

  • Grupo de recursos.Resource group. Um grupo de recursos é um contentor lógico de recursos do Azure.A resource group is a logical container for Azure resources.

  • Aplicação do Serviço de Aplicações.App Service app. Serviço de aplicações do Azure é uma plataforma totalmente gerida para criar e implementar aplicações na cloud.Azure App Service is a fully managed platform for creating and deploying cloud applications.

  • Plano do Serviço de Aplicações.App Service plan. Uma plano do App Service fornece as máquinas virtuais (VMs) geridas que alojam a aplicação.An App Service plan provides the managed virtual machines (VMs) that host your app. Todas as aplicações associadas a um plano são executadas com as mesmas instâncias de VM.All apps associated with a plan run on the same VM instances.

  • Blocos de implementação.Deployment slots. R bloco de implementação permite-lhe testar uma implementação e, em seguida, trocá-lo com a implementação de produção.A deployment slot lets you stage a deployment and then swap it with the production deployment. Dessa forma, evita implementar diretamente na produção.That way, you avoid deploying directly into production. Veja a secção Capacidade de gestão para ver as recomendações específicas.See the Manageability section for specific recommendations.

  • Endereço IP.IP address. A aplicação do Serviço de Aplicações tem um endereço IP público e um nome de domínio.The App Service app has a public IP address and a domain name. O nome de domínio é um subdomínio de azurewebsites.net, tal como contoso.azurewebsites.net.The domain name is a subdomain of azurewebsites.net, such as contoso.azurewebsites.net.

  • DNS do Azure.Azure DNS. O DNS do Azure é um serviço de alojamento para domínios DNS que fornece resolução de nomes através da infraestrutura do Microsoft Azure.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Ao alojar os seus domínios no Azure, pode gerir os recursos DNS com as mesmas credenciais, APIs, ferramentas e faturação dos seus outros serviços do Azure.By hosting your domains in Azure, you can manage your DNS records using the same credentials, APIs, tools, and billing as your other Azure services. Para utilizar um nome de domínio personalizado (tal como contoso.com), crie registos DNS para mapear o nome de domínio personalizado para o endereço IP.To use a custom domain name (such as contoso.com) create DNS records that map the custom domain name to the IP address. Para obter mais informações, consulte o artigo Configurar um nome de domínio personalizado no App Service do Azure.For more information, see Configure a custom domain name in Azure App Service.

  • Base de Dados SQL do Azure.Azure SQL Database. Base de dados SQL é um relacional da base de dados-como-serviço na cloud.SQL Database is a relational database-as-a-service in the cloud. Base de dados SQL partilha a base de código com o motor de base de dados do Microsoft SQL Server.SQL Database shares its code base with the Microsoft SQL Server database engine. Dependendo dos requisitos de aplicativos, também pode utilizar base de dados do Azure para MySQL ou base de dados do Azure para PostgreSQL.Depending on your application requirements, you can also use Azure Database for MySQL or Azure Database for PostgreSQL. Estes são os serviços de base de dados totalmente gerido, com base nos mecanismos aberto servidor MySQL e o Postgres da base de dados, respectivamente.These are fully managed database services, based on the open-source MySQL Server and Postgres database engines, respectively.

  • Servidor lógico.Logical server. Na Base de Dados SQL do Azure, as bases de dados são alojadas um servidor lógico.In Azure SQL Database, a logical server hosts your databases. Pode criar várias bases de dados por servidor lógico.You can create multiple databases per logical server.

  • Armazenamento do Azure.Azure Storage. Crie uma conta de armazenamento do Azure com um contentor de blobs para armazenar os registos de diagnóstico.Create an Azure storage account with a blob container to store diagnostic logs.

  • Azure Active Directory (Azure AD) .Azure Active Directory (Azure AD). Utilize o Azure AD ou outro fornecedor de identidade para a autenticação.Use Azure AD or another identity provider for authentication.

RecomendaçõesRecommendations

Os requisitos podem ser diferentes da arquitetura descrita aqui.Your requirements might differ from the architecture described here. Utilize as recomendações nesta secção como um ponto de partida.Use the recommendations in this section as a starting point.

Plano do App ServiceApp Service plan

Utilize os escalões Standard ou Premium, uma vez que eles oferecem suporte de escalamento horizontal, dimensionamento automático, e secure sockets layer (SSL).Use the Standard or Premium tiers, because they support scale-out, autoscale, and secure sockets layer (SSL). Cada escalão suporta vários tamanhos de instâncias que diferem por número de núcleos e memória.Each tier supports several instance sizes that differ by number of cores and memory. Pode alterar o escalão ou o tamanho da instância depois de criar um plano.You can change the tier or instance size after you create a plan. Para obter mais informações sobre os planos de serviço de aplicações, consulte preços do App Service.For more information about App Service plans, see App Service Pricing.

Será cobrado pelas instâncias no plano do Serviço de Aplicações, mesmo que a aplicação esteja parada.You are charged for the instances in the App Service plan, even if the app is stopped. Confirme que elimina os planos que não está a utilizar (por exemplo, implementações de teste).Make sure to delete plans that you aren't using (for example, test deployments).

SQL DatabaseSQL Database

Utilize o versão V12 of SQL Database. SQL Database supports Basic, Standard, and Premium service tiers, com desempenho de vários níveis em cada escalão medidos em [unidades de transação de base de dados (DTUs)][sql dtu].Use the V12 version of SQL Database. SQL Database supports Basic, Standard, and Premium service tiers, with multiple performance levels within each tier measured in Database Transaction Units (DTUs). Realize o planeamento de capacidade e escolha o escalão e o nível de desempenho que satisfaz os seus requisitos.Perform capacity planning and choose a tier and performance level that meets your requirements.

RegiãoRegion

Aprovisione o plano do Serviço de Aplicações e a Base de Dados SQL na mesma região para minimizar a latência de rede.Provision the App Service plan and the SQL Database in the same region to minimize network latency. Por norma, escolha a região mais próxima dos seus utilizadores.Generally, choose the region closest to your users.

O grupo de recursos tem também uma região que especifica onde os metadados da implementação são armazenados.The resource group also has a region, which specifies where deployment metadata is stored. Coloque o grupo de recursos e os seus recursos na mesma região.Put the resource group and its resources in the same region. Tal pode melhorar a disponibilidade durante a implementação.This can improve availability during deployment.

Considerações de escalabilidadeScalability considerations

Uma vantagem principal do Serviço de Aplicações do Azure é a capacidade de dimensionar a aplicação com base na carga.A major benefit of Azure App Service is the ability to scale your application based on load. Seguem-se algumas considerações a lembrar quando planear dimensionar a aplicação.Here are some considerations to keep in mind when planning to scale your application.

Dimensionar a aplicação do Serviço de AplicaçõesScaling the App Service app

Existem duas formas de dimensionar uma aplicação do Serviço de Aplicações:There are two ways to scale an App Service app:

  • Aumentar verticalmente, o que significa alterar o tamanho da instância.Scale up, which means changing the instance size. O tamanho da instância determina a memória, o número de núcleos e o armazenamento em cada instância de VM.The instance size determines the memory, number of cores, and storage on each VM instance. Pode aumentar verticalmente de forma manual ao alterar o tamanho da instância ou o escalão do plano.You can scale up manually by changing the instance size or the plan tier.

  • Aumentar horizontalmente, o que significa adicionar instâncias para processar o aumento de carga.Scale out, which means adding instances to handle increased load. Cada escalão de preço tem um número máximo de instâncias.Each pricing tier has a maximum number of instances.

    Pode aumentar horizontalmente manualmente ao alterar a contagem de instâncias ou usar dimensionamento automático para que o Azure automaticamente adicionar ou remover instâncias com base em métricas de agendamento e/ou desempenho.You can scale out manually by changing the instance count, or use autoscaling to have Azure automatically add or remove instances based on a schedule and/or performance metrics. Cada operação de dimensionamento acontece rapidamente — normalmente em segundos.Each scale operation happens quickly—typically within seconds.

    Para ativar o dimensionamento automático, crie um perfil de dimensionamento automático que define o número mínimo e máximo de instâncias.To enable autoscaling, create an autoscale profile that defines the minimum and maximum number of instances. Os perfis podem ser agendados.Profiles can be scheduled. Por exemplo, pode criar perfis separados para os dias da semana e os fins de semana.For example, you might create separate profiles for weekdays and weekends. Opcionalmente, um perfil contém regras para quando adicionar ou remover instâncias.Optionally, a profile contains rules for when to add or remove instances. (Exemplo: Adicione duas instâncias se a utilização da CPU é superior a 70% durante 5 minutos.)(Example: Add two instances if CPU usage is above 70% for 5 minutes.)

Recomendações para dimensionar uma aplicação Web:Recommendations for scaling a web app:

  • Tanto quanto possível, evite aumentar e reduzir verticalmente, uma vez que pode acionar um reinício da aplicação.As much as possible, avoid scaling up and down, because it may trigger an application restart. Em vez disso, selecione um escalão e o tamanho que satisfaz os seus requisitos de desempenho na carga típica e, em seguida, aumente horizontalmente as instâncias para processar as alterações no volume de tráfego.Instead, select a tier and size that meet your performance requirements under typical load and then scale out the instances to handle changes in traffic volume.
  • Ative o dimensionamento automático.Enable autoscaling. Se a sua aplicação tiver uma carga de trabalho normal e previsível, crie perfis para agendar as contagens de instâncias antecipadamente.If your application has a predictable, regular workload, create profiles to schedule the instance counts ahead of time. Se a carga de trabalho não for previsível, utilize o dimensionamento automático baseado em regras para reagir a alterações na carga à medida que ocorrem.If the workload is not predictable, use rule-based autoscaling to react to changes in load as they occur. Pode combinar as duas abordagens.You can combine both approaches.
  • A utilização da CPU é, geralmente, uma boa métrica para as regras de dimensionamento automático.CPU usage is generally a good metric for autoscale rules. No entanto, deve realizar um teste de carga da sua aplicação, identificar potenciais estrangulamentos e basear as suas regras de dimensionamento automático nesses dados.However, you should load test your application, identify potential bottlenecks, and base your autoscale rules on that data.
  • As regras de dimensionamento automático incluem um período de arrefecimento, isto é, o intervalo de espera após a conclusão de uma ação de dimensionamento antes de iniciar uma ação de dimensionamento.Autoscale rules include a cool-down period, which is the interval to wait after a scale action has completed before starting a new scale action. O período de arrefecimento permite que o sistema estabilize antes de dimensionar novamente.The cool-down period lets the system stabilize before scaling again. Defina um período de arrefecimento mais curto para adicionar instâncias e um período de arrefecimento mais longo para remover instâncias.Set a shorter cool-down period for adding instances, and a longer cool-down period for removing instances. Por exemplo, defina 5 minutos para adicionar uma instância, mas 60 minutos para remover uma instância.For example, set 5 minutes to add an instance, but 60 minutes to remove an instance. É melhor adicionar novas instâncias rapidamente em cenários de muita carga para processar o tráfego adicional e, em seguida, reduzir gradualmente.It's better to add new instances quickly under heavy load to handle the additional traffic, and then gradually scale back.

Dimensionar a Base de Dados SQLScaling SQL Database

Se precisar de um escalão de serviço ou um nível de desempenho superiores para a Base de Dados SQL, poderá aumentar verticalmente as bases de dados individuais sem qualquer período de indisponibilidade das aplicações.If you need a higher service tier or performance level for SQL Database, you can scale up individual databases with no application downtime. Para obter mais informações, consulte Dimensionar recursos de base de dados na base de dados do Azure SQL.For more information, see Scale single database resources in Azure SQL Database.

Considerações de disponibilidadeAvailability considerations

No momento da escrita, o contrato de nível de serviço (SLA) do Serviço de Aplicações é de 99,95% e o SLA da Base de Dados SQL é de 99,99% para os escalões Basic, Standard e Premium.At the time of writing, the service level agreement (SLA) for App Service is 99.95% and the SLA for SQL Database is 99.99% for Basic, Standard, and Premium tiers.

Nota

O SLA do Serviço de Aplicações aplica-se a uma ou várias instâncias.The App Service SLA applies to both single and multiple instances.

Cópias de segurançaBackups

Em caso de perda de dados, a Base de Dados SQL fornece um restauro num ponto anterior no tempo e um restauro geográfico.In the event of data loss, SQL Database provides point-in-time restore and geo-restore. Estas funcionalidades estão disponíveis em todos os escalões e são ativadas automaticamente.These features are available in all tiers and are automatically enabled. Não precisa de agendar nem gerir as cópias de segurança.You don't need to schedule or manage the backups.

Para obter mais informações, consulte Cloud de recuperação de desastres de continuidade e a base de dados empresariais com base de dados SQL.For more information, see Cloud business continuity and database disaster recovery with SQL Database.

Serviço de aplicações fornece uma backup e restauração feature for your application files. However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Avoid using the App Service backup feature to back up your SQL databases because it exports the database to a SQL BACPAC file, consuming DTUs.App Service provides a backup and restore feature for your application files. However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Avoid using the App Service backup feature to back up your SQL databases because it exports the database to a SQL BACPAC file, consuming DTUs. Em vez disso, utilize o restauro num ponto anterior no tempo da Base de Dados SQL, descrito acima.Instead, use SQL Database point-in-time restore described above.

Considerações sobre a capacidade de gestãoManageability considerations

Criar grupos de recursos separados para a produção, desenvolvimento e os ambientes de teste.Create separate resource groups for production, development, and test environments. Este procedimento torna mais fácil gerir as implementações, eliminar as implementações de teste e atribuir direitos de acesso.This makes it easier to manage deployments, delete test deployments, and assign access rights.

Ao atribuir recursos aos grupos de recursos, considere o seguinte:When assigning resources to resource groups, consider the following:

  • Ciclo de vida.Lifecycle. Em geral, coloque os recursos com o mesmo ciclo de vida no mesmo grupo de recursos.In general, put resources with the same lifecycle into the same resource group.
  • Acesso.Access. Pode usar controlo de acesso baseado em funções (RBAC) para aplicar políticas de acesso a recursos num grupo.You can use role-based access control (RBAC) to apply access policies to the resources in a group.
  • Faturação.Billing. Pode ver os custos agregados ao grupo de recursos.You can view the rolled-up costs for the resource group.

Para obter mais informações, veja Descrição geral do Azure Resource Manager.For more information, see Azure Resource Manager overview.

ImplementaçãoDeployment

A implementação envolve dois passos:Deployment involves two steps:

  1. Aprovisionar os recursos do Azure.Provisioning the Azure resources. Recomendamos que utilize modelos Azure Resource Manager para este passo.We recommend that you use Azure Resource Manager templates for this step. Modelos tornam mais fácil automatizar as implementações através do PowerShell ou a CLI do Azure.Templates make it easier to automate deployments via PowerShell or the Azure CLI.
  2. Implementar a aplicação (código, binários e ficheiros de conteúdo).Deploying the application (code, binaries, and content files). Tem várias opções, incluindo a implementação a partir de um repositório Git local, com o Visual Studio, ou a implementação contínua a partir do controlo de origem baseado na nuvem.You have several options, including deploying from a local Git repository, using Visual Studio, or continuous deployment from cloud-based source control. Consulte o artigo Implementar a aplicação no App Service do Azure.See Deploy your app to Azure App Service.

Uma aplicação do Serviço de Aplicações tem sempre um bloco de implementação com o nome production, que representa o site de produção dinâmica.An App Service app always has one deployment slot named production, which represents the live production site. Recomendamos que crie um bloco de teste para a implementação das atualizações.We recommend creating a staging slot for deploying updates. Benefícios da utilização de um bloco de teste:The benefits of using a staging slot include:

  • Pode verificar se a implementação foi bem-sucedida antes de a colocar em produção.You can verify the deployment succeeded, before swapping it into production.
  • A implementação de um bloco de teste assegura que todas as instâncias são preparadas antes de serem colocadas em produção.Deploying to a staging slot ensures that all instances are warmed up before being swapped into production. Muitos aplicativos têm um aquecimento significativo e o tempo de arranque a frio.Many applications have a significant warmup and cold-start time.

Também recomendamos que crie um terceiro bloco para conter a última boa implementação conhecida.We also recommend creating a third slot to hold the last-known-good deployment. Depois de trocar de teste para produção, mova a implementação de produção anterior (que está agora no modo de teste) para o último bloco bom conhecido.After you swap staging and production, move the previous production deployment (which is now in staging) into the last-known-good slot. Desta forma, se detetar um problema posteriormente, poderá rapidamente reverter para a última boa versão conhecida.That way, if you discover a problem later, you can quickly revert to the last-known-good version.

11

Se reverter para uma versão anterior, verifique se as alterações do esquema da base de dados são compatíveis com versões anteriores.If you revert to a previous version, make sure any database schema changes are backward compatible.

Não utilize os blocos na implementação de produção para fins de teste, uma vez que todas as aplicações no mesmo plano do Serviço de Aplicações partilham as mesmas instâncias de VM.Don't use slots on your production deployment for testing because all apps within the same App Service plan share the same VM instances. Por exemplo, os testes de carga podem diminuir o site de produção em direto.For example, load tests might degrade the live production site. Em vez disso, crie planos do Serviço de Aplicações separados para a produção e o teste.Instead, create separate App Service plans for production and test. Ao colocar as implementações de teste num plano separado, isolá-las da versão de produção.By putting test deployments into a separate plan, you isolate them from the production version.

ConfiguraçãoConfiguration

Store configurações à medida as definições da aplicação.Store configuration settings as app settings. Defina as definições da aplicação nos modelos do Resource Manager ou utilize o PowerShell.Define the app settings in your Resource Manager templates, or using PowerShell. No tempo de execução, as definições da aplicação estão disponíveis para a aplicação como variáveis do ambiente.At runtime, app settings are available to the application as environment variables.

Nunca selecione palavras-passe, chaves de acesso ou cadeias de ligação no controlo de origem.Never check passwords, access keys, or connection strings into source control. Em vez disso, transmita-as como parâmetros para um script de implementação que armazena estes valores como definições da aplicação.Instead, pass these as parameters to a deployment script that stores these values as app settings.

Quando troca um bloco de implementação, as definições da aplicação regressam aos valores predefinidos.When you swap a deployment slot, the app settings are swapped by default. Se forem necessárias definições diferentes para a produção e o teste, poderá criar definições da aplicação que ficam anexadas a um bloco e não são trocadas.If you need different settings for production and staging, you can create app settings that stick to a slot and don't get swapped.

Diagnóstico e monitorizaçãoDiagnostics and monitoring

Ativar registo de diagnósticos, including application logging and web server logging. Configure logging to use Blob storage. For performance reasons, create a separate storage account for diagnostic logs. Don't use the same storage account for logs and application data. For more detailed guidance on logging, see Monitoring and diagnostics guidance.Enable diagnostics logging, including application logging and web server logging. Configure logging to use Blob storage. For performance reasons, create a separate storage account for diagnostic logs. Don't use the same storage account for logs and application data. For more detailed guidance on logging, see Monitoring and diagnostics guidance.

Utilize um serviço, como New Relic or Application Insights para monitorizar o desempenho do aplicativo e o comportamento sob carga.Use a service such as New Relic or Application Insights to monitor application performance and behavior under load. Tenha em atenção a [limites de velocidade de dados][app-insights-data-taxa] para o Application Insights.Be aware of the data rate limits for Application Insights.

Efetue testes de carga, usando uma ferramenta como do Azure DevOps or Visual Studio Team Foundation Server.Perform load testing, using a tool such as Azure DevOps or Visual Studio Team Foundation Server. Para obter uma visão geral da análise de desempenho em aplicações na cloud, consulte [manual básico de análise de desempenho][análise de desempenho].For a general overview of performance analysis in cloud applications, see Performance Analysis Primer.

Sugestões de resolução de problemas da aplicação:Tips for troubleshooting your application:

Considerações de segurançaSecurity considerations

Esta secção lista as considerações de segurança específicas aos serviços do Azure descritos neste artigo.This section lists security considerations that are specific to the Azure services described in this article. Não é uma lista completa das melhores práticas de segurança.It's not a complete list of security best practices. Para algumas considerações de segurança adicionais, consulte proteger uma aplicação no App Service do Azure.For some additional security considerations, see Secure an app in Azure App Service.

Auditoria da Base de Dados SQLSQL Database auditing

A auditoria pode ajudá-lo a manter a conformidade regulatória e a obter informações relativas a discrepâncias e irregularidades que possam traduzir preocupações comerciais ou suspeitas de violações de segurança.Auditing can help you maintain regulatory compliance and get insight into discrepancies and irregularities that could indicate business concerns or suspected security violations. Ver introdução à auditoria da base de dados SQL.See Get started with SQL database auditing.

Blocos de implementaçãoDeployment slots

Cada bloco de implementação tem um endereço IP público.Each deployment slot has a public IP address. Proteja os blocos de não produção com início de sessão do Azure Active Directory para que apenas os membros das suas equipas de DevOps e de desenvolvimento podem aceder esses pontos de extremidade.Secure the nonproduction slots using Azure Active Directory login so that only members of your development and DevOps teams can reach those endpoints.

RegistoLogging

Os registos nunca devem gravar palavras-passe dos utilizadores ou outras informações que possam ser utilizadas para o roubo de identidade.Logs should never record users' passwords or other information that might be used to commit identity fraud. Elimine esses detalhes dos dados antes de os armazenar.Scrub those details from the data before storing it.

SSLSSL

Uma aplicação do Serviço de Aplicações inclui um ponto final SSL num subdomínio de azurewebsites.net sem custos adicionais.An App Service app includes an SSL endpoint on a subdomain of azurewebsites.net at no additional cost. O ponto final SSL inclui um certificado de caráter universal para o domínio *.azurewebsites.net.The SSL endpoint includes a wildcard certificate for the *.azurewebsites.net domain. Se utilizar um nome de domínio personalizado, terá de fornecer um certificado correspondente ao domínio personalizado.If you use a custom domain name, you must provide a certificate that matches the custom domain. A abordagem mais simples consiste em comprar um certificado diretamente no Portal do Azure.The simplest approach is to buy a certificate directly through the Azure portal. Também pode importar certificados de outras autoridades de certificação.You can also import certificates from other certificate authorities. Para obter mais informações, consulte comprar e configurar um certificado SSL para o serviço de aplicações do Azure.For more information, see Buy and Configure an SSL Certificate for your Azure App Service.

Como melhor prática de segurança, a aplicação deve impor HTTPS ao redirecionar os pedidos de HTTP.As a security best practice, your app should enforce HTTPS by redirecting HTTP requests. Pode implementar este protocolo na sua aplicação ou utilizar uma regra de reescrita de URL, conforme descrito em permitir HTTPS para uma aplicação no App Service do Azure.You can implement this inside your application or use a URL rewrite rule as described in Enable HTTPS for an app in Azure App Service.

AutenticaçãoAuthentication

É recomendável realizar a autenticação através de um fornecedor de identidade (IDP), tal como o Azure AD, o Facebook, o Google ou o Twitter.We recommend authenticating through an identity provider (IDP), such as Azure AD, Facebook, Google, or Twitter. Utilize o OAuth 2 ou o OpenID Connect (OIDC) para o fluxo de autenticação.Use OAuth 2 or OpenID Connect (OIDC) for the authentication flow. O Azure AD fornece funcionalidades para gerir utilizadores e grupos, criar funções de aplicação, integrar as suas identidades no local e consumir os serviços de back-end, tal como o Office 365 e o Skype para Empresas.Azure AD provides functionality to manage users and groups, create application roles, integrate your on-premises identities, and consume backend services such as Office 365 and Skype for Business.

Evite que a aplicação gira diretamente os inícios de sessão e as credenciais dos utilizadores, na medida que cria uma potencial superfície de ataque.Avoid having the application manage user logins and credentials directly, as it creates a potential attack surface. No mínimo, deve ter uma confirmação por e-mail, a recuperação de palavra-passe e a autenticação multifator; validar a força da palavra-passe e armazenar os hashes de palavras-passe de forma segura.At a minimum, you would need to have email confirmation, password recovery, and multi-factor authentication; validate password strength; and store password hashes securely. Os fornecedores de identidade grandes processam tudo isto por si e estão constantemente a monitorizar e a melhorar as suas práticas de segurança.The large identity providers handle all of those things for you, and are constantly monitoring and improving their security practices.

Considere a utilização autenticação de serviço de aplicações para implementar o fluxo de autenticação OAuth/OIDC.Consider using App Service authentication to implement the OAuth/OIDC authentication flow. Benefícios da autenticação do Serviço de Aplicações:The benefits of App Service authentication include:

  • Fácil de configurar.Easy to configure.
  • Não é necessário nenhum código para cenários de autenticação simples.No code is required for simple authentication scenarios.
  • Suporta a autorização delegada com tokens de acesso de OAuth para consumir recursos em nome do utilizador.Supports delegated authorization using OAuth access tokens to consume resources on behalf of the user.
  • Fornece uma cache de tokens incorporada.Provides a built-in token cache.

Algumas limitações da autenticação do Serviço de Aplicações:Some limitations of App Service authentication:

  • Opções de personalização limitadas.Limited customization options.
  • A autorização delegada está restrita a um recurso de back-end por início de sessão.Delegated authorization is restricted to one backend resource per login session.
  • Se utilizar mais do que um IDP, não existirá nenhum mecanismo incorporado para a deteção do realm inicial.If you use more than one IDP, there is no built-in mechanism for home realm discovery.
  • Para cenários de vários inquilinos, a aplicação tem de implementar a lógica para validar o emissor de tokens.For multi-tenant scenarios, the application must implement the logic to validate the token issuer.

Implementar a soluçãoDeploy the solution

É um modelo do Resource Manager de exemplo para esta arquitetura está disponível no GitHub.An example Resource Manager template for this architecture is available on GitHub.

Para implementar o modelo com o PowerShell, execute os seguintes comandos:To deploy the template using PowerShell, run the following commands:

New-AzureRmResourceGroup -Name <resource-group-name> -Location "West US"

$parameters = @{"appName"="<app-name>";"environment"="dev";"locationShort"="uw";"databaseName"="app-db";"administratorLogin"="<admin>";"administratorLoginPassword"="<password>"}

New-AzureRmResourceGroupDeployment -Name <deployment-name> -ResourceGroupName <resource-group-name> -TemplateFile .\PaaS-Basic.json -TemplateParameterObject  $parameters

Para obter mais informações, consulte implementar recursos com modelos Azure Resource Manager.For more information, see Deploy resources with Azure Resource Manager templates.