Standardmäßig verwenden ausgehende Dienste in der App Engine-Standardumgebung, wie die URL Fetch API, die Sockets API und die Mail API, einen regionalen Pool dynamischer IP-Adressen, der von allen serverlosen Arbeitslasten gemeinsam genutzt wird. Die IP-Adressbereiche in diesem Pool ändern sich regelmäßig, sodass zwei aufeinanderfolgende Aufrufe derselben Anwendung von verschiedenen IP-Adressen stammen können.
Da andere serverlose Arbeitslasten diesen Standard-IP-Adresspool gemeinsam nutzen, sollten Sie sich nicht darauf verlassen, wenn Sie eine vorhersagbare Ursprungs-IP-Adresse oder eine isolierte IP-Reputation benötigen. Richten Sie stattdessen eine statische ausgehende IP-Adresse für Ihren Dienst ein, wenn:
- Sie stellen eine Verbindung zu einer externen Datenbank oder API her, die eine Zulassungsliste für IP-Adressen oder eine Firewall verwendet.
- Sie stellen eine Verbindung zu reputationssensitiven externen Endpunkten her, z. B. Zahlungs-Gateways, gehosteten Datenbanken oder Partner-APIs, die durch Web Application Firewalls (WAFs) von Drittanbietern geschützt sind. Störender Traffic von einem anderen Mandanten im standardmäßigen freigegebenen IP-Pool kann die IP-Reputation beeinträchtigen und dazu führen, dass externe WAFs Ihre Anfragen blockieren oder drosseln.
- Sie führen autorisierte Netzwerkscans, Portaufzählungen, Host-Fingerprinting, Sicherheitslückenprüfungen, Web-Scraping oder Lasttests aus.
Wenn Sie nur die IP-Adressbereiche nachschlagen müssen, die mit dem standardmäßigen ausgehenden Traffic von Ihrem Dienst verknüpft sind, können Sie die aktuellen IP-Adressbereiche ermitteln, die App Engine-IP-Adressen enthalten.
IP-Adressen für App Engine-Dienste
Sie können die aktuellen IP-Adressbereiche für App Engine-Dienste anhand von zwei JSON-Dateien ermitteln, die von Google veröffentlicht werden:
Google veröffentlicht eine Liste der Google-eigenen IP-Adressen in goog.json.
Außerdem veröffentlicht Google in der Datei cloud.json eine Liste globaler und regionaler externer IP-Adressbereiche, die für die Google Cloud -Ressourcen des Kunden verfügbar sind.
Wenn Sie alle Bereiche in cloud.json aus denen in goog.json entfernen, erhalten Sie eine große Anzahl von IP-Adressen, die von globalen Google APIs und anderen Google-Diensten verwendet werden, einschließlich kundenorientierter Produkte außerhalb von Google Cloud.
Diese Listen werden häufig aktualisiert.
Mit dem folgenden Python-Skript können Sie eine Liste der IP-Adressbereiche erstellen, die die von Google APIs und Diensten verwendeten enthalten.
Weitere Informationen zum Ausführen dieses Skripts finden Sie unter Ausführung.
Statische ausgehende IP-Adresse einrichten
Wenn Sie eine statische IP-Adresse für Ihren App Engine-Standardumgebungsdienst einrichten möchten, leiten Sie den ausgehenden Traffic entweder über ausgehenden Direct VPC-Traffic (Vorschau) oder über serverlosen VPC-Zugriff mit Cloud Router und Cloud NAT an ein VPC-Netzwerk (Virtual Private Cloud) weiter. Wenn Sie Ihrem VPC-Netzwerk ein Cloud NAT-Gateway hinzufügen, wird der ausgehende App Engine-Traffic über Ihre reservierte statische IP-Adresse weitergeleitet.
Wenn Ihr Dienst auf viele Instanzen skaliert wird oder viele gleichzeitige Verbindungen öffnet, z. B. während eines autorisierten Netzwerkscans, weisen Sie Cloud NAT mehrere statische IP-Adressen zu. Sie können auch die Mindestanzahl von Ports pro Instanz erhöhen oder die dynamische Portzuweisung aktivieren, um eine Port-Erschöpfung zu verhindern. Weitere Informationen zur Verwendung von IP-Adressen und Ports durch Cloud NAT-Gateways
Wenn Sie den Traffic über Cloud NAT weiterleiten, wird kein zusätzlicher Hop im Netzwerk-Stack verursacht, da das Cloud NAT-Gateway und der Cloud Router nur eine Steuerungsebene bieten und die Pakete nicht durch das Cloud NAT-Gateway oder den Cloud Router weitergeleitet werden.
In den folgenden Schritten wird gezeigt, wie Sie eine statische ausgehende IP-Adresse für Ihren Dienst der App Engine-Standardumgebung einrichten.
Prüfen Sie, ob Sie die Rolle roles/compute.networkAdmin oder eine benutzerdefinierte Rolle mit denselben Berechtigungen haben.
Erstellen Sie ein Subnetzwerk (Subnetz) in Ihrem VPC-Netzwerk für App Engine-Traffic. Dadurch wird vermieden, dass andere Ressourcen in Ihrem VPC-Netzwerk die statische IP-Adresse verwenden können.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE \ --network=NETWORK_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
SUBNET_NAMEdurch einen Namen, den Sie dem Subnetz geben möchtenRANGEdurch den IP-Bereich im CIDR-Format, den Sie diesem Subnetz zuweisen möchten (z. B.10.124.0.0/28).NETWORK_NAMEdurch den Namen Ihres VPC-Netzwerks.REGIONdurch die Region Ihres App Engine-Dienstes.
Verbinden Sie den App Engine-Dienst mit dem Subnetz.
Folgen Sie der Anleitung Verbindung zu einem VPC-Netzwerk herstellen und geben Sie den Namen des Subnetzes an, das Sie im vorherigen Schritt für das Connector-Subnetz erstellt haben.
Erstellen Sie einen neuen Cloud Router. Cloud Router ist eine erforderliche Komponente der Steuerungsebene für Cloud NAT.
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
ROUTER_NAMEdurch einen Namen für die Cloud Router-Ressource, die Sie erstellen möchten.NETWORK_NAMEdurch den Namen Ihres VPC-Netzwerks.REGIONdurch die Region, in der Sie ein NAT-Gateway erstellen möchten.
Reservieren Sie eine statische IP-Adresse.
Dies ist die Adresse, mit der Ihr Dienst ausgehenden Traffic sendet. Eine reservierte IP-Adressressource behält die zugrunde liegende IP-Adresse bei, wenn die ihr zugeordnete Ressource gelöscht und neu erstellt wird. Diese IP-Adresse wird auf die Kontingente für statische IP-Adressen in Ihrem Google Cloud -Projekt angerechnet.
gcloud compute addresses create ORIGIN_IP_NAME \ --region=REGION
Ersetzen Sie im obigen Befehl Folgendes:
ORIGIN_IP_NAMEdurch den Namen, den Sie der IP-Adressressource zuweisen möchten.REGIONdurch die Region, in der der Cloud NAT-Router ausgeführt wird. Idealerweise sollten Sie dieselbe Region wie der App Engine-Dienst verwenden, um Latenz und Netzwerkkosten zu minimieren.
Verwenden Sie den Befehl
compute addresses describe, um das Ergebnis anzeigen zu lassen:gcloud compute addresses describe ORIGIN_IP_NAME
Erstellen Sie ein Cloud NAT-Gateway und geben Sie Ihre IP-Adresse an.
Traffic aus Ihrem Subnetz wird über dieses Gateway geleitet und verwendet die statische IP-Adresse, die Sie im vorherigen Schritt reserviert haben.
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Ersetzen Sie im obigen Befehl Folgendes:
NAT_NAMEdurch einen Namen für die Cloud NAT-Gateway-Ressource, die Sie erstellen möchten.ROUTER_NAMEdurch den Namen Ihres Cloud Routers.REGIONdurch die Region, in der Sie ein NAT-Gateway erstellen möchten.ORIGIN_IP_NAMEdurch den Namen der reservierten IP-Adressressource, die Sie im vorherigen Schritt erstellt haben.
Legen Sie die Einstellung für ausgehenden Traffic für den serverlosen VPC-Zugriff auf
all-trafficfest.Standardmäßig senden App Engine-Dienste, die den serverlosen VPC-Zugriff verwenden, nur internen Traffic an Ihr VPC-Netzwerk. Wenn Sie Traffic mit externen Zielen an Ihr VPC-Netzwerk senden möchten, damit es die von Ihnen angegebene statische IP-Adresse hat, müssen Sie die Einstellung für ausgehenden Traffic ändern.
Geben Sie die Einstellung für ausgehenden Traffic in der
app.yaml-Datei für Ihren Dienst an:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: all-traffic
Ersetzen Sie:
PROJECT_IDdurch Ihre Google Cloud -Projekt-ID.REGIONdurch die Region, in der sich der Connector befindet.CONNECTOR_NAMEist der Name des Connectors.
Stellen Sie den Dienst bereit:
gcloud app deploy