Architecture - 2026-09-10 - 4 分鐘閱讀
企業導入 AI 第一階:身份與 AI gateway
企業導入 AI 的第一階,建立身份、角色範圍、密鑰管理與 AI gateway,讓後面每一階都能回答誰在問、這通 call 有沒有記錄與是否超預算。
這是系列的第一篇,系列從第 0 篇的完整參考架構圖開始。第一階對應圖上編號①的兩欄。第一欄是「身份與存取」,包含 SSO / IdP、角色與範圍、密鑰管理。第二欄是「AI 閘道」,包含路由、流量限制與預算、紀錄、PII / DLP 過濾。雲端 LLM API 畫在企業邊界線上,所有連過去的箭頭都先經過 gateway。這一階排在第一,是因為後面每一階都預設兩個問題已經有答案:誰在問,以及這通 call 花了多少、記了沒有。第二階的檢索索引要依角色分範圍,得先有角色可分;第五階的預算上限要靠各團隊的帳,而這本帳從第一天就得開始記。

走這七個方塊,我用一家叫晴川的公司,約 40 人,8 個工程師、2 個行銷。晴川是編的,只用來把這一階走一遍。第一階之前,晴川的人各自開帳號,有的刷公司卡,有的刷自己的,每個工程師把個人 key 貼進自己在用的工具。
SSO / IdP:誰在問
每一個送往 AI 工具的請求,都帶著公司身份提供者發出的身份。方塊上的標註是「誰在問」。沒有它,晴川講不出誰在用哪個工具,有人離職,他的帳號和 key 還繼續活著。我自己碰過一個人的版本。一個發佈平台底下有我的兩個帳號,腳本的 API key 綁在舊的那個,腳本建的草稿全部落在舊帳號,我在瀏覽器裡開著的新帳號顯示零篇。沒有人貼錯任何東西。十個人各自握著自己的帳號,公司連一份可以開始盤點的清單都沒有。做完的樣子是:帳號只有身份提供者發的才存在,在身份提供者那裡停掉一個人,他的 AI 存取在同一步跟著停。
角色與範圍:能碰到什麼
SSO 回答了誰之後,這個方塊回答這個人能碰到什麼:哪些模型、哪些工具,到第二階再加上哪些資料。標註是「能碰到什麼」。沒有它,每個登入的人拿到的存取都一樣。身份解決了盤點的問題,邊界的問題還開著。晴川的一個工程師和一個行銷,打到同一個端點,配額也一樣。做完的樣子是:角色在登入時指定,一路帶到 gateway,兩個行銷拿到的範圍跟工程不同,而且這個差別是系統在執行。改一句 prompt,對一個人能碰到什麼沒有任何影響。
密鑰管理:密鑰不進 prompt
供應商的 key、token、連接器的憑證,放在一個服務在執行時才去讀的儲存區。標註是「密鑰不進 prompt」。沒有它,key 被貼進聊天視窗,放著明碼 key 的設定檔被到處傳,跑工作流的那把 key 綁在某一個人的帳號上。我自己 session 的規則是:session 可以讀放 key 的設定檔,不得印出值,也不得由人把 key 貼進對話。換 key 那次,明碼從剪貼簿直接寫進檔案,從頭到尾沒有出現在 session 裡。這個問題的另一半是 key 屬於哪個帳號。我在一個網站分析後台有兩個帳號,一個品牌的、一個個人的,掛在同一個瀏覽器的兩個登入槽位。開錯槽位就回無權限,所以每次開那個後台之前我都要先確認登入的是哪一個。這個確認動作會存在,是因為 key 和帳號都屬於個人。做完的樣子是:沒有一把 key 屬於個人,每一條接進系統的工作流都拿到一個公司持有的身份,由管帳號的人發,而且 key 不出現在 prompt、對話紀錄、工單、或被分享出去的設定檔任何一處。
路由:模型選擇與備援
應用程式只呼叫一個內部端點,由 gateway 挑模型,某個模型不可用時切到備援。標註是「模型選擇與備援」。沒有它,晴川每個團隊各自接自己的供應商,換一個模型變成改八套程式碼。做完的樣子是:應用程式呼叫 gateway,換模型是改一次 gateway 設定,應用程式不用重新部署。
流量限制與預算:各團隊成本上限
每個團隊有一個上限,到頂之後 gateway 拒絕下一通 call。標註是「各團隊成本上限」。沒有它,帳單一個月來一次,拆不出各團隊,一支失控的腳本一個晚上就能燒掉一個月的額度,要到帳單來了才有人發現。做完的樣子是:超過上限的 call 被 gateway 拒絕,而且團隊在財務看到帳單之前就先看到這個拒絕。這個上限作用在下一通 call 的層級。正在跑的 run 要整個停下來,屬於第五階的停機與預算上限。
紀錄:每通 call 都記
每通 call 都記下誰打的、哪個模型回的、用了多少 token、花了多少錢。標註是「每通 call 都記」。沒有它,出事的時候要知道發生了什麼,只能去問那個人,或者去問 AI。做完的樣子是:最近的任何一通 call,都能依人、團隊、模型查出來,不用去問打這通 call 的人。第三階拿 agent 自己的回報來比對的,就是這份紀錄;第五階稽核帳本讀的,也是這份紀錄。
PII / DLP 過濾:什麼可以出去
過濾器在內容跨過邊界送到外部供應商之前先檢查,不該出去的擋下或遮掉。標註是「什麼可以出去」。沒有它,晴川的客服把一筆客戶資料貼進聊天視窗要擬回覆,在任何人注意到之前,這筆資料已經離開公司。做完的樣子是:帶著該擋的樣式的 call 在 gateway 就被擋下,而且這次攔截本身也出現在紀錄裡。
邊界上的雲端 LLM API
供應商的方塊畫在企業邊界線上,進去的每一條箭頭都來自 gateway。沒有這個畫法,上面六個方塊全部到位,還是可以被一個拿著個人 key 和一條直連網路路徑的工程師繞過去。做完的樣子是:從邊界內連到外部供應商的網路路徑只有經過 gateway 這一條,拿個人 key 直連會失敗。
進第二階前的檢查
用一個真的新帳號當測試跑一次。新員工透過 SSO 登入,拿到他所屬團隊該有的角色範圍。同一個人送一通超出預算的 call,gateway 拒絕;再送一通帶著 PII 過濾器該擋的樣式的 call,被擋下。整個過程沒有人在旁邊盯著。讀一遍設定、推論它應該會動,不算。檢查的後半段是第一階之前就存在的東西:盤點出來的每一個個人帳號和個人 key,都已經撤銷,或搬到公司持有的身份底下。這份清單沒清空之前,這一階還沒結束。
在自架版的圖上,①b 把雲端 LLM API 換成模型登錄 / 權重和 GPU / 推論叢集,兩塊都在企業邊界裡面,gateway 和身份這兩欄不變;自架版全圖畫出了這個替換。第二篇講資料與檢索,這一階的角色與範圍到那裡會變成檢索索引分範圍的依據。