長期 Agent identity 與短生命 runtime instance credential 應如何連結,而不共用永久秘密?
invoice-agent 是穩定的邏輯 workload,但今天的 instance 因 bug 被隔離,明天會由新 instance 接手。若兩者共用同一把永久私鑰,撤銷舊 instance 會影響新 instance;若完全換一個名稱,既有 policy 與 audit 又失去 continuity。正確切分是:穩定的 workload identity 描述「哪一類 Agent」,短效 instance credential 描述「這次啟動的哪個執行個體」。
一般服務可能靠固定 client secret 存活多年;Agent runtime 卻會被 autoscale、重啟、撤銷和重試。模型任務還可能跨越 credential renewal。若把 identity continuity 與 key continuity 綁在一起,洩漏窗口與撤銷粒度都過大。
image 內含永久 secret,所有 replicas 以相同 key 呼叫 Tool;啟動只檢查一次,舊 instance 被入侵後仍可持續重放。
受信任 runtime 先向 attestor 證明 deployment、instance 與必要環境屬性;issuer 簽發短效 credential,內含 stable workload ID、unique instance ID、audience、expiry。instance 只在需要時續期,續期仍需重新證明;被撤銷的 instance 不影響其他 instance。
Agent 的 identity continuity 應與 key continuity 分離:穩定 workload identity 用於 policy 與治理,短效 instance credential 則縮小單次啟動的洩漏與撤銷範圍。

Trust boundary 是 runtime→attestor、issuer→gateway、gateway→Tool。Identity Flow 保留 workload=invoice-agent 的長期語意,但每次啟動使用 instance=i-42 的新 credential。Authorization Decision Point 在 Gateway/PDP,每次 Action 都可檢查 instance status、Task 和 delegation;不是「拿到 token 就整個 Task allow」。
短效不是萬靈丹:它仍可能在有效期間被重放,因此高風險呼叫應加入 mTLS/DPoP 類 sender constraint、nonce 或 idempotency。續期也不能把過期 grant 自動延長,必須重新評估 Task 與 User authority。
import secrets
class Issuer:
def __init__(self): self.revoked = set(); self.clock = 0
def issue(self, workload, instance, lifetime=3):
return {"workload": workload, "instance": instance,
"token": secrets.token_hex(8), "exp": self.clock + lifetime}
def valid(self, t):
return t["instance"] not in self.revoked and t["exp"] > self.clock
i = Issuer()
first = i.issue("invoice-agent", "i-1")
i.clock = 1
second = i.issue("invoice-agent", "i-2")
assert first["token"] != second["token"]
assert i.valid(first) and i.valid(second)
i.revoked.add("i-1")
assert not i.valid(first) and i.valid(second) # instance 粒度撤銷
i.clock = 4
assert not i.valid(second) # expiry
print("new token per instance; old instance revoked; expired token rejected")
這個 PoC 不模擬真實 attestation 或簽章,而是驗證 lifecycle 不變條件:每次 instance 使用不同 token、撤銷精確到 instance、過期後拒絕。生產環境應由平台 attestor 和標準 credential issuer 完成 proof 驗證。
每次簽發、續期、撤銷與 Tool 呼叫都應記錄 stable workload、instance、credential id、attestation reference、expiry、Task 與 decision;撤銷舊 instance 的事件不能被新 instance 的 log 覆蓋。
下一篇把這個 lifecycle 放進 container/Kubernetes:runtime 如何取得 proof,而不是把 secret 烘進 image?