AIエージェント同士が呼び出し合っています。APIキー、またはmTLSを使っています。でも、それだけでは不十分ではないかと心配です。
APIキーは認証します。しかし認可はしません。スコープも切りません。委譲チェーンの監査も行いません。
以下のCodiosなら、この4つを5分以内で追加できます。署名付きキャパビリティ契約に基づくA2Aセキュリティ層です。
作成するもの
- 暗号学的なアイデンティティを持つ2つのエージェント(Ed25519の鍵ペア)
- 特定の権限を付与する署名付き契約
- 契約をオフラインで検証する保護されたAPIエンドポイント
- すべての認可判断の完全な監査ログ
所要時間: 約5分
必要なもの: Node.js と Codiosアカウント(codios.midlantics.comで無料)
ステップ 1: SDKをインストールする
npm install @codios/sdk
ステップ 2: CLIで鍵ペアを生成する(最も簡単)
Codios CLIは鍵ペアを生成し、自動的にそれを.envファイルへ保存できます:
bash
codios keygen --save .env
これにより、あなたの.envファイルにCODIOS_PUBLIC_KEYとCODIOS_PRIVATE_KEYが追記されます。
TypeScriptで手動生成する場合:
import { generateAgentKeyPair } from "@codios/sdk"
const agent = await generateAgentKeyPair()
console.log("DID:", agent.did)
console.log("Public key:", agent.publicKey)
console.log("Private key:", agent.privateKey) // これは安全に保存してください
ステップ 3: ダッシュボードでエージェントを登録する
Codiosダッシュボードにログインします
- Agents(エージェント)タブへ移動
- Register agent をクリック
- 名前を入力(例: "billing-agent")
- 任意: キャパビリティを追加(例: transfer, quote)
- Public keyは空欄のままにする — Codiosが鍵ペアを生成します
- Registerをクリック 重要: プライベートキーは一度だけ表示されます。すぐにコピーして保存してください。復元はできません。
CLIでの代替:
codios register --name billing-agent --public-key $CODIOS_PUBLIC_KEY
ステップ 4: 4ステップのウィザードで契約を発行する
- ダッシュボードのContracts(契約)タブへ移動
- Connect agentsをクリック
- Issuer — リクエストを行うエージェントを選択(または、Codiosがあなたの代わりに署名するようにCodios Platformを選択)
- Targets — リクエストを受け取る1つ以上のエージェントを選択(それぞれが独立した契約を受け取ります)
- Permissions — 許可するアクションを定義(例:
transfer)。期間を設定(1h / 1d / 7d / 30d)し、任意で最大呼び出し回数も指定できます - Review — フローを確認してから、Issue contractをクリック
発行後、各ターゲットのcontract token(契約トークン)が表示されます。それぞれのトークンをコピーしてください。
X-Codios-Contractヘッダーとして渡します。
契約ステータス: active → expired(TTL経過)または revoked(手動で無効化)
ステップ 5: middlewareでサービスを保護する
import express from "express"
import { codiosGuard } from "@codios/sdk"
const app = express()
app.post(
"/transfer",
codiosGuard({
action: "transfer", // 契約で許可されたアクションと一致している必要があります
publicKey: process.env.SERVICE_AGENT_PUBLIC_KEY,
gatewayUrl: "https://codios-api.midlantics.com",
}),
(req, res) => {
// 契約が有効な場合にのみここに到達します
res.json({ ok: true })
}
)
app.listen(3000)
ステップ 6: 保護されたサービスを呼び出す
返却形式: {"translated": "翻訳されたHTML"}const response = await fetch("http://localhost:3000/transfer", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Codios-Contract": contractToken, // ステップ4のトークン
},
body: JSON.stringify({ amount: 100 }),
})
| Step | Time |
|---|---|
| Ed25519署名を検証(オフライン) | 約0ms |
| 期限切れ、アクション、max_callsを確認 | 約0ms |
| Nonceチェック(Redis SET NX) | 約1ms |
| 非同期監査ログの書き込み | 非ブロッキング |
総オーバーヘッド: 1-2ms
契約が期限切れの場合、呼び出し回数が尽きている場合、またはすでに使用済みの場合 → HTTP 403 または 409。
ダッシュボードで使う機能
| Tab | What it does |
|---|---|
| Overview | 統計: 登録済みエージェント、有効な契約、監査エントリ(24h)、拒否されたリクエスト |
| Agents | エージェントを登録、DID/公開鍵を表示、ハートビート状態(緑/黄/赤)を確認 |
| Contracts | ウィザードで契約を発行、無効化し、ステータスを確認 |
| Audit Log | 結果、アクション、エージェントでフィルタ。保持: Free=7日、Starter=30日、Pro=90日 |
| Threat Detection(Pro) | 営業時間外のアクセス、アクションのバースト、未知のエージェント、繰り返される拒否をスキャン |
| Alert Rules(Starter+) | 拒否の急増、レート制限超過、エージェント停止に対してメール |
| API Keys | バックエンドサービス用の codios_sk_... キーを作成 |
次のステップ
-
ハートビートを追加 – エージェントに
POST /agents/{id}/heartbeatを毎分呼び出させて、状態を緑に保ちます - アラートルールを設定 – 何か問題が起きたときにメール通知を受け取ります
- 監査ログを確認する – 許可/拒否のすべての判断を見ます
- Python SDKを試す – FastAPIミドルウェアも利用可能です
APIキーを取得: codios.midlantics.com
完全なドキュメント: codios.midlantics.com/docs
これが重要な理由
APIキーは人間のために設計されています。AIエージェントは別物です — 自律的で、速く、連鎖します。
Codiosは、ホットパスにレイテンシを追加することなく、エージェントに実際に必要なセキュリティモデルを提供します。
返却形式: {"translated": "翻訳されたHTML"}




