AIエージェントへの認証情報の安全な渡し方:1Password試行とIAMロール活用
概要¶
AIエージェントをローカル環境で動かす際に認証情報(APIキー・AWSクレデンシャル等)をどう安全に渡すかを検討した記録。1Password を試した後、用途によって使い分けに着地。
ブログ記事: https://blog.takuros.net (「AIエージェントに認証情報を安全に渡したい:1Passwordで試して、用途で使い分けに着地した話」)
詳細¶
問題¶
AIエージェント(Claude Code、Codex CLIなど)をローカルで動かすとき、ツールにAPIキーや AWS クレデンシャルを渡す必要がある。平文の .env や ~/.aws/credentials に書いておくのはセキュリティリスクがある。
試行:1Password¶
1Password には 1Password CLI (op) があり、シークレットを直接シェルに渡すことができる。
.env.tpl にはシークレット参照だけ書き、実際の値は 1Password Vault から取得する形式。
着地点:用途で使い分け¶
| 用途 | 方式 |
|---|---|
| ローカル開発 | 1Password CLI でシークレット注入 |
| クラウド環境 | AWS IAM ロール + ハーネスエンジニアリング |
ポイント:クラウドの方が安全¶
著者のコメント:「極論すると、AWS上にIAMロールを使ってハーネスエンジニアリングに基づいて環境を作った方がよっぽど早い。クラウドが危険じゃなくて、クラウドの方が安全の時代」
- IAM ロール: EC2/Lambda/ECS にロールを付与し、クレデンシャルを環境変数に置かない
- ハーネスエンジニアリング: AIエージェントが使えるツール・権限をコードで定義・制限する
- ローカルに長期クレデンシャルを置かないことで、漏洩リスクを根本的に排除
なぜ重要か / いつ使うか¶
- Claude Code / Codex CLI を業務利用するとき: プロダクションのクレデンシャルをどう渡すかは必須課題
- 最小権限の原則: IAM ロールで操作範囲を制限し、エージェントが何をできるかをコードで管理する
- チーム開発: 個人の
~/.aws/credentialsに依存せず、ロールベースで権限を統一管理できる