kisenon

エージェントにスコープ限定の認証情報を渡す

ケイパビリティ・プロジェクト・有効期限でスコープを限定したAPIキーを発行し、AIエージェントをデータベースに対して安全に実行します。

これは AIエージェントサンドボックス の認証情報側の話です。 エージェントが安全に保持できるキーを発行し、より強力なキーを漏らすことなく それを渡す方法を説明します。本日よりお使いいただけます。

エージェントに対して安全な認証情報とは、3つの境界 — ケイパビリティスコープ有効期限 — を備え、クリーンな環境で エージェントに渡されるKisenon APIキーです。一言でいえば、エージェントの認証情報の スコープを限定し、より強力なものをエージェントの手の届く場所に残さないこと

1. スコープ限定のエージェント認証情報を発行する

3つの次元をすべて設定してAPIキーを発行します。

  • capability = agent — サンドボックスは操作できますが、keon connection-string main(および書き込み可能な main へのすべてのルート)は 403 を返します。エージェントは 変更を提案できますが、本番に書き込む認証情報を保持することは決してありません。
  • scope = project — 1つのプロジェクトに限定されます。漏洩しても他の プロジェクトには到達できません。
  • expires_at(短く) — 漏洩時の影響範囲を限定します。永遠ではなく、数日単位で。

コンソールで発行します — 設定 → APIキーkisenon.com)で、ケイパビリティ = agentスコープ = 特定のプロジェクト有効期限を設定してください。APIキーは サインイン済みのブラウザセッションから発行されます。プレーンなCLIキーで別のキーを発行することは できません。書き込み可能な main ルートでキーを使用すると、正確に次を返します。

agent-scoped API keys cannot retrieve data-plane credentials or perform
branch-admin role/database operations; use the sandbox flow

2. エージェントに正しく渡す

クリーンなシェルまたはコンテナで、スコープ限定のキーをエージェントの唯一の 認証情報として渡します。

export KEON_API_KEY=nsk_<agent-key>   # the scoped agent key, and ONLY this
unset DATABASE_URL                    # no full connection string in the env
# also: no personal `keon login` session (no ~/.config/keon/credentials.json),
# no ~/.pgpass, no admin DATABASE_URL reachable from the agent's process.

2部構成のルール、両方とも必須です。

  • エージェントに渡す認証情報のスコープを限定する(ステップ1)。
  • エージェントが拾い上げかねないより強力なものを取り除く — 完全な DATABASE_URL~/.pgpass、または同じシェル内のログイン済み keon セッション。

3. 安全なループ

エージェントが提案し、人間 — またはエージェント自身の境界付きプロモート — が処理します。

keon sandbox run \
  --migrate "alembic upgrade head" \
  --verify  "pytest tests/db"

keon sandbox run はブランチをフォークし、短命なエージェントトークンを 隔離されたホームに発行し、フォークのスコープ限定URLをコマンドの DATABASE_URL として 注入します — そのため、サンドボックス内で keon connection-string main を試みるコマンドでさえ エージェントキーに当たって 403 を得ます。キャプチャされた差分を確認してから、 プロジェクトの promote_mode に従ってプロモートします。

promote_modeWho commits to main
self (default)チェックが通ると、エージェントが keon sandbox promote <id> を実行します。
humanエージェントが提案し、オーナー/管理者が差分とログを確認した上で keon sandbox approve <id> を実行します。

keon projects update --promote-mode human で人間によるレビューを有効にします。

これが何であって、何でないか

  • 協調的なエージェントのためのガードレールであり、敵対的なコードのための牢獄ではありません。 認証情報のスコープを限定することは、エージェントに渡すものを制限しますが、 すでにホストのファイルシステムやネットワークにアクセスできるサブプロセスを 封じ込めるわけではありません。真の封じ込め — 洗浄された環境、ホスト認証情報への アクセスなし、サンドボックスエンドポイントに限定された送信 — は別のレイヤーです。 エージェントのコードが信頼できない場合は、それも追加してください。
  • cpだけが main への書き込み手です。 プロモートはキャプチャされた ステートメントをサーバー側で再生します。エージェントが書き込み可能な main の 認証情報を保持することはありません。

ブレークグラス

設計上、特別な「ブレークグラス」スイッチはありません。書き込み可能な main への 直接パスは、人間が保持する通常の read_write 認証情報にすぎません(keon connection-string main、またはコンソール) — 意図的にエージェントキーからは 到達できないようにしてあります。監査対象のインシデントパスでは、オペレーターが自身の read_write セッションを使用します。すべてのプロモートと承認はサーバー側で帰属付けられます。