RFC-0194:附錄:工作階段

RFC-0194:附加條款:工作階段數
狀態已接受
區域
  • 工作階段
說明

RFC-0092 附加條款,旨在證明 RFC-0092 中未解決的決策。

變更
  • 709745
作者
審查人員
提交日期 (年/月)2022-08-09
審查日期 (年/月)2022-10-17

摘要

注意:此 RFC 是 RFC-0092 的附加條款,可用來遏止在 RFC-0092 中未開啟的決策。

這份文件:

  • 淘汰「工作階段架構」一詞
  • 說明 Fuchsia 平台的目前狀態,因為這與舊版「工作階段架構」概念相關
  • 定義「工作階段元件」及其在 Fuchsia 平台中的角色
  • 在審查產品元件所需的功能審查時,開始規範 Fuchsia Security 的角色

從舊版「工作階段架構」概念中,系統會保留以下內容:

  • 平台 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 中,但位於工作階段架構概念說明文件中,原始內容包含:

  • 提供用戶端程式庫和可重複使用的元件,以便在工作階段中使用來解決各種問題,包括:
    • 視窗管理
    • 使用者應用程式生命週期
    • 輸入處理
    • 通知
    • ... 依此類推
  • 定義可在工作階段內使用的元件角色和責任,例如元素建議工具。
  • 介紹「元素」概念,這是元件的全新一流使用方式。

由於「工作階段架構專案」的開放範圍相當開放,因此字詞也為開放性且不夠明確。

相關人員

講師

hjfreyer@google.com

審查者

這個部分會在審查期間更新。

圖形:emircan@google.com、dworsham@google.com 輸入內容:neelsa@google.com 產品:yaar@google.com 使用者資料保護:jsankey@google.com Identity:jsankey@google.com Workstation:sanjayc@google.com

顧問

neelsa@google.com

社交

草稿文件已送交景觀、輸入、工作站和受信任的平台服務團隊進行討論。

設計

「工作階段元件」是一種元件。每個 Fuchsia 產品都會將使用者體驗封裝在工作階段元件及其子系元件中。「使用者體驗」一詞廣泛採用,包括與觸控/滑鼠/鍵盤互動的傳統圖像體驗,以及單一 RGB LED 和多個硬體按鈕 (或只有網路 I/O) 的簡易體驗。

簡易產品可指定不含子項的工作階段元件,而複雜的產品則有許多工作階段元件的子項。舉例來說,工作站工作階段會將元件執行個體化,以顯示系統使用者介面、指令列殼層和網路瀏覽器,做為工作階段元件的子系。

目前,任何 Fuchsia 產品的元件拓撲中都存在一個工作階段元件。未來,預計會同時執行多個工作階段。工作階段元件的身分 (網址) 是由產品擁有者選擇。拓撲中的位置是由平台定義,產品擁有者無法變更。由於元件架構的特性,工作階段元件無法得知其在拓撲中的位置。

工作階段元件會提供建立該產品使用者體驗所需的所有平台所提供功能。工作階段元件是元件拓撲中最特殊權限的非平台元件之一。因此,平台與工作階段元件之間的界線定義是 Fuchsia 的重要安全性與控制層。

新創公司與拓撲

工作階段元件是 session_manager.cml 的子項,是 core.cml 的子項。session_manager.cml 是能夠啟用主要行為的中介平台二進位檔:

  • 不需編輯 core.cml 或任何其他平台的 .cml 檔案,即可設定工作階段元件的網址。
  • 在部分產品上,工作階段元件會在啟動時自動啟動 (按照慣例,這用於使用者和使用者偵錯版本)
  • 在其他情況下,您可以指示在啟動工作階段元件前中斷啟動程序,方法是將空白工作階段網址設為 session_manager (依照慣例,這會用於 eng-build 的「已暫停」變化版本)
  • 在執行建構作業中,工作階段元件可在執行階段重新啟動,或由其他元件取代

session_manager.cml 會設定可從平台到產品的特定功能上限

功能

如同所有元件,工作階段元件的父項也會定義工作階段元件的沙箱。以下是平台中工作階段元件可用的功能超集合清單。視產品的平台設定而定,部分功能無法在執行階段使用。

因此,產品設定以及目前提供給特定產品中特定工作階段元件的功能組合,目前可藉由新增或移除一組產品套件標籤的建構時間套件依附元件來完成。

系統生命週期控制

工作階段元件可以:

  • 指示平台重新啟動工作階段元件。
  • 要求裝置硬體重新啟動或暫停。
  • 將裝置恢復原廠設定。

顯示卡

如果產品有圖形使用者介面:

我們會提供工作階段元件,以便指定單一 View 做為使用者體驗的根層級。選擇的檢視畫面可能會隨著工作階段的生命週期而改變。舉例來說,當與工作階段的互動因閒置而遭到鎖定時,根層級檢視畫面可能會切換為螢幕鎖定畫面。

此外,工作階段可以在其根層級嵌入子檢視區塊,用於委派給其他軟體。嵌入子檢視畫面的功能並非工作階段獨有的功能,是 Fuchsia 的系統合成器屬性。

工作階段不必要指定資料檢視。例如:在無頭裝置上執行的無頭工作階段不會指定檢視畫面。

下列敏感功能「不會」明確提供給工作階段:

  • 可對螢幕硬體進行低階控制。Fuchsia 確保 UI 組合透過系統合成器完成,該合成器可為所有產品提供最低效能和功能 (例如無障礙疊加層)。

輸入

工作階段元件所提供的功能,可以觀察輸入事件。這些事件包括將按鍵事件轉送至 View 階層中的特定檢視畫面、路徑滑鼠和觸控事件的轉送功能,以及註冊鍵盤快速鍵通知的功能。日後可能需要額外的輸入功能,才能支援與其他輸入裝置 (包括虛擬和實體) 的互動。

下列敏感功能「不會」明確提供給工作階段:

  • 低層級 HID 輸入事件的存取權。

系統設定

這個工作階段可以存取及管理系統設定,例如軟體更新管道和有效的 Wi-Fi 網路,包括:

  • 輸入政策,例如鍵盤按鍵對應配置和自動重複費率
  • 顯示政策,例如光度感應器模式
  • 國際化
  • 軟體更新管道
  • 硬體設定,例如 WLAN (Wi-Fi)、藍牙或相機設定。

永久資料

系統會為工作階段提供必要的功能,以便為工作階段中的元件提供加密儲存空間。包括加密的裝置儲存空間和帳戶管理服務。帳戶管理服務可用於進行驗證及存取帳戶加密儲存空間。

實作

更新說明文件

  • 刪除工作階段架構概念說明文件。
  • 將「工作階段元件」新增至詞彙表。

限制工作階段能力轉送

session_manager.cml 元件包含提供給工作階段的明確功能清單。選擇在 session_manager.cml 中加入後會帶來安全性或隱私權風險的功能,會導致平台建構失敗。

系統會透過 Fuchsia Security 團隊,產生並維護不允許的功能清單。候選人包括:

  • fuchsia.hardware.display.controller.*
  • /dev/class/input-report

安全性考量

簡介

平台提供給工作階段元件的功能會限制工作階段元件的功能。這會產生重要的影響:一個工作階段元件,以自身的子項身分啟動第三方軟體的功能,可以深入瞭解軟體的執行個體。例如,它擁有子項執行個體的永久儲存空間,可以設定為從該儲存空間讀取及寫入。它也能學習軟體的身分 (網址) 等資訊。

稽核責任

平台 session_manager.cml 元件會設定可從平台授予工作階段元件的所有功能上限。Fuchsia 安全性團隊負責稽核這個超集合,並確保其適合所有可能的產品。如要對這些功能進行變更,都必須通過安全性審查

產品擁有者負責在工作階段元件邊界的產品端傳送一次能力的安全性屬性: Fuchsia 平台安全性團隊無法查看在工作階段元件中,或其子項所做的任何轉送決策。

現在提供了一些稽核與強制執行工具,其中包括:

如要支援產品專屬的安全性團隊,需要經過改善的稽核與強制執行工具。元件架構團隊的目的是要改善 scrutiny 和轉送許可清單機制,以改善遞迴方式,讓您可以更輕鬆地將工具套用到平台根層級以外的元件子拓撲。然而,我們目前未提供特定方案。

目前,當 CL 發生變更 session_manager.cmlBUILD.gn 檔案 (負責編譯 .cml 檔案),系統便會自動傳送副本給安全團隊。

隱私權注意事項

擁有工作階段元件的隱私權影響類似於安全性。雖然 Fuchsia 平台可向工作階段擁有者發出指南和最佳做法,但是除了限制提供給工作階段元件的功能 (及其各自的備份實作) 之外,它並沒有強制執行政策的機制。

說明文件

為配合本文件的內容,我們會更新或移除現有的工作階段架構說明文件。

缺點、替代方案和未知

除了「不執行任何動作」的預設選項之外,系統也無法提供其他替代選項。而這些風險包括重複使用過時的概念 (「工作階段架構」) 造成混淆,且目前沒有專責團隊來減少歧義或解決技術問題。

先前的圖片和參考資料