Ausgehende IP-Adressen für App Engine-Dienste

Ausgehende Dienste wie die URL Fetch API, die Sockets API und die Mail API verwenden einen großen Pool von IP-Adressen. Die IP-Adressbereiche in diesem Pool unterliegen regelmäßigen Änderungen. Bei zwei aufeinanderfolgenden API-Aufrufen derselben Anwendung kann beispielsweise der Eindruck entstehen, sie stammten von zwei verschiedenen IP-Adressen.

So finden Sie die aktuellen IP-Adressbereiche, die App Engine für ausgehenden Traffic verwendet:

  1. Geben Sie in einer Befehls-Shell den folgenden Befehl ein:
    nslookup -q=TXT _cloud-netblocks.googleusercontent.com 8.8.8.8

    Die Antwort enthält alle aktuellen _cloud-netblocks für App Engine. Beispiel:

    Non-authoritative answer:
    _cloud-netblocks.googleusercontent.com  text = "v=spf1 include:_cloud-netblocks1.googleusercontent.com include:_cloud-netblocks2.googleusercontent.com include:_cloud-netblocks3.googleusercontent.com include:_cloud-netblocks4.googleusercontent.com include:_cloud-netblocks5.googleusercontent.com ?all"

    Diese Ergebnisse sind nicht statisch. Wenn Sie den Befehl eingeben, werden möglicherweise mehr oder weniger Netzwerkblöcke als im obigen Beispiel angezeigt.

  2. Geben Sie für jeden in der Antwort aufgelisteten Netzwerkbereich die folgende Abfrage ein:
    nslookup -q=TXT netblock-name 8.8.8.8

    Wenn die vorherige Abfrage beispielsweise fünf Netzwerkbereiche zurückgegeben hat, würden Sie die folgenden fünf Abfragen vornehmen:

    nslookup -q=TXT _cloud-netblocks1.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks2.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks3.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks4.googleusercontent.com 8.8.8.8
    nslookup -q=TXT _cloud-netblocks5.googleusercontent.com 8.8.8.8

Jede Abfrage eines bestimmten Netzwerkbereichs gibt einen IP-Bereich zurück, den Sie für ausgehenden App Engine-Traffic verwenden können. Die Abfrage von _cloud-netblocks1 im obigen Beispiel könnte beispielsweise Folgendes zurückgeben:

Non-authoritative answer:
_cloud-netblocks1.googleusercontent.com text = "v=spf1 include:_cloud-netblocks6.googleusercontent.com include:_cloud-netblocks7.googleusercontent.com ip6:2600:1900::/35 ip4:8.34.208.0/20 ip4:8.35.192.0/21 ip4:8.35.200.0/23 ip4:23.236.48.0/20 ip4:23.251.128.0/19 ip4:34.64.0.0/11 ip4:34.96.0.0/14 ?all"

An diesem Beispiel erkennen wir, dass die IP-Bereiche 8.34.208.0/20 und 8.35.192.0/21 für den App Engine-Traffic verwendet werden können. Andere Abfragen für zusätzliche Netzwerkbereiche können zusätzliche IP-Bereiche zurückgeben.

Die Verwendung von Filtern für statische IP-Adressbereiche ist weder sicher noch effektiv. Ein Angreifer könnte beispielsweise eine schädliche App Engine-Anwendung einrichten, die denselben IP-Adressbereich wie Ihre Anwendung freigibt. Wir schlagen vor, dass Sie sich für einen Defense-in-Depth-Ansatz mit OAuth und Zertifikaten entscheiden.