運用時の推奨事項

アプリを管理および運用するときは、以下の推奨事項に従ってください。

API キーの保護

Google のオンライン サービスを利用するには API キーが必要です。Google は API キーを使用して、お客様の使用量を測定します。不正使用を防ぐため、API キーを制限することをおすすめします。

API キーの制限のタイプ

API キーの制限には 2 種類あり、両方を同時に使用できます。

制限タイプキー使用制限の対象
API の制限 特定の API
アプリケーションの制限 特定の IP アドレス、ウェブサイト、アプリ

API キーの制限に関する推奨事項

次の事例では、使用する API キーを分けることをおすすめします。

事例推奨事項
バックエンド ゲームサーバーが Playable Locations API を呼び出し、プレアブル ロケーションを取得する。 API キーに次の 2 つの制限を設定します。
  • API の制限: Playable Locations API のみの呼び出しを許可します。
  • アプリケーションの制限: バックエンド ゲームサーバーの IP アドレスからの呼び出しのみを許可します。
アプリの Android バージョンが Maps SDK for Unity を呼び出し、地理データを取得する。 API キーにアプリケーションの制限を設定し、アプリの Android バージョンからの呼び出しのみを許可します。
アプリの iOS バージョンが Maps SDK for Unity API を呼び出し、地理データを取得する。 API キーにアプリケーションの制限を設定し、アプリの iOS バージョンからの呼び出しのみを許可します。

詳しくは、API の保護に関するベスト プラクティスをご覧ください。

API キーの制限を設定する

  1. Google Cloud Console の [認証情報] パネルに移動します。
  2. 制限を設定する API キーを選択します。選択した API キーのプロパティ ページが表示されます。
  3. [キーの制限] で [アプリケーションの制限] タブを選択し、4 つのアプリケーション制限タイプのいずれかを選択します。
    制限タイプ 説明
    HTTP リファラー 提供したウェブサイトのリストからのリクエストを受け入れます。
    IP アドレス 提供したウェブサーバー IP アドレスのリストからリクエストを受け入れます。
    Android アプリ パッケージ名と SHA-1 署名証明書フィンガープリントを追加して Android アプリの使用を制限します。
    iOS アプリ 指定したバンドル ID を持つ iOS アプリからリクエストを受け入れます。
  4. [キーの制限] で [API の制限] タブを選択し、API キーを制限する API を選択します。
  5. [保存] をクリックします。

API キーの更新のサポート

インフラストラクチャを正しく配置し、配信スタック全体で API キーを更新できるようにします。これにより、API キーが不正使用された場合でも、API キーをすぐに更新してゲームを復旧できます。

アプリごとに異なるキーを割り当てると、他のアプリに影響を与えることなく、キーを簡単に入れ替えることができます。

ゲームサーバーの安全に関する推奨事項

Playable Locations API サーバーがなんらかの理由で停止した場合、オンラインに戻る際、複数のゲームサーバーが同時に再接続しようとすると問題が発生します。QPS が急増することでサーバーが DoS モードに陥り、受信トラフィックがブロックされるため状況が悪化してしまいます。

この問題を軽減するため、ゲームサーバーに 2 進指数バックオフを実装してください。これにより、間隔を空けて規則正しく接続を再試行できるようになります。具体的には、再接続に失敗してから N 秒後に再試行するアルゴリズムを実装します。次の試行が失敗した場合、待機時間を 2 倍にして再び接続を試みます。その試行も失敗した場合は、再び待機時間を 2 倍にして、もう一度試行します。最終的に接続に成功するまで、試行のたびに待機時間を 2 倍に増やします。

HTTP リターン ステータス コードの処理

(すべてではなく)一部の HTTP リターンコードに 2 進指数バックオフを実装する必要があります。

400 番台
ほとんどの場合、復旧しないクライアント エラーです。このエラーコードを生成したリクエストを再試行しても、復旧することはありません。この種のエラーはテスト中に検出する必要があります。
429
リソースの制限に達したことを示すエラーで、API の割り当てが足りなくなると発生します。お客様のプロジェクトの API QPS 制限は、Google API の割り当てでご確認ください。
500 番台
サーバー側のエラーです。これらのエラーには指数バックオフが最も効果的です。