全部產品
Search
文件中心

Identity as a Service:身份傳遞與調用鏈審計

更新時間:May 26, 2026

介紹 Agent ID Guard 如何通過 RFC 8693 令牌交換器制實現身份鏈路的完整傳遞與調用鏈審計,確保每次下遊 API 呼叫均可追溯到自然人。

背景

合規和安全審計的核心訴求是回答:究竟是誰、通過哪些路徑、在什麼時間、對什麼資料做了什麼操作?

在 Agent 鏈路裡,這件事要比傳統應用複雜得多——一次"我幫我自己查請假"可能涉及 1 個使用者、1 個用戶端、1 個 Agent、N 個下遊服務、M 次 Token Exchange。

情境與痛點

合規要求樣本:

  • 財務系統要求所有資料訪問必須可追溯到自然人。

  • 安全團隊要求"任何一次下遊 API 呼叫,都能回答:是哪個前端入口、哪個 Agent 執行個體、哪條上遊令牌觸發的。"

  • 監管要求 90 天內對越權訪問可定位、可舉證。

如果只看下遊訪問日誌的"使用者 = 小王",並不足以滿足上述要求——還需要知道這次"小王"的請求是經由哪個 Agent、哪個用戶端發起的。

解決方案:基於 RFC 8693 的令牌交換(sub 透傳 + _idaas_imp 鏈路 + 交換計數)

阿里雲 Agent ID Guard 在出站存取權杖中保留並擴充了三類欄位:

欄位

含義

用途

sub

與入站存取權杖一致的使用者唯一標識

後端做行級許可權、審計;保證身份不丟失

client_id

當前持有令牌的用戶端,等於發起 Token Exchange 的 Agent 的 app id

後端可識別"是哪個 Agent 在調我"

_idaas_imp

上遊來源資訊,含上遊令牌的 jti 與 client_id

反向追蹤:本次出站存取權杖是基於哪張入站存取權杖、由哪個上遊用戶端而來

_idaas_exchange_count

交換深度計數,每經一次 Token Exchange +1

限制無限委派;可在 Agent ID Guard 側對深度做策略性拒絕

審計溯源介紹

出站存取權杖中包含了入站存取權杖的令牌 ID 和用戶端識別碼 資訊,示意如下:

{
  "_idaas_imp": {
    "jti": "ATTU…(原入站存取權杖的 jti)…",
    "client_id": "app_nfiiybmikzo2fnmabpectnxxxx"
  }
}

通過這兩個欄位,結合 Agent ID Guard 的審計日誌,可以串聯出完整鏈路:

image.jpeg

這條鏈路無須客戶、Agent、下遊服務自己拼接,Agent ID Guard 在頒發令牌時已經把"上遊證據"寫進了下遊令牌。

不可冒用:為什麼 Agent 不能偽造別人的身份

Agent 即便完全自由地決定"我要去調下遊服務",也不能憑空捏造 sub:

  1. 出站存取權杖的簽發只能通過 RFC 8693 Token Exchange,且必須提交一張合法的入站存取權杖作為主體令牌。

  2. Agent ID Guard 頒發出站存取權杖時,代表身份的 sub強制取自主體令牌的 sub,並由 Agent ID Guard 用自己的私密金鑰簽名,並且所申請下遊服務許可權與 sub 之前必須存在合法的授權關係。

  3. Agent 的 Client Secret / 私密金鑰僅用於"證明我是 Agent",不能用來直接簽發使用者令牌。

  4. 下遊服務用 Agent ID Guard 的 JWKS 公開金鑰校正 iss、aud、簽名後即可信任 sub,無須信任 Agent 自身。

驗證效果

驗證項

預期結果

解碼出站存取權杖,檢查 sub

與登入使用者一致

解碼出站存取權杖,檢查 _idaas_imp.client_id

與發起調用的用戶端 app id 一致

解碼出站存取權杖,檢查 _idaas_exchange_count

單次鏈路通常為 1;多級 Agent 轉寄時可觀測到遞增

修改 Agent 的代碼、偽造 sub 後嘗試自行簽發"出站存取權杖"

下遊 JWKS 校正簽名失敗,請求被拒

撤銷用戶端 → Agent 的入站授權後,再嘗試 Token Exchange

失敗:底層依賴的入站存取權杖已無法獲得