Prowler 專注於 AWS 安全性評估,能快速掃描 AWS 帳戶並根據 CIS Benchmark 等標準提供安全組態檢查報告,協助工程師找出潛在風險。Cloud Custodian 則更進一步,提供跨多雲平台的資源管理和合規性檢查,除了檢測問題,還能自動執行修復動作,並透過 YAML DSL 定義策略,簡化管理流程。兩者搭配使用能有效提升雲端環境的安全性與合規性,減少人工介入並提升效率。Cloud Custodian 的策略設定相當彈性,可以根據企業需求自定義檢查規則和修復動作,並整合到 CI/CD 流程中,實作自動化合規管理。
使用Prowler和Cloud Custodian進行雲端資源管理與合規檢查
在雲端基礎設施即程式碼(IaC)和雲端安全領域,Prowler和Cloud Custodian(c7n)是兩款重要的開源工具,分別提供不同的功能來協助企業進行雲端資源的安全檢查和合規管理。本篇文章將探討這兩款工具的特點、安裝和使用方法,以及它們在雲端安全中的作用。
Prowler:AWS雲端安全檢查工具
Prowler是一款專為AWS設計的安全檢查工具,能夠對AWS帳戶進行多項安全檢查,以確保資源組態符合最佳實踐。Prowler提供了機器可讀的輸出格式,如JSON和CSV,方便與自動化流程整合。
主要特點
- 對AWS資源進行多項安全檢查
- 支援多種輸出格式,包括JSON、CSV和HTML
- 可與自動化流程整合,方便持續監控
- 提供Prowler Pro版本,具有額外的企業級功能,如持續檢測、儀錶板和無代理安裝
使用範例
執行Prowler檢查後,您可能會看到類別似以下的輸出結果,顯示各個AWS服務的安全檢查狀態:
╭────────────┬─────────────┬───────────┬────────────┬────────┬──────────┬───────╮
│ Provider │ Service │ Status │ FAIL │ WARN │ INFO │ PASS │
├────────────┼─────────────┼───────────┼────────────┼────────┼──────────┼───────┤
│ aws │ cloudtrail │ FAIL (3) │ 0 │ 0 │ 0 │ 3 │
│ aws │ cloudwatch │ FAIL (21) │ 0 │ 0 │ 21 │ 0 │
│ aws │ config │ FAIL (1) │ 0 │ 0 │ 1 │ 0 │
│ aws │ ec2 │ FAIL (1) │ 0 │ 1 │ 0 │ 0 │
│ aws │ guardduty │ FAIL (1) │ 0 │ 0 │ 1 │ 0 │
│ aws │ iam │ FAIL (2) │ 0 │ 2 │ 0 │ 0 │
│ aws │ s3 │ FAIL (15) │ 1 │ 0 │ 14 │ 0 │
│ aws │ securityhub │ FAIL (1) │ 0 │ 0 │ 1 │ 0 │
│ aws │ vpc │ FAIL (1) │ 0 │ 0 │ 1 │ 0 │
╰────────────┴─────────────┴───────────┴────────────┴────────┴──────────┴───────╯
程式碼範例:使用Prowler進行安全檢查
以下是一個使用Prowler進行AWS安全檢查的簡單範例:
# 安裝Prowler
pip install prowler
# 執行Prowler檢查
prowler aws --output json
#### 內容解密:
這段程式碼展示瞭如何安裝和使用Prowler。首先,我們使用pip
安裝Prowler。然後,執行prowler aws --output json
命令對AWS帳戶進行安全檢查,並將結果以JSON格式輸出。
Cloud Custodian(c7n):多雲端合規管理工具
Cloud Custodian(c7n)是一款開源的多雲端合規管理工具,能夠跨多個雲端服務提供商(CSP)進行資源管理和合規檢查。c7n提供了豐富的功能,包括監控、報告和自動修復等。
主要特點
- 跨多個CSP進行資源管理和合規檢查
- 提供多種執行模式,包括提取、事件驅動和週期性執行
- 能夠自動執行修復動作
- 提供企業級支援和功能,如Stacklet.io提供的產品和服務
使用範例
以下是安裝和使用c7n的基本步驟:
# 建立Python虛擬環境
python -m venv c7n
# 啟用虛擬環境
source c7n/bin/activate
# 安裝c7n
pip install c7n
#### 內容解密:
這段程式碼展示瞭如何建立Python虛擬環境、啟用虛擬環境並安裝c7n。首先,我們使用python -m venv c7n
建立一個名為c7n
的虛擬環境。然後,使用source c7n/bin/activate
啟用虛擬環境。最後,使用pip install c7n
安裝c7n。
隨著雲端運算的普及,雲端安全和合規管理將變得越來越重要。未來,我們可以預期Prowler和c7n等工具將繼續演進,提供更多功能和改進,以滿足企業日益增長的安全需求。同時,企業也需要持續關注雲端安全最佳實踐,並採用適當的工具來保護其雲端資源。
圖表說明
graph LR; A[Prowler] -->|安全檢查|> B[AWS 資源]; C[c7n] -->|合規管理|> D[多雲端資源]; E[企業] -->|選擇工具|> A; E -->|選擇工具|> C; F[自動化] -->|整合|> A; F -->|整合|> C;
圖表翻譯:
此圖表展示了Prowler和c7n在雲端安全和合規管理中的角色。Prowler專注於對AWS資源進行安全檢查,而c7n則提供跨多雲端的合規管理功能。企業可以根據需求選擇適合的工具,並將其與自動化流程整合,以提升雲端資源的安全性和合規性。
綜上所述,Prowler和Cloud Custodian是兩款強大的雲端安全和合規管理工具,能夠幫助企業提升雲端資源的安全性和合規性。透過深入瞭解和使用這些工具,企業可以更好地保護其雲端資源,並滿足日益增長的安全需求。
Cloud Custodian 安裝與設定
在啟動Python虛擬環境後,安裝了c7n並建立了c7n的別名:
# 安裝Cloud Custodian核心並建立Cloud Custodian別名
$ pip3 install c7n
Successfully installed argcomplete-3.1.1 attrs-23.1.0 boto3-1.26.157 botocore-1.29.157 Cloud Custodian-0.9.28 docutils-0.18.1 importlib-metadata-5.2.0 jmespath-1.0.1 jsonschema-4.17.3 pyrsistent-0.19.3 python-dateutil-2.8.2 pyyaml-6.0 s3transfer-0.6.1 six-1.16.0 tabulate-0.9.0 urllib3-1.26.16 zipp-3.15.0
alias c7n="custodian"
內容解密:
這段程式碼展示瞭如何安裝Cloud Custodian及其所需的Python套件。安裝完成後,建立了一個名為c7n
的別名,指向custodian
命令。這樣可以簡化後續的操作命令。
安裝後,檔案系統的目錄結構如下:
# Cloud Custodian 環境
.
├── README.md
├── c7n
│ ├── bin
│ ├── include
│ ├── lib
│ └── pyvenv.cfg
內容解密:
這裡呈現了安裝Cloud Custodian後的目錄結構。c7n
目錄包含了虛擬環境所需的所有檔案和組態,確保了Cloud Custodian的正常運作。
安裝完成後,使用版本命令驗證c7n的功能:
# 驗證Cloud Custodian是否安裝成功
$ c7n version
0.9.31
內容解密:
此命令檢查了Cloud Custodian是否正確安裝,並顯示了其版本號。這是確認安裝是否成功的關鍵步驟。
清理與解除安裝
完成c7n虛擬環境的操作後,可以使用deactivate
命令停用它。停用後,可以透過刪除先前使用venv
命令建立的c7n
目錄來清理虛擬環境。
Cloud Custodian 策略
C7n使用根據YAML的DSL(領域特定語言)來定義策略語言。利用這種DSL,可以編寫適用於多個雲端服務提供商(CSP)的雲資源策略,且語法差異極小。YAML DSL通用化了不同CSP的特殊性。在底層,c7n使用各CSP的SDK來查詢相應的API。
策略範例
以下策略選取多個CSP中標有特定標籤的計算資源:
# 取得使用標籤的AWS EC2例項
policies:
- name: my-compute
resource: aws.ec2
filters:
- type: value
key: "tag:owner"
value: "jimmyray"
# 取得使用標籤的Azure VM例項
policies:
- name: my-compute
resource: azure.vm
filters:
- type: value
key: "tag:owner"
value: "jimmyray"
內容解密:
這兩個範例展示瞭如何使用c7n策略選取不同雲平台(AWS和Azure)中由特定使用者擁有的計算資源。兩者的主要差異在於resource
欄位的指定。
策略元素
C7n策略包含以下根級元素:
- Resource:設定策略所針對的資源型別。
- Filters:用於精細調整所選資源。
- Actions:指定對所選資源執行的動作。
- Mode:指定策略的執行模式,預設為pull模式。
- Conditions:設定策略執行的條件。
在大多數c7n策略中,主要涉及四個元素:resources、filters、actions和mode。其中,只有resources元素是必須的。
資源(Resources)
在c7n策略中,resources元素是必填的。它定義了策略將影響哪些資源,以及可用的actions和filters。可用資源根據已安裝的schemas。預設安裝提供AWS資源。要檢視可用資源,可以執行以下schema命令:
# Cloud Custodian schema - AWS預設
$ c7n schema
resources:
- aws.access-analyzer-finding
- aws.account
- aws.acm-certificate
...
內容解密:
此命令列出了Cloud Custodian支援的所有AWS資源型別。這對於編寫針對特定AWS資源的策略非常有用。
若要檢視特定資源可用的actions和filters,可以執行:
# Cloud Custodian - azure.vm actions and filters
$ c7n schema azure.vm
azure.vm:
actions:
- auto-tag-date
- auto-tag-user
- delete
...
filters:
- advisor-recommendation
- cost
- event
- instance-view
...
內容解密:
這條命令展示了針對Azure虛擬機器(azure.vm)可用的actions和filters。瞭解這些可以幫助編寫更精確的策略。
探索Filters與Actions
新手往往會忽略custodian schema
命令的強大功能。深入研究特定filters和actions,可以發現它們提供了豐富的功能和範例。
例如,要查詢EC2例項的AMI映像年齡過濾器,可以執行:
# 查詢EC2過濾器以取得AMI映像年齡資訊
$ custodian schema aws.ec2.filters.image-age
Help
----
EC2 AMI age filter根據AMI映像的年齡(以天為單位)過濾EC2例項。
:Example:
.. code-block:: yaml
policies:
- name: ec2-ancient-ami
resource: ec2
filters:
- type: image-age
op: ge
days: 90
...
內容解密:
這段說明展示瞭如何使用image-age
過濾器來篩選出AMI映像年齡大於或等於90天的EC2例項。這種過濾器非常適合用於清理老舊或不再使用的AMI映像。
透過深入研究特定服務的filters和actions,可以學習到許多新的技巧和方法,這對於編寫高效、精確的c7n策略至關重要。