TECH PLAY

学生

イベント

マガジン

技術ブログ

はじめに はじめまして。金沢工業大学 情報工学科 2 年の高岡己太朗です。 大学では Android ...
G-gen の杉村です。Google が提供する Google AI Studio で発行した API キー が何らかの方法で他人に知られたことにより、悪意ある主体によって大量に Gemini モデルへのリクエストが発行され、利用料が過剰に発生する事象が観測されています。当記事ではこの事象の説明と、対処法について解説します。 事象と背景 事象の原因 キーが他人に知られた原因 不正利用の原因 対策 対策の一覧 対象者 予算アラートと異常検知の設定 予算アラート 請求先アカウントの異常検知 迷惑メールに分類されない設定 Spend Caps の使用(Private Preview) 使用状況の把握 把握方法 課金レポートの確認 Cloud Asset Inventory の確認 API キーの制限の徹底 概要 API キーの所在の把握 API キーの制限 ベストプラクティスへの準拠 Google AI Studio から Vertex AI への移行 Vertex AI を第一選択肢に 移行する場合 追加のセキュリティ施策 Google AI Studio の使用禁止 管理者設定による使用禁止 短絡的に禁止しない 目的別のプロジェクト分離 事象と背景 Google が提供する Web サービスである Google AI Studio では、 API キー を発行することで、生成 AI モデル Gemini を API 経由で呼び出すことができます。 Web 上のブログ記事や SNS などの情報では、この Google AI Studio で発行される API キーを使って、AI CLI ツールや IDE、その他 AI 関連ツールから Gemini を呼び出す方法が頻繁に紹介されています。 一方で2026年4月現在、API キーが何らかの方法で他人に知られたことにより、悪意ある第三者によって大量に Gemini モデルへのリクエストが発行され、利用料が過剰に発生する事象が複数件、観測されています。ケースによっては、数百万円を超える課金が発生したとされています。こうした課金は、たとえ意図しないものであっても、原則としてユーザー側が支払う義務を負うことになります。 このような事象が発生しないよう、厳正な予防措置が必要です。また、後述のように、Google AI Studio は「個人開発者、研究者、学生」等を対象としたサービスとされています。企業等が API 経由で Gemini を使用する場合は、 Vertex AI と サービスアカウント の使用が推奨されます。 当記事ではこの事象の説明と、対処法について解説します。 Google AI Studio の画面 事象の原因 キーが他人に知られた原因 API キーが「流出」する原因は、複数が考えられます。 クライアントや Web ページへのハードコーディング(Google Maps や Firebase など、キーがクライアント側に露出することが前提の場合を含む) GitHub 等の公開リポジトリへのアップロード その他、意図しない公開 特に、Google Maps や Firebase など、キーがクライアント側に 露出することが前提 の API キーが「流出」し、Gemini API の不正利用に繋がったケースは注目に値します。これらの API キーは公式に「シークレット(機密情報) ではない 」と案内されているほか、HTML にハードコードする手法が紹介されているなど、クライアント側に露出することが前提であるとされてきました。そのため、このキーが他人に知られることは、厳密にいうと「流出」ではありません。 Google AI Studio における API キーの一覧 不正利用の原因 問題は、これらの API キーは Google Cloud プロジェクトに所属 する API キーであり、 他の API の呼び出しにも共通して使用できる ものであるという点です。 API キーには 制限 (restrictions)を設定できます。API キーの制限とは、アクセス可能な API を限定する設定のことです。クライアントに露出しているキーは、Google Maps API や Firebase API などに制限されているべきです。制限がかかっていないキーを使うと、そのキーが所属するプロジェクトで 有効 (enabled)になっている他の API を呼び出すことができます。 参考 : API キーに制限を追加する | API Keys API Documentation 過剰請求が発生したケースの中には、当初は API キーが所属するプロジェクトで Gemini API が有効化されていなかったため問題なかったものの、 あとから Gemini API が有効化された ことで、制限なしの API キーによって Gemini API を呼び出せるようになってしまった、という経緯のものがあったと考えられます。 Google Cloud における API キーの一覧 対策 対策の一覧 意図しない過剰請求を避けるには、以下のような対策の一部または全部を行うことが望ましいといえます。 予算アラートと異常検知の設定 使用状況の把握 API キーの制限の徹底 Google AI Studio から Vertex AI への移行 Google AI Studio の使用禁止 目的別のプロジェクト分離 上記は、概ね1から順番に行うことが望ましいですが、必ずすべてを実行する必要があるわけではありません。各項目の内容を理解して、必要性を判断してください。特に、1から3までは被害の拡大を防ぐために優先して順に実施することが望ましいです。4から6については、組織のポリシーや開発体制に合わせて適切なものを並行して検討、実施してください。 対象者 上記対策は、主に情報システム担当部門等、組織全体の情報セキュリティを管理する立場の方が実施することを想定したものも含まれていますが、開発者や利用部門などの一般利用者も参考にするべき対策も含まれています。 管理者、開発者、その他の一般利用者のいずれも、上記の対策を理解して検討することが推奨されます。 予算アラートと異常検知の設定 予算アラート 万が一、API キーやその他の認証情報が流出して API が不正利用され、過剰請求が発生した際には、その状況をすぐに検知して対策する必要があります。迅速に検知できるよう、請求先アカウントに 予算アラート を設定してください。 参考 : 予算と予算アラートの作成、編集、削除 | Cloud Billing | Google Cloud Documentation 参考 : 予算アラートの設定方法 - G-gen Tech Blog 予算アラートは、組織レベル、フォルダレベル、プロジェクトレベルのそれぞれで作成できます。それぞれのレベルで必要な権限が異なるため、詳細は上記のドキュメントを参照してください。 予算アラートの設定画面 請求先アカウントの異常検知 請求先アカウントには、予算アラートとは別に、 異常検知 (Anomaly detection)も設定可能です。 異常検知を正しく設定すると、過去の支出状況と比較して、異常と判断された場合に、請求先アカウントに「請求先アカウント管理者」ロールを持っている人や、該当のプロジェクトに「オーナー」ロールを持っている人に対してメール通知等を発報することができます。 参考 : 費用の異常を表示して管理する 参考 : Google Cloud請求先アカウントの異常検知(Anomaly Detection)を解説 - G-gen Tech Blog 迷惑メールに分類されない設定 予算アラートや異常検知のメールが Google から正しく届くよう、以下のドキュメントに掲載されているメールアドレス等からのメールが迷惑メールに分類されたりすることのないよう、正しく設定しておく必要があります。 参考 : Google Cloud サービスに関する重要なお知らせ - MSA チームが使用するメールアドレス Spend Caps の使用(Private Preview) 2026年4月23日、Google Cloud の旗艦イベント「Google Cloud Next」で、 Spend Caps 機能が公開されました。Spend Caps を使うと、Google AI Studio、Gemini Enterprise Agent Platform(旧称 Vertex AI)、Cloud Run、Cloud Run functions において、プロジェクトレベルのコスト制限を設けることができます。設定した予算に達するとアラート、もしくは API トラフィックの一時停止が可能です。 ただし2024年4月現在、当機能は Private Preview であり、使用には申請のうえ Google の審査が入ります。必ず使用できるわけではないうえ、Preview 中のサービスは本番環境での使用が推奨されていません。当機能が一般公開(GA)されるまでは他の対策を充実することを検討してください。 参考 : AI時代に向けた次世代FinOps 使用状況の把握 把握方法 単一または少数のプロジェクトの場合 単一または少数の Google Cloud プロジェクトの範囲内であれば、Google AI Studio と API キーの利用状況の確認は簡単です。 Google AI Studio の API キー一覧画面( https://aistudio.google.com/api-keys )にアクセスすることで、主に自分が発行した API キーの一覧を確認できます。 ただし、ここに一覧表示されるキーは、同画面で「インポート」した Google Cloud プロジェクトに紐づくキーのみです。企業等の組織全体のキー発行状況を確認するには、すべての Google Cloud プロジェクトをインポートする必要があり、これは UI の仕様からも現実的ではありません。 Google AI Studio における API キーの一覧 組織全体の場合 情報システム担当部門等のクラウド管理者が、Google Cloud 組織全体で Google AI Studio や API キーの使用状況を把握するためには、以下のような複数の手法が知られています。 課金レポートの確認 Cloud Asset Inventory の確認 以下に、それぞれの手法の概要と、その手法で何が把握できるのかについて解説します。 課金レポートの確認 自組織の 請求先アカウント の 課金レポート を確認することで、Google AI Studio 経由の Gemini API に関する課金の発生有無を把握できます。 これにより把握できることは「Google AI Studio 経由の Gemini API が使用され、料金が発生しているプロジェクト ID の一覧」です。把握できるスコープは「その請求先アカウントと紐づいているすべてのプロジェクト」です。 この操作を行うには、該当の請求先アカウントに対して少なくとも請求先アカウント閲覧者( roles/billing.viewer )ロールが必要です。権限が不足している場合、後述の手順で請求先アカウントを選択できません。 手順は、以下のとおりです。 Google Cloud コンソール( https://console.cloud.google.com/ )にログイン 検索ボックスに「レポート」と入力 サジェストされた「レポート / プロダクト ページ・課金」をクリック プルダウンメニューから請求先アカウントを選択 「レポートに移動」ボタンをクリック この画面で、以下の操作を行います。 画面上部の「グループ化」フィルタで「プロジェクト」を選択 画面上部の「サービス」フィルタでサービスを「Gemini API」のみに絞る 必要に応じて画面上部の「期間」フィルタで、期間を「使用日」「先月」に設定 これにより画面下部に、Google AI Studio 経由の Gemini API に関する課金が発生しているプロジェクトの一覧や、その課金額が一覧表示されます。 課金レポートによるプロジェクトの特定 Cloud Asset Inventory の確認 組織レベルで Cloud Asset Inventory を確認することで、Gemini API が有効化されているプロジェクト、すなわち Google AI Studio の API キーが発行されている可能性が高いプロジェクトを特定できます。 Cloud Asset Inventory は、組織やプロジェクトのクラウドリソース(アセット)のメタデータを保存および閲覧するためのサービスです。 これにより把握できることは「Google AI Studio 経由の Gemini API が使用されている可能性が高いプロジェクト ID の一覧」です。把握できるスコープは「Google Cloud 組織」です。 この操作を行うには、該当の Google Cloud 組織の組織ルートレベルで、クラウド アセット閲覧者( roles/cloudasset.viewer )ロールおよび Service Usage ユーザー( roles/serviceusage.serviceUsageConsumer )ロールが必要です。権限が不足している場合、後述の手順で組織ルートノードを選択できません。 Google AI Studio の利用者が API キーを使って Gemini API を使用するには、キーの所属する Google Cloud プロジェクトで generativelanguage.googleapis.com API(以下、Gemini API)が有効になっている必要があります。こういったプロジェクトを Cloud Asset Inventory で一覧化できます。 Gemini API が有効になるタイミングは、以下が考えられます。 Google AI Studio の UI で新規プロジェクトを作成した時点で、そのプロジェクトでは Gemini API が有効化される Google AI Studio の UI でプロジェクトをインポートし、同プロジェクトを指定して API キーを作成した時点で、そのプロジェクトでは Gemini API が有効化される よって、同 API が有効になっているプロジェクトでは、Google AI Studio の API キーが発行されたことがある可能性が高いといえます。課金レポートを確認する方式と比べ、まだ課金が発生していなくても、疑わしいプロジェクトを特定できます。 これらのプロジェクト一覧を表示する手順は、以下のとおりです。 Google Cloud コンソール( https://console.cloud.google.com/ )にログイン Cloud Asset Inventory の「リソース」画面に遷移( https://console.cloud.google.com/iam-admin/asset-inventory/resources ) コンソール画面左上部のプロジェクトセレクタで、組織ルートノードを選択 アセット一覧表の上部のフィルタに services/generativelanguage.googleapis.com と入力 Cloud Asset Inventory による API 有効化済みプロジェクトの一覧 なお、Google AI Studio の UI で新規プロジェクトを作成した場合、以下のようなプロジェクトが自動作成されます。このような特徴を持つプロジェクトでは、Gemini API が利用されている可能性が高いことがすぐにわかります。 プロジェクト ID が右のような形式になっている: gen-lang-client-0123456789 組織ルートノード直下に作成される(フォルダに格納されていない) 組織、フォルダ、プロジェクトの一覧は、Resource Manager の「リソースの管理」画面( https://console.cloud.google.com/cloud-resource-manager )で確認できます。 API キーの制限の徹底 概要 Google AI Studio で発行する API キーは、 Google Cloud プロジェクトの API キー です。Google Cloud プロジェクトでは、Google Maps API や Firebase API を実行するためだったり、Google Workspace の各種 API を実行するためなど、様々な理由で API キーが発行される可能性があります。Google AI Studio の UI で発行する API キーは、Google AI Studio 専用というわけではなく、これらと同じものです。 前述のとおり、以下の流れで、過去に発行した API キーが原因で Gemini API が大量にリクエストされてしまう可能性があります。 Google Maps や Firebase のために、公開が前提である API キーを発行した ソースコードへのハードコード等により API キーが他人に知られる API キーが所属するプロジェクトで後から Gemini API が有効化される 上記の場合にも、Gemini API 等が不正利用されることを防ぐため、API キーには制限を設定する必要があります。 API キーの所在の把握 Google Cloud 組織配下で発行されている API キーの一覧を確認するには、 Cloud Asset Inventory が使用できます。 これにより把握できることは「過去に発行された API キーの一覧」「その API キーを格納している Google Cloud プロジェクトの一覧」です。把握できるスコープは「Google Cloud 組織」です。 この操作を行うには、該当の Google Cloud 組織の組織ルートレベルで、クラウド アセット閲覧者( roles/cloudasset.viewer )ロールおよび Service Usage ユーザー( roles/serviceusage.serviceUsageConsumer )ロールが必要です。権限が不足している場合、後述の手順で、プロジェクトセレクタにおいて組織ルートノードを選択できません。 以下の手順により、発行済みの API キーの一覧と、その所属プロジェクト等を確認できます。 Google Cloud コンソール( https://console.cloud.google.com/ )にログイン Cloud Asset Inventory の「リソース」画面に遷移( https://console.cloud.google.com/iam-admin/asset-inventory/resources ) コンソール画面左上部のプロジェクトセレクタで、組織ルートノードを選択 アセット一覧表の上部のフィルタに apikeys.googleapis.com と入力 Cloud Asset Inventory による発行済み API キーの一覧 API キーの制限 API キーの所在を把握したら、プロジェクトの担当者に連絡し、API キーに 制限 (restrictions)が設定されていることを確認してください。API キーの制限とは、アクセス可能な API を限定する設定のことです。 参考 : API キーに制限を追加する | API Keys API Documentation 前述のとおり、Google Maps や Firebase など、他の目的で発行された API キーが他人に不正利用された場合、制限がかけられていないキーについては、そのキーを使って Gemini API などへのリクエストが可能です。 後述のプロジェクト分離などは別途検討する前提のうえで、API キーには制限を設定することが望ましいです。 以下の手順で、API キーの制限の状態を確認したり、制限を追加できます。 Google Cloud コンソール( https://console.cloud.google.com/ )にログイン 「API とサービス」画面の「認証情報」タブに遷移( https://console.cloud.google.com/apis/credentials ) コンソール画面左上部のプロジェクトセレクタで、対象のプロジェクトを選択 表「API キー」を確認。制限が設定されていればキーの名前の左部に緑色のチェックマークが表示される。名前をクリックすることで制限の詳細を確認したり、制限を追加できる Google Cloud における API キーの一覧 ベストプラクティスへの準拠 使用していない API キーを削除する、アプリケーションごと(用途ごと)にキーを分離する、定期的なローテーションなど、以下のドキュメントに記載のベストプラクティスに準拠してください。 参考 : API キーの管理に関するベスト プラクティス | Authentication | Google Cloud Documentation また、以下のような基本的な事項に注意を払ってください。Google Maps や Firebase 利用用途で API キーを発行した場合、「API キーはシークレット(機密情報)ではない」とされていますが、少なくとも Gemini API では課金を伴う API リクエストの認証情報として使用されている以上、シークレットあるいはそれに準じるものとして扱うことが望ましいといえます。 原則としてソースコードに API キーをハードコーディングしない。する必要がある場合、API キーに制限をかける GitHub などの公開リポジトリに API キーをアップロードしない インターネット公開されているストレージに、API キーを配置しない 社内のチャットや、メール、ポータルサイト、その他多数の目に触れる場所に API キーを貼り付けない その他、公共のインターネットからアクセスできる場所に API キーを配置しない Google AI Studio から Vertex AI への移行 Vertex AI を第一選択肢に Gemini を API 経由で利用する場合は、Google AI Studio ではなく、代わりに Vertex AI と サービスアカウント を用いた Gemini 利用を第一の選択肢として検討してください。 Google AI Studio は「個人開発者、研究者、学生」等を対象としたサービスとされており、企業で Gemini API を利用する場合は、Vertex AI API 経由で Gemini を呼び出すことが推奨されます。 参考 : Gemini Enterprise の比較 - Google AI Studio、Vertex AI 参考 : Google AI Studio vs Vertex AI。違いや選び方を解説 - G-gen Tech Blog Vertex AI を使用することで、Google Cloud のサービスアカウントを使って認証できるようになります。サービスアカウントを使うと、Cloud Run や Compute Engine といった Google Cloud のコンピュートプラットフォーム上からは、テキスト形式の認証情報を 使うことなく 、Gemini を API 経由で呼び出すことができます。 この仕組みは Application Default Credentials(ADC)と呼ばれ、最も推奨される方法です。 参考 : アプリケーションのデフォルト認証情報を構成する | Generative AI on Vertex AI | Google Cloud Documentation 移行する場合 Google AI Studio から Vertex AI への移行については、以下のドキュメントを参照してください。 参考 : Google AI Studio から Vertex AI に移行する | Generative AI on Vertex AI | Google Cloud Documentation 追加のセキュリティ施策 Vertex AI を使用することで、Google Cloud に用意されている以下のような追加のセキュリティ施策を適用可能です。 Workload Identity を使うことで、Amazon Web Services(AWS)の IAM ユーザーなど、他のプラットフォームの認証情報に基づいて API を呼び出すことができます。 参考 : Workload Identity 連携 | Identity and Access Management (IAM) | Google Cloud Documentation VPC Service Controls という仕組みを使うと、呼び出し元の IP アドレスを制限したり、アイデンティティやそのコンテキスト情報などに基づいた、コンテキストアウェアなアクセス制限を適用できます。 参考 : VPC Service Controls の概要 | Google Cloud Documentation 参考 : VPC Service Controlsを分かりやすく解説 - G-gen Tech Blog Google AI Studio の使用禁止 管理者設定による使用禁止 Google Workspace または Cloud Identity を使っている場合、管理者設定により、組織で管理している Google アカウントに対して、Google AI Studio の使用を禁止できます。 これにより、開発者が無償版の API キーを発行して、組織の機密情報や顧客情報、個人情報等を Google に送信してしまうことを防ぐことができるほか、当記事の冒頭で紹介したような過剰請求を未然に防止できます。設定手順は以下の公式ドキュメントを参照してください。 参考 : その他の Google サービスを有効または無効にする | Advanced Google Workspace 管理画面における Google サービスのオン・オフ 短絡的に禁止しない Google AI Studio を禁止することはセキュリティと統制の観点で有用ですが、その代わり、組織における Google の生成 AI の検証やスピーディーな業務導入を阻害することにも繋がります。 短絡的に禁止するのではなく 、Google AI Studio をセキュアに使用するためのガイドラインや手順を整備するといった代替策や、禁止する場合でも社内で Vertex AI をスピーディーに使用開始するための手順を整備するなど、 組織の AI 活用を阻害せずにセキュリティを確保する 方法の検討が望まれます。 目的別のプロジェクト分離 「事象の原因」の章で紹介したように、あとから Google Cloud プロジェクトで API が有効化されることによって、API キーを発行した当初には想定していなかった API が呼び出されることを防ぐには、 目的別にプロジェクトを分離 することが重要です。 Google Maps 用、Firebase 用、Gemini API 用など、用途・目的別に Google Cloud プロジェクトを分けて作成するほか、本番環境、ステージング環境、開発環境など、環境別にプロジェクトを分けるのも有効です。 プロジェクトを細かい粒度で分けることで、万が一 API キーやその他の認証情報が流出した際にも、 影響範囲を最小化 し、キーや認証情報の停止などの 対策 を適切な粒度で、かつスピード感を持って実行できるようになります。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
未来のネットワークエンジニアになる学生たちの熱き戦い みなさん、こんにちは。IIJの片貝です。 エンジニアと一言でいっても分野はさまざまですが、昨今の情報化社会を縁の下の力持ちとして支えている存在が、...

動画

書籍