| RFC-0194:附錄:工作階段 | |
|---|---|
| 狀態 | 已接受 |
| 區域 |
|
| 說明 | RFC-0092 的附錄,批准 RFC-0092 中未決定的事項。 |
| Gerrit 變更 | |
| 作者 | |
| 審查人員 | |
| 提交日期 (年-月-日) | 2022-08-09 |
| 審查日期 (年-月-日) | 2022-10-17 |
摘要
注意:本 RFC 是 RFC-0092 的附錄,並核准 RFC-0092 中未決的決策。
這份文件:
- 淘汰「工作階段架構」一詞
- 說明 Fuchsia 平台目前的狀態,與舊版「工作階段架構」概念相關
- 定義「工作階段元件」及其在 Fuchsia 平台中的角色
- 開始將 Fuchsia 安全性角色編碼到路由至產品元件的功能審查中
從舊版「工作階段架構」概念中,保留了下列項目:
- 平台
session_manager元件 - 「工作階段元件」本身是
session_manager的子項 - 「工作階段元件」在平台中做為安全界線的角色
ffx session開發人員工具fuchsia.element.GraphicalPresenter通訊協定fuchsia.element.Manager通訊協定
下列項目會遭到捨棄,或擁有權轉移給特定產品擁有者:
- 其他程序 (例如輸入管道管理) 的單點平台自有程式庫/元件概念
- 目標是解決在多個執行階段 (例如 Flutter、Android、Chrome 等) 中,多個產品在單一團隊的單一保護傘下,複雜度暴增的問題。
下列項目會保留,且仍由平台擁有,但已規劃淘汰:
fuchsia.element.Manager通訊協定element_manager元件
以下是原始 RFC-0092 中的開放式問題:
- 平台會為工作階段提供哪些圖像功能?
- 提供哪些輸入功能?
- 哪些能力類別屬於敏感資訊,絕不會提供給工作階段?
提振精神
RFC-0092 導入工作階段元件的概念時,關於平台提供的工作階段功能,大多仍有待討論。自此之後,Fuchsia 平台設計人員已充分瞭解,可詳細說明提供給所有工作階段的功能,以及絕不會提供的功能類型。
做為平台軟體和產品軟體之間的重要安全界線之一,Fuchsia 平台設計人員非常重視要提供哪些功能給工作階段元件。如果為所有工作階段提供過於廣泛的功能集,平台就無法在所有產品中提供一致的行為。
最後,舊版「工作階段架構」概念造成部分開發人員混淆。這些概念有些並未明確納入 RFC-0092,但包含在工作階段架構概念文件中,最初包括:
- 提供可在工作階段內使用的用戶端程式庫和可重複使用的元件,解決各種問題,包括:
- 視窗管理
- 使用者應用程式生命週期
- 輸入處理
- 通知
- ... 等等
- 定義元件角色和職責,例如 Element Proposer,以供工作階段內使用。
- 導入「元素」概念,做為元件的新一流用法。
由於「Session Framework the project」的範圍不確定,這個詞彙也變得不確定且含糊不清。
利害關係人
主持人:
hjfreyer@google.com
審查者:
這個部分會在審查期間更新。
Graphics: emircan@google.com, dworsham@google.com Input: neelsa@google.com Product: yaar@google.com User Data Protection: jsankey@google.com Identity: jsankey@google.com Workstation: sanjayc@google.com
諮詢:
neelsa@google.com
社交:
草案文件已傳送至 Scenic、Input、Workstation 和 Trusted Platform Services 團隊,供討論之用。
設計
「工作階段元件」是指元件。每個 Fuchsia 產品都會將使用者體驗封裝在工作階段元件 (及其後代元件) 中。「使用者體驗」一詞的涵義很廣,包括透過觸控/滑鼠/鍵盤互動的傳統圖形體驗,以及只有單一 RGB LED 和幾個硬體按鈕的簡單體驗,或是只有網路 I/O 的體驗。
簡單產品可能會指定沒有子項的工作階段元件,而複雜產品則有許多工作階段元件的子項。舉例來說,工作站工作階段會例項化元件,以顯示系統使用者介面、指令列殼層和網頁瀏覽器,做為工作階段元件的後代。
目前,任何 Fuchsia 產品的元件拓撲中都有單一工作階段元件。未來預計會同時執行多個工作階段。工作階段元件的 ID (網址) 由產品擁有者選擇。拓撲中的位置由平台定義,產品擁有者無法變更。由於元件架構的性質,工作階段元件無法瞭解其在拓撲中的位置。
工作階段元件提供所有平台提供的功能,可建立該產品的使用者體驗。在元件拓撲中,工作階段元件是權限最高的非平台元件之一。因此,平台與工作階段元件之間的邊界定義,是 Fuchsia 的重要安全和控制層。
啟動和拓撲
工作階段元件是 session_manager.cml 的子項,而 session_manager.cml 則是 core.cml 的子項。session_manager.cml 是中介平台二進位檔,可啟用重要行為:
- 無須編輯
core.cml或任何其他平台.cml檔案,即可設定工作階段元件的網址 - 在某些產品上,工作階段元件會在啟動時自動啟動 (按照慣例,這會用於使用者和 userdebug 建構版本)
- 在其他裝置上,只要為
session_manager設定空白工作階段網址,即可指示啟動程序在啟動工作階段元件前中斷 (按照慣例,這會用於工程建構的「已暫停」變體) - 在工程建構版本中,工作階段元件可在執行階段重新啟動或由其他元件取代
session_manager.cml 會設定可從平台傳遞至產品的功能的明確上限。
功能
與任何元件一樣,工作階段元件的父項會定義工作階段元件的沙箱。以下是不完整的清單,列出平台提供給工作階段元件的超集功能。 視產品的平台設定而定,部分功能在執行階段無法使用。
目前,如要設定產品,進而決定特定產品上特定工作階段元件實際可用的功能組合,您必須在一組產品套件標籤上新增或移除建構時間套件依附元件。
系統生命週期控制
工作階段元件可以:
- 指示平台重新啟動工作階段元件。
- 要求重新啟動或暫停裝置硬體。
- 將裝置恢復原廠設定。
圖形
如果產品有圖形使用者介面:
工作階段元件提供必要功能,可指定單一 View 做為使用者體驗的根 View。在工作階段的生命週期中,檢視畫面選項可能會變更。 舉例來說,如果因閒置而無法與工作階段互動,根檢視區塊可能會切換為鎖定畫面。
此外,工作階段可以在根層級的 View 中嵌入子檢視區塊,以便委派給其他軟體。嵌入子檢視區塊的功能並非工作階段專屬,而是 Fuchsia 系統合成器的屬性。
工作階段不需要指定檢視畫面。舉例來說,在無螢幕裝置上執行的無螢幕工作階段不會指定檢視畫面。
系統「不會」在工作階段中提供下列敏感功能:
- 對顯示器硬體進行低階控制。Fuchsia 可確保 UI 合成作業透過系統合成器進行,在所有產品中提供最低效能和功能 (例如無障礙疊加層)。
輸入
工作階段元件提供多項功能,可觀察輸入事件。包括將重要事件路徑傳送至檢視畫面階層中聚焦的檢視畫面、傳送滑鼠和觸控事件,以及註冊鍵盤快速鍵通知。日後可能需要額外的輸入功能,才能支援與其他輸入裝置 (虛擬和實體) 互動。
系統「不會」在工作階段中提供下列敏感功能:
- HID 輸入事件的低層級存取權。
系統設定
工作階段可以存取及管理系統設定,例如軟體更新管道和有效的 Wi-Fi 網路,包括:
- 輸入政策,例如鍵盤按鍵對應和自動重複率
- 顯示政策,例如光度感應器模式
- 國際化
- 軟體更新管道
- 硬體設定,例如 WLAN (Wi-Fi)、藍牙或相機設定。
永久資料
工作階段會提供必要功能,將加密儲存空間提供給工作階段內的元件。包括加密裝置儲存空間功能和帳戶管理服務。帳戶管理服務可用於執行驗證,以及存取帳戶加密儲存空間。
實作
更新說明文件
- 刪除工作階段架構概念文件。
- 在詞彙中新增「工作階段元件」。
限制工作階段能力轉送
session_manager.cml 元件包含提供給工作階段的最終功能清單。如果 session_manager.cml 中包含會造成安全性或隱私權風險的功能,平台建構作業就會失敗。
禁止使用的功能清單將與 Fuchsia 安全性團隊合作產生及維護。候選人包括:
fuchsia.hardware.display.controller.*/dev/class/input-report
安全性考量
總覽
平台提供給工作階段元件的功能會限制工作階段元件的能力。這項功能具有重要意義:如果工作階段元件獲准將第三方軟體做為自己的子項啟動,就能瞭解該軟體執行個體的許多資訊。舉例來說,它擁有子項例項的持續性儲存空間,且可設定為從該儲存空間讀取及寫入資料。還能瞭解軟體的身分 (網址) 等資訊。
稽核責任
平台 session_manager.cml 元件會設定可從平台授予工作階段元件的所有功能上限。Fuchsia 安全團隊有責任稽核這個超集,確保它適用於所有可能的產品。如要變更這些功能,必須通過安全審查。
在工作階段元件界線的產品端,產品擁有者負責能力路徑的安全屬性:工作階段元件或其子項中做出的任何路徑決策,Fuchsia 平台安全團隊都無法查看。
目前已有部分稽核和強制執行工具。包括:
fx scrutiny- 允許清單 (可能因產品而異)
我們需要改良稽核和執法工具,才能支援產品專屬的安全團隊。元件架構團隊的目標是改善 scrutiny 和路由許可清單機制,以利遞迴,讓您更容易將工具套用至平台根目錄以外的元件子拓撲。不過,目前沒有具體的方案。
目前,如果 CL 變更了 session_manager.cml 或負責編譯 .cml 檔案的 BUILD.gn 檔案,系統會自動將安全團隊加入副本。
隱私權注意事項
擁有工作階段元件的隱私權影響與安全性類似。Fuchsia 平台可以向工作階段擁有者發布指南和最佳做法,但除了限制提供給工作階段元件的功能 (以及各自的支援實作項目) 之外,沒有任何機制可強制執行政策。
說明文件
現有的 Session Framework 說明文件將會更新或移除,以配合本文件內容。
缺點、替代方案和未知事項
除了預設的「不執行任何動作」外,沒有其他替代方案。這項風險包括延續過時的概念 (「工作階段架構」),導致混淆,且目前沒有專責團隊可減少模糊不清之處或解決技術問題。