durin
註冊

Durin 內部:受控 MCP 請求如何運作

透過 Durin 進行一個智能體工具調用,從登入請求和存取檢查到審查、憑證處理和記錄的結果。

決策摘要

Durin 將智能體的工具呼叫視為評估請求,而不是要遵循的指令。网关确认谁在呼叫,组织的运行时重新检查当前访问和政策,一个单独的代理附加该人的提供商授权,并且在尝试之前和之后记录每个更改。依靠该路径来处理通过 Durin 路由的请求,并对直接访问、模型供應商和供應商权限保留单独的控制。

在工具調用處畫線

假設工程師要求編碼智能體為失敗的測試開立票證。對模特兒來說,起草票據很容易。創建它意味著使用真實帳戶在真實系統上呼叫工具,並留下其他人會看到的更改。 Durin 將該呼叫視為工作區做出決定的請求,而不是要執行的指令。

Durin 位於智能體用戶端與工作區連接的系統之間。该模型以及智能體在其自己的环境中执行的工作(例如读取本地文件、运行测试或编辑代码)保留在客户端。 Durin 不託管或訓練模型。它管理透過 Durin 端點到達它的工具調用,例如搜尋文件、閱讀票證、建立問題或發送訊息。

每個人都透過自己的端點進行連接。個人 URL 涵蓋他們可以使用的每個連線; 連線 URL 將客戶端範圍縮小到一個。 URL 是位址,不是密碼。用戶端使用該位址的 OAuth 登入 Durin,然後 Durin 從已驗證的身分中衍生出預期位址並拒絕不符。客戶端永遠不需要提供者的令牌。

在端點後面,連線代表一個經批准的系統:提供者的託管 MCP 伺服器或您的組織運行的 MCP 伺服器。內建的Durin沙箱是第三種。它透過 Durin 內部的合成文件和票據進行答复,並且從不聯繫外部提供者。他們都持有相同的支票。

工具呼叫在到達遠端 MCP 伺服器之前會經過網關、組織運行時、憑證代理程式和出口。
圖 1 · 示例性請求路徑。每個服務都會檢查其負責的內容,並且提供者令牌保留在 Durin 內。

智能體用戶端及其模型位於 Durin 外部,並使用為此確切端點頒發的 OAuth 令牌發送工具呼叫。網關驗證令牌並找到組織。签名请求的有效期为 30 秒,它将调用传送到组织运行时,该运行时会重新检查当前访问、应用政策和审查,并在分派之前记录意图。 憑證經紀人收到與該確切呼叫綁定的簽章請求,再次檢查決策並附加該人的提供者Token。出口服務透過公共 HTTPS 將其傳送到遠端 MCP 伺服器,無需重定向或重試。結果傳回給客戶端;提供者令牌則不然。直接提供者存取永遠不會跨越 Durin。

打開全尺寸圖: 工具呼叫在到達遠端 MCP 伺服器之前會經過網關、組織運行時、憑證代理程式和出口。
設定您的 MCP 用戶端

尋找工具而不擴大訪問範圍

智能體必須先發現工具,然後才能呼叫它們。 Standard 工具/清單請求逐頁返回人們可以使用的提供者工具。对于大型目录,Durin 添加了三个发现工具:durin_list_connections 查找预期的連線,durin_list_tools 使用可选文本查询浏览允许的工具摘要,durin_describe_tools 返回最多五个确切名称的已审阅模式。第四個是 durin_call_tool,按名稱及其參數和冪等鍵運行工具。

發現是由訪問決定的,但它不是訪問。目前政策會阻止的工具被排除在外。需要審查的工具或其結果取決於呼叫名稱的資源的工具仍然會出現,因為決策取決於特定的請求。當某些內容無法使用時,回應會顯示是否缺少登入、同意、審核或政策,但不會透露被封鎖工具的定義。 連線 URL 限制對其連線的發現和調用,並且任何過濾器都無法擴大該範圍。

每個通話到達時都會再次評估,因為自從取得清單以來,成員資格、政策或連線可能已發生變更。 Durin 对客户的指示直接这么说:永远不要发明工具名称,当多个匹配时询问使用哪个連線,并期望每次调用都被再次检查。

一通電話,一步一步

以下是客戶端呼叫工單工具時發生的情況。每個步驟都在具有狹窄作業的服務中運行,並且每個移交都針對接收它的服務進行簽署。

  1. 網關對呼叫者進行身份驗證。它驗證 OAuth 存取權杖的簽名、頒發者和受眾,然後詢問身分提供者該令牌是否仍然有效以及該令牌已頒發給哪個用戶端。它對每個請求都會執行此操作,而不進行快取。客戶端報告的有關其自身的名稱以及寫入令牌中的任何角色在建立身分時不發揮任何作用。
  2. 網關從該身分中尋找組織,而不是從標頭或請求正文中指定的組織中尋找。該組織的運行時確認該人是活躍成員並提供其當前角色。
  3. 網關將對該運行時的呼叫作為簽名的內部請求進行處理。它命名了組織、環境、人員、角色、客戶端和操作,並在 30 秒後過期。運行時拒絕向另一個組織、環境或操作發出的請求。
  4. 執行時間根據自己的記錄(而不是令牌)重新檢查目前存取:成員資格和撤銷、連線的狀態和團隊範圍、人員的提供者授權、審查的工具和呼叫目標的資源。參數必須與工具審查的架構相符並通過檢查。這些檢查中的每一項都未能關閉。
  5. 運行時應用工作區的規則。預設情況下,允許通過這些檢查的請求,包括變更。管理員可以要求其他管理員審核更改、拒絕更改或拒絕所有存取。團隊政策和自訂規則可以讓決策更加嚴格,絕不寬鬆。
  6. 對於允許的調用,運行時會記錄其意圖並將調用交給憑證代理,該代理在聯繫提供者之前再次根據當前記錄檢查決策。
  7. 運行時記錄結果並將結果傳回給客戶端。

身份驗證和授權始終保持分離。有效的令牌確定誰在呼叫;它不會決定該人現在是否可以撥打此電話。運行時在調用時根據它控制的記錄來決定。

在執行時間內部,每個組織和環境都有一個協調物件(Cloudflare 持久化物件)一次處理這些請求。因此,決定、核准、政策變更和撤銷不能交織在一起。如果在評估呼叫時政策發生變化,則呼叫會因衝突而停止,並且不會記錄任何允許的內容。

了解政策決策

運行經過審查的工具,而不是當前伺服器提供的任何工具

MCP 伺服器可以隨時變更其工具,包括它們的描述和輸入模式。當管理員檢查工具時,Durin 會記錄其定義的摘要。審查還決定該工具是否讀取或更改資料、它可能接觸哪些資源以及這些資源在其參數中出現的位置。 Durin 不依賴伺服器自己的提示來表明工具是唯讀的,並且新發現的工具在經過審查之前保持不活動狀態。

如果稍後發現返回不同的定義,Durin 將建立一個需要審核的新版本,暫停活動版本並撤銷其開放的核准。一個人如果自己發現的定義與審查的定義不再匹配,就會被拒絕。未經審查的工具將被拒絕,並且其名稱不會作為可呼叫工具提供給客戶端。

每個啟動的工具還需要一個其參數的驗證器。 Durin 在審核期間創建一個簡單的模式;一種工具,其架構過於複雜,需要等待單獨簽署的驗證器才能啟動。在調度時,代理從審查的記錄而不是從客戶端的請求中獲取上游工具名稱和模式。

審查也將參數映射到資源。管理員在工具的輸入中最多命名四個字段,Durin 將它們的值連接到規則引用的資源中,例如擁有者和儲存庫。其資源不在該工具的允許清單中的呼叫將被拒絕,且缺失值不符。

新增供應商連線MCP 工具規範

核准綁定到一個確切的調用

當規則需要審查時,呼叫會傳回所需的核准,並且不會向上游發送任何內容。另一位主動管理員(而非請求者)在核准中或(如果已配置)在 Slack 中開啟請求。他們看到請求者、連線、工具、資源、參數摘要、版本和到期日,然後選擇允許一次、始終允許或拒絕。

核准不運作此操作。在核准在原始請求後 15 分鐘到期之前,請求者使用相同的冪等性金鑰和核准引用再次發送相同的呼叫。運行時再次檢查當前訪問,消耗授權,記錄決策並聲明單次嘗試。如果成員資格被撤銷、政策發生變更或參數不同,則舊的核准無法授權通話。

核准的綁定是什麼
部分請求為什麼會被綁定
請求者及組織其他人不能使用該補助金。
連線和憑證補助金不能轉移到其他帳戶。
工具版本、定義摘要和映射改變的工具需要重新檢視。
參數摘要和資源不同的標題或目標是不同的行動。
架構和政策版本發布新規則會使開啟的核准失效。
請求者的撤銷時期失去和重新獲得存取權限不會恢復舊的授權。
到期前執行一次單次嘗試就會消耗補助。
查看確切的核准運行沙箱核准練習

當審閱者保存決定時

回顧例行變更的每一次重複,可以訓練人們在不閱讀的情況下點擊「批准」。允許始終在狹窄的範圍內解決該問題。當核准記憶體處於預設狀態時,它會保存持續 30 天的長期撥款,除非組織選擇另一個生命週期。如果後續請求來自同一請求者,針對相同的連線、工具和資源,且每個綁定版本均未更改,且其參數相同或滿足組織的匹配閾值(預設為 90%),則後續請求無需重新審核即可繼續進行。

匹配是根據參數的加鹽單向草圖計算的,而不是參數本身,並且相同的輸入總是產生相同的分數。草圖無法顯示相似的任何內容都將被視為新的。允許一次永遠不會覆蓋以後的請求;它僅作為先例顯示給下一個審閱者。

常設授權仍會通過目前的每個存取檢查,並且代理程式會像任何其他核准一樣重新檢查它。 政策變更、請求者或審查者的撤銷、關閉記憶體或管理員的撤銷都會提前結束。管理員可以在核准 → 記憶體下查看每個已儲存的決策以及每次使用的決策。

管理核准內存

讓提供者令牌遠離智能體

對於供應商連線,Durin 使用請求者本人的授權呼叫供應商。每個人都需要透過 Durin 登入其使用的每個連線所對應的供應商,因此隊友的授權不會擴大其他人的存取權限。權杖以 AES-256-GCM 加密儲存。每筆記錄都將組織、環境、連線和人員綁定為經過驗證的附加資料,因此無法以其他人的身分解密記錄。輪替金鑰時,金鑰環最多保留五把金鑰:最新的金鑰用於加密新記錄,環中的每把金鑰都可用於解密以它加密的現有記錄。

只有憑證經紀商使用這些Token。它是一項單獨的服務,只有組織的運行時才能透過綁定到調用的確切正文的簽名請求來調用,並且有效期為 30 秒。在聯絡提供者之前,代理程式會再次讀取目前記錄並重新執行政策決策。對於更改,還需要記錄的意圖、未更改的撤銷紀元和相同的憑證版本。然後它附加令牌本身。沒有端點向運行時、客戶端或模型傳回令牌。

對提供者託管和自訂 MCP 伺服器的呼叫透過一項出口服務發出。它僅接受對公共主機名的 HTTPS 請求,拒絕重定向,限制方法和標頭,並限制請求和回應大小。每個調用都固定到連線的已審核端點,並進行單一工具/調用,不會自動重試。

將令牌排除在模型上下文之外並不會使結果變得無害。無論允許的工具返回什麼,都可以到達客戶及其模型提供者。 Durin 保留每個結果,直到根據審查的模式進行檢查並進行檢查,但該檢查會查找常見的秘密格式,例如私鑰和即時 API 令牌,而不是每種敏感資料。縮小提供者範圍。 Durin 核准永遠不會擴展提供者帳戶本身可以執行的操作。

管理連線憑證MCP 安全最佳實踐

最多執行一次更改

智能體重試,網路丟棄回應。一張票被創建兩次是很麻煩的;訊息或付款發送兩次會更糟。 Durin 的建構使得一個允許的請求最多導致一次嘗試。

  • 每個呼叫都帶有客戶端選擇的冪等密鑰。首先再次評估具有相同密鑰的重播。如果參數、工具或憑證發生更改,則會因衝突而被拒絕。否則,它將傳回具有較早狀態的重複項並且不發送任何內容。
  • 在聯絡提供者之前,執行階段將執行和稽核條目寫入單一事務中。如果寫入失敗,呼叫就會停止。經紀人拒絕任何缺乏此記錄意圖的變更。
  • 由執行作為關鍵的單一調度聲明可以保護每個變更。同一請求的第二次交付不能再次領取。
  • 只有當經紀商返回通過檢查的結果時,Durin 記錄才完成。提供者錯誤、逾時、最終事件遺失或未通過檢查的結果將被記錄為不確定。
允許的變更記錄意圖、聲明一次調度並以完成或不確定結束。
圖 2 · 允許變更的說明性處理。 Durin 記錄的是不確定的結果而不是猜測。

允許的更改帶有客戶端選擇的冪等密鑰。運行時首先將執行和稽核條目寫入一個事務中;如果寫入失敗,則不會發送任何內容。然後它會認領一次發貨,因此第二次遞送無法再次認領。代理程式重新讀取目前記錄並呼叫提供者一次,而不會自動重試。當結果返回並通過檢查時,記錄的結果完成,或在錯誤、逾時或檢查失敗後不確定。對於未更改的請求,重複相同的鍵會傳回重複項;對於已更改的請求,重複相同的鍵會導致衝突;都不發送任何內容。

打開全尺寸圖: 允許的變更記錄意圖、聲明一次調度並以完成或不確定結束。

不確定的更改永遠不會自動重試,因為它可能已經發生了。客戶端被告知在重試之前檢查記錄,並且在提交新請求之前應該有人檢查提供者和稽核證據。使用新的冪等鍵強制進行另一次嘗試可能會重複已經發生的操作。對於讀取,從新請求重新開始通常是無害的。

檢查請求活動

Durin 記錄了什麼,以及保留在外面的內容

Durin 將政策決策和執行結果記錄為僅附加稽核日誌中的單獨條目。資料庫觸發器拒絕任何更新或刪除,並且沒有程式碼路徑重寫條目。記錄透過論點摘要而不是論點本身來識別人員、客戶、連線、工具、資源、決策和原因。呼叫路徑不儲存請求或結果負載。

Durin 在客戶端看不到對話。為其檢測的客戶端可以透過單獨的捕獲端點提交它實際觀察到的訊息,連結到它自己的執行並標記為客戶端報告。捕獲僅保留元數據,除非管理員打開編輯捕獲。如果管理員啟用外部內容評估器,它將接收其檢查的參數或結果;它可以使決策更加嚴格,而不是更寬鬆。

三件事超出了這條路。不透過 Durin 到達提供者的請求需要自己的控制,例如網路或身分限制。您的模型提供者會接收客戶端發送的所有內容,包括工具結果。而提供者本身的權限仍然具有權威性:Durin 可以縮小智能體對連線的操作範圍,而絕不會擴大它。

若要親自查看路徑,請要求工作區中的 Durin 沙箱並進行讀取。然後讓管理員要求審查更改,建立綜合票證並從所需的核准到其記錄的結果進行追蹤。此評估套件列出了用於比較任何網關的相同測試。

嘗試公共請求模擬器運行供應商中立的評估套件

關於請求路徑的問題。

如果 Durin 無法完成所需的檢查,會發生什麼事?

請求停止。所需的檢查無法關閉,並且如果運行時無法在分派之前記錄更改的意圖,則不會向提供者發送任何內容。客戶端收到錯誤而不是部分結果。

為什麼每個人都單獨登入提供者?

Durin 在請求者本人的授權下呼叫提供者。这使提供商对每个帐户的权限保持有效:Durin 可以缩小智能體对連線的操作范围,并且一个人的同意永远不会扩展另一个人的访问权限。

我們可以在不連接真實提供者的情況下嘗試這個嗎?

是的。在現有的工作區中,從我的工作區 → 連線 → 可用請求 Durin 沙箱。一旦管理員批准,它就會根據工作區的現有規則以合成文件和票據進行答覆。它不需要提供者帳戶,並且不計入連線計費。

透過您自己的工作區遵循請求。

建立一個帳戶,請求合成沙箱,並追蹤從政策決策到其記錄結果的一次呼叫。

建立帳戶

選擇該瀏覽器允許的選用用途。保持網站正常運作、讓您保持登入並記住此選擇的 Cookie 始終處於開啟狀態,推薦連結設定的推薦 Cookie 的有效期最長為 90 天。您的選擇將在第一方 Cookie 中儲存 180 天。如果分析正在運行,儲存關閉分析的選項會重新載入此頁面。 閱讀隱私權聲明.