コンテンツにスキップ

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) があり、シークレットを直接シェルに渡すことができる。

# op run でシークレットを環境変数として注入
op run --env-file=.env.tpl -- claude

.env.tpl にはシークレット参照だけ書き、実際の値は 1Password Vault から取得する形式。

着地点:用途で使い分け

用途 方式
ローカル開発 1Password CLI でシークレット注入
クラウド環境 AWS IAM ロール + ハーネスエンジニアリング

ポイント:クラウドの方が安全

著者のコメント:「極論すると、AWS上にIAMロールを使ってハーネスエンジニアリングに基づいて環境を作った方がよっぽど早い。クラウドが危険じゃなくて、クラウドの方が安全の時代

  • IAM ロール: EC2/Lambda/ECS にロールを付与し、クレデンシャルを環境変数に置かない
  • ハーネスエンジニアリング: AIエージェントが使えるツール・権限をコードで定義・制限する
  • ローカルに長期クレデンシャルを置かないことで、漏洩リスクを根本的に排除

なぜ重要か / いつ使うか

  • Claude Code / Codex CLI を業務利用するとき: プロダクションのクレデンシャルをどう渡すかは必須課題
  • 最小権限の原則: IAM ロールで操作範囲を制限し、エージェントが何をできるかをコードで管理する
  • チーム開発: 個人の ~/.aws/credentials に依存せず、ロールベースで権限を統一管理できる