1amplant/trailscan

GitHub: 1amplant/trailscan

快速评估AWS环境SOC 2合规性

Stars: 1 | Forks: 0

# trailscan **开源 SOC 2 AWS 准备就绪扫描器。** 针对您的 AWS 环境进行点时间检查,以符合 SOC 2 信任服务标准——直接从您的终端进行。 ``` $ python -m trailscan.cli trailscan v0.1.0 — SOC 2 AWS readiness scanner Profile: default Region: us-east-1 ── IAM ──────────────────────────────────────────── ✔ Root MFA enabled ✘ IAM users with console access missing MFA ↳ Enable MFA for all IAM users: IAM → Users → select user → Security credentials → MFA device → Assign MFA device. ── S3 ───────────────────────────────────────────── ✔ S3 account-level public access block enabled ... ════════════════════════════════════════════════════ SOC 2 AWS Readiness Score ──────────────────────────────────────────────────── ████████████████████░░░░░░░░░░░░░░░░░░░░ 52% AT RISK ──────────────────────────────────────────────────── ✔ Passed : 18 ✘ Failed : 17 ⚠ Warned : 3 ════════════════════════════════════════════════════ ``` ## 检查内容 trailscan 在 9 个 AWS 服务中运行 **35 个检查**,每个检查都映射到 SOC 2 TSC 控制。 | 服务 | 检查 | 控制 | |---|---|---| | IAM | 根 MFA、用户 MFA、密码策略、根访问密钥、密钥轮换、未使用的凭证、过度宽容的策略、跨账户访问 | CC6.1、CC6.2、CC6.3 | | S3 | 账户公开访问阻止、存储桶公开访问阻止、存储桶 ACL、加密、访问日志、版本控制、公开存储桶策略 | CC6.1、CC7.2、CC9.1 | | CloudTrail | 多区域跟踪启用、日志文件验证、CloudWatch 集成、KMS 加密、S3 存储桶日志 | CC7.2、CC7.3 | | EC2 | 安全组对世界开放、EBS 加密、IMDSv2、公开快照、停止的实例 | CC6.1、CC6.6、CC6.7 | | RDS | 公开访问、存储加密、备份保留、删除保护 | CC6.1、CC9.1 | | GuardDuty | 启用检测器 | CC7.2 | | VPC | 启用流量日志 | CC6.6、CC7.2 | | KMS | 客户管理的密钥轮换 | CC6.1 | | CloudWatch | 根使用警报、未经授权的 API 警报、IAM 变更警报 | CC6.1、CC7.2 | ## 安装 ``` git clone https://github.com/1amplant/trailscan cd trailscan pip install -e . ``` 需要 Python 3.10+ 和 `boto3`。没有其他依赖项。 ## 使用方法 ``` # 使用默认的 AWS 配置文件 python -m trailscan.cli # 使用命名配置文件 python -m trailscan.cli --profile staging # 指定区域 python -m trailscan.cli --region us-west-2 # 仅显示失败 python -m trailscan.cli --failed-only # 详细模式(显示每个发现的原始证据) python -m trailscan.cli --verbose # 导出为 JSON python -m trailscan.cli --output json --output-file report.json # 导出为 CSV python -m trailscan.cli --output csv --output-file report.csv # 仅运行特定检查 python -m trailscan.cli --checks iam.mfa_enabled_root s3.public_access_block # 所有选项 python -m trailscan.cli --help ``` ### 凭据 IAM 用户或角色需要只读访问权限。最简单的方法是附加 AWS 管理的 `ReadOnlyAccess` 策略。 **选项 1 — 环境变量(最快):** ``` export AWS_ACCESS_KEY_ID=AKIA... export AWS_SECRET_ACCESS_KEY=... export AWS_DEFAULT_REGION=us-east-1 python -m trailscan.cli ``` **选项 2 — 命名 AWS 配置文件:** ``` python -m trailscan.cli --profile myprofile ``` **选项 3 — 默认配置文件**(如果您已经运行了 `aws configure`): ``` python -m trailscan.cli ``` trailscan 按以下顺序解析凭据:`--profile` 标志、`AWS_ACCESS_KEY_ID` 环境变量、`AWS_PROFILE` 环境变量、默认配置文件、EC2/ECS 实例角色。
最小 IAM 策略(如果您不想使用 ReadOnlyAccess) ``` { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*", "iam:GenerateCredentialReport", "s3:GetBucketAcl", "s3:GetBucketEncryption", "s3:GetBucketLogging", "s3:GetBucketPolicy", "s3:GetBucketPublicAccessBlock", "s3:GetBucketVersioning", "s3:GetAccountPublicAccessBlock", "s3:ListAllMyBuckets", "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors", "logs:DescribeMetricFilters", "cloudwatch:DescribeAlarmsForMetric", "ec2:DescribeSecurityGroups", "ec2:DescribeInstances", "ec2:DescribeSnapshots", "ec2:DescribeVolumes", "ec2:DescribeFlowLogs", "ec2:DescribeRegions", "ec2:GetEbsEncryptionByDefault", "rds:DescribeDBInstances", "guardduty:ListDetectors", "guardduty:GetDetector", "kms:ListKeys", "kms:DescribeKey", "kms:GetKeyRotationStatus", "sts:GetCallerIdentity" ], "Resource": "*" }] } ```
## 退出代码 | 代码 | 含义 | |------|---------| | `0` | 所有检查通过(没有失败) | | `2` | 一个或多个检查失败 | | `1` | 错误(凭据错误、未设置区域等。) | 这使得 trailscan 容易集成到 CI: ``` # .github/workflows/soc2.yml - name: SOC 2 readiness scan run: python -m trailscan.cli --output json --output-file soc2-report.json env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: us-east-1 ``` ## SOC 2 TSC 映射 | 控制 | 描述 | |---------|-------------| | CC6.1 | 逻辑和物理访问控制 | | CC6.2 | 认证和凭证 | | CC6.3 | 基于角色的访问 | | CC6.6 | 边界保护 | | CC6.7 | 数据传输和静态加密 | | CC7.2 | 监控和异常检测 | | CC7.3 | 事件响应 | | CC9.1 | 风险缓解(备份、可用性) | ## 限制 - **仅点时间** — trailscan 是一个快照,不是持续监控。 - **仅 AWS** — 无 GitHub、Okta、Google Workspace 或 HR 系统检查。 - **单个账户** — 对您的凭据所属的账户进行运行;无跨账户扫描。 - **无历史数据** — 每次运行都是独立的;结果不存储。 需要持续监控、历史证据、多账户扫描、审计就绪的 PDF 报告、策略模板以及自动填充的企业安全问卷调查? → **[TrailProof](https://trailproof.app)** 自动化 AWS、GitHub、Okta 等跨平台的 SOC 2 证据收集——并从您的真实 AWS 扫描数据中自动填充企业安全问卷调查,以便交易不会因 47 页的供应商审查而停滞。 ## 许可证 MIT
标签:AWS, DPI, GitHub Advanced Security, IAM, MFA, S3, SOC 2, 云服务安全, 反取证, 安全加固, 安全合规, 安全合规性, 安全审查, 安全审计工具, 安全审计平台, 安全审计服务, 安全审计标准, 安全审计流程, 安全审计解决方案, 安全审计软件, 安全检查, 安全漏洞, 安全策略, 安全评估, 安全评分, 安全配置, 安全配置管理, 安全风险管理, 开源, 提示词设计, 终端扫描, 网络代理, 逆向工具