Best Practices für die Produktion

Google empfiehlt, beim Verwalten und Ausführen Ihrer Anwendung die folgenden Best Practices zu befolgen.

API-Schlüssel sichern

Sie benötigen einen API-Schlüssel, um unsere Onlinedienste nutzen zu können. Er ermöglicht es Google, Ihre Nutzung zu messen. Sie sollten Ihre API-Schlüssel einschränken, um eine nicht autorisierte Nutzung zu verhindern.

Einschränkungstypen für API-Schlüssel

Es gibt zwei Arten von Einschränkungen für API-Schlüssel, die gleichzeitig verwendet werden können.

EinschränkungstypBeschränkt die Schlüsselverwendung auf
API-Einschränkung Eine bestimmte API.
Anwendungseinschränkung Bestimmte IP-Adressen, Websites oder Apps.

Empfehlungen für API-Schlüsseleinschränkungen

Wir empfehlen für die folgenden Szenarien die Provision separater API-Schlüssel.

SzenarioEmpfehlung
Deine Backend-Gameserver rufen die Playable Locations API auf, um spielbare Standorte abzurufen. Konfigurieren Sie einen Schlüssel mit zwei Einschränkungen:
  • API-Einschränkung: Nur Aufrufe der Playable Locations API zulassen.
  • Anwendungseinschränkung: Nur Aufrufe von den IP-Adressen Ihres Back-End-Gameservers zulassen.
Die Android-Version Ihrer App ruft das Maps SDK for Unity auf, um Geodaten abzurufen. Konfiguriere einen Schlüssel mit einer Anwendungseinschränkung, um nur Aufrufe von der Android-Version deiner App zuzulassen.
Die iOS-Version Ihrer App ruft die Maps SDK for Unity API auf, um Geodaten abzurufen. Konfigurieren Sie einen Schlüssel mit einer Anwendungseinschränkung, um nur Aufrufe von der iOS-Version Ihrer App zuzulassen.

Weitere Informationen finden Sie unter Best Practices für die API-Sicherheit.

Einschränkungen für API-Schlüssel einrichten

  1. Rufen Sie in der Google Cloud Console den Bereich Anmeldedaten auf.
  2. Wählen Sie den API-Schlüssel aus, für den Sie eine Einschränkung festlegen möchten. Die Seite mit den Eigenschaften des API-Schlüssels wird angezeigt.
  3. Wählen Sie unter Schlüsseleinschränkungen den Tab Anwendungseinschränkungen aus. Wählen Sie dann einen der vier Anwendungseinschränkungstypen aus.
    Einschränkungstyp Beschreibung
    HTTP-Verweis-URLs Lasse Anfragen von der von dir bereitgestellten Liste von Websites zu.
    IP-Adressen Nehmen Sie Anfragen von der von Ihnen bereitgestellten Liste der Webserver-IP-Adressen an.
    Android-Apps Fügen Sie den Paketnamen und den SHA-1-Signaturzertifikat-Fingerabdruck hinzu, um die Nutzung auf Ihre Android-App einzuschränken.
    iOS-Apps Lasse Anfragen von der iOS-App mit dem von dir bereitgestellten Paket-Identifikator zu.
  4. Wählen Sie unter Schlüsseleinschränkungen den Tab API-Einschränkungen und dann die API aus, auf die Sie den API-Schlüssel einschränken möchten.
  5. Klicken Sie auf Speichern.

Aktualisierungen von API-Schlüsseln unterstützen

Sie müssen die Infrastruktur haben, über die API-Schlüssel in Ihrem Bereitstellungspaket aktualisiert werden können. Auf diese Weise kann Ihr Spiel wiederhergestellt werden, wenn Ihr API-Schlüssel manipuliert wurde, und Sie müssen ihn kurzfristig verlängern.

Verwenden Sie separate Schlüssel für jede Anwendung, damit Sie einen Schlüssel problemlos in einer Anwendung austauschen können, ohne andere Anwendungen zu beeinträchtigen.

Sicherheitsempfehlungen für Spieleserver

Wenn der Playable Locations API-Server aus irgendeinem Grund ausfällt, treten dann Probleme auf, wenn er wieder online ist, z. B. wenn mehrere Spieleserver gleichzeitig versuchen, eine Verbindung zum Server herzustellen. Ein solcher Anstieg für QPS kann den Server in einen DoS versetzen. Dadurch wird die Situation noch verschärft, weil eingehender Traffic blockiert wird.

Um diese Situation zu umgehen, bittet Google Sie, den binär exponentiellen Backoff auf Ihrem Spieleserver zu implementieren. Dies ist ein systematischer Ansatz, um bei Verbindungswiederholungen Abstand zu halten. Insbesondere implementieren Sie einen Algorithmus, der nach einem fehlgeschlagenen Verbindungsversuch N Sekunden wartet, bevor er es noch einmal versucht. Wenn der nächste Versuch fehlschlägt, verdoppelt der Algorithmus die Wartezeit und versucht es dann noch einmal. Wenn der nächste Versuch fehlschlägt, verdoppelt der Algorithmus die Wartezeit noch einmal und versucht es dann noch einmal. Sie verdoppeln die Wartezeit nach jedem Versuch, bis Ihr letzter Versuch erfolgreich ist.

Umgang mit HTTP-Rückgabestatuscodes

Für einige HTTP-Rückgabecodes, aber nicht für alle, sollten Sie einen binären exponentiellen Backoff implementieren.

400er
Dies sind Clientfehler, die in der Regel nicht behoben werden. Ein Wiederholen fehlgeschlagener Anfragen, die diese Fehlercodes erzeugen, funktioniert also nicht. Diese Art von Fehlern sollten Sie beim Testen erkennen.
429
Dieser Fehler ist auf eine Erschöpfung der Ressource zurückzuführen, die auftritt, wenn Ihr API-Kontingent aufgebraucht ist. Die Limits für die Anzahl der Abfragen pro Sekunde in Ihrem Projekt finden Sie unter Kontingente für Google APIs.
500er
Dies sind die serverseitigen Fehler – die Art von Fehlern, für die der exponentielle Backoff am nützlichsten ist.