亞馬遜網路服務 (Amazon Web Services, AWS) 的客戶使用各種 AWS 服務來遷移、建設和創新於 AWS 雲端。為了符合合規要求,客戶需要監控、評估和檢測對 AWS 資源所做的變更。AWS Config 會持續審核、評估和檢查您的 AWS 資源的配置。
AWS Config 規則會持續評估您的 AWS 資源配置是否符合預期設定。根據規則的不同,AWS Config 會在配置變更後或定期評估您的資源。AWS Config 提供 AWS 管理的規則,這些是預先定義且可自訂的規則,用來評估您的 AWS 資源是否符合常見的最佳實踐。例如,您可以使用管理規則來評估您的亞馬遜彈性區塊儲存 (Amazon Elastic Block Store, Amazon EBS) 卷是否啟用了加密,或是否對資源應用了特定標籤。AWS Config 規則可以單獨啟用,也可以通過 AWS Config 合規包來啟用,合規包將規則和修正措施組合在一起。您還可以選擇部署 AWS Config 規則的方式:AWS 安全中心 (AWS Security Hub) 將檢查與規則的符合性作為標準進行分組,而 AWS 控制塔 (AWS Control Tower) 通過控制庫提供控制。許多 AWS 客戶使用這些工具的組合,這可能會在單一 AWS 帳戶中創建重複的 AWS Config 規則控制。
在這篇文章中,我們介紹了我們的重複規則檢測工具,旨在幫助客戶識別重複的 AWS Config 規則和來源。您可以評估結果,並檢查減少重複評估、合併規則部署的機會,並幫助優化您的合規狀況。
解決方案概述
這個無伺服器解決方案會收集當前啟用的 AWS Config 規則,並根據相同的來源、範圍、輸入參數和狀態來識別重複項。
圖 1 顯示了解決方案。
圖 1:AWS Config 重複規則檢測工具的架構圖
圖 1 中顯示的架構使用以下步驟:
亞馬遜事件橋 (Amazon EventBridge) 調度器觸發 AWS Lambda 函數。
Lambda 函數完成以下任務:
向 AWS Config API 發送 describe-config-rules,該 API 返回當前 AWS 帳戶和 AWS 區域中啟用的 AWS Config 規則的詳細資訊。
遍歷返回的 AWS Config 規則,以確定是否存在重複規則。如果找到重複規則,則將它們以 JSON 格式分組。
將輸出寫入帶有時間戳的 JSON 文件,並將其保存到亞馬遜簡單儲存服務 (Amazon Simple Storage Service, S3) 桶中以供進一步分析。
前置條件
您需要一個啟用 AWS Config、AWS 安全中心標準或 AWS 控制塔控制的 AWS 帳戶。在開始之前,請確保您對以下內容有基本了解:
操作步驟
為了演示這個工具,請使用一個已部署兩個 AWS Config 合規包的 AWS 帳戶——HIPAA 安全的操作最佳實踐和 NIST CSF 的操作最佳實踐——以及 AWS 安全中心的 AWS 基礎安全最佳實踐 (FSBP) 標準。
CloudFormation 模板檢查
這篇文章中包含的 AWS CloudFormation 模板部署了幾個組件:
重複規則檢測 Lambda – 一個 Lambda 函數:
向 AWS Config API 發送 describe-config-rules 以返回啟用的 Config 規則。
查詢返回的規則以識別具有相同參數的重複規則。
將帶有日期戳的輸出 JSON 文件寫入 DetectionLambdaResultsBucket 桶。
DetectionLambdaPolicy – 附加到 DetectionLambdaRole 角色的 AWS 身份與訪問管理 (IAM) 政策,允許訪問:
基本的 Lambda 執行權限。
config:DescribeConfigRules。
s3:PutObject,並限制僅允許在 DetectionLambdaResultsBucket 桶中。
DetectionLambdaRole – IAM 角色,具有信任政策,僅允許 AWS Lambda 服務假設該角色。
DetectionLambdaResultsBucket – 用於存儲由重複規則檢測 Lambda 函數寫入的輸出 JSON 文件的亞馬遜 S3 桶。
SchedulerForDuplicateRuleDetectionLambda – 用於觸發重複規則檢測 Lambda 函數的事件橋調度器。
ScheduleExpression – 定義調度運行時間的屬性。
IAMRoleforDuplicateRuleDetectionLambdaScheduler – 用於 SchedulerForDuplicateRuleDetectionLambda 的 IAM 角色,具有內嵌 IAM 政策以允許 Lambda 調用。
部署
要部署解決方案,請按照以下步驟操作:
下載 CloudFormation 模板或在 CloudFormation 中打開模板。
注意:事件橋調度器的預設頻率是每個月的第一天運行。在創建堆疊之前,根據需要更新模板的 CRON 表達式。
登入 AWS 管理控制台,並使用頁面頂部的搜索功能導航到 AWS CloudFormation。
在導航窗格中,選擇堆疊。
在堆疊頁面的頂部,選擇創建堆疊,然後從下拉菜單中選擇使用新資源。
在創建堆疊頁面:
對於前置條件 – 準備模板,保持預設設置:模板已準備好。
在指定模板下,選擇上傳模板文件,然後選擇下載的 duplicate-rule-detection.yaml 文件並選擇打開。
在頁面底部,選擇下一步。
在指定堆疊詳細資訊頁面:
對於堆疊名稱,輸入堆疊的名稱,例如 duplicate-detection-rule-stack。
在頁面底部,選擇下一步。
在配置堆疊選項頁面:
(可選)對於標籤,根據需要添加標籤。
對於權限,不要選擇角色,CloudFormation 根據您的用戶憑證使用權限。
對於堆疊失敗選項,保持預設選項回滾所有堆疊資源。
在頁面底部,選擇下一步。
在審查頁面,檢查堆疊的詳細資訊。
在檢查堆疊創建設置後,選擇創建堆疊以啟動您的堆疊。
從 CloudFormation 堆疊頁面,監控堆疊的狀態,直到其從 CREATE_IN_PROGRESS 更新為 CREATE_COMPLETE。
從資源標籤,您將看到從模板創建的資源。
測試
使用以下步驟調用 Lambda 函數以創建一次性輸出進行測試。
使用前置條件中的 AWS 帳戶登入 AWS CloudFormation 控制台。
從導航窗格中,選擇堆疊,然後選擇您在部署此解決方案時使用的堆疊名稱。
選擇重複檢測規則堆疊的資源標籤,並記下為此解決方案創建的 Lambda 函數名稱。
導航到 Lambda 控制台,並從導航窗格中選擇函數。
選擇步驟 3 中記下的函數名稱。
從代碼標籤中,選擇測試,這將打開測試窗口,然後選擇調用。
導航到亞馬遜 S3 控制台,選擇作為此解決方案的一部分創建的桶名稱,以查看 Lambda 函數創建的 JSON 輸出。
選擇創建的對象並選擇下載以在本地查看輸出文件。
驗證
要查看 JSON 輸出文件並了解其結構,請使用支援 JSON 的文本編輯器打開下載的輸出文件。每個重複規則都作為 JSON 對象呈現,定義在左大括號 ({) 和右大括號 (}) 之間。匹配的重複規則在左中括號 ([) 和右中括號 (]) 之間的數組中分組,並用逗號分隔。
從以下示例輸出中,您可以看到這個帳戶中有三個相同的 AWS Config 管理規則實例:
前兩個規則來自兩個不同的合規包,第三個規則是由 AWS 安全中心創建的。
SourceIdentifier 鍵值識別管理規則為 ACCESS_KEYS_ROTATED。
CreatedBy 鍵值識別啟用該規則的服務。
每個規則都有相同的 InputParameters,這是定義重複規則的標準。

圖 2:顯示重複規則和鍵的解決方案輸出
現在您已經識別出重複規則,還需要進一步調查以識別這些規則所包含的具體合規包和 AWS 安全中心標準。ConfigRuleName 值對於每個重複規則都是不同的,並根據規則的部署方式包含前綴和後綴:
使用合規包部署的規則會在顯示的 AWS Config 規則名稱中包含後綴(例如,access-keys-rotated-conformance-pack-a1b2c3d4e)。
使用 AWS 安全中心標準部署的規則在顯示的 AWS Config 規則名稱中同時包含前綴和後綴(例如,securityhub-access-keys-rotated-a1b2c3)。
使用 AWS 控制塔部署的規則在顯示的 AWS Config 規則名稱中包含前綴(例如,AWSControlTower_AWS-GR_EBS_OPTIMIZED_INSTANCE)。
ConfigRuleName 值映射回具體的合規包或 AWS 安全中心標準。

圖 3:AWS Config 合規包儀表板顯示規則與啟用該規則的合規包之間的映射
要識別該規則啟用的 AWS 安全中心標準,請使用以下步驟。
從 AWS Config 控制台中,選擇導航窗格中的合規包。選擇一個合規包,並通過過濾輸出文件中的 SourceIdentifier 值來搜索規則。
使用 AWS Config 開發者指南,通過 SourceIdentifier 搜索管理規則列表,並記下管理規則的資源類型(例如,AWS::IAM::User)。
使用 AWS 安全中心控制參考,搜索在前一步中包含的資源類型的 AWS 服務(即 IAM 控制)。
通過 SourceIdentifier 搜索相應的控制,並記下控制 ID(即 IAM.3)。
登入 AWS 安全中心控制台,並從導航窗格中選擇控制。通過 ID 過濾搜索控制 ID,然後選擇控制標題。
選擇調查標籤,並選擇 Config 規則以查看相應的 AWS Config 規則。
在控制頁面上選擇標準和要求標籤,以查看 AWS Config 規則所屬的標準。

圖 4:AWS 安全中心儀表板
重複解決方案
在評估完成並識別重複規則後,您可以著手合併規則並解決重複項。
如果正在評估的 AWS 帳戶在 AWS 組織中,則組織中的委派管理員帳戶可能已註冊以管理特定的 AWS 服務,例如 AWS Config 和 AWS 安全中心。解決方案可能需要從委派管理員帳戶完成。
您可以採取的一些選項來解決重複的 AWS Config 規則包括:
在決定有效的合併規則和解決重複的方式時,考慮其他功能,例如可視化和自動修正,會很有幫助:
AWS Config 提供一個儀表板來查看資源、規則、合規包及其合規狀態。您還可以在自訂模板中配置修正行動,以針對 AWS 系統管理員自動化運行手冊,定義系統管理員執行的行動。
AWS 安全中心提供一個摘要儀表板,以識別關注的領域,包括匯總整個組織的發現。您可以自訂儀表板佈局,添加或刪除小部件,並篩選數據以專注於特定的興趣領域。要配置自動響應和修正,AWS 安全中心會自動將新的發現和對現有發現的更新發送到事件橋作為事件。客戶可以編寫簡單的規則,以指示在事件符合規則時要採取的事件和自動行動。
AWS 控制塔提供一個控制台來查看控制類別、單個控制和狀態,以及啟用的 OU 或帳戶。目前不支持通過 AWS 控制塔修正不合規的資源。
合併規則和解決重複的最佳方法是從評估前述因素開始,並制定大規模治理的策略。AWS 安全中心通過收集 AWS 帳戶、AWS 服務和支持的第三方產品的安全數據,提供對整個組織合規性的全面視圖。啟用一個或多個 AWS 安全中心標準提供了一種部署控制的機制,無需擔心重複。您可以單獨從 AWS Config 或 AWS 控制塔部署其他控制。
清理
使用以下步驟刪除您在此操作步驟中創建的資源。
登入 AWS CloudFormation 控制台,並在導航窗格中選擇堆疊。
選擇您在部署此解決方案時使用的堆疊名稱。
選擇重複檢測規則堆疊的資源標籤,並記下為此解決方案創建的 S3 桶名稱。
導航到亞馬遜 S3 控制台。
選擇步驟 3 中記下的桶旁邊的單選按鈕,選擇清空,並按照步驟清空桶。
導航到 AWS CloudFormation 控制台,並從導航窗格中選擇堆疊。
選擇在部署步驟中使用的堆疊名稱旁邊的單選按鈕,然後選擇刪除。
選擇刪除以確認您要刪除該堆疊。
從 CloudFormation 堆疊頁面,監控重複檢測規則堆疊的狀態,直到其從 DELETE_IN_PROGRESS 更新為 DELETE_COMPLETE。
結論
對於 AWS 客戶來說,了解資源的合規性與特定規則(例如預設加密設置或確保網路連接加密)相關是至關重要的。您可以使用檢測控制來評估 AWS 上資源的變化狀態。
AWS Config 規則是一種可用的檢測控制,可以單獨部署或在 AWS Config 合規包中或通過 AWS 安全中心標準和 AWS 控制塔控制庫中分組。然而,使用多個這些機制可能會導致在 AWS 帳戶中部署重複的規則。這篇文章提供了一種解決方案,以評估單個 AWS 帳戶和區域中當前部署的 AWS Config 規則,以識別何時存在重複規則。在識別出重複後,您可以做出明智的決策,關於可以進行的更改以合併規則和解決重複。這種方法將通過減少複雜性和消除不必要的冗餘來幫助優化您的合規狀況。
如果您對這篇文章有任何反饋,請在下面的評論區提交意見。
新聞來源
本文由 AI 台灣 使用 AI 編撰,內容僅供參考,請自行進行事實查核。加入 AI TAIWAN Google News,隨時掌握最新 AI 資訊!