サインイン ずっと無料 はじめる

資格情報プロキシ

エージェントはAPIコールを行います。
しかし、エージェントが鍵を保持すべきではありません。

Clavitor Proxyは、AIエージェントと、それらが呼び出すAPIの間に位置します。資格情報はネットワークレイヤーで注入されるため、エージェントが実際のシークレットを目にしたり、保存したり、ログに記録したりすることはありません。バイナリは1つ。環境変数は1つ。コードの変更はゼロです。

すでに直面している問題

環境変数内のシークレット

エージェントは環境から OPENAI_API_KEY を読み取ります。そのキーは /proc 内、クラッシュダンプ、CIログ、エージェントが呼び出すあらゆるツールの中で可視化されます。ログが1行漏洩するだけで、キーは公開されてしまいます。

エージェントのメモリ内のシークレット

エージェントが実行時にキーを取得したとしても、プロセスが継続している間、それはメモリ内に保持されます。スキルの侵害、プロンプトインジェクション、デバッグダンプなどにより、キーは容易に奪取可能な状態になります。

使用履歴の監査不能

APIキーが文字列として共有される場合、どのエージェントが、いつ、何のためにそれを使用したかの記録が残りません。キーが漏洩した場合、ローテーションして事態が収束することを祈るしかありません。フォレンジックの痕跡は存在しないのです。

発生してほしくない問題

ソースコード内のAPIキー

設定ファイルにハードコードされ、Gitにコミットされ、チーム内のすべての開発者やCIランナーによってクローンされます。公開フォークが1つあるだけで、GitHubのシークレットスキャニングダッシュボードに検知されるか、あるいはもっと悪いことに、検知すらされないまま流出します。

Slack内の資格情報

「Stripeのキーを送ってくれる?」といったやり取りがDMで行われ、永遠に検索可能になり、すべてのコンプライアンスアーカイブにエクスポートされます。Slackは保管庫(Vault)ではありません。メール、Google Docs、モニターに貼られた付箋も同様です。

すべてのノートPCにある .env ファイル

12人の開発者がいれば、ローテーションされないプレーンテキスト形式の本番環境資格情報のコピーが12個存在することになります。ノートPCの盗難、~/.bash_history の漏洩、あるいは親切すぎるバックアップツールによって、午前2時に会社中のすべてのキーをローテーションすることになります。

資格情報をエージェントから完全に切り離します。

プロキシがエージェントとAPIの間に介在します。エージェントは、シークレットが配置されるべき場所として、参照(リファレンス)である clavitor://OpenAI/key を書き込みます。プロキシはそれをローカルで解決し、実際の資格情報をHTTPSリクエストに注入して転送します。エージェントのログにはプレースホルダーが表示されます。APIはキーを受け取ります。その間のどこにも、情報は保存されません。

環境変数は不要です。メモリ内にシークレットも残りません。コマンドラインに資格情報を渡す必要もありません。エージェントはキーを知らず、キーを漏洩させることもできず、キーを明かすように騙されることもありません。

$ export HTTPS_PROXY=http://127.0.0.1:1983

$ curl -H "Authorization: Bearer clavitor://OpenAI/key" \
    https://api.openai.com/v1/chat/completions

# プロキシがプレースホルダーを解決しました。エージェントは sk-proj-abc123 を見ていません。
# ログ、クラッシュダンプ、会話履歴にも残っていません。

Claude Code、Codex、OpenClaw、CrewAI、LangChain、カスタムスクリプトなど、HTTPSコールを行うあらゆるエージェントで使用可能です。環境変数を1つ設定するだけで、エージェントのAPIコールはプロキシを経由します。SDKもプラグインも、コードの変更も必要ありません。

内部の仕組み

リクエストごとにローカルで復号

プロキシはVaultから暗号化された資格情報を取得し、デバイス上で復号します。プレーンテキストは1つのHTTPリクエストの間だけプロセスメモリ内に存在し、その後消去されます。キャッシュは一切行われず、ディスクにも書き込まれません。すべてのリクエストにおいて、その都度新しく復号されます。

フィールドをヘッダーにマッピング

Bearerトークン、APIキー、Basic認証など、プロキシはVaultのフィールドラベルを適切なHTTPヘッダーに自動的にマッピングします。あるいは、エージェントが clavitor:// 参照を使用して特定のフィールドを正確に指定することもできます。いずれにせよ、エージェントが目にすることなく、資格情報は正しい場所に届けられます。

スコープ、レート制限、監査

Vaultはスコープの境界とレート制限を強制します。あまりに多くの異なる資格情報にアクセスしようとするエージェントは、自動的にロックされます。すべてのアクセスはログに記録されます。プレースホルダーにエージェントID(clavitor://agentid@Entry/field)を含めることで、共有プロキシを通じたエージェントごとの監査トレイルとレート制限が可能になります。

デプロイメント

バイナリは1つ。エージェントのサイドカーとして動作。ネットワークインフラの変更は不要です。

シングルエージェント・ホスト

バイナリをダウンロードし、登録トークンを使用して clavitor-proxy init を実行し、エージェントに HTTPS_PROXY を設定します。これだけです。デフォルトでは、プロキシは 127.0.0.1:1983 にバインドされます(単一エージェントのサイドカー)。プライベートネットワーク内で1つのプロキシが複数のエージェントにサービスを提供する場合は、CLAVITOR_PROXY_LISTEN を設定して別の場所にバインドしてください。

マルチエージェント・ホスト

各エージェントに、独自のサイドカー設定ファイルを持つバイナリのコピーが割り当てられます。各コピーは独自のスコープ、独自のレート制限、独自の監査トレイルを持ちます。エージェントAはエージェントBの資格情報を見ることはできません。設計による隔離(Isolation by design)を実現しています。

クラウドホスト型のプロキシは、価値の高い標的です。

クラウド上で動作するすべての資格情報プロキシ(自社のものであれ他社のものあれ)は、攻撃の対象となります。プロキシが侵害されれば、すべての顧客の資格情報が奪われます。これは理論上のリスクではなく、「資格情報プロキシ・アズ・ア・サービス」というビジネスモデルそのものが抱えるリスクです。

Clavitorのプロキシは、お客様のインフラ上で動作します。ローカルで復号します。資格情報は1回のリクエストの間だけプロセスメモリ内に存在します。お客様のプレーンテキストのキーを保持するクラウドサービスは存在しません。シークレットを提供するAPIエンドポイントも存在しません。侵害されるべき対象そのものが存在しないのです。

エージェントはすでにAPIコールを行っています。
それらを適切な領域に留めておきましょう。

お客様のVault、お客様のスコープ、お客様の監査トレイル。プロキシは、エージェントへのコード変更を一切行うことなく、ネットワークレイヤーでの強制ポイントを追加します。