Leina 部落格 團隊 AI

Leina 的安全連線與開源承諾

了解帳號授權與團隊權限如何定義 Leina 的應用程式存取,以及公開的元件程式碼與社群貢獻如何讓這些界線可供檢視。

任務通過授權邊界到達應用程式節點,不同用戶端共用同一套連線基礎

概念示意圖:團隊任務透過授權連線到達業務應用程式。

在要求 AI 整理電子郵件、尋找文件或更新業務紀錄之前,團隊需要明確的存取界線:使用哪個帳號、允許哪些操作、誰可以使用某個連線,以及誰會收到結果。

Leina 透過授權連線存取業務應用程式,並使用成員與群組權限來管理可用的存取。OpenConnector 負責處理應用程式連線。原始帳號憑證留在連線執行環境內,而代理程式使用完成任務所需的操作與結果。連線架構

我們公開關鍵元件的程式碼與文件,讓開發者可以檢視憑證處理、權限宣告與呼叫邏輯,並協助改進。公開專案提供實作細節與協作紀錄;憑證與業務資料仍受連線授權與存取設定的規範。

讓存取界線可供檢視

安全設計應該有具體的實作細節可供檢視。公開原始碼讓開發者可以檢查:

  • 憑證處理: 哪個執行環境邊界持有原始憑證,以及哪些呼叫路徑會使用它們。
  • 所需權限: 連接器宣告哪些範圍,以及讀取與寫入授權需要什麼。
  • 變更的驗證: 修正解決了哪個問題、新增了哪些迴歸檢查,以及由誰貢獻。

這為社群提供了一個公開的檢視入口。開發者與安全研究人員可以檢視實作、提出問題,並透過安全政策私下回報潛在漏洞。團隊仍需依照自身任務設定帳號授權與存取。

除了維護這些能力之外,我們也讓連線、工作流程與用戶端專案可供開發者在自己的產品中重複使用。

圍繞團隊任務定義授權

想像一個團隊向 Leina 提出要求:

閱讀本週的客戶電子郵件,找出待追蹤事項,附上原始郵件的連結,並為我準備一份草稿。

這個範例說明了連線關係。可用的操作取決於連接器支援、帳號授權與團隊設定。

Leina 需要解讀要求、選擇用於讀取電子郵件的操作,並整理結果。OpenConnector 為這些操作提供連線與執行能力:使用已授權的帳號、檢查相關的存取界線,並呼叫業務應用程式。

從任務到已授權的應用程式

flowchart TB
  accTitle: 從任務到已授權的應用程式
  accDescr: 團隊在聊天中提出工作。Leina 選擇所需的操作,並使用 OpenConnector 的授權與存取控制來觸及已授權的業務應用程式。
  T("團隊任務"):::channel --> L("Leina"):::agent
  L --> G("OpenConnector\n授權與存取控制"):::gateway
  G --> A("已授權應用程式\n電子郵件、文件、業務記錄"):::resource
Leina 整理任務並透過 OpenConnector 呼叫已授權的應用程式;這展示了連線關係。

Leina 提供團隊的 AI 體驗。OpenConnector 提供應用程式連線基礎設施。 閘道可以獨立執行,並提供 SDK、CLI、MCP 與 HTTP/OpenAPI 存取。其他開發者可以將它連接到自己的代理程式或應用程式。架構與存取路徑

憑證、動作與資料存取如何相互配合

業務應用程式在授權方式、權限定義、輸入、輸出與錯誤處理上各有不同。讀取電子郵件與變更客戶紀錄也需要不同的存取權。隨著應用程式與任務數量增加,這些細節會影響代理程式能否可靠完成工作。

我們在獨立的閘道中維護連線能力。用戶端可以探索動作、檢視輸入與輸出結構描述及所需權限,然後選擇連線來執行。原始供應商憑證留在執行環境邊界之後;代理程式會收到執行所需的詮釋資料與結果。閘道能力

這樣的分工也讓改進有明確的歸屬。供應商可能需要唯讀範圍宣告、某個動作可能需要修正的輸入結構描述,或某個檔案下載可能需要更好的處理方式。每一項都可以在連線層中檢視與變更,並留下公開的工作紀錄。

相同的供應商 ID、動作 ID 與合約可以服務不同的存取路徑。開發者可以圍繞自己的產品組織任務,同時重複使用連線工作。開發者工具

我們對開源社群的貢獻

我們對開源的貢獻包括一個可獨立使用的閘道、用於呼叫它的工具,以及一個持續共同維護這些專案的空間。

專案能力授權條款
OpenConnector憑證處理、動作探索與執行、執行環境存取控制,以及自架部署Apache-2.0
OpenFlow具備程式碼與 AI 任務的視覺化工作流程、分支、人工核准,以及自架部署(beta)Apache-2.0
OO-CLI從命令列為本機代理程式探索、檢視與呼叫連接器動作MIT
Connector SDK用於從應用程式程式碼呼叫閘道的輕量 TypeScript HTTP 用戶端MIT

開發者可以檢視權限宣告、動作結構描述與執行器程式碼。他們也可以執行自己的 OpenConnector。自架營運者需設定儲存、驗證與自己的 OAuth 應用程式,並依照部署文件維護環境。自架設定

OpenFlow 將工作流程步驟放在可檢視的畫布上。它可以獨立執行,並使用如 OpenConnector 的連接器執行環境來探索與執行應用程式動作。帳號憑證留在連線層,而工作流程參照連線身分。該專案目前處於 beta 階段。OpenFlow 如何連接應用程式

這些專案提供連線、工作流程與用戶端存取能力。每個儲存庫的授權條款定義其開源範圍,而第三方服務與資產仍受其自身條款規範。我們的開源頁面匯集了這些專案、Star 數量與參與途徑。

共同改進授權與連線安全

貢獻的價值在於它解決了什麼問題。以下兩個已合併的社群提取要求分別處理權限宣告與連線生命週期處理。它們展示了公開儲存庫中的改進;它們並不代表 Leina 目前的正式版本已部署這些變更。

Gmail:為唯讀任務要求存取權

先前的 Gmail 宣告對服務帳號與使用者 OAuth 使用同一份範圍清單。該清單適合服務帳號,但遺漏了使用者 OAuth 整合可要求的 gmail.readonly 範圍。一個只需要讀取郵件的整合,無法僅透過該宣告要求唯讀存取。

在 PR #586 中,貢獻者 @bakey 將清單分開。使用者 OAuth 宣告新增了唯讀存取,而服務帳號保留其現有的範圍清單。這讓唯讀整合可以選擇適當的授權,並保留現有的服務帳號授權。該 PR 也為這些界線新增了迴歸檢查。

對於電子郵件摘要任務,這類細節會影響整合需要多少存取權。公開宣告與變更讓開發者可以檢視界線,並為自己的整合選擇適當的範圍。

OAuth:讓已中斷的連線保持中斷

授權可能與其他操作重疊。仍在進行中的 OAuth 回呼可能在使用者中斷連線後才完成,並將憑證寫回儲存。

貢獻者 @powerfulZ 在 PR #698 中處理了該競爭情況。中斷連線會推進一個持久性的退役世代。在儲存憑證之前,授權流程會檢查其擷取的世代是否仍然有效。過期的授權流程無法再還原已中斷的連線,而新的明確同意則可以重新連接它。

該 PR 的驗證紀錄涵蓋相關的 SQLite、D1 與 PostgreSQL 儲存路徑。這項改進讓「中斷連線」背後的狀態變更更完整,並為維護者提供公開的迴歸涵蓋範圍,以便再次檢查。

這些成果結合了專案維護與社群貢獻。我們保留貢獻者署名,並在發行說明中公布新增的能力、修正與參與者。

檢視證據,並讓存取符合任務需求

公開原始碼為使用者與開發者提供了具體可檢視的內容:連接器宣告的權限、動作接受的輸入、其執行器如何呼叫上游應用程式,以及修正新增的檢查。

使用它仍需檢查特定的應用程式、帳號與操作。OpenConnector 區分目錄涵蓋範圍、可於本機執行的動作,以及有證據顯示已對真實上游 API 驗證過的動作。連線總數描述的是涵蓋範圍;特定任務的可用性需要自行檢查。專案驗證用語

對於團隊使用者,請從 Leina 開始,先進行明確的唯讀任務。檢視結果及其來源,然後視需要擴大存取。閱讀安全應用程式連線以了解帳號授權與第一個任務,或閱讀團隊代理程式權限以了解共用存取界線。

對於開發者,請執行 OpenConnector、檢視您需要的動作,並連接您的代理程式或產品。回報問題時請附上可重現的步驟。提交程式碼、文件與檢查結果時,請遵循貢獻指南。請透過安全政策私下回報憑證暴露或潛在漏洞。

我們公開關鍵元件的實作供開發者檢視,並運用公開協作來改進授權與連線。團隊可以檢視 Leina 背後的基礎,而其他開發者可以重複使用這些專案,並將改進貢獻回社群。