API キーやパスワードが外から見えていないかは、専門知識がなくても、公開前に一次確認できます。公開した画面をブラウザで開いて配信されているコードを検索し、公開リポジトリも履歴まで検索します。見られて困るキーが見つかったら、消すだけでなく、無効化して作り直してください。
「外から見える」とは、どこのことか
AI にアプリを作らせると、動かすために API キーやパスワードをコードに書き込むことがあります。作る側から見ると、動けばそれで終わりです。
でも公開すると、次の場所は誰でも読めます。
- ブラウザに届くコード: 画面を開いた人のブラウザには、画面を動かすための JavaScript がそのまま届きます。ここに入っているものは、開発者ツールを開けば誰でも読めます。
- 公開しているリポジトリ: GitHub などで公開している場合、コードは誰でも読めます。さらに、一度書いたキーを後で消しても、過去の履歴には残ります。
- 画面共有やチャットに貼ったもの: エラーを AI に相談するときに貼ったログや、スクリーンショットに、キーが写っていることがあります。
多くのフレームワークでは、特定の接頭辞(例: VITE_、NEXT_PUBLIC_)が付いた環境変数が、ブラウザ向けのコードに埋め込まれます。「環境変数に入れたから安全」とは限りません。
事例: Moltbook のデータベース露出
2026年1月、セキュリティ企業の Wiz が、AI エージェント向けの SNS「Moltbook」のデータベースが外部から見える状態になっていたと報告しました(Wiz の記事(新しいタブで開きます))。
Wiz によると、原因は2つが重なったことです。クライアント側の JavaScript に Supabase の API キーが入っていたこと。そして、データを守る設定(RLS)が未設定だったこと。そのため、本番データベース全体にアクセスできたと説明されています。Wiz は「35,000 emails. 1.5M API keys.」(訳: 3万5000件のメール。150万個の API キー。)と書いています。開示は 2026年1月31日、修正は 2月1日です。
Wiz の記事は、創業者の「コードを1行も書いていない」という発言を引用しています。ただし、AI が直接の原因だとは実証していません。この事例から言えるのは、AI で作ったかどうかに関わらず、キーが外から見える状態と、権限の設定漏れが重なると、データが丸ごと見えるということです。
私たちの考え方: 「見られても困らないもの」と「見られたら困るもの」を分ける
私たちはこう考えます。確かめるべきことは「キーが見えているか」ではなく、見えているものが、見られても困らないものかです。
- 見られても困らないもの: ブラウザ側に置く前提で発行された、公開用のキー。ただし、その裏でデータを守る権限の設定が効いていることが前提です。
- 見られたら困るもの: データベースの管理者権限のキー、決済や外部サービスの秘密のキー、パスワード。これはサーバー側だけに置きます。
分からないものは、見られて困るものとして扱う。これが判断基準です。「公開用かどうか」を決めるのは、AI でも作った本人の記憶でもなく、そのサービスの公式ドキュメントです。
確かめ方: 外から見る側の視点で
作った本人の画面からは、見えているものが見えません。必ず、公開した URL を、ログインしていない状態で開いて確かめます。
- 配信されているコードを検索する。 公開した画面をブラウザで開き、開発者ツール(多くのブラウザで F12)を開きます。配信されているファイルの中を、
key、secret、token、passwordなどの語で検索します。ヒットしたものが、公開してよいものかを一つずつ確かめます。 - 公開リポジトリを検索する。 リポジトリを公開している場合は、現在のコードだけでなく、過去の履歴も検索します。設定ファイル(
.envなど)が、公開されないように除外されているかも確認します。 - AI に聞く。 作ったツールや AI に「秘密情報はどこに置いてある? ブラウザに届くコードに入っているものは?」と聞きます。答えが曖昧、または答えられなければ、その時点で「確かめていない」と同じ扱いにします。
見つからなかったことは、安全の証明ではありません。検索で見つかるのは、むき出しのものです。それでも、まず見つかる状態を潰すことには意味があります。
見つかったら
キーをコードから消すだけでは足りません。すでに誰かが見ていれば、そのキーは使えてしまいます。
- キーを発行したサービスの管理画面で、そのキーを無効化する
- 新しいキーを作り直し、サーバー側に置く
- サービス側の利用履歴で、見覚えのない利用がないかを確認する
- リポジトリの履歴に残っている場合は、履歴ごと消すより先に、1 と 2 を済ませる
私たちの経験
私たちは、診断や本番化の中で、API キーなどの秘密情報がフロントエンドや公開リポジトリにむき出しになっている状態を見たことがあります。作った人に悪意や怠慢があるわけではありません。動かすことが目的のとき、鍵の置き場所は後回しになりやすいのです。
そのたびに強く感じるのは、鍵の置き場所は、公開してから直すより、公開前に決めるほうが、はるかに楽だということです。
公開前に確かめる4点(秘密情報・権限・復旧・保守)の全体像は、AIで作ったアプリを本番化するにはにまとめています。この記事は、その1点目を詳しく説明したものです。
wizgeek にできること
キーの置き場所に不安が残る、または確かめ方に自信がないときは、ご相談ください。試作の構成と機能を把握し、認証・データベース・インフラ・セキュリティ・監視のうち何が足りないかを整理して、構成案をお渡しします(本番化の診断:5万円〜、税別)。構成案をもとに、お客様側で実装していただくこともできます。本番化の作業は別途お見積りします。