Hinweis: In den nächsten Monaten wird die App Engine-Dokumentationswebsite neu organisiert, um das Auffinden von Inhalten und die bessere Abstimmung mit den anderen Google Cloud-Produkten zu erleichtern. Es werden dieselben Inhalte verfügbar sein, aber die Navigation wird nun den restlichen Cloud-Produkten entsprechen.

Anwendungssicherheit

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Regions-ID

REGION_ID ist ein abgekürzter Code, den Google anhand der Region zuweist, die Sie beim Erstellen Ihrer Anwendung ausgewählt haben. Der Code bezieht sich nicht auf ein Land oder eine Provinz, auch wenn einige Regions-IDs häufig verwendeten Länder- und Provinzcodes ähneln können. Bei Anwendungen, die nach Februar 2020 erstellt wurden, ist REGION_ID.r in den App Engine-URLs enthalten. Bei Anwendungen, die vor diesem Datum erstellt wurden, ist die Regions-ID in der URL optional.

Hier finden Sie weitere Informationen zu Regions-IDs.

Sicherheit ist ein zentrales Element von Google Cloud. Dennoch sollten Sie Vorkehrungen treffen, um Ihre App Engine-Anwendung zu schützen und Sicherheitslücken zu identifizieren.

Mit den hier aufgeführten Funktionen können Sie dafür sorgen, dass Ihre App Engine-Anwendung sicher ist. Weitere Informationen zum Sicherheitsmodell von Google und den möglichen Schritten zur Absicherung Ihrer Cloud-Projekte finden Sie unter Sicherheit in der Google Cloud Platform.

HTTPS-Anfragen

Mit HTTPS-Anfragen können Sie sicher auf Ihre App Engine-Anwendung zugreifen. Je nachdem, wie Ihre Anwendung konfiguriert ist, haben Sie die folgenden Möglichkeiten:

appspot.com-Domains
  • Verwenden Sie das URL-Präfix https, um eine HTTPS-Anfrage an den Dienst default Ihres Cloud-Projekts zu senden. Beispiel:
    https://PROJECT_ID.REGION_ID.r.appspot.com
  • Wenn Sie bestimmte Ressourcen in Ihrer App Engine-Anwendung als Ziel angeben möchten, trennen Sie diese mit der Syntax -dot-. Beispiel:
    https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

  • Wenn Sie eine HTTP-URL in eine HTTPS-URL konvertieren möchten, ersetzen Sie die Punkte zwischen den einzelnen Ressourcen durch -dot-. Beispiel:
    http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Weitere Informationen zu HTTPS-URLs und Ressourcenzielen finden Sie unter Anfragerouting.

Benutzerdefinierte Domains

Sie können die verwalteten SSL-Zertifikate von App Engine verwenden, um HTTPS-Anfragen mit Ihrer benutzerdefinierten Domain zu senden. Weitere Informationen finden Sie unter Benutzerdefinierte Domains mit SSL sichern.

Zugriffssteuerung

Richten Sie in jedem Cloud-Projekt die Zugriffssteuerung ein. Damit können Sie festlegen, wer auf die Dienste innerhalb des Projekts zugreifen kann, einschließlich App Engine. Sie können unterschiedlichen Konten unterschiedliche Rollen zuweisen, damit jedes Konto nur die zur Anwendungsunterstützung erforderlichen Berechtigungen hat. Details finden Sie unter Zugriffssteuerung einrichten.

App Engine-Firewall

Mit der App Engine-Firewall können Sie den Zugriff auf Ihre App Engine-App über eine Reihe von Regeln steuern, die Anfragen von den angegebenen IP-Adressbereichen zulassen oder ablehnen. Sie müssen keine Gebühren für von der Firewall blockierten Traffic bzw. blockierte Bandbreite zahlen. Eine Firewall kann für folgende Szenarien erstellt werden:

Traffic nur innerhalb eines bestimmten Netzwerks zulassen
Damit wird sichergestellt, dass nur ein konkreter Bereich von IP-Adressen bestimmter Netzwerke auf die Anwendung zugreifen kann. Beispielsweise können Sie Regeln erstellen, die festlegen, dass während der Testphase der Anwendung nur der angegebene Bereich von IP-Adressen aus dem privaten Netzwerk Ihres Unternehmens zulässig ist. Sie können dann Firewallregeln erstellen und bearbeiten, um den Umfang des Zugriffs während des gesamten Veröffentlichungsprozesses zu steuern. Dann haben nur bestimmte Organisationen innerhalb oder außerhalb Ihres Unternehmens die Möglichkeit, auf die Anwendung zuzugreifen, bis diese öffentlich verfügbar ist.
Traffic nur von einem bestimmten Dienst zulassen
Damit wird sichergestellt, dass der gesamte Traffic zur App Engine-Anwendung zuerst über einen bestimmten Dienst geleitet wird. Wenn Sie beispielsweise als Proxy für Anfragen, die direkt an die Anwendung gerichtet werden, die Web Application Firewall (WAF) eines Drittanbieters verwenden, können Sie mit Firewallregeln alle Anfragen mit Ausnahme derjenigen ablehnen, die von Ihrer WAF weitergeleitet werden.
Missbräuchliche IP-Adressen blockieren
Google Cloud setzt viele Mechanismen zur Abwehr von Angriffen ein. Zusätzlich können Sie die Anwendung mit der App Engine-Firewall schützen. Blockieren Sie dazu den Traffic von IP-Adressen mit böswilligen Absichten oder unterbinden Sie Denial-of-Service-Angriffe und ähnliche Formen missbräuchlicher Nutzung. Sie können einer Sperrliste IP-Adressen oder Subnetzwerke hinzufügen, damit Anfragen, die von diesen Adressen und Subnetzwerken stammen, abgelehnt werden, bevor sie die App Engine-Anwendung erreichen.

Wie Sie Regeln erstellen und die Firewall konfigurieren, erfahren Sie unter Zugriff auf Anwendungen mit Firewalls steuern.

Steuerelemente für eingehenden Traffic

In diesem Abschnitt wird beschrieben, wie Sie mit den Einstellungen für eingehenden Traffic den Netzwerkzugriff auf Ihre App Engine-Anwendung einschränken. Auf Netzwerkebene kann standardmäßig jede Ressource im Internet Ihre App Engine-Anwendung auf ihrer appspot-URL oder über eine in App Engine eingerichtete benutzerdefinierte Domain erreichen. Die URL appspot.com kann beispielsweise das folgende Format haben: SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com.

Sie können diese Standardeinstellung ändern, indem Sie eine andere Einstellung für eingehenden Traffic festlegen. Alle Ingress-Pfade, einschließlich der Standard-URL appspot.com, unterliegen der Einstellung für eingehenden Traffic. Eingehender Traffic wird auf Dienstebene festgelegt.

Verfügbare Einstellungen für eingehenden Traffic

Diese Einstellungen sind verfügbar:

Einstellung Beschreibung
Intern Stärkste Einschränkung. Ermöglicht Anfragen von Ressourcen, die an die VPC-Netzwerke des Projekts angehängt sind, z. B.
. Anfragen von diesen Quellen verbleiben im Google-Netzwerk, auch wenn sie über die URL appspot.com auf Ihren Dienst zugreifen. Anfragen aus anderen Quellen, einschließlich des Internets, können Ihren Dienst nicht über die URL appspot.com oder benutzerdefinierte Domains erreichen. Mehrinstanzenfähigkeit wird nicht unterstützt, also mehrere Vertrauensdomains in einem Projekt.
internes und Cloud-Load-Balancing Anfragen von den folgenden Ressourcen sind zulässig:
  • Ressourcen, die durch die restriktivere interne Einstellung zulässig sind
  • Externer HTTP(S)-Load-Balancer
Verwenden Sie die Einstellung Intern und Cloud Load Balancing, um Anfragen von einem externen HTTP(S)-Load-Balancer zu akzeptieren, aber nicht direkt aus dem Internet. Anfragen an die URL appspot.com umgehen den externen HTTP(S)-Load-Balancer. Daher verhindert diese Einstellung, dass externe Anfragen die URL appspot.com erreichen.
Alle Geringste Einschränkung. Ermöglicht alle Anfragen, einschließlich Anfragen direkt aus dem Internet an die URL appspot.com.

Auf interne Dienste zugreifen

Dabei gilt Folgendes:

  • Bei Anfragen von einer freigegebenen VPC wird der Traffic nur als intern betrachtet, wenn die App Engine-Anwendung im freigegebenen VPC-Hostprojekt bereitgestellt wird. Wenn die App Engine-Anwendung in einem freigegebenen VPC-Dienstprojekt bereitgestellt wird, ist nur der Traffic aus Netzwerken, die zum eigenen Projekt der Anwendung gehören. Der gesamte andere Traffic, einschließlich Traffic von anderen freigegebenen VPCs, ist extern.

  • Wenn Sie auf interne Dienste zugreifen, rufen Sie sie so auf, wie Sie es auch mit ihren öffentlichen URLs tun würden, entweder die Standard-URL appspot.com oder eine in App Engine eingerichtete benutzerdefinierte Domain.

  • Für Anfragen von Compute Engine-VM-Instanzen oder anderen Ressourcen, die in einem VPC-Netzwerk im selben Projekt ausgeführt werden, ist keine weitere Einrichtung erforderlich.

  • Verbinden Sie für Anfragen von anderen App Engine-Diensten oder von Cloud Run oder Cloud Functions im selben Projekt den Dienst oder die Funktion mit einem VPC-Netzwerk und leiten Sie den gesamten ausgehenden Traffic über den Connector weiter, wie unter Verbindung zu einem freigegebenen VPC-Netzwerk herstellen beschrieben.

  • Anfragen von Ressourcen innerhalb von VPC-Netzwerken im selben Projekt werden als intern klassifiziert, auch wenn die Ressource, von der sie stammen, eine öffentliche IP-Adresse hat.

  • Anfragen von lokalen Ressourcen, die über Cloud VPN mit dem VPC-Netzwerk verbunden sind, gelten als internal.

Einstellungen für eingehenden Traffic aufrufen

Console

  1. Rufen Sie die Seite „App Engine-Dienste“ auf.

    Zur Seite „Dienste“

  2. Suchen Sie die Spalte Ingress (Eingehend). Für jeden Dienst zeigt der Wert in dieser Spalte die Einstellung für eingehenden Traffic entweder als Alle (Standardeinstellung), Intern + Load-Balancing oder Intern.

gcloud

So rufen Sie die Einstellung für eingehenden Traffic für einen Dienst mit der gcloud CLI auf:

gcloud app services describe SERVICE

Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

So zeigen Sie beispielsweise die Einstellungen für eingehenden Traffic und andere Informationen für den Standarddienst an:

gcloud app services describe default

Einstellungen für eingehenden Traffic bearbeiten

Console

  1. Rufen Sie die Seite „App Engine-Dienste“ auf.

    Zur Seite „Dienste“

  2. Wählen Sie den Dienst aus, den Sie löschen möchten.

  3. Klicken Sie auf Einstellung für eingehenden Traffic bearbeiten.

  4. Wählen Sie die gewünschte Einstellung für eingehenden Traffic aus dem Menü aus und klicken Sie auf Speichern.

gcloud

So aktualisieren Sie die Einstellung für eingehenden Traffic für einen Dienst mit der gcloud CLI:

gcloud app services update SERVICE --ingress=INGRESS

Ersetzen Sie:

  • SERVICE: Name Ihres Dienstes.
  • INGRESS: Das Steuerelement für eingehenden Traffic, das Sie anwenden möchten. Entweder all, internal-only oder internal-and-cloud-load-balancing.

Beispiel:

  • So aktualisieren Sie den Standarddienst einer App Engine-Anwendung, damit dieser nur Traffic von Cloud Load Balancing und VPC-Netzwerken akzeptiert, die sich im selben Projekt befinden:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • Aktualisieren Sie den Dienst „internal-requests“ so, dass Traffic nur von VPC-Netzwerken im selben Projekt akzeptiert wird:

    gcloud app services update internal-requests --ingress=internal-only

Sicherheitsscanner

Der Google Cloud Web Security Scanner durchsucht Ihre App Engine-App auf Sicherheitslücken, Dafür folgt er allen Links im Bereich der Start-URLs und versucht, so viele Nutzereingaben und Event-Handler wie möglich anzuwenden.

Sie müssen Inhaber des Cloud-Projekts sein, um den Security Scanner verwenden zu können. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriffssteuerung einrichten.

Ermitteln Sie Sicherheitslücken in Ihrer App Engine-Anwendung mit den Sicherheitsscans über die Google Cloud Console. Weitere Informationen zum Ausführen vom Security Scanner finden Sie unter Security Scanner – Kurzanleitung.

ASP.Net Core-Datenschutzanbieter

Der ASP.NET Core-Datenschutzstack verwendet Verschlüsselungen, um Webanwendungsdaten wie Cookies und Anti--CSRF-Tokens zu schützen.

Mit der Standardeinstellung IDataProtectionProvider werden Verschlüsselungsschlüssel lokal auf dem Rechner gespeichert, auf dem der Webserver ausgeführt wird. Dies ist nicht mit App Engine kompatibel und führt zur Ausgabe von Fehlermeldungen.

Sie können dies mit Google.Cloud.AspNetCore.DataProtection.Storage und Google.Cloud.AspNetCore.DataProtection.Kms beheben. So können Sie diese Bibliotheken verwenden:

  1. Erstellen Sie einen Cloud Storage-Bucket.

  2. Erstellen Sie einen Cloud Key Management Service-Schlüsselring und einen Schlüssel:

    gcloud kms keyrings create dataprotectionprovider --location global
    gcloud kms keys create key --location global --keyring \
        dataprotectionprovider --purpose=encryption
    
  3. Legen Sie die Berechtigung für Ihr Dienstkonto fest, um den Schlüsselbund zu verwenden:

    gcloud kms keyrings add-iam-policy-binding dataprotectionprovider \
        --location 'global' \
        --member serviceAccount:my-project-id@appspot.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  4. Fügen Sie die Bibliotheken der Datei vom Typ .csproj Ihrer Anwendung hinzu:

    dotnet add package Google.Cloud.AspNetCore.DataProtection.Kms
    dotnet add package Google.Cloud.AspNetCore.DataProtection.Storage
    
  5. Fügen Sie der Anwendungsdatei appsettings.json den Namen des Buckets und des Objekts (Dateiname) hinzu, worin Schlüssel gespeichert werden, sowie den Namen Ihres KMS-Schlüssels:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*",
      "DataProtection": {
        "Bucket": "YOUR-BUCKET",
        "Object": "DataProtectionProviderKeys.xml",
        "KmsKeyName": "projects/YOUR-PROJECT-ID/locations/global/keyRings/dataprotectionprovider/cryptoKeys/key"
      }
    }
    
  6. Sie können den Datenschutzstack von ASP.NET Core für die Verwendung von Google-Bibliotheken konfigurieren. Fügen Sie hierfür der Datei Startup.cs Folgendes hinzu:

    
    using Google.Cloud.AspNetCore.DataProtection.Kms;
    using Google.Cloud.AspNetCore.DataProtection.Storage;
        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                // Antiforgery tokens require data protection.
                services.AddDataProtection()
                    // Store keys in Cloud Storage so that multiple instances
                    // of the web application see the same keys.
                    .PersistKeysToGoogleCloudStorage(
                        Configuration["DataProtection:Bucket"],
                        Configuration["DataProtection:Object"])
                    // Protect the keys with Google KMS for encryption and fine-
                    // grained access control.
                    .ProtectKeysWithGoogleKms(
                        Configuration["DataProtection:KmsKeyName"]);
    

Sie können ein ausführbares Beispiel mit einem Setup-Skript aus dem GitHub-Repository der Google Cloud herunterladen.