本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的合規掃描 AWS OpsWorks for Chef Automate
重要
AWS OpsWorks for Chef Automate 已於 2024 年 5 月 5 日結束生命週期,並已針對新客戶和現有客戶停用。我們建議現有客戶遷移至 Chef SaaS 或替代解決方案。如果您有任何問題,可以在 AWS re:Post
合規掃描可讓您根據預先定義的政策 (也稱為規則),追蹤基礎設施中受管節點的合規狀況。合規檢視可讓您定期稽核應用程式是否有漏洞與不合規的組態。Chef 提供百種以上的預先定義合規描述檔,其為適用於特定節點組態的規則集合,可讓您用於合規掃描。您也可以使用 Chef InSpec 語言
如果您的伺服器尚未執行 Chef Automate 2.0,則您可以手動安裝 Audit 技術指南來設定 Chef Compliance
注意
與 AWS OpsWorks for Chef Automate 伺服器相關聯的節點上 Chef Infra 用戶端代理程式軟體 (chef-client
) 支援的最低版本為 13.x。我們建議執行最新、穩定的chef-client
版本,或至少 14.10.9。
使用 Chef Automate 2.0 中的合規
如果您的 AWS OpsWorks for Chef Automate 伺服器正在執行 Chef Automate 2.0,請使用本節中的程序來設定 Chef Compliance。
使用 Chef Automate 2.0 來執行合規掃描任務
Chef Automate 2.0 包含 Chef InSpec 合規掃描功能,這項功能先前稱為必要的手動設定和技術指南組態。您可以在執行 Chef Automate 2.0 的 AWS OpsWorks for Chef Automate 伺服器上執行掃描任務。任務可能立即執行 (一次性)、排定稍後執行或是排定於指定時間間隔執行,例如每日一次或每兩小時一次。掃描任務的結果會傳送到合規報告。您可以在 Chef Automate 2.0 儀表板中檢視合規掃描結果,並採取因應動作。若要開啟 Compliance (合規) 標籤和檢視報告,請在 Chef Automate 儀表板上的 Scan Jobs (掃描任務) 標籤中,在受管節點列的右邊選擇 Report (報告)。
若要在受管節點上執行掃描任務,您必須具備下列條件。
-
您的命名空間至少已安裝一個合規描述檔。
-
至少一個目標節點,可透過手動新增或 EC2 執行個體自動新增。
在 中 AWS OpsWorks for Chef Automate,下列目標支援掃描任務。
-
手動新增的節點
-
aws-ec2
執行個體 -
AWS 區域
如需如何執行掃描任務的相關詳細資訊,請參閱 Chef 文件中的 Chef Automate 掃描任務
(選用,Chef Automate 2.0) 搭配 Audit 技術指南來設定合規
您可以在任何 AWS OpsWorks for Chef Automate 伺服器上設定合規。在啟動 AWS OpsWorks for Chef Automate
伺服器之後,您可以從 Chef Automate 儀表板上安裝描述檔,或是將所需的描述檔新增至 Policyfile.rb
政策檔案中的 Audit 技術指南屬性。入門套件中包含了預先填入的 Policyfile.rb
檔案。
在您透過描述檔編輯 Policyfile.rb
做為 Audit 技術指南屬性之後,請執行 chef push
命令,將 Audit 技術指南Policyfile.rb
中所指定的其他技術指南,上傳至您的 Chef Automate 伺服器。安裝 Audit 技術指南時,也會安裝 Chef InSpec
本節中的指示會說明如何實作 opsworks-audit
技術指南。Audit 技術指南會從 Chef Automate 伺服器下載指定的描述檔,針對 DevSec SSH Baseline (DevSec SSH 基準) 描述檔評估節點,並且報告每個 chef-client
執行的合規掃描結果。
安裝合規描述檔
-
如果您尚未這麼做,請登入 Chef Automate Web 儀表板。請使用您在建立 AWS OpsWorks for Chef Automate 伺服器期間下載入門套件時收到的相同登入資料。
-
在 Chef Automate 儀表板中,選擇 Asset Store (資產存放區) 標籤。
-
選擇 Available (可用) 標籤以查看預先定義的描述檔。
-
瀏覽描述檔清單。選擇至少符合其中一個受管節點之作業系統和組態的描述檔。若要查看描述檔的詳細資訊,包括描述檔的目標違反情況描述和基本規則程式碼,請選擇描述檔項目右側的 >。您可以選擇多個描述檔。如果您正在設定入門套件中的範例,請選擇 DevSec SSH Baseline (DevSec SSH 基準)。
-
若要在您的 Chef Automate 伺服器上安裝選取的描述檔,請選擇 Get (取得)。
-
安裝描述檔後,他們會顯示在 Profiles (描述檔) 標籤的 Chef Automate 儀表板。
搭配 Policyfile.rb
安裝技術指南
-
查看入門套件
Policyfile.rb
中的屬性,以查看 Audit 技術指南在['profiles']
中指定ssh-baseline
描述檔。# Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]
-
下載並安裝
Policyfile.rb
中所定義的技術指南。chef install
所有技術指南的版本都是經由技術指南的
metadata.rb
檔案所控制。每次變更技術指南時,您都必須在技術指南的metadata.rb
中提高其版本。 -
將
Policyfile.rb
中所定義的政策opsworks-demo
推送到您的伺服器。chef push opsworks-demo
-
驗證您的政策安裝情況。執行下列命令。
chef show-policy
結果應類似以下內容:
opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
-
如果您尚未完成此作業,請先將節點新增到您的伺服器,以便管理。若要將第一個節點連接到 AWS OpsWorks for Chef Automate 伺服器,請使用此入門套件中包含的
userdata.sh
指令碼。它使用 AWS OpsWorksAssociateNode
API 將節點連接到您的伺服器。您可以遵循在 中自動新增節點 AWS OpsWorks for Chef Automate中的步驟將節點的關聯自動化,或遵循個別新增節點中的步驟來逐一新增節點。
-
在更新節點的執行清單之後,
chef-client
代理程式即會在下一次執行時執行您指定的配方。根據預設,這種情況會每隔 1800 秒 (30 分鐘) 發生一次。執行之後,您可以從 Chef Automate 儀表板的 Compliance (合規) 標籤,檢視合規結果,並且採取因應動作。
執行合規掃描
在您設定好節點執行清單,並執行第一次代理程式之後,應該很快就會在 Chef Automate 儀表板中看到合規掃描結果。

在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。在左側導覽窗格中,選擇 Reporting (報告)。選擇 Profiles (描述檔) 標籤,選擇 Scan Results (掃描結果),然後選擇含掃描錯誤的節點,以進一步了解導致節點發生錯誤的規則。

一般來說,當新節點尚未滿足 DevSec SSH Baseline (DevSec SSH 基準) 描述檔中的所有規則時,您就會看到未合規的掃描結果。DevSec 強化框架
(選用) 解決未合規的結果
入門套件包含開放原始碼技術指南 ssh-hardening
;您可以執行此技術指南來修正依據 DevSec SSH Baseline (DevSec SSH 基準) 描述檔執行時發生的未合規結果。
注意
ssh-hardening
技術指南會變更您的節點以符合 DevSec SSH Baseline (DevSec SSH 基準) 規則。在任何生產節點上執行此技術指南之前,請先檢閱 Chef Automate 主控台中 DevSec SSH Baseline (DevSec SSH 基準) 描述檔的詳細資訊,以了解技術指南目標的規則違反情況。在任何生產節點上執行之前,請先檢閱開放原始碼 ssh-hardening
執行 ssh-hardening
技術指南
-
在文字編輯器中,將
ssh-hardening
技術指南附加到Policyfile.rb
執行清單中。Policyfile.rb
執行清單應該符合下列項目。run_list 'chef-client', 'opsworks-webserver', 'audit', 'ssh-hardening'
-
更新
Policyfile.rb
,接著將其推送到您的 AWS OpsWorks for Chef Automate 伺服器。chef update Policyfile.rb chef push opsworks-demo
-
與
opsworks-demo
政策相關聯的節點會自動更新執行清單,並將ssh-hardening
技術指南套用到下一次的chef-client
執行。由於您使用的是
chef-client
技術指南,因此節點會定期 (預設為每隔 30 分鐘一次) 進行狀態檢查。在下一次狀態檢查時,會執行ssh-hardening
技術指南並協助提升節點安全性,以符合 DevSec SSH Baseline (DevSec SSH 基準) 描述檔的規則。 -
在第一次執行
ssh-hardening
技術指南之後,請等待 30 分鐘再次執行 Compliance (合規) 掃描。在 Chef Automate 儀表板中查看結果。第一次執行 DevSec SSH Baseline (DevSec SSH 基準) 掃描時發生的未合規結果應該已經解決。
使用 Chef Automate 1.x 中的合規
如果您的 AWS OpsWorks for Chef Automate 伺服器正在執行 Chef Automate 1.x,請使用本節中的程序來設定 Chef Compliance。
(選用、Chef Automate 1.x) 設定 Chef Compliance
您可以在任何 AWS OpsWorks for Chef Automate 伺服器上設定 Chef Compliance。啟動 AWS OpsWorks for Chef Automate
伺服器之後,請選擇您想要透過 Chef Automate 儀表板中的描述檔來執行的描述檔。安裝描述檔之後,請執行 berks
命令,將 Audit 技術指南
AWS OpsWorks for Chef Automate 入門套件包含包裝技術指南 opsworks-audit
,可為您下載並安裝正確版本的 Chef 稽核技術指南。opsworks-audit
技術指南也會指示 chef-client
代理程式依據 DevSec SSH Baseline (DevSec SSH 基準) 描述檔 (您將透過本主題稍後所述的 Chef Compliance 主控台來安裝) 來評估節點。依據您的偏好設定,您也可以使用技術指南來設定 Compliance (合規)。本節中的指示會說明如何實作 opsworks-audit
技術指南。
安裝 Compliance (合規) 描述檔
-
如果您尚未這麼做,請登入 Chef Automate Web 儀表板。使用您在建立 AWS OpsWorks for Chef Automate 伺服器時下載入門套件時收到的登入資料。
-
在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。
-
在左側導覽列中,選擇 Profile Store (描述檔存放區),然後選擇 Available (可用) 標籤,以查看預先定義的描述檔。
-
瀏覽描述檔清單。選擇至少符合其中一個受管節點之作業系統和組態的描述檔。若要查看描述檔的詳細資訊,包括描述檔的目標違反情況描述和基本規則程式碼,請選擇描述檔項目右側的 >。您可以選擇多個描述檔。
-
若要在您的 Chef Automate 伺服器上安裝選取的描述檔,請選擇 Get (取得)。
-
當下載完成後,請前往下一個步驟。
安裝和設定 opsworks-audit
技術指南
-
此步驟是選用的,但可以節省步驟 6 將配方新增至節點執行清單的時間。編輯
roles/opsworks-example-role.rb
檔案 (其隨附於您建立 AWS OpsWorks for Chef Automate 伺服器期間所下載的入門套件中)。新增下列這幾行。最後一行會標示為註解,因為您可以選擇是否要在執行 Compliance (合規) 掃描之後新增ssh-hardening
技術指南和配方,以解決未合規節點的問題。run_list( "recipe[chef-client]", "recipe[apache2]", "recipe[opsworks-audit]" # "recipe[ssh-hardening]" )
-
使用文字編輯器,在 Berksfile 中指定所需的技術指南。入門套件中會為您提供 Berksfile 範例。在這個範例中,我們會安裝 Chef Infra 用戶端 (
chef-client
) 技術指南、apache2
技術指南和opsworks-audit
技術指南。您的 Berksfile 應該如下所示。source 'https://supermarket.chef.io cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0'
所有技術指南的版本都是經由技術指南的
metadata.rb
檔案所控制。每次變更技術指南時,您都必須在技術指南的metadata.rb
中提高其版本。 -
執行下列命令,將技術指南下載並安裝到本機電腦上的
cookbooks
資料夾或工作用電腦中。berks vendor cookbooks
-
執行下列命令,將廠商處理的技術指南上傳到 AWS OpsWorks for Chef Automate 伺服器。
knife upload .
-
執行下列命令,藉由顯示目前伺服器上可用的技術指南清單來驗證
opsworks-audit
技術指南的安裝。knife cookbook list
-
如果您尚未完成此作業,請先將節點新增到您的伺服器,以便管理。您可以遵循在 中自動新增節點 AWS OpsWorks for Chef Automate中的步驟將節點的關聯自動化,或遵循個別新增節點中的步驟來逐一新增節點。編輯節點執行清單,以新增您在步驟 1 中指定的
opsworks-example-role
角色。在這個範例中,我們會編輯RUN_LIST
指令碼 (您用來自動化節點的關聯) 中的userdata
屬性。RUN_LIST="role[opsworks-example-role]"
如果您略過步驟 1,且尚未設定角色,請將個別配方的名稱新增至執行清單。儲存您的變更,並遵循 中的步驟步驟 3:使用無人執行的關聯指令碼建立執行個體,將您的使用者資料指令碼套用至 Amazon EC2 執行個體。
RUN_LIST="recipe[chef-client],recipe[apache2],recipe[opworks-audit]"
-
在更新節點的執行清單之後,
chef-client
代理程式即會在下一次執行時執行您指定的配方。根據預設,這種情況會每隔 1800 秒 (30 分鐘) 發生一次。執行之後,Chef Automate 儀表板中會顯示您的 Compliance (合規) 結果。
執行合規掃描
在您設定好節點執行清單,並執行第一次代理程式協助程式之後,應該很快就會在 Chef Automate 儀表板中看到合規掃描結果。

在 Chef Automate 儀表板上,選擇 Compliance (合規) 標籤。在左側導覽窗格中,選擇 Reporting (報告)。選擇 Profiles (描述檔) 標籤,選擇 Scan Results (掃描結果),然後選擇含掃描錯誤的節點,以進一步了解導致節點發生錯誤的規則。

一般來說,當新節點尚未滿足 DevSec SSH Baseline (DevSec SSH 基準) 描述檔中的所有規則時,您就會看到未合規的掃描結果。DevSec 強化框架
(選用) 解決未合規的結果
入門套件包含開放原始碼技術指南 ssh-hardening
;您可以執行此技術指南來修正依據 DevSec SSH Baseline (DevSec SSH 基準) 描述檔執行時發生的未合規結果。
注意
ssh-hardening
技術指南會變更您的節點以符合 DevSec SSH Baseline (DevSec SSH 基準) 規則。在任何生產節點上執行此技術指南之前,請先檢閱 Chef Automate 主控台中 DevSec SSH Baseline (DevSec SSH 基準) 描述檔的詳細資訊,以了解技術指南目標的規則違反情況。在任何生產節點上執行之前,請先檢閱開放原始碼 ssh-hardening
執行 ssh-hardening
技術指南
-
在文字編輯器中,將
ssh-hardening
技術指南附加到 Berksfile。您的 Berksfile 應該如下所示。source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0' # optional cookbook 'ssh-hardening'
-
執行下列命令,將
ssh-hardening
技術指南下載到本機技術指南資料夾,然後將其上傳至您的 AWS OpsWorks for Chef Automate 伺服器。berks vendor cookbooks knife upload .
-
將
ssh-hardening
配方新增到您的節點執行清單中,如 安裝和設定 opsworks-audit 技術指南中的步驟 1 和 6 所述。如果您更新
opsworks-example-role.rb
檔案,請執行下列命令,將變更上傳至您的伺服器。knife upload .
如果您直接更新執行清單,請執行下列命令以上傳變更。節點名稱通常為執行個體 ID。
knife node run_list add
<node name>
'recipe[ssh-hardening]' -
由於您使用的是
chef-client
技術指南,因此節點會定期 (預設為每隔 30 分鐘一次) 進行狀態檢查。在下一次狀態檢查時,會執行ssh-hardening
技術指南並協助提升節點安全性,以符合 DevSec SSH Baseline (DevSec SSH 基準) 描述檔的規則。 -
在第一次執行
ssh-hardening
技術指南之後,請等待 30 分鐘再次執行 Compliance (合規) 掃描。在 Chef Automate 儀表板中查看結果。第一次執行 DevSec SSH Baseline (DevSec SSH 基準) 掃描時發生的未合規結果應該已經解決。
合規更新
在 AWS OpsWorks for Chef Automate 伺服器上,合規功能會由您排定的系統維護自動更新。當提供 AWS OpsWorks for Chef Automate 伺服器可用的 Chef Automate、Chef Infra 伺服器和 Chef InSpec 的更新版本時,您可能需要檢查並更新正在伺服器上執行的 Audit 技術指南以及 Chef InSpec Gem 套件的支援版本。您已安裝在 AWS OpsWorks for Chef Automate 伺服器上的設定檔不會更新為維護的一部分。
社群和自訂合規描述檔
Chef 目前包含超過 100 種合規掃描描述檔。您可以將社群和自訂描述檔新增至清單,然後根據這些描述檔下載並執行合規掃描,如同已包含的描述檔一般。您可從 Chef Supermarket