内容
# 印度合规MCP服务器
该MCP服务器根据四项印度监管框架评估AWS基础设施:
- **数字个人数据保护法案2023**(Digital Personal Data Protection)+ 2025年规则
- **印度储备银行2023年IT治理总监令**(RBI Master Direction on IT Governance)
- **证券交易委员会2024年网络安全和网络弹性框架**(SEBI CSCRF 2024)(Cybersecurity and Cyber Resilience Framework)
- **2022年CERT-In指令**(Incident reporting, log retention, NTP sync)(事件报告、日志保留、NTP同步)
与Kiro、Claude Desktop、Cursor或任何MCP兼容客户端配合使用。
**重要:** 本工具根据已发布的监管框架提供自动评估指导。它不构成法律建议或合规认证。组织应咨询合格的合规和法律专业人员,以确定监管合规的最终认定。
## 快速入门
### 1. 安装
```bash
git clone https://github.com/aws-samples/sample-aws-india-compliance-mcp.git
cd sample-aws-india-compliance-mcp
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装
pip install .
# 或使用固定的依赖项
pip install . -c constraints.txt
```
### 2. 配置AWS凭证
服务器需要只读AWS访问权限。使用 **AWS IAM Identity Center(SSO)** — 这是团队推荐的方法。
**首次SSO设置:**
```bash
aws configure sso
```
按照提示:
- SSO会话名称:`my-sso`(任意名称)
- SSO起始URL:组织的SSO URL(例如`https://d-xxxxxxxxxx.awsapps.com/start`)
- SSO区域:`us-east-1`(或Identity Center所在位置)
- 它打开浏览器 — 登录并授权
- 选择账户和角色(例如`ReadOnlyAccess`)
- CLI配置文件名称:`my-sso-profile`(记住此名称)
**每次会话前登录:**
```bash
aws sso login --profile my-sso-profile
```
这将打开浏览器进行身份验证。一旦批准,您的CLI就有大约8小时的临时凭证。
**验证它是否有效:**
```bash
aws sts get-caller-identity --profile my-sso-profile
```
**替代方案:静态凭证(不推荐用于团队)**
如果您在`~/.aws/credentials`中有长期有效的访问密钥,则这些凭证也有效 — 但SSO是出于安全考虑的首选。
### 3. 添加到您的MCP客户端
添加到 `.kiro/settings/mcp.json` (或`claude_desktop_config.json`适用于Claude Desktop,`~/.claude/mcp.json`适用于claude):
```json
{
"mcpServers": {
"aws-india-compliance": {
"command": "/path/to/your/.venv/bin/python3",
"args": ["-m", "aws_india_compliance.server"],
"env": {
"PYTHONPATH": "/path/to/sample-aws-india-compliance-mcp/src",
"AWS_PROFILE": "my-sso-profile",
"LOG_LEVEL": "INFO"
}
}
}
}
```
将 `/path/to/your/.venv/bin/python3`替换为实际的venv Python路径,并将 `my-sso-profile`替换为您的SSO配置文件名称。
**提示:** 在激活的venv中运行 `which python3`以获取确切的路径。
### 4. 验证
询问您的MCP客户端:
> "列出DPDP控制域"
如果它返回10个域,则表示您已设置成功。要扫描您的AWS账户:
> "在ap-south-1中扫描我的AWS账户以获取DPDP和RBI合规性"
## 先决条件
- Python 3.10+
- 目标账户/区域中启用了AWS Config记录器
- 具有只读访问权限的IAM凭证(参见下面的IAM策略)
- 对于组织范围的扫描:一个Config Aggregator(自动发现或显式传递名称)
## 工具(11)
| 工具 | 用途 |
|---|---|
| `scan_aws_account` | 通过AWS Config发现资源,针对所有框架进行评估。自动发现组织聚合器;传递`aggregator_name`以覆盖。支持标签过滤、异常规则和SEBI实体分层。 |
| `scan_control_tower_tool` | 枚举OU上启用的防护措施,根据框架(包括CERT-In)推荐缺失的防护措施。按OU分解,域覆盖率。 |
| `parse_architecture` | 解析CloudFormation(JSON/YAML)、Terraform(HCL)或draw.io(XML)模板。最大10 MB。 |
| `assess_compliance` | 根据控制域评估组件列表。支持标签过滤、异常抑制和SEBI实体分层。 |
| `generate_report` | 完整的报告,包括姿态得分、差距列表和分阶段的整改时间表。 |
| `search_regulatory_text` | 从政府来源搜索监管文本。当站点无法访问时,备用捆绑映射。 |
| `list_control_domains` | 列出框架的域:`dpdp`(10)、`rbi`(7)、`sebi`(6)或`certin`(4)。 |
| `check_regulatory_updates` | 陈旧检查 + 内容哈希监控 + 新的循环检测。当映射可能过时时发出标志。 |
| `propose_mapping_update` | 将新的监管文本馈送到LLM客户端进行分析。返回当前映射 + 结构化提示以提出更改。 |
| `apply_mapping_update` | 验证并应用LLM提出的映射更改到`control_mappings.json`。支持审查-应用工作流。 |
| `format_report` | 将扫描报告JSON转换为Markdown或生产级DOCX。传递`output_format="docx"`以获取样式化的Word报告,包含颜色编码的风险级别、姿态得分、封面页和Control Tower防护措施。 |
## 主要功能
### 置信度评分
每个合规差距都包含一个置信度:
- **高** — 直接技术检查,可从AWS Config验证(例如,禁用加密,启用公共访问)
- **中** — 从监管要求到AWS控制的解释性映射(例如,数据本地化)
- **低** — 组织要求,其中基础设施仅是代理(例如,DPO任命,一致性跟踪)
每个差距还带有`evidence`(触发属性值)、`checked_at`(ISO 8601时间戳)和`confidence_rationale`。
### CERT-In 2022指令
评估四个控制域:
1. 事件报告准备度(GuardDuty + EventBridge + SNS管道)
2. 日志保留 — 180天(CloudWatch LogGroup保留检查)
3. NTP同步(建议 — AWS默认使用Amazon Time Sync)
4. 可报告事件意识(Security Hub启用)
### 每个账户的分解
组织范围的扫描按AWS账户ID分组,具有每个账户的单独DPDP、RBI和SEBI姿态得分。
### 资源级合规跟踪
按域划分的资源合规百分比(例如,“dpdp:6 — 482 checked, 320 passed, 66.4%”)。
### 异常管理
- 自动抑制`AWSControlTowerExecution`角色(按设计)
- 通过`resource_pattern`(fnmatch)和`exclude_tag`进行自定义异常规则
- 抑制的差距单独跟踪,带有抑制原因
### 基于标签的过滤
- `filter_tags`: 仅包括匹配所有指定标签键值对的资源
- `exclude_tags`: 排除匹配任何指定标签键值对的资源
### SEBI实体分层
- **MII**层:C-SOC准备度检查(GuardDuty + Security Hub + Detective),BYOK验证
- **qualified_re**层:BYOK检查,跳过C-SOC
- **other_re**层:仅基准SEBI检查
### 细致的数据本地化
- 印度境外的存储资源 → 高风险差距(RBI 2018通函)
- 印度境外的计算资源 → 中风险建议(处理可能被允许)
- 全球服务(IAM、CloudFront、Route53、WAFv2)→ 排除在本地化检查之外
- 如果存在`DataClassification`标签,则在差距描述中包含其值
### 报告格式化
`format_report`工具支持两种输出格式:
**Markdown**(默认):用于聊天显示和快速审查的结构化文本报告。
**DOCX**(`output_format="docx"`):适用于与客户和审计师共享的生产级Word文档。功能:
- 具有扫描元数据和机密性声明的专业封面页
- 颜色编码的姿态得分(基于阈值的绿色/橙色/红色)
- 样式化的表格标题,带有交替行阴影
- 风险级别单元格着色(红色为关键,橙色为高,黄色为中等)
- 置信度级别单元格着色(绿色为高,橙色为中等,红色为低)
- 横向布局,带有全宽表格(无资源名称截断)
- Control Tower部分,包含防护措施、按OU分解和建议
- 分阶段的整改时间表
- 免责声明页
两种格式都包括:
- 具有姿态得分的执行摘要
- 置信度分布表
- 按框架和风险级别划分的差距摘要
- 资源级合规通过率
- 每个账户的分解
- 关键和高风险差距表,带有证据
- 被抑制的差距及其原因
- 分阶段的整改时间表(立即/短期/中期)
大型扫描结果(> 100个差距)会自动保存到`reports/`作为JSON,并将MCP响应修剪为优先级差距。
### 监管监控
三级监控系统:
1. **陈旧** — 标记`last_verified`超过阈值(默认30天)的框架
2. **内容哈希** — 获取监管源页面并比较SHA-256哈希与基线
3. **新循环检测** — 扫描RBI和SEBI循环列表页面,查找与合规关键词匹配的发布
通过`propose_mapping_update` → `apply_mapping_update`工作流程进行LLM辅助的映射更新。
## 扫描工作原理
1. AWS Config高级查询在单个API调用中提取资源配置。如果未提供聚合器名称,扫描器会自动发现组织级聚合器以实现组织范围的覆盖。
2. 扫描器提取每个资源类型的与合规相关的属性。
3. 备用API检查涵盖Security Hub、GuardDuty、CloudTrail、WAF、AWS Backup和Amazon Inspector。
4. 评估引擎根据适用的DPDP、RBI、SEBI和CERT-In控制域评估每个资源。
5. 结果包括具有置信度级别、证据、特定整改步骤和监管章节引用的风险评级差距。
对于组织范围的扫描,扫描器通过`DescribeConfigurationAggregators`自动发现组织级Config Aggregators。如果找到一个,则会自动使用它 — 无需传递名称。您可以仍然传递显式`aggregator_name`以覆盖自动发现(例如`aws-controltower-ConfigAggregatorForOrganizations`)。聚合器必须在管理或委托管理员账户中配置。
## 资源检查
| 资源 | 检查内容 |
|---|---|
| S3 | 静态加密、生命周期策略、阻止公共访问、版本控制、访问日志、Object Lock(审计桶)、TLS强制(桶策略) |
| RDS | 存储加密、公共可访问性、多AZ、审计日志、SSL强制 |
| DynamoDB | KMS加密、TTL、时间点恢复 |
| Lambda | 环境变量中的秘密、死信队列 |
| EC2 | 公共IP分配、IMDSv2强制、EBS加密 |
| EKS | 秘密信封加密、API服务器端点可见性、控制平面日志记录 |
| ECS | 容器洞察 |
| CloudTrail | 日志文件验证、KMS加密、CloudWatch Logs集成 |
| KMS | 客户管理密钥的自动密钥轮换、BYOK验证(SEBI) |
| API Gateway | WAF关联 |
| CloudFront | WAF关联、访问日志记录 |
| SQS/SNS | 静态加密 |
| SageMaker | 直接互联网访问、KMS加密、VPC配置、ML数据一致性跟踪 |
| IAM角色 | 过度权限的策略(AdministratorAccess、PowerUserAccess、IAMFullAccess) |
| VPC | 流日志启用和目标 |
| 安全组 | 打开SSH(22)和RDP(3389)到0.0.0.0/0 |
| 秘密管理器 | 自动轮换配置 |
| AWS Backup | 备份计划存在、Vault Lock状态 |
| Amazon Inspector | 启用状态(SEBI VAPT要求) |
RBI监管的扫描额外标记根据RBI数据本地化通函2018,标记在ap-south-1和ap-south-2以外的资源部署的资源,具有细致的分类(存储 vs 计算 vs 全球服务)。
## 控制域
**DPDP法案(10个域):** 合法处理、数据最小化、隐私通知、数据主体权利、违规通知、合理的安全保障、数据保留限制、跨境数据传输、儿童数据保护、重大数据受托人义务。
**RBI总监令(7个域):** IT治理、IT基础设施、IT风险管理、信息安全、网络安全、业务连续性/灾难恢复、信息系统审计。
**SEBI CSCRF(6个域):** 网络治理、网络风险识别、网络保护、网络检测、网络响应、网络恢复。
**CERT-In指令(4个域):** 事件报告准备度、日志保留(180天)、NTP同步、可报告事件意识。
## 监管版本跟踪
| 框架 | 版本 | 来源 |
|---|---|---|
| DPDP法案 | 2023年8月11日颁布 + 2025年规则(2025年11月14日) | dpdpact.in |
| RBI总监令 | DoS.CO.CSITE.SEC.3/31.01.015/2023-24(2023年4月7日) | rbi.org.in |
| SEBI CSCRF | 2024年8月20日通函 SEBI/HO/ITD/ITD-SEC-1/P/CIR/2024/113 | sebi.gov.in |
| CERT-In指令 | 2022年4月28日指令 | cert-in.org.in |
控制映射在`control_mappings.json`中维护,具有`manifest_version`、`last_verified`日期和框架的源URL。运行`check_regulatory_updates`查看映射最后一次验证的时间以及在哪里检查新出版物。
## 安全
该服务器执行只读操作。它不会修改AWS资源。
**输入验证:-
- AWS区域格式通过正则表达式验证(`^[a-z]{2}(-[a-z]+-\d+)?$`)
- Config Aggregator名称验证(`^[a-zA-Z0-9_-]{1,256}$`)
- 报告文件路径限制在`reports/`目录(路径遍历阻止)
- `top_k`参数上限为50
- 错误消息净化以避免泄露文件系统路径
**传输:** 默认情况下为stdio(本地进程,无网络暴露)。对于通过HTTP进行远程部署,请设置`MCP_API_KEY`并使用OAuth 2.1或等效身份验证。
**凭证:** 使用IAM角色或SSO配置文件。不要在配置文件或源代码中硬编码凭证。
**数据处理:** 默认情况下,无持久性,无遥测,无缓存。扫描结果仅在内存中,退出时丢弃。大型扫描报告保存在`reports/`(gitignored)。日志(stderr,INFO级别)包含资源ARN和类型标识符,但不包含凭证材料。
**XML解析:** draw.io模板使用`defusedxml`进行解析,该库阻止XXE、DTD处理和实体扩展。
**外部网络:** 仅HTTPS调用监管站点(dpdpact.in、rbi.org.in、sebi.gov.in、cert-in.org.in)。域名允许列表强制执行。响应大小上限为5 MB)。 速率限制为10请求/分钟/域名。 30秒超时。
## 最低IAM策略
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ConfigAdvancedQuery",
"Effect": "Allow",
"Action": [
"config:SelectAggregateResourceConfig",
"config:SelectResourceConfig",
"config:DescribeConfigurationRecorders",
"config:DescribeConfigurationAggregators"
],
"Resource": "*"
},
{
"Sid": "SecurityServices",
"Effect": "Allow",
"Action": [
"securityhub:GetFindings",
"securityhub:DescribeHub",
"guardduty:ListDetectors",
"guardduty:GetDetector",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"wafv2:ListWebACLs",
"wafv2:GetWebACL",
"backup:ListBackupPlans",
"backup:ListBackupVaults",
"inspector2:BatchGetAccountStatus"
],
"Resource": "*"
},
{
"Sid": "ControlTower",
"Effect": "Allow",
"Action": [
"controltower:ListLandingZones",
"controltower:GetLandingZone",
"controltower:ListEnabledControls",
"organizations:ListRoots",
"organizations:ListOrganizationalUnitsForParent"
],
"Resource": "*"
}
]
}
```
对于组织范围的扫描,在聚合器ARN上添加`config:SelectAggregateResourceConfig`。考虑添加显式拒绝语句以拒绝破坏性操作(DeleteTrail、StopLogging、DeleteDetector等)。
## 一致性包
该项目包括一个一致性包生成器,从`control_mappings.json`生成可部署的AWS Config一致性包YAML模板。每个包将AWS托管的Config规则映射到监管控制域。
预建的DPDP法案一致性包可在`conformance-packs/DPDP-Act-Conformance-Pack.yaml`找到。部署它:
```bash
aws configservice put-conformance-pack \
--conformance-pack-name DPDP-Act-2023-Conformance-Pack \
--template-body file://conformance-packs/DPDP-Act-Conformance-Pack.yaml
```
以编程方式为任何框架生成软件包:
```python
from aws_india_compliance.conformance_pack import generate_conformance_pack
result = generate_conformance_pack(framework="dpdp") # 或 "rbi", "sebi", "certin"
print(result["yaml_content"])
```
选项:
- `framework`: `"dpdp"`、`"rbi"`、`"sebi"`或`"certin"`
- `include_domains`: 要包含的域号列表(默认:全部)
- `exclude_domains`: 要排除的域号列表
- `pack_name_prefix`: 自定义一致性包名称前缀
框架特定的参数覆盖会自动应用(例如,CERT-In使用180天日志保留,DPDP使用365天)。
## 项目结构
```
src/aws_india_compliance/
server.py # MCP 工具注册、入口点、输入验证
assessment.py # 合规性评估引擎(置信度评分、资源跟踪、异常)
aws_scanner.py # AWS Config 查询 + 备用 API 检查(备份、Inspector)
control_tower.py # Control Tower 扫描器 + 每个 OU 的防护措施映射
parsers.py # CloudFormation/Terraform/draw.io 解析器
knowledge.py # 实时监管文本搜索 + 内容哈希监控
domains.py # 域定义 + 清单加载器 + 陈旧检查
report_formatter.py # Markdown 报告生成器(账户扫描 + Control Tower)
docx_formatter.py # DOCX 报告生成器,带有颜色编码
conformance_pack.py # AWS Config 一致性包 YAML 生成器
control_mappings.json # 版本控制的控制到 AWS 映射清单(DPDP、RBI、SEBI、CERT-In)
conformance-packs/ # 预构建的一致性包模板
tests/
test_assessment.py # 评估引擎测试
test_aws_scanner.py # 扫描器测试(模拟的boto3)
test_control_tower.py # Control Tower 评估测试
test_domains.py # 域定义 + 清单测试
test_parsers.py # 解析器测试
reports/ # 扫描报告输出(gitignored)
```
## 测试
```bash
PYTHONPATH=src python3 -m pytest tests/ -v
```
涵盖评估逻辑、扫描器组件提取、Control Tower 差距分析、域定义、清单完整性和所有三个解析器的28项测试。
## 环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
| `AWS_PROFILE` | - | AWS SSO 配置文件名称 |
| `LOG_LEVEL` | `INFO` | 日志级别(DEBUG、INFO、WARNING、ERROR) |
| `REGULATORY_CACHE_TTL` | `0` | 缓存监管站点响应的秒数。0 = 无缓存。 |
| `STALENESS_THRESHOLD_DAYS` | `30` | 在扫描结果中出现陈旧警告之前的天数。 |
| `MCP_TRANSPORT` | `stdio` | 传输模式:`stdio` 本地,`streamable-http` 远程 |
| `MCP_HOST` | `127.0.0.1` | HTTP 传输的主机 |
| `MCP_PORT` | `8000` | HTTP 传输的端口(有效范围 1-65535) |
| `REPORT_DIR` | `reports/` | 完整扫描报告 JSON 输出的目录 |
**免责声明:** 本工具用于教育和评估目的,进行只读操作,不修改AWS资源。
用户应根据其特定的监管要求验证合规性发现,并咨询合格的合规专业人员。
## 许可证
Apache 2.0
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器