Isoline 指南
瀏覽器設定檔自動化的最小權限設計
讓腳本與代理取得足以完成核准任務的權限,同時避免普遍存取設定檔、機密或不可逆操作的實用控制模型。
先定義完整的授權範圍
NIST 將最小權限定義為:限制使用者及代其行動的程序,只取得指派任務所需的最低存取權。因此,單一 automation 角色對瀏覽器設定檔工作太廣。它說明呼叫者是誰,卻沒說能開哪個設定檔、能到哪個網站、能改什麼,或許可持續多久。
有用的授權範圍包含八個維度:
| 維度 | 應回答的問題 | 穩健預設 |
|---|---|---|
| 行為者 | 哪個人、工作負載或代理發起作業? | 每人或工作負載一個可追責身分 |
| 租戶 | 適用哪個組織或客戶邊界? | 單一組織,不跨租戶 |
| 設定檔集合 | 可使用哪些確切設定檔? | 明確 ID 或經審閱的資料夾/標籤選擇條件 |
| 操作 | 自動化能做什麼? | 具名業務操作,而非檔案系統或程序原語 |
| 目的地 | 可連線哪些網站、API 或環境? | 僅核准來源與環境 |
| 時間 | 權限何時開始、到期? | 短期憑證與有界作業時間 |
| 速率 | 可以做多少工作? | 並行、要求與成本限制 |
| 副作用 | 可以改、發布、刪除或花費什麼? | 先唯讀,高影響操作需核准 |
每個命令都應重新評估政策。成功啟動設定檔,不得默默取得 Cookie 匯出、團隊管理、帳務變更,或對所有可到達網站行動的權限。
分開三種權力來源
瀏覽器自動化常將三種憑證混在同一流程:
- 自動化憑證授權呼叫設定檔管理工具或自動化服務。
- 設定檔工作階段狀態可能讓某人或測試帳號在網站登入。
- 目標服務的委派權限決定該帳號在網站能做什麼。
這些不能互換。自動化權杖不應包含或揭露設定檔 Cookie;已登入設定檔不證明呼叫者有權執行所有可用操作;網站密碼或 OAuth 權杖不應重用為設定檔管理憑證。
這個區分很重要,因為已驗證瀏覽器狀態本身敏感。Playwright 提醒,儲存狀態可能包含能冒用測試帳號的 Cookie 與標頭。應視為含機密產物,排除於版本控制、一般紀錄、聊天逐字稿、問題追蹤與一般自動化輸出之外。
遠端瀏覽器控制也需同樣謹慎。從 Chrome 136 開始,Chrome 不再對預設資料目錄接受遠端偵錯開關,並建議使用自訂目錄,將偵錯與真實設定檔分開。Google 在 2025 年 3 月 17 日安全公告中,將透過遠端偵錯擷取 Cookie 列為變更原因。不要為了省事,把自動化接到個人日常瀏覽器設定檔。
分配權限前先分類操作
控制介面應表達業務操作及風險,而不是開放一條不受限制的瀏覽器連線。
| 操作類別 | 範例 | 預設控制 |
|---|---|---|
| 觀察 | 列出允許的設定檔、讀取健康狀態、查看已遮蔽狀態 | 以狹窄唯讀範圍允許 |
| 生命週期 | 啟動、停止、取得設定檔租約、建立測試快照 | 僅限具名設定檔,每次轉換記錄 |
| 互動 | 前往核准來源、執行指定測試、下載測試產物 | 限制目的地、輸入、輸出路徑與時間 |
| 高影響 | 提交內容、重設測試資料、改權限、產生成本、刪除設定檔 | 預覽、明確核准與更強政策 |
| 涉及機密 | 匯出 Cookie、憑證、代理密碼、復原資料或原始狀態 | 一般自動化介面拒絕提供 |
風險取決於情境。向可丟棄的預備帳號提交表單,可能是一般測試;在正式帳號做同一動作,可能產生法律、金錢或聲譽影響。決策應綁定環境、帳號與確切變更。
發出狹窄且短期的憑證
每項工作負載使用不同服務身分,不要把人類管理員的工作階段借給持續整合(CI)、本機腳本或代理。實用權杖應限制:
- 組織,以及適用時的客戶或工作區;
- 設定檔 ID、資料夾、標籤或其他穩定資源選擇條件;
- 允許操作;
- 預定服務或接收對象;
- 發出時間、到期與撤銷狀態;
- 平台支援時的裝置或工作負載身分;
- 並行、速率與成本上限。
RFC 9700建議將存取權杖限制為最低所需權限,包括預定資源伺服器、資源與操作,也說明限制接收對象為何可降低權杖外洩影響。目前的 MCP 授權規格同樣要求驗證接收對象,並讓用戶端只請求預定操作所需範圍。
優先逐步授權。作業開始只有探索與預覽權;後續若需要更強權限,再為該步驟取得新的短期授權。不要因為某條分支將來可能需要,就發出永久全權權杖。
MCP 或其他中介應將上游憑證分開。MCP 授權安全考量要求資源專屬權杖,禁止把收到的 MCP 權杖透傳給上游 API。一般自動化閘道也適用同一原則:每個信任邊界驗證自己的憑證,僅發出或取得核准操作所需的下游權限。
讓核准具體且可驗證
核准應回答「核准什麼?」籠統的「允許這個代理」,可能超出審查者理解的範圍。
高影響命令的預覽應包含:
- 發起人與工作負載;
- 組織、設定檔、目標帳號與目的地;
- 容易理解的變更說明;
- 確切受影響資源與最大數量;
- 若有,預期成本或外部效果;
- 即將改變的值,機密須遮蔽;
- 回復或復原路徑;
- 短期核准有效期;
- 為何較低權限不足以繼續。
將核准綁定正規化要求摘要、政策版本與設定檔版本。不可逆或外部可見操作使用一次性核准。要求、目的地、資源數量或相關狀態改變時,使核准失效並重新呈現預覽。
核准不能取代授權。審查者不能授予組織本來沒有的權利,提示也不應把禁止流程變成可接受流程。
讓失敗時的執行安全
最小權限也限制出錯後的影響。執行契約應包含設定檔租約、前置條件、有界重試、取消與復原行為。
| 失敗 | 安全回應 |
|---|---|
| 權限遭拒 | 停止並回報缺少權限,不自動升權 |
| 設定檔使用中 | 不啟動第二寫入者;有限等待或回傳明確衝突 |
| 執行中租約遺失 | 停止新操作、保留遮蔽後證據,進入復原路徑 |
| 讀取前網路逾時 | 只在宣告次數與期限內重試 |
| 提交後斷線 | 標記結果未知;除非目標有安全冪等機制,否則不重做 |
| 核准到期或要求改變 | 取消操作,重新預覽與核准 |
| 稽核目的地不可用 | 依明確政策處理;高影響操作通常應封鎖,低風險事件可用受保護且有界本機緩衝 |
| 快照或還原驗證失敗 | 隔離受影響狀態,不覆寫最近正常版本 |
每個修改命令都應定義是否冪等、檢查哪些前置條件,以及呼叫者如何在中斷後查明最終結果。「任何錯誤都重試」不適用於提交、購買、刪除、邀請與權限變更。
記錄決策,不記錄機密
稽核事件應讓操作可重建,而非變成第二個憑證庫。OWASP 記錄指引建議記錄授權失敗與高風險操作,保留何時、何地、誰、做什麼,並保護紀錄存取;也提醒紀錄可能暴露密碼與其他技術機密。
每個自動化決策記錄:
- 人員、服務與受委派行為者身分;
- 組織與遮蔽後設定檔參照;
- 命令名稱、要求 ID,以及適用的冪等金鑰;
- 政策版本、決定與原因代碼;
- 已核准操作的核准參照與核准者;
- 遮蔽後目的地與資源數量;
- 開始、完成時間與結果;
- 瀏覽器、用戶端與自動化轉接器版本;
- 復原、取消或人工審查狀態。
不要記錄 Cookie 值、密碼、存取或更新權杖、授權標頭、代理憑證、加密金鑰、完整頁面內容、表單值或原始設定檔封存。網址也應最小化,因為路徑與查詢字串可能含個資或機密。保護稽核存取、定義保留期限,並測試記錄緩慢、已滿或不可用時的行為。
具體政策範例
以下虛擬碼是設計範例,不是 Isoline 配置。它只授權 CI 工作負載對預備環境設定檔執行區域冒煙測試:
principal: "workload:regional-smoke-tests"
tenant: "org:example-studio"
profiles:
selector: "tag == qa-staging"
operations:
allow:
- "profile.read"
- "profile.launch"
- "test.run-approved-suite"
- "profile.stop"
deny:
- "profile.export-session-state"
- "profile.delete"
- "team.manage"
destinations:
allow:
- "https://staging.example.test"
conditions:
expiresAt: "2026-08-26T18:00:00Z"
maxConcurrentProfiles: 2
maxRuns: 20
requireCleanStop: true
approvals:
"staging-data.reset": "single-use-human-approval"
onUnknownSideEffect: "stop-and-review"
政策不授予一般瀏覽、正式環境存取、機密匯出、團隊管理或無限新增範圍的能力。冒煙測試若需要新來源或操作,應經政策審查,不在執行時自行推斷。
審查清單
啟用設定檔自動化前,確認:
- 系統擁有者及適用時的客戶,已記錄允許用途;
- 每個人與工作負載都有可追責身分;
- 權杖受租戶、設定檔、操作、接收對象、時間與速率限制;
- 目標帳號只有任務所需角色;
- 排除日常私人設定檔;
- 一般讀取與紀錄不會出現工作階段狀態或其他機密;
- 高影響操作有具體預覽與會到期的核准;
- 設定檔鎖定防止並行寫入;
- 修改命令定義前置條件、冪等性與未知結果處理;
- 取消、撤銷、中斷與還原路徑已測試;
- 稽核軌跡可重建決策而不暴露敏感內容;
- 授權撤回或目標服務拒絕操作時,流程停止。
限制
最小權限減少失誤與憑證外洩的影響,不會讓未授權流程變得可接受,也不保證第三方允許操作。Playwright 瀏覽器情境文件所述分離可改善測試隔離,但不會把一台機器變成多台獨立受信任裝置。受侵入端點、惡意擴充功能、權限過大的目標帳號或不安全下游服務,仍可能破壞預期邊界。
流程改變時重新檢查權限。移除未使用範圍、讓不活躍憑證到期、重測拒絕路徑,並將要求原始工作階段資料視為獨立高風險安全審查,而非一般自動化功能。
關於本指南
- AI 協助
- 本文使用 AI 從英文原文翻譯。Isoline 對發布內容負責。目前尚無人工語言審閱紀錄。
來源
來源支持下列主題。查閱日期表示引用資料何時經過確認。
- NIST 詞彙表:最小權限 National Institute of Standards and Technology
- 支持的主題
- 使用者與代其行動的處理程序所需最小權限之定義。
- 查閱日期
- RFC 9700:OAuth 2.0 安全最佳現行實務 Internet Engineering Task Force
- 支持的主題
- 存取權杖的權限、資源、操作、接收對象、有效期與傳送者限制指引。
- 查閱日期
- Model Context Protocol 授權規格,2026-07-28 Model Context Protocol
- 支持的主題
- MCP 用戶端及伺服器的資源、接收對象驗證與最小範圍請求。
- 查閱日期
- Model Context Protocol 授權安全考量,2026-07-28 Model Context Protocol
- 支持的主題
- 資源專屬權杖、混淆代理防禦,以及禁止向上游透傳權杖。
- 查閱日期
- Playwright 驗證指引 Microsoft Playwright
- 支持的主題
- 儲存的瀏覽器狀態含有機密,不應進入版本控制或一般輸出。
- 查閱日期
- Playwright 瀏覽器情境隔離 Microsoft Playwright
- 支持的主題
- 瀏覽器情境狀態隔離,以及它是測試邊界而非新受信任裝置的限制。
- 查閱日期
- Chrome 遠端偵錯安全變更 Chrome for Developers
- 支持的主題
- Chrome 136 遠端偵錯變更、預設設定檔保護與自訂使用者資料目錄指引。
- 查閱日期
- OWASP 記錄指南 OWASP Foundation
- 支持的主題
- 授權及高風險事件紀錄、有用欄位、存取控制與排除機密。
- 查閱日期