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策略, 上游代理, 云基础设施权限管理, 云安全态势管理, 前端应用, 安全合规, 容器安全, 攻击路径分析, 数据安全态势管理, 无代理, 无后门, 最小权限, 漏洞管理, 秘密检测, 网络代理, 自然语言查询, 身份与访问管理, 逆向工具