Cloud Custodian in Cloud-Native Engineering
Category: security
Status: Active
Stars: 4,100
Last Updated: 2026-04-22
Primary Language: Python
Documentation: https://cloudcustodian.io/
Purpose and Use Cases
Cloud Custodian is a rules engine for managing cloud infrastructure, enabling policy enforcement, compliance checking, and automated remediation across multiple cloud providers.
What Problem Does It Solve?
The complexity of managing cloud resources across multiple providers with consistent policies. It provides a unified policy framework for security, compliance, and cost optimization.
When to Use This Project
Use Cloud Custodian when you need policy enforcement for cloud resources, want to check compliance against standards, need automated remediation for security issues, or manage resources across multiple cloud providers.
Key Use Cases
- Policy Enforcement: Enforce security and compliance policies
- Compliance Checking: Check against CIS benchmarks and other standards
- Cost Optimization: Identify and remove unused resources
- Security Automation: Automated security remediation
- Resource Tagging: Enforce resource tagging policies
- Garbage Collection: Clean up unused resources
- Cross-Cloud: Manage AWS, Azure, GCP with unified policies
Architecture Design Patterns
Core Components
- Policy Engine: Core policy evaluation engine
- Executor: Execute policies against cloud resources
- Reporter: Generate policy execution reports
- Actions: Remediation actions for policy violations
- Filters: Resource filtering and selection
- Sources: Cloud provider integration modules
Component Interactions
- Policy → Policy Engine: Load policy definitions
- Policy Engine → Executor: Execute policies
- Executor → Cloud API: Query cloud resources
- Executor → Filters: Filter resources
- Executor → Actions: Apply remediation actions
- Executor → Reporter: Generate reports
Data Flow Patterns
- Policy Execution: Policy loaded → Resources queried → Filters applied → Actions executed → Report generated
- Resource Discovery: Cloud API → Resource collection → Filtering → Policy matching → Actions
- Report Generation: Execution results → Analysis → Report → Output
Design Principles
- Policy-First: Policy-driven infrastructure management
- Declarative: Policies defined in YAML
- Extensible: Custom policies and actions
- Multi-Cloud: Support for AWS, Azure, GCP
- Automated: Automated policy execution
- Actionable: Remediation capabilities
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Kubernetes resource management
- OpenPolicyAgent: Policy evaluation with OPA
- Prometheus: Metrics collection for policy execution
- Grafana: Policy execution visualization
- OpenTelemetry: Tracing for policy execution
- Falco: Security event correlation
API Patterns
- YAML Policies: Declarative policy definitions
- Cloud API: Cloud provider APIs (AWS, Azure, GCP)
- REST API: Policy management API
- Webhook API: Policy notifications
Configuration Patterns
- Policy YAML: Declarative policy definitions
- Variables: Policy variables for reusability
- Conditions: Conditional policy execution
- Actions: Remediation action configuration
Extension Mechanisms
- Custom Policies: Write custom policies
- Custom Actions: Write custom remediation actions
- Custom Sources: Add new cloud providers
- Custom Filters: Write custom filters
Common Pitfalls and How to Avoid Them
Configuration Issues
- Policy Syntax: YAML syntax errors
- Cloud Credentials: Missing or incorrect credentials
- Policy Scope: Too broad or too narrow policy scope
- Action Permissions: Insufficient permissions for actions
- Filter Logic: Incorrect filter definitions
Performance Issues
- API Rate Limits: Cloud provider API rate limiting
- Policy Execution Time: Long policy execution
- Resource Queries: Large resource collections
- Storage Usage: Report storage growth
Operational Challenges
- Policy Updates: Managing policy updates
- Policy Testing: Test policies before production
- Multi-Cloud: Synchronize policies across clouds
- Reporting: Analyze policy execution reports
- Alerting: Configure policy violation alerts
Security Pitfalls
- Credential Security: Store credentials securely
- Policy Permissions: Least privilege for policy execution
- Report Security: Secure report storage
- Action Safety: Safe remediation actions
Coding Practices
Idiomatic Configuration
- Policy YAML: Declarative policy definitions
- Variables: Use variables for reusability
- Tags: Resource tagging policies
- Schedules: Scheduled policy execution
API Usage Patterns
- Policy CLI: Execute policies with c7n CLI
- Policy API: Programmatic policy management
- Cloud API: Cloud provider API integration
Observability Best Practices
- Metrics: Policy execution metrics
- Logging: Policy execution logs
- Tracing: Policy execution tracing
- Reports: Policy execution reports
- Dashboards: Visualization of policy results
Development Workflow
- Local Testing: Test policies locally
- Debugging: Policy execution debugging
- Testing: Policy testing framework
- CI/CD: Automated policy testing
- Tools: c7n, cloudcustodian, cloud provider CLIs
Fundamentals
Essential Concepts
- Policy: Rule definition for resource management
- Resource: Cloud resource being managed
- Filter: Resource selection criteria
- Action: Remediation action
- Executor: Policy execution engine
- Reporter: Policy execution reporter
Terminology Glossary
- Policy: Rule definition
- Resource: Cloud resource
- Filter: Selection criteria
- Action: Remediation action
- Executor: Execution engine
- Reporter: Reporting module
- Condition: Policy condition
- Variable: Policy variable
Data Models and Types
- Policy: Policy definition
- Resource: Resource data
- Filter: Filter definition
- Action: Action definition
- Result: Execution result
- Report: Report data
Lifecycle Management
- Policy Lifecycle: Create → Test → Deploy → Execute → Report
- Resource Lifecycle: Query → Filter → Match → Action
- Execution Lifecycle: Load → Execute → Report → Cleanup
State Management
- Policy State: Current policy state
- Resource State: Resource data
- Result State: Execution results
- Report State: Report data
Scaling and Deployment Patterns
Horizontal Scaling
- Policy Scaling: Parallel policy execution
- Executor Scaling: Multiple executors
- Reporter Scaling: Report generation scaling
High Availability
- Executor HA: Multiple executor instances
- Storage HA: Report storage HA
- Service Discovery: Kubernetes service discovery
Production Deployments
- Executor Deployment: Production executor setup
- Policy Repository: Policy version control
- Notifications: Alerting configuration
- Monitoring: Policy execution monitoring
- Security: Credential and access management
Upgrade Strategies
- Policy Updates: Roll out policy updates
- Executor Updates: Zero-downtime executor updates
- Reporter Updates: Report generation updates
Resource Management
- CPU/Memory Limits: Appropriate resource requests
- Storage: Report storage management
- Network: Cloud API communication
- API Quotas: Plan for API limits
Additional Resources
Troubleshooting
Common Issues
Deployment Failures
- Check pod logs for errors
- Verify configuration values
- Ensure network connectivity
Performance Issues
- Monitor resource usage
- Adjust resource limits
- Check for bottlenecks
Configuration Errors
- Validate YAML syntax
- Check required fields
- Verify environment-specific settings
Integration Problems
- Verify API compatibility
- Check dependency versions
- Review integration documentation
Getting Help
- Check official documentation
- Search GitHub issues
- Join community channels
- Review logs and metrics
Content generated automatically. Verify against official documentation before production use.
Examples
Basic Configuration
# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
name: {{project_name}}-config
namespace: default
data:
# Configuration goes here
config.yaml: |
# Base configuration
# Add your settings here
Kubernetes Deployment
# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{project_name}}
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: {{project_name}}
template:
metadata:
labels:
app: {{project_name}}
spec:
containers:
- name: {{project_name}}
image: {{project_name}}:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "128Mi"
cpu: "500m"
Kubernetes Service
# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
name: {{project_name}}
namespace: default
spec:
selector:
app: {{project_name}}
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
When to Use
Use this skill when:
- Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
- Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
- Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes
Core Workflow
Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.
Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.
Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.
Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.
Constraints
MUST DO
- Include at least one complete working YAML manifest example
- Note when content is auto-generated vs. manually verified
- Reference relevant CNCF project documentation
MUST NOT DO
- Deploy manifests without testing in a staging environment first
- Use deprecated API versions (e.g., apps/v1beta1)
- Omit resource limits and requests in Kubernetes manifests
1---2name: cloud-custodian3description: "Provides Cloud Custodian in Cloud-Native Engineering -/rules engine for cloud infrastructure management"4license: MIT5---678910# Cloud Custodian in Cloud-Native Engineering1112**Category:** security 13**Status:** Active 14**Stars:** 4,100 15**Last Updated:** 2026-04-22 16**Primary Language:** Python 17**Documentation:** [https://cloudcustodian.io/](https://cloudcustodian.io/) 1819---2021## Purpose and Use Cases2223Cloud Custodian is a rules engine for managing cloud infrastructure, enabling policy enforcement, compliance checking, and automated remediation across multiple cloud providers.2425### What Problem Does It Solve?2627The complexity of managing cloud resources across multiple providers with consistent policies. It provides a unified policy framework for security, compliance, and cost optimization.2829### When to Use This Project3031Use Cloud Custodian when you need policy enforcement for cloud resources, want to check compliance against standards, need automated remediation for security issues, or manage resources across multiple cloud providers.3233### Key Use Cases343536- **Policy Enforcement**: Enforce security and compliance policies37- **Compliance Checking**: Check against CIS benchmarks and other standards38- **Cost Optimization**: Identify and remove unused resources39- **Security Automation**: Automated security remediation40- **Resource Tagging**: Enforce resource tagging policies41- **Garbage Collection**: Clean up unused resources42- **Cross-Cloud**: Manage AWS, Azure, GCP with unified policies434445---4647## Architecture Design Patterns4849### Core Components5051- **Policy Engine**: Core policy evaluation engine52- **Executor**: Execute policies against cloud resources53- **Reporter**: Generate policy execution reports54- **Actions**: Remediation actions for policy violations55- **Filters**: Resource filtering and selection56- **Sources**: Cloud provider integration modules5758### Component Interactions59601. **Policy → Policy Engine**: Load policy definitions612. **Policy Engine → Executor**: Execute policies623. **Executor → Cloud API**: Query cloud resources634. **Executor → Filters**: Filter resources645. **Executor → Actions**: Apply remediation actions656. **Executor → Reporter**: Generate reports6667### Data Flow Patterns68691. **Policy Execution**: Policy loaded → Resources queried → Filters applied → Actions executed → Report generated702. **Resource Discovery**: Cloud API → Resource collection → Filtering → Policy matching → Actions713. **Report Generation**: Execution results → Analysis → Report → Output7273### Design Principles7475- **Policy-First**: Policy-driven infrastructure management76- **Declarative**: Policies defined in YAML77- **Extensible**: Custom policies and actions78- **Multi-Cloud**: Support for AWS, Azure, GCP79- **Automated**: Automated policy execution80- **Actionable**: Remediation capabilities8182---8384## Integration Approaches8586### Integration with Other CNCF Projects8788- **Kubernetes**: Kubernetes resource management89- **OpenPolicyAgent**: Policy evaluation with OPA90- **Prometheus**: Metrics collection for policy execution91- **Grafana**: Policy execution visualization92- **OpenTelemetry**: Tracing for policy execution93- **Falco**: Security event correlation9495### API Patterns9697- **YAML Policies**: Declarative policy definitions98- **Cloud API**: Cloud provider APIs (AWS, Azure, GCP)99- **REST API**: Policy management API100- **Webhook API**: Policy notifications101102### Configuration Patterns103104- **Policy YAML**: Declarative policy definitions105- **Variables**: Policy variables for reusability106- **Conditions**: Conditional policy execution107- **Actions**: Remediation action configuration108109### Extension Mechanisms110111- **Custom Policies**: Write custom policies112- **Custom Actions**: Write custom remediation actions113- **Custom Sources**: Add new cloud providers114- **Custom Filters**: Write custom filters115116---117118## Common Pitfalls and How to Avoid Them119120### Configuration Issues121122- **Policy Syntax**: YAML syntax errors123- **Cloud Credentials**: Missing or incorrect credentials124- **Policy Scope**: Too broad or too narrow policy scope125- **Action Permissions**: Insufficient permissions for actions126- **Filter Logic**: Incorrect filter definitions127128### Performance Issues129130- **API Rate Limits**: Cloud provider API rate limiting131- **Policy Execution Time**: Long policy execution132- **Resource Queries**: Large resource collections133- **Storage Usage**: Report storage growth134135### Operational Challenges136137- **Policy Updates**: Managing policy updates138- **Policy Testing**: Test policies before production139- **Multi-Cloud**: Synchronize policies across clouds140- **Reporting**: Analyze policy execution reports141- **Alerting**: Configure policy violation alerts142143### Security Pitfalls144145- **Credential Security**: Store credentials securely146- **Policy Permissions**: Least privilege for policy execution147- **Report Security**: Secure report storage148- **Action Safety**: Safe remediation actions149150---151152## Coding Practices153154### Idiomatic Configuration155156- **Policy YAML**: Declarative policy definitions157- **Variables**: Use variables for reusability158- **Tags**: Resource tagging policies159- **Schedules**: Scheduled policy execution160161### API Usage Patterns162163- **Policy CLI**: Execute policies with c7n CLI164- **Policy API**: Programmatic policy management165- **Cloud API**: Cloud provider API integration166167### Observability Best Practices168169- **Metrics**: Policy execution metrics170- **Logging**: Policy execution logs171- **Tracing**: Policy execution tracing172- **Reports**: Policy execution reports173- **Dashboards**: Visualization of policy results174175### Development Workflow176177- **Local Testing**: Test policies locally178- **Debugging**: Policy execution debugging179- **Testing**: Policy testing framework180- **CI/CD**: Automated policy testing181- **Tools**: c7n, cloudcustodian, cloud provider CLIs182183---184185## Fundamentals186187### Essential Concepts188189- **Policy**: Rule definition for resource management190- **Resource**: Cloud resource being managed191- **Filter**: Resource selection criteria192- **Action**: Remediation action193- **Executor**: Policy execution engine194- **Reporter**: Policy execution reporter195196### Terminology Glossary197198- **Policy**: Rule definition199- **Resource**: Cloud resource200- **Filter**: Selection criteria201- **Action**: Remediation action202- **Executor**: Execution engine203- **Reporter**: Reporting module204- **Condition**: Policy condition205- **Variable**: Policy variable206207### Data Models and Types208209- **Policy**: Policy definition210- **Resource**: Resource data211- **Filter**: Filter definition212- **Action**: Action definition213- **Result**: Execution result214- **Report**: Report data215216### Lifecycle Management217218- **Policy Lifecycle**: Create → Test → Deploy → Execute → Report219- **Resource Lifecycle**: Query → Filter → Match → Action220- **Execution Lifecycle**: Load → Execute → Report → Cleanup221222### State Management223224- **Policy State**: Current policy state225- **Resource State**: Resource data226- **Result State**: Execution results227- **Report State**: Report data228229---230231## Scaling and Deployment Patterns232233### Horizontal Scaling234235- **Policy Scaling**: Parallel policy execution236- **Executor Scaling**: Multiple executors237- **Reporter Scaling**: Report generation scaling238239### High Availability240241- **Executor HA**: Multiple executor instances242- **Storage HA**: Report storage HA243- **Service Discovery**: Kubernetes service discovery244245### Production Deployments246247- **Executor Deployment**: Production executor setup248- **Policy Repository**: Policy version control249- **Notifications**: Alerting configuration250- **Monitoring**: Policy execution monitoring251- **Security**: Credential and access management252253### Upgrade Strategies254255- **Policy Updates**: Roll out policy updates256- **Executor Updates**: Zero-downtime executor updates257- **Reporter Updates**: Report generation updates258259### Resource Management260261- **CPU/Memory Limits**: Appropriate resource requests262- **Storage**: Report storage management263- **Network**: Cloud API communication264- **API Quotas**: Plan for API limits265266---267268## Additional Resources269270- **Official Documentation:** [https://cloudcustodian.io/docs/](https://cloudcustodian.io/docs/)271- **GitHub Repository:** [github.com/cloud-custodian/cloud-custodian](https://github.com/cloud-custodian/cloud-custodian)272- **CNCF Project Page:** [cncf.io/projects/cloud-custodian/](https://www.cncf.io/projects/cloud-custodian/)273- **Community:** Check the GitHub repository for community channels274- **Versioning:** Refer to project's release notes for version-specific features275276---277278## Troubleshooting279280### Common Issues2812821. **Deployment Failures**283 - Check pod logs for errors284 - Verify configuration values285 - Ensure network connectivity2862872. **Performance Issues**288 - Monitor resource usage289 - Adjust resource limits290 - Check for bottlenecks2912923. **Configuration Errors**293 - Validate YAML syntax294 - Check required fields295 - Verify environment-specific settings2962974. **Integration Problems**298 - Verify API compatibility299 - Check dependency versions300 - Review integration documentation301302### Getting Help303304- Check official documentation305- Search GitHub issues306- Join community channels307- Review logs and metrics308*Content generated automatically. Verify against official documentation before production use.*309310## Examples311312### Basic Configuration313314315```yaml316# Basic configuration example317apiVersion: v1318kind: ConfigMap319metadata:320 name: {{project_name}}-config321 namespace: default322data:323 # Configuration goes here324 config.yaml: |325 # Base configuration326 # Add your settings here327```328329### Kubernetes Deployment330331332```yaml333# Kubernetes deployment for {{project_name}}334apiVersion: apps/v1335kind: Deployment336metadata:337 name: {{project_name}}338 namespace: default339spec:340 replicas: 1341 selector:342 matchLabels:343 app: {{project_name}}344 template:345 metadata:346 labels:347 app: {{project_name}}348 spec:349 containers:350 - name: {{project_name}}351 image: {{project_name}}:latest352 ports:353 - containerPort: 8080354 resources:355 limits:356 memory: "128Mi"357 cpu: "500m"358```359360### Kubernetes Service361362363```yaml364# Kubernetes service for {{project_name}}365apiVersion: v1366kind: Service367metadata:368 name: {{project_name}}369 namespace: default370spec:371 selector:372 app: {{project_name}}373 ports:374 - protocol: TCP375 port: 80376 targetPort: 8080377 type: ClusterIP378```379380---381382## When to Use383384Use this skill when:385386- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster387- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges388- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes389---390391## Core Workflow3923931. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.3943952. **Design Architecture** — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. **Checkpoint:** Verify the architecture addresses all requirements and follows CNCF conventions.3963973. **Implement & Configure** — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. **Checkpoint:** Validate all YAML against schema and test in a staging environment.3983994. **Deploy & Monitor** — Apply manifests to the cluster, verify component health, and confirm observability is working. **Checkpoint:** Confirm all pods/services are running, probes passing, and metrics/alerts configured.400401---402403## Constraints404405### MUST DO406- Include at least one complete working YAML manifest example407- Note when content is auto-generated vs. manually verified408- Reference relevant CNCF project documentation409410### MUST NOT DO411- Deploy manifests without testing in a staging environment first412- Use deprecated API versions (e.g., apps/v1beta1)413- Omit resource limits and requests in Kubernetes manifests