mcpField
A
Aws Security Mcp

Aws Security Mcp

本地服务
github.com/groovyBugify云与基础设施8466 周前更新

关于 Aws Security Mcp

AWS Security MCP 是一个 MCP 服务,让 AI 助手(如 Claude)通过自然语言查询并分析 AWS 基础设施中的安全问题与错误配置。它支持跨多个 AWS 账户发现与访问资源,并整合 GuardDuty、SecurityHub 和 Access Analyzer 的结果。

主要功能

  1. 01跨账户资源发现(AWS Organizations)
  2. 02整合 GuardDuty、SecurityHub 与 Access Analyzer 发现
  3. 03基于 Athena 的 CloudTrail 与 VPC Flow Logs 分析
  4. 04网络拓扑与爆炸半径分析

适用场景

  1. 01排查 EC2 实例、Lambda 函数等资源的安全配置
  2. 02分析具有管理员权限的 IAM 角色
  3. 03关联 GuardDuty 发现与日志事件进行调查

MCP 相关

该项目是 MCP 服务,向 MCP 客户端(如 Claude Desktop、Cline)暴露 AWS 安全分析能力,供 AI 助手调用查询与分析。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

AWS Security MCP

License: MIT Python 3.11+

一种模型上下文协议(MCP)服务,可让 AI 助手通过自然语言查询执行全面的 AWS 安全分析。

概述

AWS Security MCP 将 Claude 等 AI 助手与 AWS 安全服务连接起来,支持通过对话式查询实时分析基础设施。系统会自动发现并分析多个 AWS 账户中的资源,无需深入了解 AWS CLI 即可获取安全洞察。

主要功能
  • 跨账户发现:自动检测并访问 AWS Organization 账户
  • 自然语言界面:使用通俗英语查询 AWS 资源
  • 安全分析:整合来自 GuardDuty、SecurityHub 和 Access Analyzer 的发现
  • 基础设施映射:网络拓扑、威胁建模、安全审查和爆炸半径分析
  • 日志分析:通过 Athena 分析 CloudTrail、VPC Flow Logs 和安全事件

前提条件

  • Python:3.11 或更高版本
  • 包管理器:uv
  • AWS 账户:具有适当的 IAM 权限
  • MCP 客户端:Claude Desktop、Cline 或兼容客户端
AWS 要求

MCP 服务的 AWS 凭证必须具有以下权限:

MCP 核心权限
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CrossAccountAccess",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "arn:aws:iam::*:role/aws-security-mcp-cross-account-access"
    },
    {
      "Sid": "OrganizationDiscovery",
      "Effect": "Allow",
      "Action": [
        "organizations:ListAccounts"
      ],
      "Resource": "*"
    }
  ]
}
Athena 集成权限

如需高级日志分析功能,还需要额外的权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AthenaQueryExecution",
      "Effect": "Allow",
      "Action": [
        "athena:BatchGetQueryExecution",
        "athena:GetQueryExecution",
        "athena:GetQueryResults",
        "athena:GetWorkGroup",
        "athena:GetTableMetadata",
        "athena:ListQueryExecutions",
        "athena:StartQueryExecution",
        "athena:GetQueryResultsStream",
        "athena:GetDataCatalog",
        "athena:ListDataCatalogs",
        "athena:ListDatabases",
        "athena:ListTableMetadata"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueCatalogAccess",
      "Effect": "Allow",
      "Action": [
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:GetTable",
        "glue:GetTables",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition"
      ],
      "Resource": "*"
    },
    {
      "Sid": "S3LogDataAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::your-cloudtrail-bucket/*",
        "arn:aws:s3:::your-cloudtrail-bucket",
        "arn:aws:s3:::your-vpc-flow-logs-bucket/*",
        "arn:aws:s3:::your-vpc-flow-logs-bucket",
        "arn:aws:s3:::your-security-logs-bucket/*",
        "arn:aws:s3:::your-security-logs-bucket"
      ]
    },
    {
      "Sid": "AthenaResultsAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::your-athena-results-bucket/*",
        "arn:aws:s3:::your-athena-results-bucket"
      ]
    }
  ]
}
必需的 AWS 托管策略

SecurityAudit 策略(必需)

将 AWS 托管的 SecurityAudit 策略附加到 MCP 服务的 IAM 用户或 IAM 角色:

Policy ARN: arn:aws:iam::aws:policy/SecurityAudit

此策略可对 AWS 安全服务提供全面的只读访问权限,对于 AWS Security MCP 的正常运行至关重要。它包含以下权限:

  • IAM:用户、角色、策略、访问分析
  • EC2:安全组、实例、VPC 配置
  • S3:存储桶策略、ACL、公开访问设置
  • GuardDuty:发现、检测器、威胁情报
  • SecurityHub:安全标准、合规性发现
  • Access Analyzer:IAM 访问分析和发现
  • Lambda:函数配置和权限
  • CloudFront:分配的安全设置
  • Route53:DNS 配置和运行状况检查
  • WAF:Web ACL 规则和配置
  • 所有其他与安全相关的 AWS 服务

可选托管策略

  • AthenaFullAccess:arn:aws:iam::aws:policy/AmazonAthenaFullAccess(用于简化 Athena 日志分析)
重要说明
  • 最好将此 MCP 服务与 Claude Desktop Pro/Max Plan 或其他支持处理超过 100,000 个令牌的平台配合使用
  • 将 S3 权限中的存储桶名称替换为实际的 CloudTrail、VPC Flow Logs 和 Athena 结果存储桶名称
  • SecurityAudit 策略是 AWS Security MCP 基本功能的必需条件
  • Athena 集成权限是可选的,仅在使用高级日志分析功能时需要
  • 所有权限都遵循最小权限原则,并尽可能采用只读访问

快速开始 ~ 本地设置

  1. 更新 config.yml
aws:
  region: "us-east-1"
  profile: {profileName}
  .
  .
  .
  1. 通过 ~ 本地设置配置 AWS 凭证
  • aws sso
    $ aws configure sso
    SSO Session Name - [email protected]
    URL - https://yourDomain.awsapps.com/start/#
    Region - us-east-1
    
  • 环境变量
    export AWS_ACCESS_KEY_ID=
    export export AWS_SECRET_ACCESS_KEY=
    export export AWS_SESSION_TOKEN=
    
  1. 运行以下命令

    git clone https://github.com/groovyBugify/aws-security-mcp.git
    uv venv
    source .venv/bin/activate
    uv pip install -r requirements.txt
    
  2. 配置 MCP 客户端

    # Install mcp-proxy
    uv tool install mcp-proxy
    
    # Check location of mcp-proxy
    which mcp-proxy
    
    # Add to Claude Desktop config
    {
      "mcpServers": {
        "aws-security": {
          "command": "/path/to/mcp-proxy",
          "args": ["http://localhost:8000/sse"]
        }
      }
    }
    

快速开始 ~ 作为 AWS ECS 服务

  1. 登录 AWS ECR
$ aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {accountID}.dkr.ecr.{region}.amazonaws.com
  1. 创建 ECR 仓库
$ aws ecr create-repository --repository-name aws-security-mcp --region {region}
  1. 构建 Docker 镜像
$ cd aws-security-mcp/
$ docker buildx build --platform linux/amd64 -t aws-security-mcp .
$ docker tag aws-security-mcp:latest {accountID}.dkr.ecr.{region}.amazonaws.com/aws-security-mcp:latest
$ docker push {accountID}.dkr.ecr.{region}.amazonaws.com/aws-security-mcp:latest
  1. 部署为 AWS ECS 服务

    • 创建一个 CPU 为「2048」、内存为「4096」的任务定义。此项为可选,你可以选择任意值
    • 配置任务定义,为端口 8000 设置端口映射
    • 创建具有以下权限的 ECS 任务角色
      • SecurityAudit IAM 策略
      • Athena 访问权限(上述提到的策略)
      • STS Assume Role 权限,用于代入跨账户角色
    • 创建具有基本权限的 ECS 任务执行角色
    • 完成任务定义后
    • 使用该任务定义创建 AWS ECS 服务
      • 你也可以配置负载均衡器
      • 请确保关闭负载均衡器上的粘性会话
    • 注册 ALB 的目标组和监听器,将端口 80/443 转发到 ECS 服务(8000)
    • 为 Route53 域名注册 ALB
  2. 配置 MCP 客户端

    # Install mcp-proxy
    uv tool install mcp-proxy
    
    # Check location of mcp-proxy
    which mcp-proxy
    
    # Add to Claude Desktop config
    {
      "mcpServers": {
        "aws-security": {
          "command": "/path/to/mcp-proxy",
          "args": ["http://{alb}/sse"]
        }
      }
    }
    

配置

YAML 配置

根据需要编辑项目根目录下的 config.yaml:

aws:
  region: "us-east-1"
  profile: null

server:
  log_level: "info"
  startup_quiet: false
  tool_quiet: false

cross_account:
  role_name: "aws-security-mcp-cross-account-access"
  auto_setup_on_startup: true
  max_concurrent_assumptions: 5
环境变量覆盖

环境变量的优先级高于 YAML 配置:

export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
export AWS_DEFAULT_REGION=eu-west-1

使用示例

基础基础设施查询
Query: "Can you share a list of running ec2 instances?"

Query: "Share all the secrets stored on env variables of Lambda functions, and share a list of functions for remediating this issue."

Query: "Check my 'prod-ecs-cluster' and share more details about the 'user-login' service, is it deployed?"
安全分析
Query: "Show all GuardDuty findings from the last 7 days, and priortise based on the risk of exposure."

Query: "Analyze IAM roles with administrative privileges"

Query: "Generate blast radius analysis for IP 172.16.1.10"

Query: "Fetch more details about the ip - 172.22.141.11, and share a network map for this resource.
跨账户操作
Query: "List all connected AWS accounts"
Query: "Refresh my AWS session"
Query: "Find resources tagged Team:Security across all accounts"
Query: "Show compliance status across organization"

架构

跨账户访问

AWS Security MCP 采用中心辐射模型来实现多账户访问:

  1. 发现:使用 organizations:ListAccounts 识别目标账户
  2. 角色代入:在每个账户中代入 aws-security-mcp-cross-account-access 角色
  3. 会话管理:维护临时凭证并自动刷新
  4. 回退:对非组织账户使用默认凭证链
所需的 IAM 角色设置

在每个目标 AWS 账户中创建此角色:

角色名称:aws-security-mcp-cross-account-access

信任策略:

{
"Version": "2012-10-17",
"Statement": [
 {
   "Effect": "Allow",
   "Principal": {
     "AWS": "arn:aws:iam::YOUR-MASTER-ACCOUNT-ID:root"
   },
   "Action": "sts:AssumeRole"
    }
]
}

权限:附加 AWS 托管策略 arn:aws:iam::aws:policy/SecurityAudit

Athena 集成

概述

AWS Security MCP 集成 Amazon Athena,以提供高级日志分析功能。此功能需要预先存在包含安全相关日志的 Athena 表。

支持的日志类型

MCP 服务可以通过 Athena 分析任何日志来源。以下来源可为 MCP 客户端提供全面的安全元数据。为获得最佳安全覆盖范围,我们建议至少实施 CloudTrail 和 VPC Flow Logs:

推荐的日志来源:

  • AWS CloudTrail:API 调用审计和用户活动跟踪
  • VPC Flow Logs:网络流量模式分析
  • CloudFront Logs:CDN 请求和响应分析
  • ALB Access Logs:应用程序负载均衡器流量洞察
  • WAF Logs:Web 应用防火墙事件和拦截记录(Cloudflare/AWS WAF/Akamai)
  • AWS Shield Logs:DDoS 防护和缓解事件

自定义日志来源的灵活性

MCP 服务支持查询存储在 S3 中的任何日志类型,让你能够灵活分析自定义或其他日志来源。若要启用对任何日志来源的分析,请确保:

  1. S3 存储:日志存储在 S3 存储桶中
  2. Athena 表:已为相应日志格式正确配置 Athena 表
  3. IAM 权限:MCP 服务对目标存储桶具有 s3:GetObject 和 s3:ListBucket 权限

此架构让你能够将安全分析扩展到标准 AWS 日志之外,还可纳入应用程序日志、自定义安全事件或第三方安全工具的输出。

查询功能

配置好表后,你可以执行高级查询:

Query: "Show all failed login attempts from external IPs in the last 24 hours"

Query: "Can you share what did '[email protected]' did in past 24 hours on my aws account? and share a timeline report?"

Query: "Can you check for all the 'Access Denied/Error/Forbidden' on my PCI(123456789012) aws account and share the username and userIP of the principal, and do a reverse IP checkup if this IP is coming from my own AWS Org or external party."

Query: "Correlate GuardDuty findings with CloudTrail and VPC Flow logs events"
设置前提条件
  1. S3 存储桶:CloudTrail 和 VPC Flow Logs 必须存储在 S3 中
  2. Athena 工作组:配置合适的工作组并设置结果位置
  3. 分区:启用分区投影以提升性能
  4. IAM 权限:向 MCP 执行角色授予 Athena 查询权限

支持的 AWS 服务

当前可用
服务功能
IAM用户、角色、策略、访问密钥、权限分析
EC2实例、安全组、VPC、子网、网络接口
S3存储桶、权限、公共访问分析
GuardDuty发现项、检测器、威胁情报
SecurityHub发现项、合规标准、安全评分
Lambda函数、权限、配置、触发器
CloudFront分配、源站、行为、安全策略
ELB/ALB/NLB负载均衡器、目标组、侦听器、运行状况检查
Route53托管区域、DNS 记录、运行状况检查
WAFWeb ACL、规则、速率限制
ShieldDDoS 防护状态和指标
Access AnalyzerIAM 访问分析和发现项
ECS/ECR容器服务、存储库、映像扫描
Organizations账户结构、SCP、组织单元
Athena日志分析、安全事件关联
计划新增
  • OAuth 身份验证
  • AWS Config 合规性分析
  • AWS Security Hub CSPM 集成
  • 外部 CSPM 集成

高级配置

生产部署

在生产环境中,请使用以下配置:

server:
  host: "0.0.0.0"
  log_level: "error"
  startup_quiet: true
  tool_quiet: true
  minimal_logging: true

cross_account:
  max_concurrent_assumptions: 10
  session_duration_seconds: 7200
Docker 部署
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["python", "aws_security_mcp/main.py", "sse"]
docker build -t aws-security-mcp .
docker run -p 8000:8000 \
  -e AWS_ACCESS_KEY_ID=your_key \
  -e AWS_SECRET_ACCESS_KEY=your_secret \
  aws-security-mcp
负载均衡器配置
  • 运行状况检查:GET /health
  • SSE 端点:/sse
  • 超时:至少 60 秒
  • 粘性会话:不需要

故障排除

常见问题

工具发现失败

# Check AWS credentials
aws sts get-caller-identity

# Verify cross-account role exists
aws iam get-role --role-name aws-security-mcp-cross-account-access

跨账户访问被拒绝

# Test role assumption manually
aws sts assume-role \
  --role-arn arn:aws:iam::TARGET-ACCOUNT:role/aws-security-mcp-cross-account-access \
  --role-session-name test-session

性能问题

# Reduce concurrent operations
cross_account:
  max_concurrent_assumptions: 3
  
# Enable minimal logging
server:
  minimal_logging: true
调试模式

启用详细日志记录以进行故障排除:

export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
python3 aws_security_mcp/main.py sse

许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。

支持

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。