Prakashgode/cloud-cspm

GitHub: Prakashgode/cloud-cspm

一款轻量级 AWS 云安全态势管理 CLI 工具,基于 CIS 标准扫描核心服务的安全配置错误,支持跨账户扫描和多格式报告导出。

Stars: 1 | Forks: 0

# Cloud CSPM ![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/1bdeffd484115408.svg) Cloud CSPM 是一个轻量级的 AWS Cloud Security Posture Management CLI,用于扫描 IAM、S3、EC2、RDS、日志记录、Lambda 和 Secrets Manager 中的 CIS 式安全配置错误。它支持通过 STS AssumeRole 进行跨账户扫描,使用 `boto3`、`click` 和 `rich`,并包含现代 Python 项目元数据、CI 工作流和原生 SARIF 导出。 ![Python](https://img.shields.io/badge/Python-3.11%20to%203.14-blue?logo=python&logoColor=white) ![AWS](https://img.shields.io/badge/AWS-Security-orange?logo=amazon-web-services&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-green) ## 扫描内容 | 扫描器 | 检查项 | |---------|--------| | IAM | Root MFA、密码策略、未使用的凭证、密钥轮换、控制台用户 MFA | | S3 | 公有访问块、加密、版本控制、访问日志、SSL 强制执行 | | EC2 | 开放的 SSH/RDP、危险端口、默认安全组、EBS 加密、公有实例 | | RDS | 加密、公有访问、Multi-AZ、自动升级、备份保留、删除保护 | | Logging | CloudTrail 启用、日志验证、KMS 加密、VPC flow logs | | Lambda | 公有访问、环境 KMS 加密、VPC 附加、multi-AZ 子网、标签、X-Ray tracing | | Secrets Manager | 启用轮换、近期轮换、近期访问、标签 | ## 要求 - Python 3.11 到 3.14 - 通过 `aws configure` 或环境变量配置的 AWS 凭证 - 只读 AWS 访问权限,例如 `SecurityAudit` 托管策略 - 如果要扫描不同的 AWS 账户,需要 `sts:AssumeRole` 权限 ## 快速开始 推荐使用 `uv` 的工作流: ``` git clone https://github.com/Prakashgode/cloud-cspm.git cd cloud-cspm uv sync --locked --all-extras --dev uv run cloud-cspm ``` 使用 `pip` 的备选方案: ``` python -m venv .venv # Linux/macOS: source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1 pip install -e ".[dev]" cloud-cspm ``` 您仍然可以使用 `python cspm.py` 直接运行源入口点。 ## 使用方法 ``` # 运行所有 cloud-cspm # 特定 profile cloud-cspm --profile production # 单个 region cloud-cspm --region us-east-1 # 特定 scanner cloud-cspm --scanner iam --scanner s3 cloud-cspm --scanner lambda --scanner secrets # 按严重性筛选 cloud-cspm --severity CRITICAL # 导出结果 cloud-cspm --output report.json cloud-cspm --output report.csv cloud-cspm --output report.sarif ``` ## 示例报告 示例工件已提交至: - [`samples/demo-report.json`](samples/demo-report.json) - [`samples/demo-report.csv`](samples/demo-report.csv) - [`samples/demo-report.sarif`](samples/demo-report.sarif) SARIF 工件仅包含可操作的 `FAIL` 和 `ERROR` 发现,这对于机器处理和下游安全工具非常有用。 此 SARIF 导出针对 AWS 资源 URI 而非仓库文件对发现进行建模。它旨在作为云安全 pipeline 的通用交换格式,而不是 GitHub code-scanning 上传格式。 使用以下命令在本地重新生成演示资产: ``` uv run python scripts/generate_sample_artifacts.py ``` ![Cloud CSPM CLI demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/589eee1126115419.svg) ## 跨账户扫描 使用 STS AssumeRole 通过相同的 CLI 扫描不同的 AWS 账户: ``` cloud-cspm \ --profile security-audit \ --role-arn arn:aws:iam::123456789012:role/SecurityAudit ``` 如果目标角色需要外部 ID: ``` cloud-cspm \ --profile security-audit \ --role-arn arn:aws:iam::123456789012:role/SecurityAudit \ --external-id cspm-demo ``` ## 开发 安装完整的开发环境: ``` uv sync --locked --all-extras --dev ``` 在本地运行质量门: ``` uv run ruff format . uv run ruff check . uv run mypy uv run pytest -v ``` 该仓库包含: - 用于项目元数据和工具配置的 `pyproject.toml` - 用于可复现依赖解析的 `uv.lock` - 用于 linting 和导入排序的 Ruff - 用于基本类型检查的 mypy - 在 Python 3.11 到 3.14 上进行 GitHub Actions 矩阵测试 - 用于 pip 和 GitHub Actions 更新的 Dependabot - 对 pull requests 的依赖项审查 - 用于下游安全工具的原生 SARIF 导出 - 用于 AWS 模拟器覆盖的 moto 支持的集成测试 - 用于仓库维护的 `SECURITY.md`、`LICENSE` 和 `CONTRIBUTING.md` ## 项目结构 ``` cloud-cspm/ |-- assets/ |-- cspm.py |-- samples/ |-- scripts/ |-- pyproject.toml |-- uv.lock |-- scanners/ |-- reports/ |-- policies/ |-- tests/ `-- .github/workflows/ ``` ## 添加扫描器 继承 `BaseScanner` 并调用 `self.add_finding(...)`: ``` from scanners.base_scanner import BaseScanner, Severity, Status class MyScanner(BaseScanner): def scan(self): self.add_finding( check_id="CUSTOM-1", check_name="My Check", status=Status.FAIL, severity=Severity.HIGH, resource_id="resource-123", resource_type="AWS::Service::Resource", region="us-east-1", description="Description of the finding", remediation="How to fix it", ) return self.findings ``` ## 许可证 MIT
标签:Anthropic, AWS安全, boto3, CISA项目, CIS基准, Click, CloudTrail监控, CSPM, DevSecOps, EC2安全检查, IAM安全, Lambda安全, LNA, PE 加载器, Python安全工具, RDS加密, Rich, S3存储安全, SARIF导出, Secrets Manager, TinkerPop, 上游代理, 云安全态势管理, 前端应用, 安全合规扫描, 跨账号扫描, 逆向工具