Ausführen einer einfachen Webanwendung in AzureRun a basic web application in Azure

Diese Referenzarchitektur veranschaulicht bewährte Verfahren für eine Webanwendung, die Azure App Service und Azure SQL-Datenbank verwendet.This reference architecture shows proven practices for a web application that uses Azure App Service and Azure SQL Database. Stellen Sie diese Lösung bereit.Deploy this solution.

Referenzarchitektur für eine einfache Webanwendung in Azure

Laden Sie eine Visio-Datei dieser Architektur herunter.Download a Visio file of this architecture.

ArchitectureArchitecture

Hinweis

Der Schwerpunkt liegt bei dieser Architektur nicht auf der Anwendungsentwicklung, und es wird nicht von einem bestimmten Anwendungsframework ausgegangen.This architecture does not focus on application development, and does not assume any particular application framework. Das Ziel besteht darin, zu verstehen, wie verschiedene Azure-Dienste ineinandergreifen.The goal is to understand how various Azure services fit together.

Die Architektur besteht aus den folgenden Komponenten:The architecture has the following components:

  • Ressourcengruppe.Resource group. Eine Ressourcengruppe ist ein logischer Container für Azure-Ressourcen.A resource group is a logical container for Azure resources.

  • App Service-App.App Service app. Azure App Service ist eine umfassend verwaltete Plattform zum Erstellen und Bereitstellen von Cloudanwendungen.Azure App Service is a fully managed platform for creating and deploying cloud applications.

  • App Service-Plan.App Service plan. Ein App Service-Plan dient zur Bereitstellung der verwalteten virtuellen Computer (VMs), auf denen Ihre App gehostet wird.An App Service plan provides the managed virtual machines (VMs) that host your app. Alle einem Plan zugeordneten Apps werden auf den gleichen VM-Instanzen ausgeführt.All apps associated with a plan run on the same VM instances.

  • Bereitstellungsslots.Deployment slots. Ein Bereitstellungsslot ermöglicht Ihnen das Staging einer Bereitstellung und ihren Austausch gegen die Produktionsbereitstellung.A deployment slot lets you stage a deployment and then swap it with the production deployment. Auf diese Weise vermeiden Sie die direkte Bereitstellung in der Produktionsumgebung.That way, you avoid deploying directly into production. Im Abschnitt Verwaltbarkeit finden Sie spezifische Empfehlungen.See the Manageability section for specific recommendations.

  • IP-Adresse.IP address. Die App Service-App verfügt über eine öffentliche IP-Adresse und einen Domänennamen.The App Service app has a public IP address and a domain name. Der Domänenname ist eine Unterdomäne von azurewebsites.net, z.B. contoso.azurewebsites.net.The domain name is a subdomain of azurewebsites.net, such as contoso.azurewebsites.net.

  • Azure DNS:Azure DNS. Azure DNS ist ein Hostingdienst für DNS-Domänen, der die Namensauflösung mithilfe der Microsoft Azure-Infrastruktur durchführt.Azure DNS is a hosting service for DNS domains, providing name resolution using Microsoft Azure infrastructure. Durch das Hosten Ihrer Domänen in Azure können Sie Ihre DNS-Einträge mithilfe der gleichen Anmeldeinformationen, APIs, Tools und Abrechnung wie für die anderen Azure-Dienste verwalten.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. Erstellen Sie zur Verwendung eines benutzerdefinierten Domänennamens (etwa contoso.com) DNS-Einträge, die der IP-Adresse den benutzerdefinierten Domänennamen zuordnen.To use a custom domain name (such as contoso.com) create DNS records that map the custom domain name to the IP address. Weitere Informationen finden Sie unter Konfigurieren eines benutzerdefinierten Domänennamens in Azure App Service.For more information, see Configure a custom domain name in Azure App Service.

  • Azure SQL-Datenbank.Azure SQL Database. SQL-Datenbank ist eine relationale Datenbank-as-a-Service in der Cloud.SQL Database is a relational database-as-a-service in the cloud. SQL-Datenbank nutzt diese Codebasis gemeinsam mit der Microsoft SQL Server-Datenbank-Engine.SQL Database shares its code base with the Microsoft SQL Server database engine. Je nach Ihren Anwendungsanforderungen können Sie auch Azure Database for MySQL oder Azure Database for PostgreSQL verwenden.Depending on your application requirements, you can also use Azure Database for MySQL or Azure Database for PostgreSQL. Hierbei handelt es sich um vollständig verwaltete Dienste, die auf den Open-Source-Datenbank-Engines für MySQL Server bzw. Postgres basieren.These are fully managed database services, based on the open-source MySQL Server and Postgres database engines, respectively.

  • Logischer Server.Logical server. In Azure SQL-Datenbank werden Ihre Datenbanken auf einem logischen Server gehostet.In Azure SQL Database, a logical server hosts your databases. Sie können pro logischem Server mehrere Datenbanken erstellen.You can create multiple databases per logical server.

  • Azure Storage.Azure Storage. Erstellen Sie ein Azure-Speicherkonto mit einem Blob-Container zum Speichern von Diagnoseprotokollen.Create an Azure storage account with a blob container to store diagnostic logs.

  • Azure Active Directory (Azure AD):Azure Active Directory (Azure AD). Verwenden Sie Azure AD oder einen anderen Identitätsanbieter für die Authentifizierung.Use Azure AD or another identity provider for authentication.

EmpfehlungenRecommendations

Ihre Anforderungen können von der hier beschriebenen Architektur abweichen.Your requirements might differ from the architecture described here. Verwenden Sie die Empfehlungen in diesem Abschnitt als Ausgangspunkt.Use the recommendations in this section as a starting point.

App Service-PlanApp Service plan

Verwenden Sie die Tarife Standard oder Premium, da sie horizontale Skalierung, automatische Skalierung und SSL (Secure Sockets Layer) unterstützen.Use the Standard or Premium tiers, because they support scale-out, autoscale, and secure sockets layer (SSL). Alle Tarife unterstützen verschiedene Instanzgrößen, die sich in der Anzahl der Kerne und im Arbeitsspeicher unterscheiden.Each tier supports several instance sizes that differ by number of cores and memory. Sie können den Tarif oder die Instanzgröße nach der Erstellung eines Plans ändern.You can change the tier or instance size after you create a plan. Weitere Informationen zu App Service-Plänen finden Sie unter App Service – Preise.For more information about App Service plans, see App Service Pricing.

Die Instanzen im App Service-Plan werden Ihnen in Rechnung gestellt, auch wenn die App nicht ausgeführt wird.You are charged for the instances in the App Service plan, even if the app is stopped. Achten Sie darauf, nicht verwendete Pläne (z.B. Testbereitstellungen) zu löschen.Make sure to delete plans that you aren't using (for example, test deployments).

SQL-DatenbankSQL Database

Verwenden Sie die V12-Version von SQL-Datenbank.Use the V12 version of SQL Database. SQL-Datenbank unterstützt die Dienstebenen „Basic“, „Standard“ und „Premium“ mit mehreren Leistungsebenen innerhalb der einzelnen Tarife, die in Datenbanktransaktionseinheiten (Database Transaction Units, DTUs) gemessen werden.SQL Database supports Basic, Standard, and Premium service tiers, with multiple performance levels within each tier measured in Database Transaction Units (DTUs). Führen Sie Kapazitätsplanung durch, und wählen Sie einen Tarif und eine Leistungsstufe aus, die Ihren Anforderungen entsprechen.Perform capacity planning and choose a tier and performance level that meets your requirements.

RegionRegion

Stellen Sie den App Service-Plan und die SQL-Datenbank in der gleichen Region bereit, um die Netzwerklatenz zu minimieren.Provision the App Service plan and the SQL Database in the same region to minimize network latency. Wählen Sie grundsätzlich die Ihren Benutzern am nächsten gelegene Region aus.Generally, choose the region closest to your users.

Die Ressourcengruppe weist ebenfalls eine Region auf, die angibt, wo die Metadaten der Bereitstellung gespeichert werden.The resource group also has a region, which specifies where deployment metadata is stored. Implementieren Sie die Ressourcengruppe und ihre Ressourcen in der gleichen Region.Put the resource group and its resources in the same region. Dies kann die Verfügbarkeit während der Bereitstellung verbessern.This can improve availability during deployment.

Überlegungen zur SkalierbarkeitScalability considerations

Ein großer Vorteil von Azure App Service ist die Möglichkeit, Ihre Anwendung abhängig von der Last zu skalieren.A major benefit of Azure App Service is the ability to scale your application based on load. Hier sind einige Punkte aufgeführt, die beim Planen der Skalierung für Ihre Anwendung zu bedenken sind.Here are some considerations to keep in mind when planning to scale your application.

Skalieren der App Service-AppScaling the App Service app

Es gibt zwei Möglichkeiten zum Skalieren einer App Service-App:There are two ways to scale an App Service app:

  • Zentrales Hochskalieren, was die Änderung der Instanzgröße bedeutet.Scale up, which means changing the instance size. Die Instanzgröße bestimmt den Arbeitsspeicher, die Anzahl der Kerne und den Massenspeicher für die einzelnen VM-Instanzen.The instance size determines the memory, number of cores, and storage on each VM instance. Das zentrale Hochskalieren kann manuell erfolgen, indem Sie die Instanzgröße oder den Plantarif ändern.You can scale up manually by changing the instance size or the plan tier.

  • Horizontales Skalieren, was das Hinzufügen von Instanzen zum Verarbeiten höherer Auslastungen bedeutet.Scale out, which means adding instances to handle increased load. Für jede Tarifebene gibt es eine Maximalanzahl Instanzen.Each pricing tier has a maximum number of instances.

    Sie können manuell horizontal skalieren, indem Sie die Instanzanzahl ändern, oder automatische Skalierung verwenden, wenn Azure automatisch auf der Grundlage eines Zeitplans und/oder von Leistungsmetriken Instanzen hinzufügen oder entfernen soll.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. Die Skalierungsvorgänge erfolgen schnell – normalerweise innerhalb von Sekunden.Each scale operation happens quickly—typically within seconds.

    Um die automatische Skalierung zu aktivieren, erstellen Sie ein Profil für die automatische Skalierung, das die Minimal- und Maximalanzahl der Instanzen definiert.To enable autoscaling, create an autoscale profile that defines the minimum and maximum number of instances. Profile können geplant werden.Profiles can be scheduled. Beispielsweise können Sie separate Profile für Wochentage und Wochenenden erstellen.For example, you might create separate profiles for weekdays and weekends. Optional enthält ein Profil Regeln dafür, wann Instanzen hinzugefügt oder entfernt werden sollen.Optionally, a profile contains rules for when to add or remove instances. (Beispiel: Zwei Instanzen hinzufügen, wenn die CPU-Auslastung fünf Minuten lang bei über 70 Prozent liegt.)(Example: Add two instances if CPU usage is above 70% for 5 minutes.)

Empfehlungen zum Skalieren einer Web App:Recommendations for scaling a web app:

  • Vermeiden Sie nach Möglichkeit zentrales Hoch- und Herunterskalieren, da dies zu einem Neustart der Anwendung führen kann.As much as possible, avoid scaling up and down, because it may trigger an application restart. Wählen Sie stattdessen einen Tarif und eine Größe aus, der bzw. die Ihre Leistungsanforderungen unter typischer Last erfüllt, und skalieren Sie die Instanzen horizontal hoch, um Änderungen beim Datenverkehrsvolumen zu bewältigen.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.
  • Aktivieren Sie die automatische Skalierung.Enable autoscaling. Wenn Ihre Anwendung eine vorhersehbare normale Arbeitsauslastung aufweist, erstellen Sie Profile, um die Instanzanzahl im Voraus zu planen.If your application has a predictable, regular workload, create profiles to schedule the instance counts ahead of time. Wenn die Arbeitsauslastung nicht vorhersehbar ist, verwenden Sie regelbasierte automatische Skalierung, um auf Änderungen der Arbeitsauslastung beim Eintreten zu reagieren.If the workload is not predictable, use rule-based autoscaling to react to changes in load as they occur. Beide Ansätze können kombiniert werden.You can combine both approaches.
  • Die CPU-Auslastung ist im Allgemeinen eine gute Metrik für Regeln zur automatischen Skalierung.CPU usage is generally a good metric for autoscale rules. Jedoch sollten Sie einen Auslastungstest Ihrer Anwendung durchführen, potenzielle Engpässe identifizieren und Regeln für die automatische Skalierung auf diesen Daten aufbauen.However, you should load test your application, identify potential bottlenecks, and base your autoscale rules on that data.
  • Regeln für die automatische Skalierung beinhalten eine Abkühlphase; damit wird die Warteperiode nach dem Abschluss einer Skalierungsaktion bezeichnet, bevor eine neue Skalierungsaktion gestartet wird.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. In der Abkühlphase stabilisiert sich das System, bevor eine erneute Skalierung erfolgt.The cool-down period lets the system stabilize before scaling again. Legen Sie eine kürzere Abkühlphase für das Hinzufügen von Instanzen und eine längere Abkühlphase für das Entfernen von Instanzen fest.Set a shorter cool-down period for adding instances, and a longer cool-down period for removing instances. Legen Sie beispielsweise 5 Minuten für das Hinzufügen einer Instanz aber 60 Minuten für das Entfernen einer Instanz fest.For example, set 5 minutes to add an instance, but 60 minutes to remove an instance. Es ist besser, bei hoher Auslastung schnell neue Instanzen hinzuzufügen, um den zusätzlichen Datenverkehr zu bewältigen, und das System dann nach und nach wieder herunterzuskalieren.It's better to add new instances quickly under heavy load to handle the additional traffic, and then gradually scale back.

Skalierung einer SQL-DatenbankScaling SQL Database

Wenn Sie eine höhere Dienstebene oder Leistungsstufe für SQL-Datenbank benötigen, können Sie einzelne Datenbanken ohne Ausfallzeit der Anwendung zentral hochskalieren.If you need a higher service tier or performance level for SQL Database, you can scale up individual databases with no application downtime. Weitere Informationen finden Sie unter Skalieren von Einzeldatenbankressourcen in Azure SQL-Datenbank.For more information, see Scale single database resources in Azure SQL Database.

Überlegungen zur VerfügbarkeitAvailability considerations

Zum Entstehungszeitpunkt dieses Artikels ist die SLA (Vereinbarung zum Servicelevel) für App Service 99,95 % und die SLA für SQL-Datenbank 99,99 % für die Tarife Basic, Standard und 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.

Hinweis

Die App Service-SLA gilt sowohl für einzelne als auch für mehrere Instanzen.The App Service SLA applies to both single and multiple instances.

BackupsBackups

Im Fall eines Datenverlusts stellt SQL-Datenbank Point-in-Time-Wiederherstellung und Geowiederherstellung bereit.In the event of data loss, SQL Database provides point-in-time restore and geo-restore. Diese Funktionen sind in allen Tarifen verfügbar und automatisch aktiviert.These features are available in all tiers and are automatically enabled. Sie brauchen keine Sicherungen zu planen oder zu verwalten.You don't need to schedule or manage the backups.

Weitere Informationen finden Sie unter Geschäftskontinuität für die Cloud und Notfallwiederherstellung für Datenbanken mit SQL-Datenbank.For more information, see Cloud business continuity and database disaster recovery with SQL Database.

App Service bietet eine Funktion zum Sichern und Wiederherstellen Ihrer Anwendungsdateien.App Service provides a backup and restore feature for your application files. Beachten Sie dabei jedoch, dass die gesicherten Dateien Anwendungseinstellungen in unverschlüsseltem Text enthalten, die Geheimnisse enthalten können, wie z.B. Verbindungszeichenfolgen.However, be aware that the backed-up files include app settings in plain text and these may include secrets, such as connection strings. Vermeiden Sie die Verwendung der App Service-Sicherungsfunktion für die Sicherung Ihrer SQL-Datenbanken, da sie die Datenbank in eine SQL-BACPAC-Datei exportiert und dabei DTUs verbraucht.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. Verwenden Sie stattdessen die oben beschriebene SQL-Datenbank Point-in-Time-Wiederherstellung.Instead, use SQL Database point-in-time restore described above.

Überlegungen zur VerwaltbarkeitManageability considerations

Erstellen Sie separate Ressourcengruppen für Produktions-, Entwicklungs- und Testumgebungen.Create separate resource groups for production, development, and test environments. Dies erleichtert das Verwalten von Bereitstellungen, das Löschen von Testbereitstellungen und das Zuweisen von Zugriffsrechten.This makes it easier to manage deployments, delete test deployments, and assign access rights.

Berücksichtigen Sie beim Zuweisen von Ressourcengruppen die folgenden Punkte:When assigning resources to resource groups, consider the following:

  • Lebenszyklus.Lifecycle. Platzieren Sie Ressourcen mit gleichem Lebenszyklus im Allgemeinen in der gleichen Ressourcengruppe.In general, put resources with the same lifecycle into the same resource group.
  • Zugriff.Access. Sie können die rollenbasierte Zugriffssteuerung (RBAC) verwenden, um Zugriffsrichtlinien auf die in einer Gruppe enthaltenen Ressourcen anzuwenden.You can use role-based access control (RBAC) to apply access policies to the resources in a group.
  • Abrechnung.Billing. Sie können die angefallenen Kosten für die Ressourcengruppe anzeigen.You can view the rolled-up costs for the resource group.

Weitere Informationen finden Sie unter Übersicht über den Azure Resource Manager.For more information, see Azure Resource Manager overview.

BereitstellungDeployment

Die Bereitstellung umfasst zwei Schritte:Deployment involves two steps:

  1. Bereitstellen der Azure-Ressourcen.Provisioning the Azure resources. Wir empfehlen für diesen Schritt die Verwendung von Azure Resource Manager-Vorlagen.We recommend that you use Azure Resource Manager templates for this step. Mithilfe von Vorlagen können Bereitstellungen über PowerShell oder die Azure-Befehlszeilenschnittstelle einfacher automatisiert werden.Templates make it easier to automate deployments via PowerShell or the Azure CLI.
  2. Bereitstellen der Anwendung (Code, Binarys und Inhaltsdateien).Deploying the application (code, binaries, and content files). Es gibt eine Reihe verschiedener Optionen, einschließlich der Bereitstellung aus einem lokalen Git-Repository, der Verwendung von Visual Studio oder Continuous Deployment aus einer cloudbasierten Quellcodeverwaltung.You have several options, including deploying from a local Git repository, using Visual Studio, or continuous deployment from cloud-based source control. Weitere Informationen finden Sie unter Bereitstellen der App in Azure App Service.See Deploy your app to Azure App Service.

Eine App Service-App weist immer einen Bereitstellungsslot mit dem Namen production auf, der die Produktions-Livewebsite darstellt.An App Service app always has one deployment slot named production, which represents the live production site. Wir empfehlen, zum Bereitstellen von Updates einen Stagingslot zu erstellen.We recommend creating a staging slot for deploying updates. Zu den Vorteilen beim Verwenden eines Stagingslots gehören:The benefits of using a staging slot include:

  • Sie können den Erfolg der Bereitstellung überprüfen, bevor Sie sie in die Produktionsumgebung einbringen.You can verify the deployment succeeded, before swapping it into production.
  • Das Bereitstellen in einem Stagingslot stellt sicher, dass alle Instanzen warmgelaufen sind, bevor sie in die Produktionsumgebung eingebracht werden.Deploying to a staging slot ensures that all instances are warmed up before being swapped into production. Viele Anwendungen weisen eine erhebliche Aufwärmdauer und Kaltstartzeit auf.Many applications have a significant warmup and cold-start time.

Ferner empfehlen wir die Erstellung eines dritten Slots zur Aufnahme der letzten als funktionierend bekannten Bereitstellung.We also recommend creating a third slot to hold the last-known-good deployment. Verschieben Sie nach dem Vertauschen von Staging- und Produktionsumgebung die bisherige Produktionsumgebung (die sich jetzt im Stagingslot befindet) in den Slot für die letzte als funktionierend bekannte Bereitstellung.After you swap staging and production, move the previous production deployment (which is now in staging) into the last-known-good slot. Wenn Sie zu einem späteren Zeitpunkt ein Problem feststellen, können Sie auf diese Weise schnell zur letzten als funktionierend bekannten Version zurückkehren.That way, if you discover a problem later, you can quickly revert to the last-known-good version.

11

Wenn Sie eine frühere Version wiederherstellen, achten Sie darauf, dass alle Änderungen am Datenbankschema abwärtskompatibel sind.If you revert to a previous version, make sure any database schema changes are backward compatible.

Verwenden Sie keine Slots in Ihrer Produktionsumgebung für Tests, da alle Apps in einem App Service-Plan die gleichen VM-Instanzen nutzen.Don't use slots on your production deployment for testing because all apps within the same App Service plan share the same VM instances. Auslastungstests können z.B. den aktiven Produktionsstandort beeinträchtigen.For example, load tests might degrade the live production site. Erstellen Sie stattdessen separate App Service-Pläne für die Produktion und für Tests.Instead, create separate App Service plans for production and test. Indem Sie Testbereitstellungen in einen separaten Plan aufnehmen, isolieren Sie sie von der Produktionsversion.By putting test deployments into a separate plan, you isolate them from the production version.

KonfigurationConfiguration

Speichern Sie die Konfigurationseinstellungen als App-Einstellungen.Store configuration settings as app settings. Definieren Sie die App-Einstellungen in Ihren Ressourcen-Manager-Vorlagen oder mithilfe von PowerShell.Define the app settings in your Resource Manager templates, or using PowerShell. Zur Laufzeit stehen App-Einstellungen der Anwendung als Umgebungsvariablen zur Verfügung.At runtime, app settings are available to the application as environment variables.

Checken Sie niemals Kennwörter, Zugriffsschlüssel oder Verbindungszeichenfolgen in die Quellcodeverwaltung ein.Never check passwords, access keys, or connection strings into source control. Übergeben Sie diese stattdessen als Parameter an ein Bereitstellungsskript, das diese Werte als Anwendungseinstellungen speichert.Instead, pass these as parameters to a deployment script that stores these values as app settings.

Wenn Sie einen Bereitstellungsslot tauschen, werden die App-Einstellungen standardmäßig ebenfalls getauscht.When you swap a deployment slot, the app settings are swapped by default. Wenn Sie für die Produktions- und die Stagingumgebung unterschiedliche Einstellungen benötigen, können Sie Anwendungseinstellungen erstellen, die fest bei einem Slot verbleiben und nicht getauscht werden.If you need different settings for production and staging, you can create app settings that stick to a slot and don't get swapped.

Diagnose und ÜberwachungDiagnostics and monitoring

Aktivieren Sie die Diagnoseprotokollierung, einschließlich Anwendungsprotokollierung und Webserverprotokollierung.Enable diagnostics logging, including application logging and web server logging. Konfigurieren Sie die Verwendung von Blob-Speicher für die Protokollierung.Configure logging to use Blob storage. Erstellen Sie aus Leistungsgründen ein separates Speicherkonto für Diagnoseprotokolle.For performance reasons, create a separate storage account for diagnostic logs. Verwenden Sie nicht das gleiche Speicherkonto für Protokolle und Anwendungsdaten.Don't use the same storage account for logs and application data. Detailliertere Anweisungen zur Protokollierung finden Sie unter Anleitung zur Überwachung und Diagnose.For more detailed guidance on logging, see Monitoring and diagnostics guidance.

Verwenden Sie einen Dienst wie New Relic oder Application Insights, um Leistung und Verhalten der Anwendung unter Last zu überwachen.Use a service such as New Relic or Application Insights to monitor application performance and behavior under load. Beachten Sie die Grenzwerte der Datenrate für Application Insights.Be aware of the data rate limits for Application Insights.

Führen Sie Auslastungstests mithilfe eines Tools wie Azure DevOps oder Visual Studio Team Foundation Server durch.Perform load testing, using a tool such as Azure DevOps or Visual Studio Team Foundation Server. Eine allgemeine Übersicht zur Leistungsanalyse in Cloudanwendungen finden Sie unter Einsteig in die Leistungsanalyse.For a general overview of performance analysis in cloud applications, see Performance Analysis Primer.

Tipps zur Problembehandlung bei der Anwendung:Tips for troubleshooting your application:

SicherheitshinweiseSecurity considerations

Dieser Abschnitt enthält Sicherheitshinweise, die für die in diesem Artikel beschriebenen Azure-Dienste spezifisch sind.This section lists security considerations that are specific to the Azure services described in this article. Es handelt sich nicht um eine vollständige Liste der bewährten Sicherheitsmethoden.It's not a complete list of security best practices. Weitere Sicherheitshinweise finden Sie unter Schützen einer App in Azure App Service.For some additional security considerations, see Secure an app in Azure App Service.

SQL-DatenbanküberwachungSQL Database auditing

Die Überwachung kann Ihnen dabei helfen, die gesetzlichen Bestimmungen einzuhalten und Einblicke in Abweichungen und Unregelmäßigkeiten zu erhalten, die auf Geschäftsvorgänge oder mutmaßliche Sicherheitsverstöße hinweisen können.Auditing can help you maintain regulatory compliance and get insight into discrepancies and irregularities that could indicate business concerns or suspected security violations. Weitere Informationen finden Sie unter Erste Schritte mit der Überwachung von SQL-Datenbanken.See Get started with SQL database auditing.

BereitstellungsslotsDeployment slots

Jeder Bereitstellungsslot weist eine öffentliche IP-Adresse auf.Each deployment slot has a public IP address. Schützen Sie die nicht produktiven Slots mithilfe einer Azure Active Directory-Anmeldung, sodass nur Mitglieder Ihres Entwicklungs- und DevOps-Teams auf diese Endpunkte zugreifen können.Secure the nonproduction slots using Azure Active Directory login so that only members of your development and DevOps teams can reach those endpoints.

ProtokollierungLogging

Protokolle sollten niemals Benutzerkennwörter oder andere Informationen aufzeichnen, die für Identitätsdiebstähle verwendet werden können.Logs should never record users' passwords or other information that might be used to commit identity fraud. Entfernen Sie diese Details aus den Daten, bevor Sie sie speichern.Scrub those details from the data before storing it.

SSLSSL

Eine App Service-App umfasst ohne Zusatzkosten einen SSL-Endpunkt in einer Unterdomäne azurewebsites.net.An App Service app includes an SSL endpoint on a subdomain of azurewebsites.net at no additional cost. Der SSL-Endpunkt schließt ein Platzhalterzertifikat für die *.azurewebsites.net-Domäne ein.The SSL endpoint includes a wildcard certificate for the *.azurewebsites.net domain. Wenn Sie einen benutzerdefinierten Domänennamen verwenden, müssen Sie ein Zertifikat bereitstellen, das der benutzerdefinierten Domäne entspricht.If you use a custom domain name, you must provide a certificate that matches the custom domain. Die einfachste Möglichkeit besteht darin, ein Zertifikat direkt über das Azure-Portal zu erwerben.The simplest approach is to buy a certificate directly through the Azure portal. Außerdem können Sie Zertifikate von anderen Zertifizierungsstellen importieren.You can also import certificates from other certificate authorities. Weitere Informationen finden Sie unter Kaufen und Konfigurieren eines SSL-Zertifikats für Ihren Azure App Service.For more information, see Buy and Configure an SSL Certificate for your Azure App Service.

Als bewährte Sicherheitsmethode sollte Ihre Anwendung HTTPS durch Umleitung von HTTP-Anforderungen durchsetzen.As a security best practice, your app should enforce HTTPS by redirecting HTTP requests. Sie können dies innerhalb Ihrer Anwendung implementieren oder eine Regel zum Umschreiben von URL verwenden, wie unter Aktivieren von HTTPS für eine App in Azure App Service.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.

AuthenticationAuthentication

Wir empfehlen die Authentifizierung über einen Identitätsanbieter (IDP), wie etwa Azure AD, Facebook, Google oder Twitter.We recommend authenticating through an identity provider (IDP), such as Azure AD, Facebook, Google, or Twitter. Verwenden Sie OAuth 2 oder OpenID Connect (OIDC) für den Authentifizierungsablauf.Use OAuth 2 or OpenID Connect (OIDC) for the authentication flow. Azure AD bietet Funktionen zum Verwalten von Benutzern und Gruppen, Erstellen von Anwendungsrollen, Integrieren Ihrer lokalen Identitäten und Nutzen von Back-End-Diensten, wie etwa Office 365 und Skype for Business.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.

Vermeiden Sie die direkte Verwaltung von Benutzeranmeldungen und Anmeldeinformationen durch die Anwendung, da dadurch eine mögliche Angriffsfläche entsteht.Avoid having the application manage user logins and credentials directly, as it creates a potential attack surface. Den Mindeststandard sollten E-Mail-Bestätigung, Kennwortwiederherstellung und mehrstufige Authentifizierung bilden, außerdem eine Überprüfung der Kennwortsicherheit und die sichere Speicherung von Kennworthashes.At a minimum, you would need to have email confirmation, password recovery, and multi-factor authentication; validate password strength; and store password hashes securely. Die großen Identitätsanbieter übernehmen alle diese Dinge für Sie und überwachen und verbessern ihre Sicherheitspraktiken ständig.The large identity providers handle all of those things for you, and are constantly monitoring and improving their security practices.

Erwägen Sie den Einsatz von App Service-Authentifizierung zum Implementieren des OAuth/OIDC-Authentifizierungsablaufs.Consider using App Service authentication to implement the OAuth/OIDC authentication flow. App Service-Authentifizierung bietet folgende Vorteile:The benefits of App Service authentication include:

  • Einfach zu konfigurieren.Easy to configure.
  • Für einfache Authentifizierungsszenarien ist kein Code erforderlich.No code is required for simple authentication scenarios.
  • Unterstützt delegierte Autorisierung mithilfe von OAuth-Zugriffstoken, um Ressourcen im Benutzerauftrag zu nutzen.Supports delegated authorization using OAuth access tokens to consume resources on behalf of the user.
  • Bietet einen integrierten Tokencache.Provides a built-in token cache.

Einige Einschränkungen der App Service-Authentifizierung:Some limitations of App Service authentication:

  • Eingeschränkte Anpassungsoptionen.Limited customization options.
  • Die delegierte Autorisierung ist auf eine Back-End-Ressource pro Anmeldesitzung beschränkt.Delegated authorization is restricted to one backend resource per login session.
  • Wenn Sie mehr als einen IDP verwenden, gibt es keinen integrierten Mechanismus für die Startbereichsermittlung.If you use more than one IDP, there is no built-in mechanism for home realm discovery.
  • In Szenarien mit mehreren Mandanten muss die Anwendung die Logik für die Überprüfung des Tokenbenutzers implementieren.For multi-tenant scenarios, the application must implement the logic to validate the token issuer.

Bereitstellen der LösungDeploy the solution

Ein Beispiel einer Resource Manager-Vorlage für diese Architektur ist auf GitHub verfügbar.An example Resource Manager template for this architecture is available on GitHub.

Wenn Sie die Vorlage mit PowerShell bereitstellen möchten, führen Sie die folgenden Befehle aus: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

Weitere Informationen finden Sie unter Bereitstellen von Ressourcen mit Azure Resource Manager-Vorlagen.For more information, see Deploy resources with Azure Resource Manager templates.