自訂合規性內容可讓您定義自己的安全標準,以補充 SaltStack SecOps Compliance 中內建的安全性基準和檢查的程式庫。此自訂內容有助於增強 SaltStack SecOps Compliance 原則以符合您的內部需求。

檢查是 SaltStack SecOps Compliance 評估合規性的安全標準。基準是安全性檢查的類別。

SaltStack SecOps Compliance 包括自訂內容 Software Development Kit (SDK),可用於建立、測試和建置您自己的自訂安全性內容。可以匯入自訂安全性內容,以便與 SaltStack SecOps Compliance 內建安全性程式庫一起用於評估和修復。此外,匯入自訂內容的功能還支援使用所選版本控制系統來對內容進行版本設定。

若要使用自訂檢查,請先初始化 SaltStack SecOps Compliance 自訂內容 SDK。SDK 包括可進行修改以建立自訂檢查和基準的範例檔案。此外,SDK 還包括以 Docker 為基礎的測試環境,您可以在其中測試新內容。

建立並測試自訂內容後,可以建置一個內容檔案並將其匯入 SaltStack SecOps Compliance 中以開始評估和修復。與 SaltStack 檢查 built-in-checks-shield-icon 不同,自訂檢查包括使用者圖示 custom-checks-user-iconSaltStack SecOps Compliance 將追蹤原則和自訂內容之間的相依性,並提供刪除內容時可能會中斷的相依性清單。

必要條件

初始化 SDK

  1. 從命令列,導覽至包含檔案的目錄,然後根據您的作業系統執行下列命令。
    • Mac OS 或 Linux
      ./secops_sdk init
    • Windows
      secops_sdk.exe init

    未顯示輸出。此為預期行為。您的目錄現在包含下列資料夾和檔案:

    • benchmarks
    • salt/locke/custom
    • sample_tests
    • README.md

    如需有關這些資料夾和檔案的詳細資訊,請參閱資料夾和檔案

  2. (可選) 認可已進行版本控制的存放庫的變更。

建立自訂檢查

備註:

初始化 SDK 是建立自訂內容的必要條件。請參閱初始化 SDK

  1. 在自訂內容 SDK 中,移至 salt/locke/custom。此目錄包含具有範例狀態檔案 (.sls) 和中繼檔案 (.meta) 的各種子目錄。
    備註: 在狀態檔案 ( .sls) 及對應的中繼檔案 ( .meta) 中必須設定所有自訂檢查。
  2. 同時為範例狀態檔案 (.sls) 及其對應的中繼檔案 (.meta) 建立複本,並使用自訂檢查的描述性名稱對其重新命名。

    與檢查相關聯的兩個檔案必須位於同一目錄中,並且以相同的名稱開頭,例如:

    • my_first_check.meta
    • my_first_check.sls

    您可以將這兩個檔案一起儲存在 salt/locke/custom 的任何子目錄中。

  3. 編輯中繼檔案的內容,以根據您的需求自訂檢查。此檔案以 YAML 形式撰寫。如需檔案中包括的不同選項的清單,請參閱資料夾和檔案
    備註: 檢查中繼檔案包含不同基準的參考。建立自訂內容時,請務必在檢查中繼檔案中包括所有相關聯的基準。
  4. 編輯狀態檔案的內容。如需詳細資訊,請參閱資料夾和檔案
  5. 確保兩個檔案均儲存於同一目錄中。

    現在,您已完成建立自訂檢查所需的最少步驟。可以繼續測試檢查,認可版本控制,或建置內容程式庫。

建立自訂基準

備註: 初始化 SDK 是建立自訂內容的必要條件。請參閱 初始化 SDK
  1. 在自訂內容 SDK 中,移至 benchmarks 目錄。其中包含範例基準中繼檔案 (.meta)。
  2. 建立 Sample_Benchmark.meta 的複本,並使用基準的描述性名稱對其重新命名。
  3. 編輯中繼檔案的內容,以根據您的需求自訂基準。此檔案以 YAML 形式撰寫。如需檔案中包括的不同選項的說明,請參閱資料夾和檔案

測試自訂內容

備註: 安裝 Docker 是以下操作的必要條件。如需有關下載和安裝 Docker 的詳細資訊,請參閱 Docker 安裝說明文件
  1. 建立自訂內容後,請開啟命令列並導覽至自訂內容 SDK 的 sample_tests 目錄。
  2. 使用 Salt 建置 CentOS7 的 Docker 映像以進行測試。
    ./build.sh
  3. 啟動測試容器。
    ./up.sh
  4. 針對在 salt/locke/custom 目錄中建立的檢查執行範例測試。可以像執行一般 Salt 狀態一樣執行自訂檢查,例如:
    ./test.sh salt-call --local state.apply locke.custom.mounts.my_first_check test=True

    如需更多測試範例,請參閱 SDK 讀我檔案中的「測試自訂內容」。如需有關 Salt 狀態的詳細資訊,請參閱 Salt 說明文件:如何使用 Salt 狀態?

  5. 測試完成後,請關閉測試容器。
    ./down.sh

建置自訂內容程式庫

  1. 建立自訂內容後,請開啟命令列並導覽至自訂內容 SDK 根目錄。
  2. 建置自訂內容程式庫。
    ./secops_sdk build -a

    現在,SDK 根目錄包括 _dist 子目錄。這包括兩個 tar.gz 檔案,可以使用這些檔案透過 SaltStack Config 使用者介面或 API (RaaS) 匯入內容。如需目錄中包括的所有檔案的說明,請參閱資料夾和檔案

匯入自訂內容

  1. 按一下側邊功能表上的管理 > SecOps
  2. 合規性內容 - SaltStack 下,按一下檢查更新
    備註: 如果在目前工作階段期間已下載 SaltStack SecOps Compliance 內容,可以略過此步驟。
  3. 按一下上傳套件,然後從檔案總管中選取 .tar.gz 檔案。
    備註: 為了使自訂檢查更易於導覽,請使用檔案名稱中包含時間戳記的檔案。如需有關檔案的詳細資訊,請參閱 資料夾和檔案

    現在,您的自訂內容在 SaltStack SecOps Compliance 中可用,可用來建置原則、執行評估和修復系統。與 SaltStack 檢查 built-in-checks-shield-icon 不同,自訂檢查包括使用者圖示 custom-checks-user-icon

    備註:

    也可以使用 API (RaaS) 匯入內容,或在安裝期間透過命令列匯入內容。請參閱 Sec API 介面或《Enterprise 安裝指南》

刪除自訂檢查

  1. 在使用者介面中,移至 SecOps > 檢查
  2. 按一下要刪除之檢查旁邊的功能表 menu-icon-light,然後按一下刪除
    備註: 只能刪除自訂內容。與 SaltStack 內容 built-in-checks-shield-icon 不同,自訂內容包括使用者圖示 custom-checks-user-icon
  3. 在 [刪除檢查] 對話方塊中的 [使用中] 下,檢閱包括檢查的原則和基準清單。這有助於預測刪除檢查時環境中可能會中斷的任何相依性。

    完成檢閱使用中的相依性後,按下一步

  4. 刪除檢查 > 警告下,按一下刪除。此對話方塊將確認檢查是否已刪除。
  5. 按一下完成以關閉對話方塊。

刪除自訂基準

  1. 在使用者介面中,移至 SecOps > 基準
  2. 按一下要刪除之檢查旁邊的功能表 menu-icon-light,然後按一下刪除
    備註:

    只能刪除自訂內容。與 SaltStack 內容 built-in-checks-shield-icon 不同,自訂內容包括使用者圖示 custom-checks-user-icon

  3. 在 [刪除基準] 對話方塊中的 [使用中] 下,檢閱與基準相關聯的原則和檢查清單。這有助於預測刪除基準時環境中可能會中斷的任何相依性。

    完成檢閱使用中的相依性後,按下一步

  4. 刪除基準 > 警告下,按一下刪除。此對話方塊將確認基準是否已刪除。
  5. 按一下完成以關閉對話方塊。

資料夾和檔案

初始化 SDK 後,您的目錄將包含下列資料夾和檔案:

  • benchmarks - 包含自訂基準中繼資料 (.meta)
  • salt/locke/custom - 包含自訂檢查狀態檔案 (.sls) 和中繼資料 (.meta)
  • sample_tests - 包含使用 Docker 進行測試的範例檔案
  • README.md - 提供有關 SDK 的更多詳細資訊

下面詳細說明了重要檔案。

自訂基準檔案

基準是安全性檢查的類別。SaltStack SecOps Compliance 內建基準由公認的專家定義。但是,自訂基準可以按照您自己的組織標準進行定義。每個基準都包含建議清單 (稱為檢查),並且在 benchmarks 目錄中具有對應的 .meta 檔案。如需有關 SaltStack SecOps Compliance 中的基準的詳細資訊,請參閱〈基準〉

透過建立基準中繼檔案,可以建立檢查類別。然後,可以透過在 benchmark_id 下的檢查中繼檔案中命名基準,以向該基準新增檢查。請參閱資料夾和檔案

中繼檔案以 YAML 形式撰寫,其中包括可以針對內容自訂的下列選項:

name

基準名稱

display_name

基準名稱,將顯示在 SaltStack SecOps Compliance 的基準清單中

desc

基準說明

備註:

除了上述選項之外,中繼檔案還包括各種保留項目,例如 versionauthorityids。除非管理員另有指示,否則請勿修改這些保留項目。

自訂檢查檔案

檢查是 SaltStack SecOps Compliance 評估合規性的安全標準。這是與基準相關聯的建議。建議提供說明、基本原理、稽核和修復資訊。每項檢查均至少由兩個檔案定義:狀態檔案 (.sls) 和對應的中繼檔案 (.meta)。

備註:

與檢查相關聯的兩個檔案必須位於同一目錄中,並且以相同的名稱開頭,例如:

  • my_first_check.meta
  • my_first_check.sls

您可以將這兩個檔案一起儲存在 salt/locke/custom 的任何子目錄中。

以下將進一步詳細說明每種檔案類型。

檢查中繼檔案

檢查中繼檔案包括檢查的說明,以及與檢查相關的其他詳細資料,例如其版本、適用的作業系統等。中繼檔案會以 YAML 形式撰寫,並使用 .meta 副檔名。

自訂檢查中繼檔案包括下列選項:

version

檢查內容的版本。目前僅支援值 1

display_name

此檢查的名稱,將顯示在 SaltStack Config 使用者介面的檢查清單中。

global_description

檢查的詳細說明。可以藉此提供比透過檢查和基準名稱提供更多的資訊。

osfinger

允許執行此檢查的作業系統清單。如果主機沒有與此清單中的值相符的 osfinger 值,則檢查的評估結果將恢復為 notapplicable

refs

有關滿足此檢查的其他基準或安全標準中的其他檢查的交互參照資訊。

benchmark_id

檢查所屬的每個基準的清單。

每個基準項目會建立一個包括以下子選項的新區段:

類型

基準類型。在定義特定授權機構未提供的自訂檢查時,輸入 custom

desc

安全性建議的標題,將顯示在 SaltStack Config 使用者介面的檢查清單中。

control_id

建議編號,例如來自對應的 CIS 文件。

scored

此欄位依據 CIS 建議 (可能為「已評分」或「未評分」) 建立模型。未評分的 CIS 建議不會計入安全性分數,也不會降低安全性分數。true 表示已評分,false 表示未評分。根據您的內部需求,可以選擇是否對檢查進行評分。

profile

CIS 和其他基準分為多個設定檔。例如,CIS CentOS Linux 7 基準具有四個設定檔,其呈現形式為:

profile:
  server:level1
  workstation:level1
  server:level2
  workstation:level3
information

檢查的說明。這可能類似於檢查的 global_description 欄位。

rationale

執行檢查的基本原理說明。

remediation

有關如何修復處於不合規狀態的系統的指示。

檢查狀態檔案

檢查狀態檔案會套用 Salt 狀態以執行評估和修復。狀態函數是狀態模組內包含的一種函數,可以管理對系統套用特定狀態的情況。狀態函數會頻繁呼叫一或多個執行模組,以執行指定的工作。狀態檔案同時以 YAML 和 Jinja 形式撰寫,並使用 .sls 副檔名。

評估結果是在 test=True 模式下執行狀態檔案的結果。如果結果顯示套用狀態會導致變更,則主機將被視為不合規。如果套用狀態不會導致變更,則主機將被視為合規。

如需有關 Salt 狀態的詳細資訊,請參閱 Salt 說明文件:如何使用 Salt 狀態?

自訂內容程式庫檔案

建置自訂內容程式庫後,您的目錄將包括 _dist 目錄,其中包含下列其他檔案:

  • digest.json - 包含雜湊以及內容的其他相關資訊
  • secops_custom.tar.gz - 已準備好進行擷取的 gzip tar 檔案。這適用於透過 SaltStack Config 使用者介面上傳。如需有關內容擷取的詳細資訊,請參閱《Enterprise 安裝指南》
  • secops_custom.txt - 以 base64 編碼的 secops_custom.tar.gz 版本。有助於執行 API 呼叫
  • secops_custom_YYYY-MM-DDTHH:MM:SS.SSSSSS...tar.gz - secops_custom.tar.gz 的相同複本,由於其描述性檔案名稱中包括建立日期和 tarball UUID,首選透過 SaltStack Config 使用者介面上傳