Cloud Custodian 使用教程
项目介绍
Cloud Custodian(也称为 c7n)是一个用于管理公有云账户和资源的规则引擎。它允许用户定义策略,以实现安全、成本优化的云基础设施。Cloud Custodian 将组织中的许多临时脚本整合到一个轻量级、灵活的工具中,提供统一的指标和报告。它可以通过确保实时遵守安全策略(如加密和访问要求)、标签策略以及通过垃圾收集未使用的资源和非工作时间资源管理来进行成本管理。Cloud Custodian 可以用于管理 AWS、Azure 和 GCP 环境。
项目快速启动
安装
首先,克隆项目仓库:
git clone https://github.com/cloud-custodian/cloud-custodian.git
cd cloud-custodian
创建虚拟环境并激活:
python3 -m venv custodian
source custodian/bin/activate
安装 Cloud Custodian:
pip install c7n
编写策略文件
创建一个 YAML 文件 policy.yml
,内容如下:
policies:
- name: ec2-tag-compliance
resource: aws.ec2
filters:
- "tag:Environment": absent
actions:
- type: tag
tags:
Environment: Test
运行策略
使用以下命令运行策略:
custodian run -s output policy.yml
应用案例和最佳实践
案例1:资源标签合规性
确保所有 EC2 实例都有 Environment
标签:
policies:
- name: ec2-tag-compliance
resource: aws.ec2
filters:
- "tag:Environment": absent
actions:
- type: tag
tags:
Environment: Test
案例2:非工作时间资源管理
在非工作时间停止所有未标记为 Production
的 EC2 实例:
policies:
- name: stop-non-prod-ec2-offhours
resource: aws.ec2
filters:
- "tag:Environment": "!Production"
actions:
- type: stop
mode:
type: periodic
schedule: "cron(0 20 * * ? *)"
典型生态项目
CloudTrail TrailDB
CloudTrail TrailDB 用于对 CloudTrail 日志进行索引和时间序列生成,以便进行仪表板展示。
LogExporter
LogExporter 用于将 CloudWatch 日志导出到 S3。
Cask
Cask 通过 Docker 简化 Cloud Custodian 的执行。
Guardian
Guardian 用于自动化多账户 GuardDuty 设置。
Omni SSM
Omni SSM 用于 EC2 系统管理器自动化。
Mugc
Mugc 是一个用于清理部署在 AWS 环境中的 Cloud Custodian Lambda 策略的工具。
通过以上教程,您可以快速上手并有效使用 Cloud Custodian 进行云资源管理。