建構整合式驗證程序

Fuchsia 版本整合了幾項驗證程序。以上所有程序 針對建構輸出構件執行某種形式的檢查。這項整合功能旨在 在開發過程中及早發現潛在問題。

以審查機制驗證整個系統的資源

藉由叫用 ffx 進行檢查,我們已實施許多驗證程序。 您可以在 build/security/verifier 中的 gn 範本中找到相關程序。 目錄。相關範例包括針對元件拓撲驗證格式正確的能力路徑 驗證系統中預先安裝的靜態套件組合。

一般而言,這些驗證程序會分析整個檔案集合,並針對特定檔案進行測試, 屬性,並/或確保這些集合符合手動審查構件的許可清單。

驗證設定檔

*注意本節內容僅適用於 Google 員工。正在驗證結構化設定檔: 目前僅適用於非 eng 版的 Google 產品。

在某些情況下,系統元件可以用來支援不同設定,以便支援 eng 和 non-eng 建構類型。使用這項策略設計元件時,請務必 驗證這類版本的正確設定,藉此保護非 eng 版本的完整性。

驗證結構化設定檔

如要為您的結構化設定驗證非 Google 產品版本,請務必完成 步驟如下:

  1. 找出非 eng 版本中預期的安全設定值;
  2. 回報錯誤以安全追蹤元件或功能的到達網頁
  3. 在政策檔案中加入設定值,並標示為轉換;
  4. 檢查新元件或功能。
  5. 清理政策檔案和錯誤。

以下將詳細說明此程序的各個步驟。

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 中提及的錯誤。