clay-good/mantissa-stance

GitHub: clay-good/mantissa-stance

一款开源的多云安全态势平台,以无代理方式整合 CSPM、DSPM、CIEM、ASM 和漏洞管理,通过确定性 YAML 策略为 AWS、GCP、Azure 及 SaaS 应用提供全面的安全可见性。

Stars: 10 | Forks: 2

# Mantissa Stance Mantissa Stance 提供跨 AWS、GCP 和 Azure 的全面云安全可见性。它将 CSPM(错误配置检测)、DSPM(敏感数据发现)、CIEM(身份与权限管理)和漏洞管理结合在一个无代理(agentless)工具中。 ## 为什么选择 Mantissa Stance? ### 企业级工具存在的问题 - **昂贵**:每年 10 万至 50 万美元以上 - **黑盒**:无法查看或修改检测逻辑 - **供应商锁定**:专有格式导致迁移困难 - **复杂**:包含数百个您不需要的功能 ### 我们的方法 - **开源**:对所有检测逻辑完全透明 - **只读设计**:绝不修改您的基础设施 - **YAML 策略**:版本可控、可自定义的规则 - **极简依赖**:仅依赖核心云 SDK(boto3, google-cloud, azure-sdk) - **自然语言查询**:使用纯英文提问 - **无代理**:无需部署或维护代理 ### 主要功能 | 功能 | 描述 | |------------|-------------| | **CSPM** | 跨 AWS、GCP、Azure 的 300 多项安全策略 | | **DSPM** | 敏感数据分类与暴露检测 | | **CIEM** | IAM 分析、有效权限、最小权限建议 | | **漏洞管理** | 通过集成 Trivy 进行容器镜像扫描 | | **IaC 扫描** | Terraform、CloudFormation、ARM 模板安全检查 | | **Kubernetes 安全** | EKS、GKE、AKS + 原生 K8s 配置分析 | | **密钥检测** | 28 种密钥模式 + 熵分析 | | **攻击路径分析** | 识别环境中可被利用的路径 | | **CIS 基准** | CIS AWS、GCP、Azure、Google Workspace 和 Microsoft 365 基准评分 | | **SaaS 态势** | Google Workspace + Microsoft 365 配置覆盖,支持跨面 CIEM | | **ASM** | 攻击面管理 - 发现外部可访问资产 | ## 安装说明 ### 前置条件 - Python 3.11+ - Git - 已配置的云凭证(AWS CLI、gcloud、az CLI) ### 通过 Git Clone 安装(推荐用于开发) ``` # Clone 仓库 git clone https://github.com/clay-good/mantissa-stance.git cd mantissa-stance # 以开发模式安装并包含所有 dev dependencies make install # 或手动执行: pip install -e ".[dev]" ``` ### 通过 pip 安装 ``` # Basic installation(仅支持 AWS) pip install mantissa-stance # 包含特定 cloud provider 支持 pip install mantissa-stance[gcp] # Add GCP support pip install mantissa-stance[azure] # Add Azure support pip install mantissa-stance[all] # All cloud providers ``` ### 验证安装 ``` # 检查 CLI 是否可用 stance --help ``` ### 开发命令 克隆后,使用 Makefile 执行常见的开发任务: ``` make install # Install in dev mode with dependencies make test # Run all tests with coverage make test-unit # Unit tests only make test-integration # Integration tests only make lint # Run ruff linter make format # Format with black + ruff fix make typecheck # Type check with mypy make clean # Remove build artifacts ``` ## 快速入门 ### 首次扫描 ``` # Scan AWS 账户 stance scan --provider aws --region us-east-1 # Scan 特定 AWS 账户 stance scan --provider aws --account-id 123456789012 --region us-west-2 # Scan GCP 项目 stance scan --provider gcp --project-id my-project # Scan Azure 订阅 stance scan --provider azure --subscription-id # 使用特定 collectors 进行 Scan stance scan --provider aws --region us-east-1 --collectors aws_iam,aws_s3,aws_ec2 # View findings stance findings --severity critical # Natural language query(需要 LLM API key - 参见 AI Features 章节) stance query -q "show me public S3 buckets with sensitive data" # 生成 CIS benchmark 报告 stance report --benchmark cis-aws --format html --output cis-report.html # 启动 web dashboard stance dashboard ``` ### 查看结果与生成报告 扫描完成后,您有多种选项来查看和导出结果: ``` # 直接在 CLI 中 View findings stance findings # All findings stance findings --severity critical # Filter by severity stance findings --resource-type aws_s3 # Filter by resource type # 以多种格式生成报告 stance export generate --export-format html --report-type full_report -o report.html stance export generate --export-format json --report-type executive_summary -o summary.json stance export generate --export-format csv --report-type findings_detail -o findings.csv stance export generate --export-format pdf --report-type compliance_summary -o compliance.pdf # 生成 CIS benchmark 报告 stance report --benchmark cis-aws --format html --output cis-report.html # View 趋势分析(在多次 scan 之后) stance reporting analyze --days 30 --format table ``` **可用报告类型:** | 报告类型 | 描述 | |-------------|-------------| | `full_report` | 包含所有发现的完整安全评估 | | `executive_summary` | 面向利益相关者的高级概览 | | `findings_detail` | 所有发现的详细分类说明 | | `compliance_summary` | 针对框架的合规性状态 | | `asset_inventory` | 已发现资产的完整清单 | **可用导出格式:** `json`、`csv`、`html`、`pdf` ## 功能特性 ### 云资产清单 三大云服务商的 37 个收集器可收集全面的资产数据: **AWS**:IAM、S3、EC2、RDS、Lambda、EKS、ECR、API Gateway、Secrets Manager、DynamoDB、ElastiCache 等 **GCP**:IAM、Cloud Storage、Compute、Cloud SQL、GKE、Cloud Functions、Artifact Registry、Cloud Run、BigQuery 等 **Azure**:IAM、Storage、Compute、SQL、AKS、Functions、Container Registry、Key Vault、Cosmos DB 等 ### 安全策略 (300+) 策略使用 YAML 定义,并确定性地评估云配置: ``` id: aws-s3-001 name: S3 Bucket Encryption Required description: Ensure all S3 buckets have server-side encryption enabled severity: high resource_type: aws_s3_bucket check: type: expression expression: resource.encryption.enabled == true remediation: guidance: Enable default encryption on the S3 bucket benchmark: - cis-aws: "2.1.1" ``` ### 数据安全态势管理 (DSPM) - **数据分类**:自动检测 PII、PHI、PCI、凭证以及 15 种以上的敏感数据类型 - **访问分析**:映射跨云存储环境中谁有权访问敏感数据 - **暴露检测**:发现公开存储桶或权限过大的共享中的敏感数据 ### 身份与访问管理 (CIEM) - **有效权限**:从复杂的 IAM 策略中计算实际权限 - **权限过高检测**:识别未使用的权限和过度的访问 - **跨账号分析**:跟踪信任关系和代入角色 - **攻击路径**:发现权限提升和横向移动路径 ### 容器与 Kubernetes 安全 - **镜像扫描**:通过集成 Trivy 进行漏洞检测 - **仓库分析**:ECR、GCR、ACR 镜像清单与发现 - **K8s 配置**:Pod 安全、RBAC、网络策略、密钥处理 - **托管 K8s**:EKS、GKE、AKS 集群配置评估 ### 基础设施即代码 (IaC) - **Terraform**:HCL 解析与安全策略评估 - **CloudFormation**:JSON/YAML 模板扫描 - **ARM 模板**:Azure Resource Manager 模板分析 - **配置漂移检测**:将 IaC 定义与实际云状态进行比较 ### 密钥检测 28 种内置模式可检测暴露的密钥: - AWS 访问密钥、GCP 服务账号密钥、Azure 客户端密钥 - 数据库连接字符串、API token、私钥 - 针对高随机性字符串的熵分析 ### 攻击路径分析 识别攻击者可能如何利用您的环境: - **权限提升**:通往 admin/root 访问权限的路径 - **横向移动**:网络和信任关系滥用 - **数据窃取**:获取敏感数据的路径 - **公开暴露**:可从互联网访问的攻击面 ### 分析 - **危险组合**:检测危险的配置模式 - **爆炸半径**:计算资源被攻陷后的影响范围 - **风险评分**:根据上下文对发现进行优先级排序 - **MITRE ATT&CK 映射**:将发现映射到攻击技术 ### CIS 基准 内置 CIS 安全基准的策略映射: - CIS AWS Foundations Benchmark v1.5 - CIS GCP Foundations Benchmark v1.3 - CIS Azure Foundations Benchmark v1.5 - CIS Google Workspace Foundations Benchmark v1.0 — 参阅 [docs/cis_benchmarks/google_workspace.md](docs/cis_benchmarks/google_workspace.md) - CIS Microsoft 365 Foundations Benchmark v3.0 — 参阅 [docs/cis_benchmarks/microsoft_365.md](docs/cis_benchmarks/microsoft_365.md) ### SaaS 态势 (Google Workspace + Microsoft 365) Stance 在 IaaS 云基础之上覆盖了 SaaS 身份与协作层面。Workspace 和 M365 为只读的即时快照 — 审计日志流式传输包含在 mantissa-log 中。请参阅 [docs/saas_posture_overview.md](docs/saas_posture_overview.md) 了解 stance 与 log 的决策树。 ``` # 生成 connector 设置步骤 + 一个 stub config stance saas connect google-workspace --output config/gws.json stance saas connect microsoft-365 --output config/m365.json # 针对 tenant 快照 Evaluate SaaS policies stance saas scan --provider gws --snapshot snapshots/gws.json stance saas scan --provider m365 --snapshot snapshots/m365.json # Build cross-surface CIEM graph stance saas graph --include-saas --snapshot snapshots/all.json \ --primary-domain example.com ``` 跨面的 CIEM 图谱是其区别于单云 DSPM 工具的关键: 一旦 GWS、Entra、AWS、GCP 和 Azure 的身份被整合进同一个 权限图谱中,stance 将标记出在 2 个及以上提供商中拥有管理员权限的用户、 未经验证的联合域,以及租户范围的 OAuth 委派 — 这些正是 导致 2024-2025 年 Snowflake / Okta / Entra 安全漏洞的精确横向移动模式。 连接器设置: - [docs/connectors/google_workspace.md](docs/connectors/google_workspace.md) - [docs/connectors/microsoft_365.md](docs/connectors/microsoft_365.md) ### 攻击面管理 (ASM) 使用由外向内的途径发现并监控外部可访问的资产: ``` # Standalone ASM scan stance asm scan --domains example.com # Integrated CSPM + ASM scan stance scan --provider aws --region us-east-1 --include-asm --asm-domains example.com # View ASM inventory stance asm inventory --latest # Detect scan 之间的 drift stance asm drift ``` **ASM 收集器:** - 证书透明度监控 - 被动 DNS 侦察 - 云 IP 范围关联 - 技术指纹识别 - 端口扫描(可选的活动模式) - 子域名枚举(可选的活动模式) ## 架构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ Mantissa Stance │ ├──────────────────────────────────────────────────────────────────────┤ │ Interface Layer │ │ ┌─────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │ CLI │ │ Web Dashboard │ │ Alerting │ │ │ │ (stance) │ │ (localhost:8080) │ │ Slack/PD/Jira │ │ │ └─────────────┘ └─────────────────────┘ └─────────────────────┘ │ ├──────────────────────────────────────────────────────────────────────┤ │ Analysis Engines │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ CSPM │ │ DSPM │ │ CIEM │ │ Vuln Mgmt │ │ │ │ 300+ YAML │ │ Classifier │ │ Effective │ │ Trivy │ │ │ │ policies │ │ Access maps │ │ permissions │ │ CVE lookup │ │ │ │ CIS bench │ │ Exposure │ │ Overpriv │ │ SBOM │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │ ├──────────────────────────────────────────────────────────────────────┤ │ Correlation & Analytics │ │ ┌──────────────────────────────────────────────────────────────────┐│ │ │ Attack Paths │ Blast Radius │ Risk Scoring │ MITRE ATT&CK ││ │ │ Trust Graph │ Toxic Combos │ Cross-Account│ Priv Escalation ││ │ └──────────────────────────────────────────────────────────────────┘│ ├──────────────────────────────────────────────────────────────────────┤ │ Query Engine │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Natural Language → SQL (Claude/GPT-4/Gemini) │ Direct SQL │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├──────────────────────────────────────────────────────────────────────┤ │ Collectors (37 total) │ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │ │ AWS (12) │ │ GCP (11) │ │ Azure (11) │ │ │ │ IAM, S3, EC2 │ │ IAM, GCS │ │ IAM, Storage │ │ │ │ RDS, Lambda │ │ Compute, SQL │ │ Compute, SQL │ │ │ │ EKS, ECR │ │ GKE, GCR │ │ AKS, ACR │ │ │ └───────────────┘ └───────────────┘ └───────────────┘ │ ├──────────────────────────────────────────────────────────────────────┤ │ Storage Layer │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ SQLite │ │ S3+Athena │ │GCS+BigQuery│ │Blob+Synapse│ │ │ │ (local) │ │ (AWS) │ │ (GCP) │ │ (Azure) │ │ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ └──────────────────────────────────────────────────────────────────────┘ ``` ## AI 与确定性逻辑 Mantissa Stance 构建在**确定性核心**之上,并附带**可选的 AI 功能**。所有的安全检测、策略评估和风险评分均使用透明、可复现的逻辑,且不使用机器学习。AI 仅用于改善查询和内容生成的用户体验。 ### 确定性组件(非 AI) 这些组件使用纯算法逻辑,不包含随机性或机器学习(ML): | 组件 | 实现 | 位置 | |-----------|----------------|----------| | **资产收集** | 云 SDK API 调用 (boto3, google-cloud, azure-sdk) | `src/stance/collectors/` | | **策略评估** | 针对 YAML 规则的自定义表达式评估器 | `src/stance/engine/evaluator.py` | | **表达式引擎** | 安全的表达式解析器(无 `eval()`),支持 `==`、`in`、`contains`、`matches` 等操作符 | `src/stance/engine/expressions.py` | | **发现检测** | 针对 300 多项 YAML 策略的模式匹配 | `policies/` | | **CIS 基准评分** | 根据策略评估结果计算得出 | `src/stance/engine/benchmark.py` | | **风险评分** | 加权公式,爆炸半径计算 | 算法逻辑 | | **攻击路径分析** | 图遍历算法 | 算法逻辑 | | **密钥检测** | 28 个正则表达式模式 + 熵分析 | 模式匹配 | | **CIEM** | 有效权限计算,信任图谱分析 | `src/stance/ciem/` | | **DSPM** | 数据分类规则,暴露检测 | `src/stance/dspm/` | | **IaC 扫描** | 模板解析 | 确定性逻辑 | ### AI 驱动功能(可选) AI 功能**完全是可选的**,并使用 BYOK(自带密钥)模型。核心功能无需任何 API 密钥。 | 功能 | 用途 | 命令 | |---------|---------|---------| | **自然语言查询** | 将英语翻译为 SQL 查询 | `stance query -q "show me public buckets"` | | **发现解释** | AI 生成的安全发现解释 | `stance llm explain-finding ` | | **策略生成** | 从自然语言生成 YAML 策略 | `stance llm generate-policy "require encryption"` | | **策略建议** | 针对资源类型建议策略 | `stance llm suggest-policies aws_s3_bucket` | **支持的 LLM 提供商:** | 提供商 | 环境变量 | 默认模型 | |----------|---------------------|---------------| | Anthropic Claude | `ANTHROPIC_API_KEY` | claude-3-haiku-20240307 | | OpenAI GPT | `OPENAI_API_KEY` | gpt-4o-mini | | Google Gemini | `GOOGLE_API_KEY` | gemini-1.5-flash | **实现细节:** - 所有 LLM 集成均使用直接的 HTTP 请求(无 SDK 依赖) - 代码位置:`src/stance/llm/` - 提供数据清理功能,可在发送至 LLM 前隐去 PII **使用 AI 功能:** ``` # 设置您的 API key(选择一个 provider) export ANTHROPIC_API_KEY="sk-ant-..." # or OPENAI_API_KEY or GOOGLE_API_KEY # Natural language query stance query -q "show me EC2 instances with public IPs and no security groups" # Explain 一个 finding stance llm explain-finding finding-abc123 # Generate 一个 custom policy stance llm generate-policy "ensure all RDS instances have encryption enabled" ``` **完全绕过 AI:** - 使用 `--no-llm` 标志禁用 LLM 功能 - 编写直接的 SQL 查询代替自然语言 - 所有核心安全功能均可在无任何 API 密钥的情况下正常工作 ## CLI 参考 ### 核心命令 | 命令 | 描述 | |---------|-------------| | `stance scan` | 运行安全评估 | | `stance findings` | 查看和筛选发现 | | `stance assets` | 查看已发现的资产 | | `stance export generate` | 生成报告 | | `stance query` | 自然语言或 SQL 查询 | | `stance report` | 生成 CIS 基准报告 | | `stance reporting analyze` | 趋势分析和安全指标 | | `stance policies` | 管理安全策略 | | `stance dashboard` | 启动 Web 仪表板 (localhost:8080) | | `stance drift` | 检测配置漂移 | | `stance iac scan` | 扫描 IaC 模板 | | `stance secrets scan` | 扫描暴露的密钥 | | `stance ciem` | CIEM 分析(权限、权限过高、信任) | | `stance dspm` | DSPM 分析(数据分类、暴露) | | `stance vuln scan` | 容器漏洞扫描 | | `stance alert` | 将发现发送至 Slack、PagerDuty、Jira、Email | | `stance notify` | alert 命令的别名 | | `stance asm scan` | 运行攻击面管理扫描 | | `stance asm inventory` | 查看已发现的外部资产| `stance asm drift` | 检测攻击面变化 | ### AI 驱动命令(可选) | 命令 | 描述 | |---------|-------------| | `stance llm generate-query` | 从自然语言生成 SQL | | `stance llm explain-finding` | AI 驱动的发现解释 | | `stance llm generate-policy` | 从描述生成 YAML 策略 | | `stance llm suggest-policies` | 为特定资源类型建议策略 | | `stance llm sanitize` | 在 LLM 处理前隐去文本中的 PII | ## 配置 ### LLM 提供商(可选) 要使用自然语言查询,请配置以下其中一项: ``` export ANTHROPIC_API_KEY="sk-ant-..." # Claude (default) export OPENAI_API_KEY="sk-..." # GPT-4 export GOOGLE_API_KEY="..." # Gemini ``` ### 云凭证 Stance 使用标准的云 SDK 凭证链: - **AWS**:`~/.aws/credentials`、IAM 角色、环境变量 - **GCP**:`gcloud auth`、服务账号 JSON、环境变量 - **Azure**:`az login`、服务主体、托管标识 ### 最小 IAM 权限 Stance 仅需只读访问权限。有关最小 IAM 策略,请参阅 [docs/deployment.md](docs/deployment.md)。 ## Web 仪表板 本地 Web 仪表板提供发现的可视化探索功能: ``` stance dashboard --port 8080 ``` 功能: - 态势评分概览 - 按严重程度、服务、CIS 基准分类的发现 - 资产清单浏览器 - 攻击路径可视化 - CIS 基准状态 仪表板仅绑定至 `127.0.0.1`(无需身份验证),旨在供本地开发使用。 ## 告警与集成 将发现发送至外部系统: ``` # Slack stance alert --destination slack --webhook-url https://hooks.slack.com/... # PagerDuty stance alert --destination pagerduty --routing-key ... # Jira stance alert --destination jira --project SEC --url https://company.atlassian.net # Email stance alert --destination email --smtp-host smtp.example.com --to security@example.com ``` ## 设计原则 1. **只读**:绝不修改云资源 2. **无代理**:无需部署或维护代理 3. **确定性**:所有检测逻辑透明且可复现 4. **极简依赖**:仅依赖核心云 SDK 5. **隐私优先**:无遥测,无回传 6. **本地优先**:数据收集后可完全离线工作 ## 不包含的范围 以下内容被刻意排除在外: - **合规证据收集**:请使用 [Attestful](https://github.com/clay-good/attestful) 以满足 SOC 2、HIPAA、PCI-DSS、NIST 800-53、FedRAMP、ISO 27001 - **审计工作流**:请使用 Attestful 或 GRC 平台 - **自动修复**:设计上保持只读 - **运行时保护**:需要代理支持 - **SAST/DAST**:属于独立的产品类别 - **WAF**:属于独立的产品类别 - **基于 ML 的异常检测**:复杂度与价值权衡的结果 - **多租户 SaaS**:专注于自托管 ## 安全注意事项 ### 输入验证 - 验证所有用户提供的配置名称和路径 - 针对文件操作提供路径遍历保护 - API 端点的参数边界检查 - 查询引擎中的 SQL 注入防范 ### 身份验证与授权 - 云凭证使用标准的 SDK 凭证链 - Web 仪表板仅绑定至 localhost(无需身份验证) - ServiceNow 集成支持 OAuth2,并具有安全的 token 处理机制 ### 网络安全 - 所有外部 API 调用均使用 HTTPS - 网络操作上的可配置超时 - 云 API 调用上的速率限制 ### 依赖安全 - 依赖极少(仅核心云 SDK) - 可选依赖可安全失效(用于 ServiceNow 的 httpx) - 无遥测或回传功能 ### 数据处理 - 提供 LLM 数据清理功能以隐去 PII - 本地存储使用 SQLite(由操作系统静态加密) - 不以明文形式存储密钥 ## 文档 - [docs/architecture.md](docs/architecture.md) - 系统设计 - [docs/policies.md](docs/policies.md) - 编写自定义策略 - [docs/deployment.md](docs/deployment.md) - 生产环境部署 - [docs/benchmarks.md](docs/benchmarks.md) - CIS 基准映射
标签:AKS, Anthropic, ASM, AWS, Azure, CIEM, CISA项目, CIS基准, CloudFormation, CSPM, DevSecOps, DPI, DSPM, ECS, EKS, GCP, GKE, GPT, IaC扫描, Python, SaaS安全态势, StruQ, Terraform, TinkerPop, Web截图, YAML策略, 上游代理, 云基础设施权限管理, 云安全态势管理, 前端应用, 安全合规, 容器安全, 攻击路径分析, 数据安全态势管理, 无代理, 无后门, 最小权限, 漏洞管理, 秘密检测, 网络代理, 自然语言查询, 身份与访问管理, 逆向工具