AWS Security MCP
Un servidor MCP que permite a los asistentes de IA interactuar con los servicios de seguridad de AWS.
Documentación
AWS Security MCP
Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los asistentes de IA realizar análisis integrales de seguridad de AWS mediante consultas en lenguaje natural.
Descripción General
AWS Security MCP conecta asistentes de IA como Claude con los servicios de seguridad de AWS, permitiendo análisis de infraestructura en tiempo real a través de consultas conversacionales. El sistema descubre y analiza automáticamente recursos en múltiples cuentas de AWS, proporcionando información de seguridad sin requerir un conocimiento profundo de la CLI de AWS.
Capacidades Clave
- Descubrimiento Multi-Cuenta: Detección automática y acceso a cuentas de AWS Organization
- Interfaz de Lenguaje Natural: Consulta recursos de AWS usando inglés sencillo
- Análisis de Seguridad: Hallazgos integrados de GuardDuty, SecurityHub y Access Analyzer
- Mapeo de Infraestructura: Topología de red, modelado de amenazas, revisión de seguridad y análisis de radio de explosión
- Analítica de Registros: Análisis impulsado por Athena de CloudTrail, VPC Flow Logs y eventos de seguridad
Requisitos Previos
- Python: 3.11 o superior
- Gestor de Paquetes: uv
- Cuenta de AWS: Con permisos IAM apropiados
- Cliente MCP: Claude Desktop, Cline o cliente compatible
Requisitos de AWS
Las credenciales de AWS del Servidor MCP deben tener los siguientes permisos:
Permisos MCP Principales
{
"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": "*"
}
]
}
Permisos de Integración con Athena
Para capacidades avanzadas de análisis de registros, se requieren permisos adicionales:
{
"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"
]
}
]
}
Políticas Administradas de AWS Requeridas
Política SecurityAudit (Requerida)
Adjunte la política administrada SecurityAudit de AWS al usuario o rol IAM de su Servidor MCP:
Policy ARN: arn:aws:iam::aws:policy/SecurityAudit
Esta política proporciona acceso de solo lectura integral a los servicios de seguridad de AWS y es esencial para la funcionalidad de AWS Security MCP. Incluye permisos para:
- IAM: Usuarios, roles, políticas, análisis de acceso
- EC2: Grupos de seguridad, instancias, configuraciones de VPC
- S3: Políticas de buckets, ACLs, configuraciones de acceso público
- GuardDuty: Hallazgos, detectores, inteligencia de amenazas
- SecurityHub: Estándares de seguridad, hallazgos de cumplimiento
- Access Analyzer: Análisis de acceso IAM y hallazgos
- Lambda: Configuraciones y permisos de funciones
- CloudFront: Configuraciones de seguridad de distribución
- Route53: Configuraciones de DNS y verificaciones de salud
- WAF: Reglas y configuraciones de Web ACL
- Todos los demás servicios de AWS relacionados con seguridad
Políticas Administradas Opcionales
- AthenaFullAccess:
arn:aws:iam::aws:policy/AmazonAthenaFullAccess(para análisis simplificado de registros con Athena)
Notas Importantes
- Es mejor usar este Servidor MCP con Claude Desktop Pro/Max Plan o cualquier otra plataforma que permita manejar tamaños de token mayores a 100,000
- Reemplace los nombres de buckets en los permisos de S3 con los nombres reales de sus buckets de CloudTrail, VPC Flow Logs y resultados de Athena
- La política SecurityAudit es obligatoria para la funcionalidad básica de AWS Security MCP
- Los permisos de integración con Athena son opcionales y solo se requieren para funciones avanzadas de análisis de registros
- Todos los permisos siguen el principio de privilegio mínimo con acceso de solo lectura cuando sea posible
Inicio Rápido ~ Configuración Local
- Actualice config.yml
aws:
region: "us-east-1"
profile: {profileName}
.
.
.
- Configure sus Credenciales de AWS mediante configuración local
- aws sso
$ aws configure sso SSO Session Name - email@example.com URL - https://yourDomain.awsapps.com/start/# Region - us-east-1 - variables de entorno
export AWS_ACCESS_KEY_ID= export export AWS_SECRET_ACCESS_KEY= export export AWS_SESSION_TOKEN=
-
Ejecute los siguientes comandos
git clone https://github.com/groovyBugify/aws-security-mcp.git uv venv source .venv/bin/activate uv pip install -r requirements.txt -
Configure el Cliente 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"] } } }
Inicio Rápido ~ como Servicio AWS ECS
- Inicie sesión en AWS ECR
$ aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {accountID}.dkr.ecr.{region}.amazonaws.com
- Cree un Repositorio ECR
$ aws ecr create-repository --repository-name aws-security-mcp --region {region}
- Construya la Imagen 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
-
Implementación como Servicio AWS ECS
- Cree una Definición de Tarea con CPU "2048" y Memoria "4096", esto es opcional, puede elegir cualquier valor
- Configure la Definición de Tarea para realizar el mapeo de puertos para el puerto 8000
- Cree un Rol de Tarea ECS con los siguientes permisos
- Política IAM SecurityAudit
- Acceso a Athena (Política mencionada anteriormente)
- Permisos de Asunción de Rol STS para asumir roles entre cuentas
- Cree un Rol de Ejecución de Tarea ECS con permisos básicos
- Una vez completada la Definición de Tarea.
- Cree un Servicio AWS ECS usando la Definición de Tarea
- También puede configurar un Balanceador de Carga
- Asegúrese de desactivar las Sesiones Persistentes en los Balanceadores de Carga
- Registre el grupo de destino y los oyentes del ALB para el puerto 80/443 -> Servicio ECS (8000)
- Registre el ALB para el dominio Route53.
-
Configure el Cliente 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"] } } }
Configuración
Configuración YAML
Edite config.yaml en la raíz del proyecto según sus necesidades:
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
Anulación de Variables de Entorno
Las variables de entorno tienen prioridad sobre la configuración YAML:
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
export AWS_DEFAULT_REGION=eu-west-1
Ejemplos de Uso
Consultas Básicas de Infraestructura
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?"
Análisis de Seguridad
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.
Operaciones Multi-Cuenta
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"
Arquitectura
Acceso Multi-Cuenta
AWS Security MCP implementa un modelo hub-and-spoke para acceso multi-cuenta:
- Descubrimiento: Usa
organizations:ListAccountspara identificar cuentas objetivo - Asunción de Rol: Asume el rol
aws-security-mcp-cross-account-accessen cada cuenta - Gestión de Sesiones: Mantiene credenciales temporales con renovación automática
- Respaldo: Usa la cadena de credenciales predeterminada para cuentas no organizacionales
Configuración del Rol IAM Requerido
Cree este rol en cada cuenta de AWS objetivo:
Nombre del Rol: aws-security-mcp-cross-account-access
Política de Confianza:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::YOUR-MASTER-ACCOUNT-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
Permisos: Adjunte la política administrada de AWS arn:aws:iam::aws:policy/SecurityAudit
Integración con Athena
Descripción General
AWS Security MCP se integra con Amazon Athena para proporcionar capacidades avanzadas de análisis de registros. Esta función requiere tablas Athena preexistentes que contengan sus registros relevantes de seguridad.
Tipos de Registros Soportados
Aunque el servidor MCP puede analizar cualquier fuente de registros a través de Athena, se recomiendan las siguientes fuentes para proporcionar metadatos de seguridad integrales a su cliente MCP. Para una cobertura de seguridad óptima, recomendamos implementar al menos CloudTrail y VPC Flow Logs:
Fuentes de Registros Recomendadas:
- AWS CloudTrail: Auditoría de llamadas API y seguimiento de actividad de usuarios
- VPC Flow Logs: Análisis de patrones de tráfico de red
- CloudFront Logs: Análisis de solicitudes y respuestas CDN
- ALB Access Logs: Información de tráfico del balanceador de carga de aplicaciones
- WAF Logs: Eventos y bloqueos del firewall de aplicaciones web (Cloudflare/AWS WAF/Akamai)
- AWS Shield Logs: Eventos de protección y mitigación DDoS
Flexibilidad para Fuentes de Registros Personalizadas
El servidor MCP admite consultas de cualquier tipo de registro almacenado en S3, brindándole total flexibilidad para analizar fuentes de registros personalizadas o adicionales. Para habilitar el análisis de cualquier fuente de registros, asegúrese de:
- Almacenamiento S3: Sus registros están almacenados en un bucket S3
- Tabla Athena: Existe una tabla Athena configurada correctamente para el formato de registro
- Permisos IAM: El servidor MCP tiene permisos
s3:GetObjectys3:ListBucketpara el bucket objetivo
Esta arquitectura le permite extender el análisis de seguridad más allá de los registros estándar de AWS para incluir registros de aplicaciones, eventos de seguridad personalizados o salidas de herramientas de seguridad de terceros.
Capacidades de Consulta
Una vez configuradas las tablas, puede realizar consultas avanzadas:
Query: "Show all failed login attempts from external IPs in the last 24 hours"
Query: "Can you share what did 'saransh.rana@company.com' 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"
Requisitos Previos de Configuración
- Buckets S3: CloudTrail y VPC Flow Logs deben estar almacenados en S3
- Grupo de Trabajo Athena: Configure un grupo de trabajo apropiado con ubicación de resultados
- Particionamiento: Habilite la proyección de particiones para el rendimiento
- Permisos IAM: Otorgue permisos de consulta Athena al rol de ejecución del MCP
Servicios AWS Soportados
Actualmente Disponibles
| Servicio | Capacidades |
|---|---|
| IAM | Usuarios, roles, políticas, claves de acceso, análisis de permisos |
| EC2 | Instancias, grupos de seguridad, VPCs, subredes, interfaces de red |
| S3 | Buckets, permisos, análisis de acceso público |
| GuardDuty | Hallazgos, detectores, inteligencia de amenazas |
| SecurityHub | Hallazgos, estándares de cumplimiento, puntuaciones de seguridad |
| Lambda | Funciones, permisos, configuraciones, disparadores |
| CloudFront | Distribuciones, orígenes, comportamientos, políticas de seguridad |
| ELB/ALB/NLB | Balanceadores de carga, grupos objetivo, oyentes, verificaciones de salud |
| Route53 | Zonas alojadas, registros DNS, verificaciones de salud |
| WAF | Web ACLs, reglas, limitación de velocidad |
| Shield | Estado y métricas de protección DDoS |
| Access Analyzer | Análisis de acceso IAM y hallazgos |
| ECS/ECR | Servicios de contenedores, repositorios, escaneo de imágenes |
| Organizations | Estructura de cuentas, SCPs, unidades organizativas |
| Athena | Análisis de registros, correlación de eventos de seguridad |
Adiciones Planificadas
- Autenticación Oauth
- Análisis de cumplimiento de AWS Config
- Integración CSPM de AWS Security Hub
- Integración CSPM externa
Configuración Avanzada
Implementación en Producción
Para entornos de producción, use la siguiente configuración:
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
Implementación 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
Configuración del Balanceador de Carga
- Verificación de Salud:
GET /health - Endpoint SSE:
/sse - Tiempo de Espera: 60 segundos mínimo
- Sesiones Persistentes: No requeridas
Solución de Problemas
Problemas Comunes
Falla en el Descubrimiento de Herramientas
# 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
Acceso Multi-Cuenta Denegado
# 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
Problemas de Rendimiento
# Reduce concurrent operations
cross_account:
max_concurrent_assumptions: 3
# Enable minimal logging
server:
minimal_logging: true
Modo de Depuración
Habilite el registro detallado para la solución de problemas:
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
python3 aws_security_mcp/main.py sse
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.
Soporte
- Problemas: GitHub Issues
- Documentación: Project Wiki
- Problemas de Seguridad: Por favor, repórtelos de forma privada a los mantenedores