【1Password移行⑧】「最後の砦」を間違えると何が起きるか

2026.06.05 09:00
2026.05.13 23:46
【1Password移行⑧】「最後の砦」を間違えると何が起きるか

Series C では、SSHキー以外のシークレット──APIキー、DBパスワード、各種トークン──の移行をやっていきます。

まず最初に「なぜCredentialの管理が難しいか」という話をします。

「どこかに書かないと使えない」という問題

SSHキーは移行がシンプルでした。
「鍵ファイルをなくして1Password SSH agentに任せる」という明確な答えがあるので。

一方でAPIキーや環境変数は、どこかに「書いて」おかないとアプリやスクリプトが使えません。
これが難しいところです。

よくある対処として .env ファイルに書いて .gitignore に入れる、というパターンがあります。
でもこれ、Gitには上がらないけどディスクには残ります。

Claude Codeのような「ファイルシステムを読めるツール」には、.gitignore は関係ありません。
ディスクにあれば読めてしまいます。

「最後の砦」とは何か

機密情報の管理において、「最後にここだけ守れていれば全部安全」という場所があります。
これが「最後の砦」です。

この砦を間違えると、他をどれだけ頑張っても意味がなくなります。

よくある間違いを挙げます。

パターン①:.env をディスクに置いておく

.gitignore に入れてるから大丈夫」と思いがちですが、ディスク上にある限りリスクがあります。
Gitに上がらないだけで、ローカルのファイルはツールからもマルウェアからも見えます。

パターン②:シェルの設定ファイルにベタ書きする

~/.zshrc~/.bashrcexport API_KEY=xxxxx と書いてしまうパターンです。
毎回入力しなくて済むのは便利なんですが、ホームディレクトリにあるファイルに平文で書いてあります。

パターン③:スクリプトにハードコードする

「このスクリプトだけで使うから」とシェルスクリプトや設定ファイルに直接書いてしまうケース。
Gitに入れる予定がなくても、ファイルとして存在している以上は読まれます。

全部洗い出す

まず自分の環境にどんなシークレットがあるか棚卸しします。
探す場所はこのあたりです。

  • プロジェクトごとの .env.env.local.env.production
  • ~/.zshrc~/.bashrc(exportされている変数)
  • ~/.config/ 配下のツール設定(GitHub CLI、Google Cloud SDK等)
  • 自作スクリプト内のハードコード
  • MakefileやDockerfileの中

網羅的に探すにはこんな方法もあります。

# ホームディレクトリ内で APIキーっぽい文字列を検索
grep -r "API_KEY\|api_key\|SECRET\|PASSWORD\|TOKEN" ~/.zshrc ~/.bashrc ~/.profile 2>/dev/null

プロジェクトディレクトリも確認します。

# .envファイルを一覧表示
find ~/projects -name ".env*" -not -path "*/.git/*" 2>/dev/null

「1行でも残ってたら意味がない」

移行で気をつけないといけないのは、全部消さないと意味がない ということです。

OpenAI APIキーを1Passwordに移行して .env を削除しても、~/.zshrc に同じキーが書いてあったら意味がありません。

棚卸しで全部見つけて、全部消す。
これが Series C のテーマです。

次回 C-2「移行=ローテーション」では、安全な移行手順と op run を使った環境変数注入の方法を書きます。

今回は以上です!