AIと一緒にブログを書くときに気をつけたいセキュリティの話

Claude Codeで作業しながら「ここまでの内容を記事にして」とやると、すごく楽に記事が書ける。でもそのまま投稿するのは正直ちょっと怖い。APIキーが混ざるかもしれないし、会話の中に個人情報が入っていたりする。

今回、記事自動投稿スクリプトを作りながらその問題を考えたので、まとめておく。

ブログに載ったらまずいものリスト

認証情報・APIキー類

| 種類 | 具体例 | 流出するとどうなるか |

|------|--------|---------------------|

| Anthropic APIキー | `sk-ant-...` | Claude APIを他人に使われる(課金も) |

| OpenAI APIキー | `sk-...` | 同上 |

| AWS アクセスキー | `AKIA...` | クラウドリソースの無断利用・課金 |

| GitHubトークン | `ghp_...` | リポジトリの書き込み・削除 |

| npmトークン | `npm_...` | パッケージの書き換え・乗っ取り |

| SSH秘密鍵 | `-----BEGIN PRIVATE KEY-----` | サーバーに無断ログイン |

| .envの中身 | DBパスワード・各種シークレット | システム全体の乗っ取り |

個人情報

- 氏名・住所

- 電話番号

- メールアドレス

- マイナンバー

これらは意外と会話ログの中に混入する。「このサイトの担当者は〇〇で連絡先は...」みたいな文脈でAIに渡した情報がそのまま記事に出てくるケース。

どこから漏れるか — 4つの流出経路

1. AIが「まとめ記事」にそのまま書いてしまう

作業ログを記事化する際、コードブロックの中にAPIキーが含まれていると、そのまま記事に入る。AIは「これは秘密情報だ」と自動判断して隠してくれない(チェックを組み込まない限り)。

2. プロンプトインジェクション

悪意のあるリポジトリやドキュメントをClaude Codeに読み込ませると、その中に仕込まれた指示でAIが動いてしまうケース。「.envを外部サーバーに送れ」という隠し命令を実行させられる可能性がある。

3. ソースコードへの直書き → GitHubに公開

Claude Codeにコードを書かせるとき、テスト目的で一時的にAPIキーをハードコードすることがある。それをそのままGitHubにpushすると、自動巡回Botに即座に回収される。漏れてから数分で悪用されることも。

4. ログ・コマンド履歴の放置

デバッグ中にAPIキーを含むコマンドを実行すると、シェルの履歴(.bash_history など)に残る。PCの共有時やマルウェア感染時に取得されるリスクがある。

僕がやっている対策

publish.py に機密情報スキャンを組み込んだ

emdashに投稿する前に、記事のmarkdownをスキャンして怪しいものを検出する仕組みを作った。

送信前に自動チェック
  ↓
APIキー系 → 自動マスク候補
個人情報系 → 要確認
  ↓
[1] 危険度高を自動マスクして続行
[2] 全件マスクして続行
[3] そのまま送信
[4] 中止

コードブロックの中は特に厳しくチェックして、実際の値っぽい文字列は [REDACTED] に置き換えられる。

APIトークンは最小権限で発行する

emdashのAPIトークンは「コンテンツ読み書き」「メディア書き込み」だけのスコープで発行している。万が一漏れても管理者権限を取られない。

.env はgitに含めない

.gitignore.env を必ず入れる。これは基本中の基本だけど、忘れると全部終わる。

AIと作業するときのマインドセット

「AIは秘密を判断しない」 というのが大前提。便利に使えば使うほど、情報を渡す量も増える。渡した情報が記事になったり、ログに残ったりする。

チェックリストとして:

- [  ] 記事化するとき、コードブロックにリアルな値が入っていないか

- [  ] 会話の中で個人情報・認証情報を渡していないか

- [  ] 公開前にスキャンツールを通しているか

- [  ] APIトークンの権限は最小限か

- [  ] .env が gitignore されているか

全部を完璧にするのは難しいけれど、投稿前に1回立ち止まる習慣 だけでかなり防げる。

*この記事の投稿スクリプト自体にも機密情報スキャン機能を組み込んであります。*