アプリケーションで API キーを使用する場合は、保存時と転送時の両方でキーの安全確保に努めてください。API キーが公開されると、アカウントに対して予想外の料金が課されたり、データへの不正アクセスが発生したりする可能性があります。API キーの安全性を保つには、次のベスト プラクティスを実装してください。
キーに API キー制限を追加する
制限を追加することで、API キーの使用方法を制限し、API キーが不正使用された場合の影響を軽減できます。
詳細については、API キーの制限を適用するをご覧ください。
API キーを Google API に提供するためにクエリ パラメータを使用しない
API キーをクエリ パラメータとして API に提供すると、URL に API キーが挿入されるため、URL スキャンによってキーが盗難に遭ってしまいます。代わりに、x-goog-api-key
HTTP ヘッダーまたはクライアント ライブラリを使用してください。
不要な API キーを削除して、攻撃を受けるリスクを最小限に抑える
攻撃対象領域をできるだけ小さくするため、現在使用している API キーのみを保持します。
API キーをクライアント コードに含めたり、コード リポジトリに commit したりしない
ソースコードにハードコードされている API キーやリポジトリに保存されている API キーは、不正な行為者による傍受や盗難の対象となります。クライアントはリクエストをサーバーに渡し、サーバーが認証情報を追加してリクエストを発行できるようにします。
サービス アカウントにバインドされた API キーを本番環境で使用しない
サービス アカウントにバインドされた API キーは、 Google Cloud APIs を探索するデベロッパーの初期エクスペリエンスを迅速化するように設計されています。そのため、本番環境では使用しないでください。代わりに、最小権限のセキュリティ プラクティスに沿って、Identity and Access Management(IAM)ポリシーや有効期間が短いサービス アカウント認証情報など、より安全な代替手段への移行を計画してください。
サービス アカウントにバインドされた API キーの使用から、より安全な方法への移行をできるだけ早く行う必要がある理由は次のとおりです。
API キーはリクエストとともに送信されます。これにより、キーが漏洩またはログに記録される可能性が高くなります。
API キーは Bearer 認証です。つまり、サービス アカウントにバインドされている API キーが盗まれた場合、その人物は API キーを使用してサービス アカウントとして認証し、サービス アカウントがアクセスできるリソースにアクセスできます。
サービス アカウントにバインドされた API キーを使用すると、監査ログでエンドユーザー ID の把握が困難になります。個々のユーザーの操作を追跡できるよう、それぞれのユーザーが独自の認証情報セットを持っていることを確認してください。
優れたモニタリングとロギングを実装する
API の使用状況をモニタリングすると、不正使用を警告できます。詳細については、Cloud Monitoring の概要と Cloud Logging の概要をご覧ください。
API キーを分離する
各チームメンバーに、アプリケーションごとに独自の API キーを提供します。これにより、アクセスの制御と監査証跡が可能になり、API キーが不正使用された場合の影響を軽減できます。
API キーを定期的にローテーションする
新しい API キーを定期的に作成して、古いキーを削除し、新しい API キーを使用するようにアプリケーションを更新します。
詳細については、API キーをローテーションするをご覧ください。
より安全なアクセス許可方法を検討する
認証方法の選択については、認証方法をご覧ください。