Anwendungssicherheit

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 Google 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 Google 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.

Anwendungs-Handler

Wenn Sie HTTPS für die Handler Ihrer Anwendung erzwingen möchten, können Sie das Element secure: always für jeden Handler in der Datei app.yamlangeben. Beispiel:

handlers:
- url: /.*
  script: auto
  secure: always
  redirect_http_response_code: 301

Mit secure: always wird der gesamte HTTP-Traffic an eine HTTPS-URL mit demselben Pfad weitergeleitet. Weitere Informationen finden Sie in der Konfigurationsreferenz für die Datei app.yaml.

Zugriffssteuerung

Richten Sie in jedem Google 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 Application Load Balancer
Verwenden Sie die Einstellung Intern und Cloud Load Balancing, um Anfragen von einem externen HTTP(S)-Load-Balancer für Anwendungen zu akzeptieren, aber nicht direkt aus dem Internet. Anfragen an die URL appspot.com umgehen den externen Load-Balancer für Anwendungen. 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, intern. 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 Run-Funktionen 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

Einstellungen für ausgehenden Traffic

Wenn Sie den serverlosen VPC-Zugriff verwenden, können Sie die Einstellung für ausgehenden Traffic für Ihren App Engine-Dienst angeben.

Standardmäßig werden nur Anfragen an interne IP-Adressen und interne DNS-Namen über einen Connector für serverlosen VPC-Zugriff weitergeleitet. Sie können die Einstellung für ausgehenden Traffic für Ihren Dienst in der Datei app.yaml angeben.

Einstellungen für ausgehenden Traffic sind nicht mit dem URL-Abrufdienst kompatibel. Deaktivieren Sie die Standardeinstellung für den URL-Abruf, wenn Sie dies noch nicht getan haben. Dazu verwenden Sie Sockets und Beenden die explizite Nutzung des Pakets urlfetch. Bei Verwendung der urlfetch-Bibliothek werden die Einstellungen für ausgehenden Traffic ignoriert und Anfragen werden nicht über einen Connector für serverlosen VPC-Zugriff weitergeleitet.

So konfigurieren Sie das Verhalten des ausgehenden Traffics Ihres App Engine-Dienstes:

  1. Fügen Sie das Attribut egress_setting dem Feld vpc_access_connector der Datei app.yaml Ihres Dienstes hinzu:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    Ersetzen Sie:

    • PROJECT_ID durch Ihre Google Cloud-Projekt-ID
    • REGION durch die Region, in der sich der Connector befindet.
    • CONNECTOR_NAME ist der Name des Connectors.
    • EGRESS_SETTING durch einen der folgenden Werte:
      • private-ranges-only Standardeinstellung. Nur Anfragen an die IP-Adressbereiche RFC 1918 und RFC 6598 oder interne DNS-Namen werden an Ihr VPC-Netzwerk weitergeleitet. Alle anderen Anfragen werden direkt an das Internet weitergeleitet.
      • all-traffic Alle ausgehenden Anfragen von Ihrem Dienst werden an Ihr VPC-Netzwerk weitergeleitet. Anfragen unterliegen dann den Firewall-, DNS- und Routingregeln Ihres VPC-Netzwerks. Beachten Sie, dass die Weiterleitung aller ausgehenden Anfragen an Ihr VPC-Netzwerk den Umfang des ausgehenden Traffics erhöht, der vom Connector für serverlosen VPC-Zugriff verarbeitet wird. Es können Gebühren anfallen.
  2. Stellen Sie den Dienst bereit:

    gcloud app deploy
    

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 Google Cloud-Projekts sein, um den Sicherheitsscanner 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 der Google Cloud Console. Weitere Informationen zum Ausführen des Security Scanners finden Sie unter Web Security Scanner einsetzen.