全部產品
Search
文件中心

Identity as a Service:Agent 許可權管理

更新時間:May 26, 2026

概述

本文介紹 Agent ID Guard 的許可權模型與配置方法,包括如何控制用戶端訪問 Agent 的入站許可權、控制 Agent 訪問後端服務的出站許可權,以及如何通過身份鏈路將入站身份與出站調用進行聯動,協助您在 Agent ID Guard 中為 AI Agent 構建一套完整、最小化、可審計的許可權管控體系。

背景資訊

隨著 AI Agent 在企業內的大規模落地,Agent 不再只是一個被動響應使用者的"對話機器人",而是會自主決策、自主調用大模型、MCP Server、企業內部介面以及三方 SaaS 服務的"數字員工"。Agent 的這種自主性鏈式調用特性,打破了傳統的"使用者→應用→資源"二元授權模型,帶來了"誰在代表誰執行什麼"的新鏈式傳遞問題。

在一個典型的 Agent 調用鏈路 User → Client → Agent → 大模型 / 三方服務 / 企業服務中,如果不對每一段調用做嚴格的身份和許可權管控,會出現以下典型風險:

  • 用戶端越權調用 Agent:任何拿到 Agent 介面地址的用戶端應用都能直接發起請求,無法限制"哪個應用、代表哪個使用者"才能調用某個 Agent。

  • Agent 擁有"超級許可權":研發為了讓 Agent"什麼都能幹",往往會給 Agent 配置 Administrator 層級的下遊存取權限。一旦 Agent 被提示詞注入攻擊,就相當於一個擁有最高許可權的"內鬼"。

  • 上下文與身份丟失:在 User → Agent A → Agent B → 資料庫這種長鏈路中,資料庫只看到 Agent B,無法溯源到原始發起請求的使用者,審計和合規無法落地。

  • 憑據明文濫用:API Key、Client Secret 等長期憑據被寫入程式碼在 Agent 代碼裡,存在嚴重的泄漏風險。

Agent ID Guard 的 Agent 身份安全圍繞 Agent 這一中心身份,將上述風險拆解為入站許可權(Client → Agent)和出站許可權(Agent → 下遊服務)兩個方向,分別提供細粒度的許可權控制和審計能力。

關於 Agent 身份安全的整體介紹,請參見什麼是 Agent 身份安全

Agent ID 工作流程

image

許可權模型核心概念

五大角色

角色

業務含義

在 Agent ID Guard 中的對應實體

User(使用者)

真正"按下按鈕"的自然人,例如員工小王

Agent ID Guard 賬戶(含組織/分組)

Client(用戶端)

使用者直接接觸的前端入口,例如企業門戶、案頭應用、小程式

"OIDC With M2M 應用"(具備登入互動能力)

Agent

接收使用者/用戶端請求並自主調用下遊能力的 AI 服務

"Agent 應用"(同時具備:被呼叫者 + 調用方雙重身份)

Resource Server(下遊服務)

實際承載業務資料/能力的後端,例如 HR 系統、知識庫、三方 SaaS

大模型、企業服務、三方服務,作為資源服務被Agent調用

Agent ID Guard

頒發與校正令牌、登記授權關係

阿里雲 Agent ID Guard(本產品)

一個 Agent 在 Agent ID Guard 裡同時扮演兩種角色:作為"被呼叫者"(被用戶端發起調用)時它是 Resource Server;作為"調用方"(向下遊發起調用)時它是 Client。這一"雙重身份"是出站/入站聯動的基礎。

入站許可權 vs 出站許可權:兩條邊、兩套配置

許可權管控示意圖

image.png

Token Exchange(令牌交換):許可權收斂的"轉乘閘機"

Token Exchange(RFC 8693)可以理解為身份系統裡的轉乘閘機:你拿著原車票(入站存取權杖)走到閘機前,閘機校正後,給你一張只能去下一站、只能坐這一節車廂的新車票(出站存取權杖)。原車票不能直接乘坐下一段,新車票也不能回到上一段。

概念類比

含義

原車票 = 入站存取權杖

使用者給用戶端,用戶端調 Agent 時使用

閘機 = Agent ID Guard 的令牌端點(grant_type = token-exchange)

校正原票合法性、檢查出站授權關係、按最小化原則簽發新票

新車票 = 出站存取權杖

僅在"本次去往的下遊服務 + 申請到的 scope 許可權"範圍內可用

閘機記錄 = 出站存取權杖中的記錄 _idaas_imp / _idaas_exchange_count

留痕,便於回溯

入站許可權:哪一個用戶端能調用 Agent

背景

Agent 一旦發布,理論上任何拿到它對外端點的程式都可能嘗試調用。如果不做入站訪問管控,會出現兩類風險:

  • 未授權調用:陌生應用拿到了 Agent 的 URL,偽造一張其他 IdP 頒發的令牌或隨意構造請求來試探。

  • 越權調用:合法接入方申請了過寬的 scope,例如本來只應被允許"訪問 Agent"的用戶端,卻拿到了"調用 Agent 的管理介面"的許可權。

情境

某 IDaaS 執行個體下,企業門戶(OIDC With M2M 應用用戶端 A)和移動端 App(OIDC With M2M 應用用戶端 B)都接入了同一個"AI 請假助手"Agent。需要確保:

  • 用戶端 A、B 都需在 Agent ID Guard 登記後,才能攜帶入站存取權杖調用 Agent。

  • 用戶端 A 只能用 agent.access 這一最小 scope 進入 Agent;它不能拿到 Agent 上其他更高許可權的 scope。

  • 用戶端 C(未接入或未授權)即便偽造一張看似合法的令牌,也無法通過 Agent 的校正。

痛點

反面做法

風險

Agent 內自己寫一段 IP 白名單

IP 是網路層訊號,不能代表"誰在調";動態環境下維護成本高

Agent 自己校正 API Key

每接入一個用戶端就要發一把 Key,輪換、撤銷、審計全部脫離 Agent ID Guard

不做 audience(受眾)校正,只看令牌簽名

一張本應給別的應用的令牌可能被串用,等於把許可權邊界完全交給令牌持有人

解決方案

把"用戶端 → Agent"這條邊的授權關係沉澱到 Agent ID Guard,由 Agent ID Guard 在頒發入站存取權杖時按授權關係裁剪 audience(受眾)和 scope,由 Agent 在校正入站存取權杖時強制核對 audience(受眾)和 scope。

入站許可權的三個控制點:

控制點

在哪生效

失敗時的表現

1、用戶端是否被授權調此 Agent

Agent ID Guard 頒發入站存取權杖時檢查

Agent ID Guard 直接拒絕授權請求或不簽發包含目標 audience(受眾)的令牌

2、入站存取權杖.audience(受眾)是否等於 Agent 的受眾標識

Agent 接收請求、校正入站存取權杖時檢查

Agent 返回 401/403

3、入站存取權杖.scope 是否包含本次訪問所需 scope

Agent 接收請求、按介面路由校正時檢查

Agent 返回 403 + scope 許可權校正失敗

出站許可權:Agent 能做什麼

背景

Agent 接到使用者請求後,往往要調用一個或多個下遊服務來完成任務。下遊可能是:

  • 企業自有 API(例如 HR、CRM、ERP)

  • 三方 SaaS(例如 GitHub、飛書、Salesforce)

  • 大模型 / 向量資料庫 / 知識庫

對這些下遊而言,Agent 是一個新型"用戶端"——它不是某個固定使用者的瀏覽器,而是一段可能被多使用者共用、由 LLM 決策的程式。如果不在出站側加約束,Agent 會變成一個"超級應用",掌握所有下遊服務的訪問能力。

情境

延續"AI 請假助手"案例:助手需要調用 HR 系統的兩個介面:

  • GET /user/read → 需要 scope user.read

  • POST /user/write → 需要 scope user.write

需求:

  • Agent 可以在使用者上下文中調用這兩個介面。

  • Agent 不能調用 HR 系統的其他介面(例如 admin.*)。

  • Agent 不能調用 CRM、知識庫等其他下遊(除非另行授權)。

  • 使用者撤銷同意後,Agent 立即失去出站調用能力。

痛點

反面做法

風險

Agent 直接拿使用者的入站存取權杖去調下遊

入站存取權杖的 audience(受眾)是 Agent,不是下遊——下遊本應拒絕;若下遊不嚴格校正 audience(受眾),將形成"令牌串用"漏洞

Agent 用一張固定的 Service Account 令牌調下遊

丟失使用者上下文,下遊無法做行級許可權和審計

在 Agent 內寫入程式碼 AccessKey/AppSecret

憑據輪換困難;多 Agent 情境下憑據複用,審計黑洞

解決方案:出站授權 + Token Exchange

把"Agent → 下遊服務"這條邊的授權關係也沉澱到 Agent ID Guard:

  1. 在 Agent ID Guard 中把下遊服務聲明為一個 Resource Server(OIDC With M2M 應用),聲明它的受眾標識、scope 列表(例如 user.read、user.write、admin.delete……)。

  2. 在 Agent ID Guard 中建立"Agent → 下遊服務"的出站授權,勾選允許 Agent 申請的 scope 子集(例如只勾 user.read)。

  3. Agent 在調用下遊前,用剛收到的入站存取權杖走一次 Token Exchange,向 Agent ID Guard 申請目標下遊的出站存取權杖,scope 在出站授權範圍內自由選擇。令牌交換流程示意圖如下:

    image.jpeg

端到端綜合情境:入站 + 出站的聯動

本章把前文逐條概念串成一個完整故事:"AI 請假助手"代員工小王查詢年假

角色與配置

實體

在 Agent ID Guard 中的標識

Agent ID Guard

idaas_jbfqz555uvm3n5a3vfuxyzxxxx / <YOUR-IDAAS>.aliyunidaas.com

使用者

user_froj2vye7d46cf32bvp5utxxxx(小王)

用戶端(OIDC With M2M 應用)

app_nfiiybmikzo2fnmabpectnxxxx

Agent 應用

app_niicndynmcf72rqvkw6szvxxxx,受眾 agent-app_niicndynmcf72rqvkw6szvxxxx,scope agent.access

下遊企業服務(HR)

受眾 example:audience(受眾),scope user.read、user.write

授權關係:

  • 入站:用戶端 → Agent,已授權 agent.access。

  • 出站:Agent → HR 服務,已授權 user.read、user.write。

  • 使用者授權:用戶端已授權給小王。

端到端時序

  1. 小王 → 用戶端:登入企業門戶

  2. 用戶端 → Agent ID Guard:引導使用者前往授權頁面

  3. Agent ID Guard → 小王:展示授權同意頁"是否允許企業門戶使用 AI 請假助手?"

  4. 小王 → Agent ID Guard:點擊同意

  5. Agent ID Guard → 用戶端:授權完成,返回企業門戶(獲得入站存取權杖)

  6. 小王 → 用戶端:"還剩幾天年假?"

  7. 用戶端 → Agent:攜帶入站存取權杖,請求 AI 請假助手

  8. Agent:驗證令牌有效,判斷需要查詢 HR 系統

  9. Agent → Agent ID Guard:發起令牌交換(目標:HR 服務,要求的權限:查詢使用者資訊)

  10. Agent ID Guard:驗證請求合法性,檢查 AI 助手是否被允許訪問 HR 服務

  11. Agent ID Guard → Agent:頒發出站存取權杖(允許以小王的身份查詢 HR 服務)

  12. Agent → HR:攜帶出站存取權杖,查詢小王的年假

  13. HR:驗證令牌有效,僅返回小王本人的資料

  14. HR → Agent:返回小王的年假資料

  15. Agent → 用戶端:產生回答

  16. 用戶端 → 小王:"您還剩 X 天年假"

常見問題

為什麼用戶端拿到的 Access Token 中 scope 欄位是空的?

請檢查:

  1. 用戶端請求授權時是否傳入了正確格式的 scope 參數(必須是 audience|scope 格式)。

  2. Agent 的 Scope 是否已通過入站授權授予該用戶端。

  3. 如果是手動授與類型的 Scope,是否已為當前登入使用者單獨授權。

Token Exchange 介面返回失敗,怎麼排查?

常見原因:

  • subject_token 已到期或已被吊銷。

  • subject_token 對應的受眾不是 Agent(即用戶端沒有訪問 Agent 的許可權)。

  • client_id 不是被授權可以發起 Token Exchange 的用戶端(必須是 Agent 節點對應的應用)。

  • 請求的 audience(受眾)|scope 未授權給該 Agent(出站授權缺失)。

  • Agent ID Guard 不允許用戶端用"自己申請的令牌"做令牌交換。

詳細的錯誤碼與排查方法請參見Token Exchange 配置指導

為什麼 Agent 調用大模型 API Key 節點時不需要手動出站授權?

大模型節點和三方服務節點的出站授權本質是"資料許可權",Agent ID Guard 在建立 Agent 時會自動初始化一條該 Agent 專屬的授權規則。添加大模型/三方服務節點時,系統會自動把對應憑據加入該專屬授權規則,使用者無需手動操作。如需變更,可直接刪除節點(即從專屬授權規則中移除資源)。

刪除 Agent 工作流程中的節點會發生什嗎?

刪除節點僅解除該節點與當前 Agent 的關係,不會刪除底層應用或憑據

  • 刪除用戶端節點:解除該用戶端對該 Agent 的入站授權,用戶端應用本身保留(如需刪除,請前往應用管理 → M2M 應用)。

  • 刪除大模型 / 三方服務節點:將該憑據從 Agent 專屬授權規則中移除,憑據本身保留(如需刪除,請前往資產中心 → 憑據)。

  • 刪除企業服務節點:解除該 Agent 對該企業服務 Scope 的出站授權,企業服務應用保留,出站授權詳情參考Agent ID Guard 出站授權