Fuchsia 版本整合了幾項驗證程序。以上所有程序 針對建構輸出構件執行某種形式的檢查。這項整合功能旨在 在開發過程中及早發現潛在問題。
以審查機制驗證整個系統的資源
藉由叫用 ffx 進行檢查,我們已實施許多驗證程序。 您可以在 build/security/verifier 中的 gn 範本中找到相關程序。 目錄。相關範例包括針對元件拓撲驗證格式正確的能力路徑 驗證系統中預先安裝的靜態套件組合。
一般而言,這些驗證程序會分析整個檔案集合,並針對特定檔案進行測試, 屬性,並/或確保這些集合符合手動審查構件的許可清單。
驗證設定檔
*注意:本節內容僅適用於 Google 員工。正在驗證結構化設定檔: 目前僅適用於非 eng 版的 Google 產品。
在某些情況下,系統元件可以用來支援不同設定,以便支援 eng 和 non-eng 建構類型。使用這項策略設計元件時,請務必 驗證這類版本的正確設定,藉此保護非 eng 版本的完整性。
驗證結構化設定檔
如要為您的結構化設定驗證非 Google 產品版本,請務必完成 步驟如下:
- 找出非 eng 版本中預期的安全設定值;
- 回報錯誤以安全追蹤元件或功能的到達網頁
- 在政策檔案中加入設定值,並標示為轉換;
- 檢查新元件或功能。
- 清理政策檔案和錯誤。
以下將詳細說明此程序的各個步驟。
1. 找出非 eng 版本中預期的安全設定值
系統會比較版本產生的值來驗證結構化設定檔 。如果是要運送給使用者的安全設定值,則以黃金檔案表示。從寫作開始 細分這些值
2. 回報錯誤以安全追蹤元件或功能的到達網頁
如果未能追蹤正在開發的元件或功能,請務必 一,並提及已驗證的非 eng 版本的結構化設定。您會參考這個錯誤 在本程序的後續步驟中
3. 在政策檔案中加入設定值,並標示為轉換
你必須修改
//vendor/google/security/policy/**/*structured_config_policy*.json5
。這些檔案包含一組
依 Fuchsia 網址識別的元件分組的結構化設定值 (請參閱範例
)。只有當元件或設定值標示為轉換時,
,否則就會忽略。「未」標示為的元件或值
需進行轉換:非轉換元件必須存在於建構輸出內容中
每個非轉換設定值都必須與政策中註明的預期值相符
檔案。
舉例來說,新增新元件時,政策檔案內容可能會如下所示:
{
components: {
// ...existing components...
// new component:
// <High-level description of how to configure new component>
"fuchsia-pkg://fuchsia.com/new-frobinator#meta/new-frobinator.cm": {
// TODO(https://fxbug.dev/####): Remove transitional once `new-frobinator` is integrated into
// the build.
transitional: true,
fields: {
// <Precise description of why `frobinator_debugging_enabled=false` is a safe
// configuration to ship to users>
frobinator_debugging_enabled: false,
},
},
},
}
如果您將新欄位新增至現有元件中,政策檔案可能會看起來像 如下所示:
{
components: {
// ...existing components...
// component with new fields:
"fuchsia-pkg://fuchsia.com/existing-frobinator#meta/existing-frobinator.cm": {
fields: {
// ...existing fields appear as `<field_name>: <expected_value>`; e.g.,
frobinator_internal_policy: "production",
// <Precise description of why `frobinator_debugging_enabled=false` is a safe
// configuration to ship to users>
frobinator_debugging_enabled: {
expected_value: false,
// TODO(https://fxbug.dev/####): Remove transitional once `frobinator_debugging_enabled`
// is integrated into the build.
transitional: true,
},
},
},
},
}
這項政策必須包含 eng 和非 eng 格式的所有結構化設定欄位
建構應用程式切勿略過列出的 <Description>
或 TODO(https://fxbug.dev/####)
註解
。
凡是政策指定值的欄位都不能使用 mutability
指定碼,因為
這些值可能與政策要求的值偏離。
4. 檢查新元件或功能
現在您可以放心地檢查新元件或功能,並將其連接到建構和冰層 系統元件樹狀結構如果對非 Google 產品的元件設定錯誤 建構時,系統會在檢查結構化設定政策時顯示為建構錯誤。
5. 清理政策檔案和錯誤
再次編輯步驟 3 中所述的政策檔案,移除正在執行的 transitional
標記
已新增在步驟 3 中。
回到步驟 3 的範例,針對新元件範例,最終的政策檔案 如下所示:
{
components: {
// ...existing components...
// new component:
// <High-level description of how to configure new component>
"fuchsia-pkg://fuchsia.com/new-frobinator#meta/new-frobinator.cm": {
fields: {
// <Precise description of why `frobinator_debugging_enabled=false` is a safe
// configuration to ship to users>
frobinator_debugging_enabled: false,
},
},
},
}
而現有元件新欄位的最終政策檔案如下所示:
{
components: {
// ...existing components...
// component with new fields:
"fuchsia-pkg://fuchsia.com/existing-frobinator#meta/existing-frobinator.cm": {
fields: {
// ...existing fields appear as `<field_name>: <expected_value>`; e.g.,
frobinator_internal_policy: "production",
// <Precise description of why `frobinator_debugging_enabled=false` is a safe
// configuration to ship to users>
frobinator_debugging_enabled: false,
},
},
},
}
這些變更發出後,假設新元件或功能已完成, 關閉步驟 2 中提及的錯誤。