即時(Just-In-Time)憑證租約
交給自動化的長效密鑰是一種長期負債。CredentialBroker 實踐**零常駐權限(zero
standing privilege)**:使用者取得短效的*租約(lease)*—— 一個綁定密鑰名稱並帶有
到期時間的 token —— 真正的值僅在 redeem() 時、且僅在租約有效期間,透過可插拔
的*解析器(resolver)*取得(已解鎖的 SecretManager 的 get、環境變數查詢、
vault 用戶端)。已過期或已撤銷的租約取不到任何值。
密鑰值永遠不會進入 executor/MCP 紀錄:executor 與 MCP 介面僅管理租約*生命週期*。
回傳真正值的 redeem() 是刻意設計的**僅限 Python API**逃生門,供必須處理密鑰
的程式使用。本模組為純標準函式庫,不匯入 PySide6;時鐘與解析器皆可注入,因此到
期行為可被確定性地測試。
無頭 API
from je_auto_control import CredentialBroker
broker = CredentialBroker(resolver=secret_manager.get) # resolver(name)->value
token = broker.lease("db_password", ttl=120) # 取得 token,而非值
if broker.is_valid(token):
password = broker.redeem(token) # 即時取得,僅限 Python
connect(password)
broker.revoke(token) # 或讓它在 ttl 秒後自然過期
active() 以 {token, name, ttl_remaining} 列出未過期的租約,不含任何值。模組
層級的 default_broker 支撐 executor/MCP 指令;以 set_secret_resolver(fn)
設定一次其解析器即可。
執行器指令
指令 |
效果 |
|---|---|
|
為 |
|
回報租約 token 的 |
|
撤銷租約 token;``{revoked}``。 |
|
列出有效租約(不含密鑰值)。 |
executor、MCP 與 Script Builder 介面刻意**沒有** redeem 指令 —— 在那些介面暴露值會
使其洩漏進執行紀錄。Redeem 僅限 Python。相同的生命週期操作亦提供為 MCP 工具
(ac_lease_secret / ac_lease_valid / ac_revoke_lease /
ac_lease_active),以及 Script Builder 中 Tools 分類下的指令。