Azure'da temel bir web uygulaması çalıştırmaRun a basic web application in Azure

Bu başvuru mimarisi kullanan bir web uygulaması için kendini kanıtlamış yöntemleri gösterir [Azure App Service] app-service ve [Azure SQL veritabanı] sql-db.This reference architecture shows proven practices for a web application that uses Azure App Service and Azure SQL Database. Bu çözümü dağıtın.Deploy this solution.

Azure'da temel bir web uygulaması için başvuru mimarisi

Bu mimarinin bir Visio dosyasını indirin.Download a Visio file of this architecture.

MimariArchitecture

Not

Bu mimari, uygulama geliştirmeye odaklı değildir ve herhangi belirli bir uygulama çerçevesi olduğunu varsaymaz.This architecture does not focus on application development, and does not assume any particular application framework. Amaç, çeşitli Azure hizmetlerinin nasıl bir araya getirileceğini göstermektir.The goal is to understand how various Azure services fit together.

Mimari aşağıdaki bileşenlere sahiptir:The architecture has the following components:

  • Kaynak grubu.Resource group. Kaynak grubu, Azure kaynakları için mantıksal bir kapsayıcıdır.A resource group is a logical container for Azure resources.

  • App Service uygulaması.App Service app. Azure App Service, bulut uygulamaları oluşturmak ve dağıtmak için tam olarak yönetilen bir platformdur.Azure App Service is a fully managed platform for creating and deploying cloud applications.

  • App Service Planı.App Service plan. App Service planı, uygulamanızı barındıran yönetilen sanal makineler (VM'ler) sağlar.An App Service plan provides the managed virtual machines (VMs) that host your app. Bir plan ile ilişkili tüm uygulamalar aynı VM örnekleri üzerinde çalışır.All apps associated with a plan run on the same VM instances.

  • Dağıtım yuvaları.Deployment slots. Dağıtım yuvası, bir dağıtım hazırlamanıza ve üretim dağıtımıyla takas etmenize olanak tanır.A deployment slot lets you stage a deployment and then swap it with the production deployment. Böylece doğrudan üretime dağıtmak gerekmez.That way, you avoid deploying directly into production. Öneriler için Yönetilebilirlik bölümüne bakın.See the Manageability section for specific recommendations.

  • IP adresi.IP address. App Service uygulamasının genel bir IP adresi ve etki alanı adı vardır.The App Service app has a public IP address and a domain name. Etki alanı adı, azurewebsites.net için contoso.azurewebsites.net gibi bir alt etki alanı adıdır.The domain name is a subdomain of azurewebsites.net, such as contoso.azurewebsites.net.

  • Azure DNS.Azure DNS. Azure DNS, DNS etki alanları için Microsoft Azure altyapısı kullanılarak ad çözümlemesi olanağı sağlayan bir hizmettir.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Etki alanlarınızı Azure'da barındırarak DNS kayıtlarınızı diğer Azure hizmetlerinde kullandığınız kimlik bilgileri, API’ler, araçlar ve faturalarla yönetebilirsiniz.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. Özel etki alanı adını kullanmak için (contoso.com gibi) özel etki alanı adını IP adresine eşleyen DNS kayıtları oluşturun.To use a custom domain name (such as contoso.com) create DNS records that map the custom domain name to the IP address. Daha fazla bilgi için bkz. Azure App Service’te özel bir etki alanı adı yapılandırma.For more information, see Configure a custom domain name in Azure App Service.

  • Azure SQL Veritabanı.Azure SQL Database. SQL Veritabanı, bulutta bulunan, ilişkisel bir hizmet olarak veritabanıdır.SQL Database is a relational database-as-a-service in the cloud. SQL veritabanı, Microsoft SQL Server veritabanı altyapısı ile aynı kod tabanını paylaşır.SQL Database shares its code base with the Microsoft SQL Server database engine. Uygulama gereksinimlerinize bağlı olarak, ayrıca kullanabileceğiniz MySQL için Azure veritabanı veya PostgreSQL için Azure veritabanı.Depending on your application requirements, you can also use Azure Database for MySQL or Azure Database for PostgreSQL. Tam olarak yönetilen veritabanı hizmetlerinden, sırasıyla açık kaynak MySQL Server ve Postgres veritabanı motorlarına göre şunlardır.These are fully managed database services, based on the open-source MySQL Server and Postgres database engines, respectively.

  • Mantıksal sunucu.Logical server. Azure SQL Veritabanı'nda bir mantıksal sunucu veritabanlarınızı barındırır.In Azure SQL Database, a logical server hosts your databases. Her mantıksal sunucu içinde birden fazla veritabanı oluşturabilirsiniz.You can create multiple databases per logical server.

  • Azure Depolama.Azure Storage. Tanılama günlüklerini depolamak için blob kapsayıcısı ile bir Azure depolama hesabı oluşturun.Create an Azure storage account with a blob container to store diagnostic logs.

  • Azure Active Directory (Azure AD) .Azure Active Directory (Azure AD). Kimlik doğrulaması için Azure AD veya başka bir kimlik sağlayıcısı kullanın.Use Azure AD or another identity provider for authentication.

ÖnerilerRecommendations

Gereksinimleriniz, burada açıklanan mimariden farklı olabilir.Your requirements might differ from the architecture described here. Bu bölümdeki önerileri bir başlangıç noktası olarak kullanın.Use the recommendations in this section as a starting point.

App Service planıApp Service plan

Ölçek genişletme, otomatik ölçeklendirme, destekledikleri ve Güvenli Yuva Katmanı (SSL) standart veya Premium katmanları kullanın.Use the Standard or Premium tiers, because they support scale-out, autoscale, and secure sockets layer (SSL). Her katman, çekirdek ve bellek sayısına göre farklılık gösteren çeşitli örnek boyutlarını destekler.Each tier supports several instance sizes that differ by number of cores and memory. Bir plan oluşturduktan sonra katmanı veya örnek boyutunu değiştirebilirsiniz.You can change the tier or instance size after you create a plan. App Service planları hakkında bilgi için bkz. App Service Fiyatlandırması.For more information about App Service plans, see App Service Pricing.

Uygulama durdurulmuş olsa bile App Service planındaki örnekler için ücretlendirilirsiniz.You are charged for the instances in the App Service plan, even if the app is stopped. Kullanmadığınız planları sildiğinizden emin olun (örneğin test dağıtımları).Make sure to delete plans that you aren't using (for example, test deployments).

SQL VeritabanıSQL Database

SQL Veritabanı’nın V12 sürümünü kullanın.Use the V12 version of SQL Database. SQL Veritabanı, Temel, Standart ve Premium hizmet katmanlarını, destekler. Veritabanı İşlem Birimlerinde (DTU) her katmanın birden fazla performans düzeyi vardır.SQL Database supports Basic, Standard, and Premium service tiers, with multiple performance levels within each tier measured in Database Transaction Units (DTUs). Kapasite planlaması gerçekleştirin ve gereksinimlerinize uygun katman ve performans düzeyini seçin.Perform capacity planning and choose a tier and performance level that meets your requirements.

BölgeRegion

App Service planı ve SQL Veritabanını ağ gecikmesini en aza indirmek için aynı bölgede sağlayın.Provision the App Service plan and the SQL Database in the same region to minimize network latency. Genellikle, kullanıcılarınıza en yakın bölgeyi seçin.Generally, choose the region closest to your users.

Kaynak grubunun da bir bölgesi vardır. Bu bölge, dağıtım meta verilerinin nerede depolanacağını belirtir.The resource group also has a region, which specifies where deployment metadata is stored. Kaynak grubu ve kaynakları aynı bölgeye yerleştirin.Put the resource group and its resources in the same region. Bu, dağıtım sırasında kullanılabilirliği iyileştirebilir.This can improve availability during deployment.

Ölçeklenebilirlik konusunda dikkat edilmesi gerekenlerScalability considerations

Azure App Service’in önemli bir avantajı uygulamanızı yüküne göre ölçeklendirebilmesidir.A major benefit of Azure App Service is the ability to scale your application based on load. Burada, uygulamanızı ölçeklendirmeyi planlarken göz önünde bulundurmanız gereken bazı noktalar verilmiştir.Here are some considerations to keep in mind when planning to scale your application.

App Service uygulamasını ölçeklendirmeScaling the App Service app

Bir App Service uygulamasını ölçeklendirmek için iki yol vardır:There are two ways to scale an App Service app:

  • Ölçeği artırma, örnek boyutunu değiştirme anlamına gelir.Scale up, which means changing the instance size. Örnek boyutu her VM örneğinde bellek, çekirdek sayısı ve depolama alanını belirler.The instance size determines the memory, number of cores, and storage on each VM instance. Örnek boyutunu veya plan katmanını elle değiştirerek ölçeği artırabilirsiniz.You can scale up manually by changing the instance size or the plan tier.

  • Ölçeği genişletme, artan yükü işlemek üzere örnek ekleme anlamına gelir.Scale out, which means adding instances to handle increased load. Her fiyatlandırma katmanının bir en fazla örnek sayısı vardır.Each pricing tier has a maximum number of instances.

    Örnek sayısını değiştirerek ölçeği elle genişletebilir veya otomatik ölçeklendirme kullanarak Azure’un zamanlamaya veya performans ölçümlerine göre örnek eklemesini ve çıkarmasını sağlayabilirsiniz.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. Her bir ölçeklendirme işlemi hızlı bir şekilde gerçekleşir—genellikle saniye içinde.Each scale operation happens quickly—typically within seconds.

    Otomatik ölçeklendirmeyi etkinleştirmek için örneklerin minimum ve maksimum sayısını tanımlayan bir otomatik ölçeklendirme profili oluşturun.To enable autoscaling, create an autoscale profile that defines the minimum and maximum number of instances. Profiller zamanlanabilir.Profiles can be scheduled. Örneğin, hafta içleri ve hafta sonları için ayrı profiller oluşturabilirsiniz.For example, you might create separate profiles for weekdays and weekends. İsteğe bağlı olarak, bir profil örnekleri ne zaman ekleyip çıkaracağı hakkında kurallar içerir.Optionally, a profile contains rules for when to add or remove instances. (Örnek: İki örnek Ekle. CPU kullanımı 5 dakika boyunca % 70'in ise)(Example: Add two instances if CPU usage is above 70% for 5 minutes.)

Bir web uygulamasını ölçeklendirmeye yönelik öneriler:Recommendations for scaling a web app:

  • Uygulamanın yeniden başlatılmasını tetikleyebileceğinden mümkünse ölçeği artırıp azaltmaktan kaçının.As much as possible, avoid scaling up and down, because it may trigger an application restart. Bunun yerine, normal yük altında performans gereksinimlerinizi karşılayacak ve trafik hacmindeki değişikliklere göre ölçeği genişletecek bir katman ve boyut seçin.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.
  • Otomatik ölçeklendirmeyi etkinleştirin.Enable autoscaling. Uygulamanızın öngörülebilir, normal bir iş yükü varsa, örnek sayılarını önceden zamanlamak için profiller oluşturun.If your application has a predictable, regular workload, create profiles to schedule the instance counts ahead of time. İş yükü tahmin edilebilir değilse, yükte değişiklikler ortaya çıktığında bunlara tepki vermek için kural tabanlı otomatik ölçeklendirme kullanın.If the workload is not predictable, use rule-based autoscaling to react to changes in load as they occur. Bu iki yaklaşımı birleştirebilirsiniz.You can combine both approaches.
  • CPU kullanımı otomatik ölçeklendirme kuralları için genellikle iyi bir ölçümdür.CPU usage is generally a good metric for autoscale rules. Ancak, uygulamanızda yük testi yapmanız, olası performans sorunlarını belirlemeniz ve otomatik ölçeklendirme kurallarınızı bu verilere göre seçmeniz gerekir.However, you should load test your application, identify potential bottlenecks, and base your autoscale rules on that data.
  • Otomatik ölçeklendirme kuralları, bir bekleme süresi içerir. Bu, bir ölçeklendirme eylemi tamamlandıktan sonra yeni bir ölçeklendirme eylemi başlatmadan önce beklenecek süredir.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. Bekleme süresi yeniden ölçeklendirmeden önce sistemin sabitlenmesini sağlar.The cool-down period lets the system stabilize before scaling again. Örnek eklemek için kısa, örnekleri kaldırmak için uzun bekleme süresi ayarlayın.Set a shorter cool-down period for adding instances, and a longer cool-down period for removing instances. Örneğin, örnek eklemek için 5 dakika, ancak örnek kaldırmak için 60 dakika olarak ayarlayın.For example, set 5 minutes to add an instance, but 60 minutes to remove an instance. Ek trafiği işlemek için yoğun iş yüklerinde yeni örnekleri bir an önce eklemek ve ardından yavaş yavaş ölçeği azaltmak gerekir.It's better to add new instances quickly under heavy load to handle the additional traffic, and then gradually scale back.

SQL Veritabanını ölçeklendirmeScaling SQL Database

SQL Veritabanı için daha yüksek bir hizmet katmanı veya performans düzeyine ihtiyacınız varsa, uygulama kapalı kalma süresi olmadan veritabanlarını tek tek ölçeklendirebilirsiniz.If you need a higher service tier or performance level for SQL Database, you can scale up individual databases with no application downtime. Daha fazla bilgi için Azure SQL veritabanı'nda tek bir veritabanı kaynakları ölçeklendirme.For more information, see Scale single database resources in Azure SQL Database.

Kullanılabilirlik konusunda dikkat edilmesi gerekenlerAvailability considerations

Bu içerik oluşturulduğu sırada Temel, Standart ve Premium katmanlarda hizmet düzeyi sözleşmesi (SLA) App Service için %99,95 ve SQL Veritabanı için %99,99’dur.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.

Not

App Service SLA’sı hem tek hem de birden çok örnek için geçerlidir.The App Service SLA applies to both single and multiple instances.

YedeklemelerBackups

Veri kaybı durumunda SQL Veritabanı zaman içinde nokta geri yükleme ve coğrafi geri yükleme sağlar.In the event of data loss, SQL Database provides point-in-time restore and geo-restore. Bu özellikler, tüm katmanlarda kullanılabilir ve otomatik olarak etkinleştirilir.These features are available in all tiers and are automatically enabled. Yedeklemeleri zamanlamanız veya yönetmeniz gerekmez.You don't need to schedule or manage the backups.

Daha fazla bilgi için bkz. SQL Veritabanı ile bulut iş devamlılığı ve veritabanı olağanüstü durum kurtarma.For more information, see Cloud business continuity and database disaster recovery with SQL Database.

App Service, uygulama dosyalarınız için bir yedekleme ve geri yükleme özelliği sağlar.App Service provides a backup and restore feature for your application files. Ancak, yedeklenen dosyaların uygulama ayarlarını düz metin olarak içerdiğini ve bağlantı dizeleri gibi gizli bilgiler içerebileceğini unutmayın.However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Veritabanı bir SQL BACPAC dosyasına dışarı aktarır, SQL veritabanlarını yedeklemek için App Service yedekleme özelliğini kullanmaktan kaçının tüketen Dtu.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. Bunun yerine, yukarıda bahsedilen SQL Veritabanı zaman içinde nokta geri yüklemesini kullanın.Instead, use SQL Database point-in-time restore described above.

Yönetilebilirlik konusunda dikkat edilmesi gerekenlerManageability considerations

Üretim, geliştirme için ayrı kaynak grupları oluşturun ve test ortamları.Create separate resource groups for production, development, and test environments. Bu, dağıtımları yönetmeyi, test dağıtımlarını silmeyi ve erişim haklarını atamayı kolaylaştırır.This makes it easier to manage deployments, delete test deployments, and assign access rights.

Kaynakları kaynak gruplarına atarken, aşağıdakileri göz önünde bulundurun:When assigning resources to resource groups, consider the following:

  • Yaşam döngüsü.Lifecycle. Genel olarak, aynı yaşam döngüsüne sahip kaynakları aynı kaynak grubuna yerleştirin.In general, put resources with the same lifecycle into the same resource group.
  • Erişim.Access. bir grup içindeki kaynaklara erişim ilkeleri uygulamak içinrol tabanlı erişim denetimi (RBAC) kullanabilirsiniz.You can use role-based access control (RBAC) to apply access policies to the resources in a group.
  • Faturalandırma.Billing. Kaynak grubu için aktarılmış maliyetleri görüntüleyebilirsiniz.You can view the rolled-up costs for the resource group.

Daha fazla bilgi için bkz. Azure Resource Manager’a genel bakış.For more information, see Azure Resource Manager overview.

DağıtımDeployment

Dağıtım iki adımdan oluşur:Deployment involves two steps:

  1. Azure kaynaklarını hazırlama.Provisioning the Azure resources. Kullanmanızı öneririz [Azure Resource Manager şablonları] arm-template Bu adım için.We recommend that you use Azure Resource Manager templates for this step. Şablonlar, PowerShell veya Azure CLI aracılığıyla dağıtımları otomatik hale getirmek kolaylaştırır.Templates make it easier to automate deployments via PowerShell or the Azure CLI.
  2. Uygulamayı dağıtma (kod, ikili dosyalar ve içerik dosyaları).Deploying the application (code, binaries, and content files). Visual Studio kullanarak yerel bir Git deposundan dağıtma veya bulut tabanlı bir kaynak denetiminden sürekli dağıtım dahil olmak üzere birkaç seçeneğiniz vardır.You have several options, including deploying from a local Git repository, using Visual Studio, or continuous deployment from cloud-based source control. Bkz. Uygulamanızı Azure App Service’e dağıtma.See Deploy your app to Azure App Service.

Bir App Service uygulaması her zaman production adlı bir dağıtım yuvasına sahiptir, bu yuva canlı üretim sitesini temsil eder.An App Service app always has one deployment slot named production, which represents the live production site. Güncelleştirmeleri dağıtmak için bir hazırlama yuvası oluşturmanızı öneririz.We recommend creating a staging slot for deploying updates. Hazırlama yuvası kullanmanın avantajları şunlardır:The benefits of using a staging slot include:

  • Üretime geçirmeden önce dağıtımın başarılı olup olmadığını doğrulayabilirsiniz.You can verify the deployment succeeded, before swapping it into production.
  • Hazırlama yuvasına dağıtma, tüm örneklerin üretime geçirilmeden önce hazır olmasını sağlar.Deploying to a staging slot ensures that all instances are warmed up before being swapped into production. Birçok uygulama, bir önemli Isınma ve soğuk başlangıç saati ' var.Many applications have a significant warmup and cold-start time.

Ayrıca son bilinen iyi dağıtımı tutmak için üçüncü bir yuva oluşturmanızı öneririz.We also recommend creating a third slot to hold the last-known-good deployment. Hazırlamayı üretime geçirdikten sonra önceki üretim dağıtımını (şimdi hazırlamada) son bilinen iyi yuvaya taşıyın.After you swap staging and production, move the previous production deployment (which is now in staging) into the last-known-good slot. Böylece, daha sonra bir sorun bulursanız en son bilinen iyi sürüme hızlı bir şekilde döndürebilirsiniz.That way, if you discover a problem later, you can quickly revert to the last-known-good version.

11

Bir önceki sürüme geri dönerseniz, veritabanı şema değişikliklerinin geriye dönük olarak uyumlu olduğundan emin olun.If you revert to a previous version, make sure any database schema changes are backward compatible.

Aynı App Service planındaki tüm uygulamalar aynı VM örneklerini paylaştığından, üretim dağıtımınızı test için kullanmayın.Don't use slots on your production deployment for testing because all apps within the same App Service plan share the same VM instances. Örneğin, yük testleri Canlı üretim sitesini düşebilir.For example, load tests might degrade the live production site. Bunun yerine, üretim ve test için ayrı App Service planları oluşturun.Instead, create separate App Service plans for production and test. Test dağıtımları ayrı planı koyarak, bunları üretim sürümünden yalıtın.By putting test deployments into a separate plan, you isolate them from the production version.

YapılandırmaConfiguration

Yapılandırma ayarlarını uygulama ayarları olarak depolayın.Store configuration settings as app settings. Uygulama ayarlarını Kaynak Yöneticisi şablonlarınızda veya PowerShell kullanarak tanımlayın.Define the app settings in your Resource Manager templates, or using PowerShell. Çalışma zamanında uygulama ayarları uygulamada ortam değişkenleri olarak kullanılabilir.At runtime, app settings are available to the application as environment variables.

Hiçbir zaman parolaları, erişim anahtarlarını veya bağlantı dizelerini kaynak denetimine dahil etmeyin.Never check passwords, access keys, or connection strings into source control. Bunun yerine, bu parametreleri değerleri uygulama ayarları olarak depolayan bir dağıtım betiğine geçirin.Instead, pass these as parameters to a deployment script that stores these values as app settings.

Bir dağıtım yuvasını değiştirdiğinizde, uygulama ayarları varsayılan olarak değiştirilir.When you swap a deployment slot, the app settings are swapped by default. Üretim ve hazırlama için farklı ayarlara gerek duyarsanız, yuvada sabit kalan ve değişmeyen uygulama ayarları oluşturabilirsiniz.If you need different settings for production and staging, you can create app settings that stick to a slot and don't get swapped.

Tanılama ve izlemeDiagnostics and monitoring

Uygulama günlüğü ve web sunucusu günlüğü dahil olmak üzere tanılama günlüğünü etkinleştirin.Enable diagnostics logging, including application logging and web server logging. Blob depolama alanı kullanmak için günlüğe kaydetmeyi yapılandırın.Configure logging to use Blob storage. Performansı korumak için tanılama günlüklerine ayrı bir depolama hesabı oluşturun.For performance reasons, create a separate storage account for diagnostic logs. Aynı depolama hesabındaki günlükler ve uygulama verileri için kullanmayın.Don't use the same storage account for logs and application data. Günlüğe kaydetme hakkında daha ayrıntılı yönergeler için bkz. İzleme ve tanılama kılavuzu.For more detailed guidance on logging, see Monitoring and diagnostics guidance.

Yük altında uygulama performansını ve davranışını izlemek için New Relic veya Application Insights gibi bir hizmet kullanın.Use a service such as New Relic or Application Insights to monitor application performance and behavior under load. Application Insights’ın veri hızı sınırlarını göz önünde bulundurun.Be aware of the data rate limits for Application Insights.

Gibi bir araç kullanarak yük testi gerçekleştirme [Azure DevOps] azure-devops veya Visual Studio Team Foundation Server.Perform load testing, using a tool such as Azure DevOps or Visual Studio Team Foundation Server. Bulut uygulamalarında performans analizine genel bir bakış için bkz. Performans Analizi Temel Bilgileri.For a general overview of performance analysis in cloud applications, see Performance Analysis Primer.

Uygulamanızın sorunlarını gidermek için ipuçları:Tips for troubleshooting your application:

Güvenlikle ilgili dikkat edilmesi gerekenlerSecurity considerations

Bu bölümde, bu makalede açıklanan Azure hizmetlerine özel güvenlik konuları listelenmiştir.This section lists security considerations that are specific to the Azure services described in this article. En iyi güvenlik uygulamalarının tam bir listesi değildir.It's not a complete list of security best practices. Bazı ek güvenlik konuları için bkz. Azure App Service'te bir uygulamanın güvenliğini sağlama.For some additional security considerations, see Secure an app in Azure App Service.

SQL Veritabanı denetimiSQL Database auditing

Denetim, mevzuatla uyumluluğu sürdürmenin yanı sıra işletme sorunlarını veya şüpheli güvenlik ihlallerini işaret edebilecek farklılıklar ve anormal durumlar hakkında öngörülere sahip olmanıza yardımcı olabilir.Auditing can help you maintain regulatory compliance and get insight into discrepancies and irregularities that could indicate business concerns or suspected security violations. Bkz. SQL veritabanı denetimini kullanmaya başlama.See Get started with SQL database auditing.

Dağıtım yuvalarıDeployment slots

Her dağıtım yuvasının bir genel IP adresi vardır.Each deployment slot has a public IP address. Üretim dışı yuvaların güvenliğini Azure Active Directory oturum açma ile sağlayarak yalnızca geliştirme ve DevOps ekip üyelerinin bu uç noktalara erişmesine olanak verin.Secure the nonproduction slots using Azure Active Directory login so that only members of your development and DevOps teams can reach those endpoints.

Günlüğe kaydetmeLogging

Kullanıcıların parolalarını veya kimlik dolandırıcılığı yapmak için kullanılabilecek diğer bilgileri hiçbir zaman günlüğe kaydedilmemelidir.Logs should never record users' passwords or other information that might be used to commit identity fraud. Verileri depolamadan önce bu ayrıntıları silin.Scrub those details from the data before storing it.

SSLSSL

SSL uç noktası olan bir App Service uygulaması ücretsiz olarak bir azurewebsites.net alt etki alanına sahiptir.An App Service app includes an SSL endpoint on a subdomain of azurewebsites.net at no additional cost. SSL uç noktası *.azurewebsites.net etki alanı için joker karakter sertifikası içerir.The SSL endpoint includes a wildcard certificate for the *.azurewebsites.net domain. Özel etki alanı adı kullanırsanız, özel etki alanıyla eşleşen bir sertifika sağlamanız gerekir.If you use a custom domain name, you must provide a certificate that matches the custom domain. En kolay yaklaşım, Azure Portalı aracılığıyla doğrudan bir sertifika satın almaktır.The simplest approach is to buy a certificate directly through the Azure portal. Ayrıca, diğer sertifika yetkililerinden sertifikaları içe aktarabilirsiniz.You can also import certificates from other certificate authorities. Daha fazla bilgi için bkz. Azure App Service için SSL Sertifikası Satın Alma ve Yapılandırma.For more information, see Buy and Configure an SSL Certificate for your Azure App Service.

En iyi güvenlik uygulaması olarak, uygulamanız HTTP isteklerini yönlendirerek HTTPS uygulamalıdır.As a security best practice, your app should enforce HTTPS by redirecting HTTP requests. Bunu uygulamanızın içinde yapabilir veya Azure App Service'te bir uygulama için HTTPS'yi etkinleştirme konusunda anlatıldığı gibi bir URL yeniden üretme kuralı kullanabilirsiniz.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.

Kimlik DoğrulamasıAuthentication

Azure AD, Facebook, Google veya Twitter gibi bir kimlik sağlayıcı (IDP) aracılığıyla kimlik doğrulaması yapmanızı öneririz.We recommend authenticating through an identity provider (IDP), such as Azure AD, Facebook, Google, or Twitter. Kimlik doğrulaması akışı için OAuth 2 veya OpenID Connect (OIDC) kullanın.Use OAuth 2 or OpenID Connect (OIDC) for the authentication flow. Azure AD, kullanıcıları ve grupları yönetme, uygulama rolleri oluşturma, şirket içi kimliklerinizi tümleştirme ve Office 365 ve Skype Kurumsal gibi arka uç hizmetlerini kullanma işlevleri sağlar.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.

Olası bir saldırı yüzeyi oluşturduğundan, uygulamanın kullanıcı girişlerini ve kimlik bilgilerini doğrudan yönetmesinden kaçının.Avoid having the application manage user logins and credentials directly, as it creates a potential attack surface. En azından, e-posta onayı, parola kurtarma ve çok faktörlü kimlik doğrulaması; parola gücü doğrulaması ve parola karmalarının güvenli bir şekilde saklanması gereklidir.At a minimum, you would need to have email confirmation, password recovery, and multi-factor authentication; validate password strength; and store password hashes securely. Büyük kimlik sağlayıcıları tüm bunları, sizin adınıza sağlar ve güvenlik uygulamalarını sürekli olarak izleyip geliştirir.The large identity providers handle all of those things for you, and are constantly monitoring and improving their security practices.

OAuth/OIDC kimlik doğrulaması akışını uygulamak için App Service kimlik doğrulaması kullanmak isteyebilirsiniz.Consider using App Service authentication to implement the OAuth/OIDC authentication flow. App Service kimlik doğrulamasının avantajları şunlardır:The benefits of App Service authentication include:

  • Kolayca yapılandırılabilir.Easy to configure.
  • Basit kimlik doğrulama senaryoları için kod yazmak gerekli değildir.No code is required for simple authentication scenarios.
  • Kullanıcı adına kaynakları kullanan OAuth erişim belirteçleri kullanarak temsilen yetkilendirmeyi destekler.Supports delegated authorization using OAuth access tokens to consume resources on behalf of the user.
  • Yerleşik bir belirteç önbelleği sağlar.Provides a built-in token cache.

App Service kimlik doğrulamasının bazı sınırlamaları:Some limitations of App Service authentication:

  • Özelleştirme seçenekleri sınırlıdır.Limited customization options.
  • Temsilen yetkilendirme, oturum açma oturumu başına bir arka uç kaynağıyla sınırlıdır.Delegated authorization is restricted to one backend resource per login session.
  • Birden fazla IDP kullanırsanız, giriş sayfası bölgesi saptama için yerleşik bir mekanizma yoktur.If you use more than one IDP, there is no built-in mechanism for home realm discovery.
  • Uygulamanın çok kiracılı senaryolarda belirteç sağlayıcısını doğrulamak için mantığı uygulaması gerekir.For multi-tenant scenarios, the application must implement the logic to validate the token issuer.

Çözümü dağıtmaDeploy the solution

Bu mimari için bir örnek Resource Manager şablonu github'da.An example Resource Manager template for this architecture is available on GitHub.

PowerShell kullanarak şablonu dağıtmak için aşağıdaki komutları çalıştırın: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

Daha fazla bilgi için bkz. Kaynakları Azure Resource Manager şablonları ile dağıtma.For more information, see Deploy resources with Azure Resource Manager templates.