
代表の後藤です。
2,380万件
これ、なんの数字だと思いますか?
2024年だけで公開GitHubに流出した秘密情報(APIキーなど)の件数だそうです。
※セキュリティ会社GitGuardianが発表した調査結果
そのうちOpenAI系のAPIキーは、2022年から2024年で約1,212倍に増えているそうです。
まあ驚きの数値ですよね。
しかも、先日SNSを見ていたら、海外のアカウントで「GitHub上にOpenAI系のAPIキーが160万件も流出している」とスクショ付きの投稿を見かけました。
弊社もAPIをいくつも使っているので、これは他人事じゃないな、と。
しかも最近、Claude Codeユーザーが急増しているので、非エンジニアの方ほど気づかないうちにトラブルに巻き込まれやすい話です。
放置すると、数十万円~の請求が飛んでくる可能性もあります。
今回は、「なぜAPIキーが漏れるのか」「漏れたら何が起きるのか」「3分でできる対策」を、非エンジニアの方にもわかるように整理します。
なぜそんなに漏れるのか
APIキーというのは、要するに「ChatGPTやClaudeを自分のプログラムから動かすときの鍵」です。
この鍵を持っている人は、その鍵の持ち主のアカウントでAIを使えてしまいます。
つまり、他人に鍵を知られたら、その他人があなたの残高でAIを使い放題になるということです。
で、なぜこんなに漏れているのか。
自分で書いたコードの中にAPIキーを直接書いてしまい、それをそのままGitHubに公開してしまう
このパターンが多いはず。
GitHubは世界中のエンジニアが使っているコード共有サービスで、デフォルトでは公開状態。
なのでコードを上げた瞬間、世界中から見える状態になります。
そして悪意のある人たちは、定期的にGitHubで OPENAI_API_KEY= みたいな文字列を検索して、流出したキーを片っ端から拾っています。
さらに怖いのが、「ゾンビ問題」と呼ばれている現象です。
GitGuardianの同じ調査では、漏洩したキーの9割以上が5日経っても有効なままで、2022年に漏れたキーの約7割は今も使える状態だと報告されています。
要するに、一度漏らすと「ひたすら使いたい放題」になっている、という話です。
怖い話ですよね。
漏れると、実際に何が起きるか
例えば、実際に起きるのはこのようなイメージです。
- 高額請求が来る:
APIは従量課金なので、使われた分だけ請求される。悪用されると一晩で数万円〜数十万円いくことも結構あるようです - 気づくのが遅れる:
請求が来て初めて気づくパターンが多い - 止めるまで続く:
漏洩に気づいて鍵を無効化するまでのあいだ、ずっと請求が積み上がります
実際、海外では「GitHubにうっかりAPIキーを上げて、翌朝起きたら300ドル請求されていた」という話がいくつもあります。
対策1『APIキーは .envファイル に書く』
ではどうするか。答えはシンプルで、APIキーをコードの中に直接書かないことです。
そのための仕組みが .env(ドットイーエヌブイ)ファイルです。
やることは2つだけです。
①コードと同じフォルダに「.env」という名前のファイルを作る
中身はこんな感じです。
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx②コードの中では「.envから読み込む」形で使う
コード本体には変数名だけを書いておいて、実際のキーは .env から読み込む。
こうしておけば、コードを誰かに見せてもキーが漏れることはありません。
対策2『.gitignore に.envを追加する』
対策1の「.envファイルを作っただけ」だとまだ不十分です。
GitHubにコードをアップするとき、放っておくと .env も一緒にアップされてしまいます。
なので .gitignore(ギットイグノア)というファイルに .env を追加します。
.env.gitignoreにこの1行を書いておくだけで、GitHubに上げるときに「.envはアップロード対象から外す」ことができます。つまり、GitHubに公開されることはなくなります。
もし .gitignore 自体がなかったら、Claude Codeに「.gitignoreに.envを追加して」と頼めば、一発でやってくれます。
「.envで管理する」+「.gitignoreに.envを書く」
この2点セットだけで、うっかり漏洩事故のほとんどは防げます。
【意外と知られていない】Claude Codeに「APIキーください」と言われても、コピペで渡してはいけない
Claude Codeを使っていると、作業の途中でこう言われることがあります。
「OpenAIのAPIキーを教えてください。ここに貼り付けてもらえれば、コードに組み込みます」
一見親切そうに見えますが、そのままコピペで渡してはいけません。
理由はシンプルで、Claude Codeに貼り付けた内容は、会話履歴としてサーバー側に保管されるからです。
つまり、「キーをコピペで渡す」というのは、「第三者(AI提供事業者)のサーバーにキーを預ける」のと同じことです。悪意のある漏洩じゃなくても、ログとして残るだけで事故の確率は上がります。
AIサービスの会話ログが将来どう扱われるかは、誰にもわかりません。
とにかくコピペでAPIキーを伝えるのは絶対に避けましょう。
AI活用や業務改善について、お気軽にご相談ください
無料で相談するすでにGitHubに上げてしまったかも、という人へ
「もしかして過去に上げたかも」と不安な方は、まずどのキーが、どこに上がっているかを特定するところから始めてください。
①リポジトリ内で検索して特定する
GitHubで自分のリポジトリを開いて、検索バーに sk- や OPENAI_API_KEY を入れて検索します。ローカルだけのコードでも、ターミナルで git log -p | grep "sk-" を実行すれば過去コミットも含めてチェックできます。
②管理画面でキーを無効化する
- OpenAI:
https://platform.openai.com/api-keysで該当キーの「Revoke」をクリック - Anthropic:
https://console.anthropic.com/settings/keysで該当キーを削除
③新しいキーを発行して .env に書き換える
④コードを .env 読み込み形式に直してpushする
履歴には残りますが、すでに無効化済みなので実害はありません。
⑤使用量と請求を確認する
OpenAIは https://platform.openai.com/usage
Anthropicは https://console.anthropic.com/settings/usage
で直近の使用量を確認できます。
身に覚えのない請求があれば、各サービスのサポートに連絡してください。
大事なのは、ファイルを消すより先に、まずキーを無効化することです。
まとめ
- APIキーの漏洩は、本当に他人事じゃない
- 対策は2つだけ。
.envで管理する、.gitignoreに.envを書く - Claude Codeに「キーを直接ください」と言われても、コピペで渡さない。
.env経由で読ませる - もう漏らしてしまったかも、と思ったら、まず鍵を無効化する
正直、最初にここでミスを犯すと取り返しがつかないので、AIを触り始めるタイミングでいちばん最初に身につけるべき習慣だと思っています。
Claude Codeを始めたばかりの方は、コードを書くより先に、ここだけは固めておいてください。
よくある質問
Q. .envファイルを作ったのに、Claude Codeが「鍵を教えて」と聞いてくることがあります。どうすれば?
A. 「.envに入っています。コードからは環境変数で読み込んでください」と伝えればOKです。
Q. .envを使っていれば、絶対に漏れませんか?
A. 使い方が正しければ防げます。ただしスクリーンショットやチャットへの貼り付けで「鍵を画面に出す」操作とセットで気をつけてください。
Q. すでに漏らしたかもしれません。一番最初にやることは?
A. キーの無効化(rotate)です。ファイル削除よりも先に、管理画面から該当キーを無効化してください。
Q. 個人利用なら気にしなくていい?
A. むしろ個人利用ほど要注意です。誰も見ていないので、気づいたときには高額請求が来ているケースが一番多いです。
