Share
Embed
1password で 開発環境の環境変数を安全に管理したい / mild-web-sap #31
ゆるWeb勉強会@札幌 #31
https://mild-web-sap.connpass.com/event/400434/
Hiroto YAMAKAWA
August 22, 2026
Transcript
11 slides
-
2 環境変数とは? "An environment variable is a user-definable value that
can affect the way running processes will behave on a computer. Environment variables are part of the environment in which a process runs. " Wikipedia, Environment variable https://en.wikipedia.org/wiki/Environment_variable "Many operating systems use environment variables to pass configuration information to applications. ... environment variables are key/value pairs, where both the key and the value are strings. " Oracle, The Platform Environment - Environment Variables, The Java™ Tutorials "A mapping object where keys and values are strings that represent the process environment. For example, environ['HOME'] is the pathname of your home directory (on some platforms), and is equivalent to getenv("HOME") in C." Python Software Foundation, os.envision, Python Documentation contents, プログラム(アプリケーション)を動作させるプロセスに、ユーザーなども含めた外部から 設定情報を渡すためのキーと値の組 #ゆるWeb札幌 -
3 環境変数の使い所 ソースコードに埋め込みたくない、実行環境ごとに異なる設定値を外部から与えるために用いる 例えば... • APIエンドポイントやデータソース接続先など、開発/本番環境で異なる接続情報 • 実行モード • OSや実行環境ごとに異なる初期設定情報
開発環境でも、外部資源へのアクセスには資格情報や秘密情報が必要になる場合がある。 一方、環境変数自体は秘密情報を安全に保管する仕組みではない。 #ゆるWeb札幌 -
mun, AIエージェントへの環境変数漏洩を防ぐ https://zenn.dev/mun/articles/74ed03ca747f1d Embrace The Red, Cline: Vulnerable To Data
Exfiltration And How To Protect Your Data https://embracethered.com/blog/posts/2025/cline-vulnerable-to-data-exfiltration/ ふみ_BENTEN WebWorks, 【実体験】AIコーディングツールが`.env`を読んで秘密鍵が漏れた話 GitHub Inc., GitHub Copilot https://docs.github.com/en/copilot/concepts/agents/cloud-agent/risks-and-mitigations https://zenn.dev/bentenweb_fumi/articles/3xlqkfaezl1j 秘密情報を保護し、必要な実行プロセスにのみ注入する仕組みが望ましい #ゆるWeb札幌 支 4 AIによる開発 援で、環境変数に格納した秘密情報の保護が課題に -
6 1Password カナダの1Password(AgileBits)社が2005年頃から提供しているパスワードマネージャー 個人向けからエンタープライズ向けのサービスを提供(私は個人・ファミリープランを利用) • パスワードの作成・管理 • Webサイト・アプリへのログイン情報の自動入力 • クレジットカード、セキュアノートなどの機密情報の管理
• 複数デバイス間同期 • 脆弱・漏洩したパスワードの警告 • etc... #ゆるWeb札幌 https://1password.com/blog/autofill-saving-extension-improvements -
7 1Password CLI ターミナルやコマンドプロンプトから1Passwordを利用できるようにする公式ツール 1. 設定 > 開発者 > 1Password
CLIと連携を ✓ 2. 1Password-cliをインストール: $ brew install 1password-cli (他のOSは https://www.1password.dev/cli/get-started 参照) 3. 動作確認(op コマンドで実行) $ op vault list ID qwertyuiop asdfghjkl; #ゆるWeb札幌 NAME Private Shared vault(保管場所)の一覧 -
環境変数(のうち、秘密情報にしておきたいもの)を追加する (画面から追加することもできるが、ぱっと見わかりづらいので、追加した後に編集がいいかも) $ op item create \ vault(保管場所), category(種別), title(登録名・プロジェクトのものとわかる符号)
vault="Private" \ category="API Credential" \ title="foo-project" \ 'clientId[text]=poiuytrewq' \ 変数名[型]=値 のように記録 [型]は1password上の設定で、 [password]の場合は、画面上も ・・・ で 'accessLoggingPath[text]=/foo/baz/bar.log' 一時的に隠される(閲覧は可能) 'clientSecret[password]=lkjhg;fdsa' \ $ op read "op: poiuytrewq private/foo-project/clientId" / / - - - - - op read コマンドで、値を1Passwordから取得 (要、1Password上でのワンタイム許諾) op://... の部分を Secret Reference と呼ぶ #ゆるWeb札幌 - 8 1Password CLI -
.env.op ファイルを使って、開発環境の環境変数に対してSecret Reference を設定する │ File: .env.op ─────┼───────────────────────────────────────────────────────────────── 1 │
CLIENT_ID=op: private/foo-project/clientId 2 │ CLIRNT_SECRET=op: 3 │ ACCESS_LOG_PATH=op: private/foo-project/clientSecret private/foo-project/accessLoggingPath commandのプロセス起動時に、.env.op の Secret Reference の値を環境変数に注入する op run env-file=.env.op <command> op run env-file=.env.op poiuytrewq no-masking 例えば、 sh -c 'echo "$CLIENT_ID"' Shのプロセスの環境変数に Secret Reference を 1Passwordから注入 - - / - - / - - / / / / - - - #ゆるWeb札幌 - 9 1Password CLI -
AIエージェントが直接 op コマンドを実行すると、標準出力された秘密情報を読み取ってしまう場合がありうる (※ op run env-file=.env.op <command> ではなく、op read
を直接使って表示することがありうる) 1Password MCP Server を起動することで、秘密情報へのアクセス権を与えるのではなく、 .env.op を使った処理だけを実行させる ... ... 行 - - - - #ゆるWeb札幌 0 1 AIエージェントに実 させるときはMCPサーバー経由で -
• 環境変数は、実行プロセスに外部から設定情報を渡すための仕組み ただいし、秘密情報を安全に保管する仕組みではない • AIによる開発支援では、.env や環境変数に格納した秘密情報が AIエージェントから参照・漏洩するリスクがあるため、 秘密情報の利用をAIエージェントから分離することが望ましい • 1Password
CLIでは、Secret Reference、 .env.op ファイル、op コマンドを用い、 秘密情報を設定ファイルへ直接記述せず、 必要な実行プロセスにのみ実行時注入できる • さらに、1Password MCP Serverを介することで、 AIエージェントに秘密情報そのものへのアクセスを与えず、 秘密情報をの注入処理だけを実行させられる 1Password Cli / MCPサーバーで、 秘密情報を安全に管理して必要なプロセスにだけ注入しよう! #ゆるWeb札幌 1 1 まとめ まとめの校正・絵 GPT 5.6 sol