Lago de seguridad de Amazon - MCP Server Seguro por ALMC Security 2025

Lago de seguridad de Amazon

Ver en GitHub

Servidor MCP de Amazon Security Lake

Un servidor MCP (Model Context Protocol) para consultar los datos de Amazon Security Lake mediante AWS Athena. Este servidor proporciona acceso estructurado a los datos de seguridad normalizados por OCSF almacenados en Security Lake, lo que permite a los asistentes y aplicaciones de IA buscar direcciones IP, hallazgos de GuardDuty y explorar las fuentes de datos disponibles.

Características

  • Búsqueda de direcciones IP: Búsqueda de direcciones IP en todas las fuentes de datos de Security Lake (origen y destino)
  • Hallazgos de GuardDuty: Consulta de hallazgos de seguridad de GuardDuty con filtrado por ID, gravedad y tipo
  • Descubrimiento de fuentes de datos: Enumere y analice las fuentes y tablas de datos de Security Lake disponibles
  • Cumplimiento de OCSF: Validación de esquemas OCSF (Open Cybersecurity Schema Framework) integrada
  • Integración con AWS: Integración perfecta con AWS Athena, S3 e IAM
  • Seguridad ante todo: validación de entradas, desinfección de consultas y acceso con privilegios mínimos

Requisitos

  • Python 3.10 o superior
  • Cuenta de AWS con Amazon Security Lake configurado
  • Credenciales de AWS configuradas (rol de IAM, perfil o variables de entorno)
  • Acceso a AWS Athena y a la base de datos de Security Lake

Instalación

Opción 1: Usando pip (recomendado)

pip install amazon-security-lake-mcp

Opción 2: Desde el código fuente

git clone <repository-url> cd amazon-security-lake-mcp pip install -e

Opción 3: Usando Docker

docker build -t amazon-security-lake-mcp . docker run -it amazon-security-lake-mcp

Configuración

Descubrimiento automático de recursos (recomendado)

El servidor MCP puede descubrir automáticamente sus recursos de Security Lake Simplemente configure sus credenciales de AWS y el servidor encontrará:

  • Buckets S3 de Security Lake para resultados de consultas de Athena
  • Nombres de bases de datos de Security Lake Glue
  • Permisos y configuraciones IAM apropiados

Configuración mínima:

# Sólo se requiere la región de AWS para el auto-descubrimiento export ASL_MCP_AWS_REGION="us-east-1" export ASL_MCP_AWS_PROFILE="your-aws-profile" # Opcional si se usan credenciales por defecto

Probar descubrimiento:

# Después de la instalación, prueba de descubrimiento de recursos python -c " from asl_mcp_server.aws.discovery import AWSResourceDiscovery discovery = AWSResourceDiscovery('us-east-1') print(discovery.get_discovery_summary()) "

Configuración manual

Si prefiere la configuración manual o el autodescubrimiento falla:

# Obligatorio export ASL_MCP_ATHENA_OUTPUT_LOCATION="s3://your-athena-results-bucket/path/" # Opcional (con valores por defecto) export ASL_MCP_AWS_REGION="us-east-1" export ASL_MCP_AWS_PROFILE="your-aws-profile" export ASL_MCP_SECURITY_LAKE_DATABASE="amazon_security_lake_glue_db" export ASL_MCP_ATHENA_WORKGROUP="primary" export ASL_MCP_AUTO_DISCOVER_RESOURCES="false" # Desactivar auto-discovery export ASL_MCP_LOG_LEVEL="INFO" export ASL_MCP_MAX_QUERY_RESULTS="1000" export ASL_MCP_QUERY_TIMEOUT_SECONDS="300"

Archivo de configuración

Cree un archivo .env en el directorio de su proyecto:

# Configuración mínima (auto-descubrimiento habilitado) ASL_MCP_AWS_REGION=us-east-1 ASL_MCP_AWS_PROFILE=security-lake-user # O configuración manual completa ASL_MCP_ATHENA_OUTPUT_LOCATION=s3://my-athena-results/ ASL_MCP_AWS_REGION=us-east-1 ASL_MCP_SECURITY_LAKE_DATABASE=amazon_security_lake_glue_db ASL_MCP_AUTO_DISCOVER_RESOURCES=false ASL_MCP_LOG_LEVEL=INFO

Permisos de AWS

El servidor MCP requiere los siguientes permisos de AWS:

{ "Versión": "2012-10-17", "Statement": [ {"Effect": "Permitir", "Acción": [ "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:ListDataCatalogs", "athena:ListDatabases", "athena:ListTableMetadata" ], "Resource": "*" }, {"Effect": "Permitir", "Acción": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-security-data-lake-*", "arn:aws:s3:::aws-security-data-lake-*/*", "arn:aws:s3:::your-athena-results-bucket", "arn:aws:s3:::your-athena-results-bucket/*" ] }, { "Effect": "Permitir", "Acción": [ "glue:GetDatabase", "glue:GetTable", "glue:GetPartitions" ], "Resource": "*" } ] }

Uso

Integración con Claude Desktop

Para utilizar este servidor MCP con Claude Desktop, es necesario configurarlo en los ajustes de Claude Desktop.

Paso 1: Instalar el servidor MCP

Opción A: Usando pipx (Recomendado para Claude Desktop)

# Instale pipx si no lo tiene brew install pipx # macOS # o: pip install --user pipx # Otros sistemas # Instale el servidor MCP globalmente pipx install amazon-security-lake-mcp # O instale desde el código fuente git clone <repository-url> cd amazon-security-lake-mcp pipx install -e

Opción B: Usar pip con entorno virtual

# Crear entorno virtual python3 -m venv asl-mcp-env source asl-mcp-env/bin/activate # Linux/macOS # o: asl-mcp-env\Scripts\activate # Windows # Instalar el paquete pip install amazon-security-lake-mcp

Encuentre la ruta del comando instalado:

# Para la instalación pipx que asl-mcp-server # Salida típica: /Usuarios/nombredeusuario/.local/bin/asl-mcp-server # Para instalación pip en venv which asl-mcp-server # (con venv activado)

Paso 2: Configurar Claude Desktop

Añada el servidor MCP a la configuración de Claude Desktop. La ubicación del archivo de configuración depende de su sistema operativo:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Opción A: Usar la ruta completa al comando (Recomendado)

{ "mcpServers": { "amazon-security-lake": { "command": "/Usuarios/nombre_usuario/.local/bin/asl-mcp-server", "env": { "ASL_MCP_AWS_REGION": "us-east-1", "ASL_MCP_AWS_PROFILE": "your-aws-profile", "ASL_MCP_LOG_LEVEL": "INFO" } } } }

Sustituya /Usuarios/nombredeusuario/.local/bin/asl-mcp-server por la ruta real desde la que asl-mcp-server

Opción B: Usar módulo Python (Más fiable)

{ "mcpServers": { "amazon-security-lake": { "command": "/opt/homebrew/bin/python3", "args": ["-m", "asl_mcp_server.server"], "cwd": "/path/to/amazon-security-lake-mcp", "env": { "ASL_MCP_AWS_REGION": "us-east-1", "ASL_MCP_AWS_PROFILE": "your-aws-profile", "PYTHONPATH": "/path/to/amazon-security-lake-mcp/src", "ASL_MCP_LOG_LEVEL": "INFO" } } } }

Opción C: Usando la ruta de Python (si no está instalado globalmente)

{ "mcpServers": { "amazon-security-lake": { "command": "python", "args": ["-m", "asl_mcp_server.server"], "cwd": "/path/to/amazon-security-lake-mcp", "env": { "ASL_MCP_AWS_REGION": "us-east-1", "ASL_MCP_AWS_PROFILE": "your-aws-profile" } } }

Paso 3: Reinicie Claude Desktop

Tras guardar el archivo de configuración, reinicie Claude Desktop por completo (salga de la aplicación y vuelva a iniciarla).

Paso 4: Verificar la conexión

En Claude Desktop, ahora puede hacer preguntas como:

  • "¿Puede descubrir mis recursos de Security Lake?"
  • "Buscar la dirección IP 192.168.1.100 en mis datos de seguridad"
  • "Muéstrame los hallazgos recientes de GuardDuty de alta gravedad"
  • "¿Qué fuentes de datos están disponibles en mi lago de seguridad?"

Ejemplo de conversación de Claude Desktop

Usuario: ¿Puedes ayudarme a investigar incidentes de seguridad en mi entorno de AWS? Claude: ¡Puedo ayudarte a investigar incidentes de seguridad utilizando tus datos de Amazon Security Lake! Permítame comenzar descubriendo sus recursos de Security Lake y luego podemos buscar indicadores específicos [Claude utiliza la herramienta discover_aws_resources] Encontré su configuración de Security Lake: - Base de datos: amazon_security_lake_glue_db_us_east_1 - Región: us-east-1 - Resultados de Athena: s3://aws-athena-query-results-123456789012-us-east-1/ ¿Qué le gustaría investigar? Puedo 1. Buscar direcciones IP específicas Buscar resultados de GuardDuty 3. Mostrar las fuentes de datos disponibles 4. Usuario: Buscar cualquier actividad relacionada con la dirección IP 203.0.113.45 Claude: [Utiliza la herramienta search_ip_addresses para consultar los datos de Security Lake] He encontrado 3 eventos de seguridad relacionados con la IP 203.0.113.45: ..

Configuración avanzada de Claude Desktop

Para uso en producción, considere estas configuraciones adicionales:

Configuración específica del entorno:

{ "mcpServers": { "security-lake-prod": { "command": "asl-mcp-server", "env": { "ASL_MCP_AWS_REGION": "us-east-1", "ASL_MCP_AWS_PROFILE": "prod-security-readonly", "ASL_MCP_MAX_QUERY_RESULTS": "500", "ASL_MCP_QUERY_TIMEOUT_SECONDS": "180" } }, "security-lake-dev": { "command": "asl-mcp-server", "env": { "ASL_MCP_AWS_REGION": "us-west-2", "ASL_MCP_AWS_PROFILE": "dev-security", "ASL_MCP_LOG_LEVEL": "DEBUG" } } } }

Inicio del servidor MCP (independiente)

También puede ejecutar el servidor de forma autónoma para realizar pruebas:

# Usando el comando instalado asl-mcp-server # O usando el módulo Python python -m asl_mcp_server.server

Herramientas disponibles

1. Búsqueda de direcciones IP

Buscar direcciones IP en los datos de Security Lake:

{ "herramienta": "buscar_direcciones_ip", "argumentos": { "dirección_ip": "192.168.1.100", "start_time": "2024-01-15T00:00:00Z", "end_time": "2024-01-15T23:59:59Z", "sources": ["guardduty", "cloudtrail"], "limit": 100 } }

Parámetros:

  • ip_address (obligatorio): Dirección IP a buscar (IPv4 o IPv6)
  • start_time (opcional): Hora de inicio en formato ISO (por defecto: hace 7 días)
  • hora_fin (opcional): Hora de finalización en formato ISO (por defecto: ahora)
  • sources (opcional): Fuentes de datos en las que buscar (guardduty, cloudtrail, vpcflow, etc.)
  • limit (opcional): Máximo de resultados a devolver (por defecto: 100, máx: 1000)

2. Buscar hallazgos de GuardDuty

Buscar hallazgos de seguridad de GuardDuty:

{ "herramienta": "search_guardduty_findings", "arguments": { "finding_id": "12345abc-def0-1234-5678-90abcdef1234", "severity": "High", "finding_type": "Trojan:EC2/MaliciousIP", "start_time": "2024-01-15T00:00:00Z", "end_time": "2024-01-15T23:59:59Z", "limit": 50 } }

Parámetros:

  • finding_id (opcional): ID de hallazgo específico de GuardDuty
  • severity (opcional): Nivel de gravedad (Crítico, Alto, Medio, Bajo, Informativo)
  • finding_type (opcional): Tipo de hallazgo a buscar
  • start_time (opcional): Hora de inicio en formato ISO (por defecto: hace 7 días)
  • hora_fin (opcional): Hora final en formato ISO (por defecto: ahora)
  • limit (opcional): Máximo de resultados a devolver (por defecto: 100, máx: 1000)

3. Lista de fuentes de datos

Descubre las fuentes de datos de Security Lake disponibles:

{ "tool": "list_data_sources", "arguments": { "include_schema": true }

Parámetros:

  • include_schema (opcional): Incluir información detallada del esquema de la tabla (por defecto: false)

4. Descubrir recursos de AWS

Descubra automáticamente los recursos de Security Lake en su cuenta de AWS:

{ "tool": "discover_aws_resources", "arguments": {} }

Esta herramienta escanea tu cuenta de AWS para encontrar:

  • Buckets S3 y bases de datos de Security Lake
  • Ubicaciones de salida de Athena
  • Recomendaciones de configuración
  • Validación de la configuración

5. Búsqueda de seguridad universal

Búsqueda inteligente en todas las fuentes de datos disponibles de Security Lake:

{"tool": "universal_security_search", "arguments": {"query_type": "hallazgos", "filtros": { "severity": "High", "start_time": "2024-01-15T00:00:00Z", "end_time": "2024-01-15T23:59:59Z" }, "limit": 50 } }

Tipos de consulta:

  • hallazgos: Buscar hallazgos de seguridad (GuardDuty, Security Hub)
  • red: Buscar actividad de red (VPC Flow, DNS, Route53)
  • api_calls: Buscar actividad de API (CloudTrail)
  • ip_search: Búsqueda por dirección IP en todas las fuentes

Características principales:

  • Se adapta automáticamente a las fuentes de datos disponibles
  • Compatible con los esquemas OCSF 1.0 y 2.0
  • Fallback inteligente (por ejemplo, Security Hub para datos GuardDuty)
  • Formato de resultados unificado para diferentes fuentes

6. Conexión de prueba

Verifique la conectividad con los servicios de AWS:

{ "herramienta": "test_connection", "arguments": {} }

Formato de respuesta

Todas las herramientas devuelven respuestas en un formato coherente:

{ "éxito": true, "error": null, "resultados": [...], "metadata": { "query_info": {...}, "summary": {...} }, "count": 10 }

Ejemplo de respuesta - Búsqueda IP

{ "success": true, "results": [ { "timestamp": "2024-01-15T10:30:00Z", "event_type": "Network Activity", "severity": "Medium", "ip_context": { "role": "source", "direction": "outbound" }, "network_info": { "source_ip": "192.168.1.100", "destination_ip": "203.0.113.45", "source_port": 3456, "destination_port": 443 }, "aws_context": { "account_id": "123456789012", "region": "us-east-1" }, "product_info": { "name": "VPC Flow Logs", "vendor": "AWS" } } ], "metadata": { "summary": { "total_events": 1, "most_common_event_type": "Network Activity", "highest_severity": "Medium" } }, "count": 1 }

Desarrollo

Configuración del entorno de desarrollo

# Clonar el repositorio git clone <repository-url> cd amazon-security-lake-mcp # Instalar dependencias de desarrollo pip install -e ".[dev]" # Instalar ganchos pre-commit pre-commit install

Ejecutar pruebas

# Ejecutar todas las pruebas pytest # Ejecutar con cobertura pytest --cov=asl_mcp_server --cov-report=html # Ejecutar categorías de pruebas específicas pytest -m unit # Sólo pruebas unitarias pytest -m integration # Sólo pruebas de integración pytest -m slow # Pruebas de larga duración

Calidad del código

# Formatear código negro src tests Pelar código ruff src tests Comprobación de tipo mypy src

Consideraciones de seguridad

Validación de entrada

  • Todas las direcciones IP se validan antes de la consulta
  • Los parámetros de consulta se desinfectan para evitar ataques de inyección
  • Los intervalos de tiempo se validan para que sean razonables

Control de acceso

  • Utiliza AWS IAM para la autenticación y autorización
  • Admite patrones de acceso con privilegios mínimos
  • Los resultados de las consultas se limitan para evitar el agotamiento de los recursos

Protección de datos

  • No se registran datos confidenciales
  • Los resultados de las consultas se pueden filtrar para eliminar información confidencial
  • Admite el cifrado en tránsito y en reposo a través de los servicios de AWS

Solución de problemas

Problemas comunes

1. Comando no encontrado (error ENOENT)

Error: spawn asl-mcp-server ENOENT

Solución: Claude Desktop no puede encontrar el comando asl-mcp-server. Utilice una de estas soluciones:

Arreglo A: Utilizar la ruta de comandos completa

# Encontrar la ubicación del comando que asl-mcp-server # Salida: /Usuarios/nombredeusuario/.local/bin/asl-mcp-server # Actualice la configuración de Claude Desktop con la ruta completa { "mcpServers": { "amazon-security-lake": { "command": "/Usuarios/nombredeusuario/.local/bin/asl-mcp-server", "env": { ... } } } }

Arreglo B: Usar módulo Python (más fiable)

{ "mcpServers": { "amazon-security-lake": { "command": "/opt/homebrew/bin/python3", "args": ["-m", "asl_mcp_server.server"], "cwd": "/ruta/para/amazon-seguridad-lago-mcp", "env": {"PYTHONPATH": "/path/to/amazon-security-lake-mcp/src" } } }

2. Credenciales de AWS no encontradas

Error: Credenciales de AWS no configuradas

Solución: Configure las credenciales de AWS utilizando uno de estos métodos:

  • Configurar la variable de entorno AWS_PROFILE
  • Configurar el archivo ~/.aws/credentials
  • Utilizar roles IAM (recomendado para EC2/Lambda)
  • Establecer las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY

2. Fallo en la detección automática

Error: athena_output_location no pudo ser auto-descubierto y no fue proporcionado

Solución: Active la configuración manual o cree los recursos necesarios:

Opción A: Utilice la configuración manual

export ASL_MCP_AUTO_DISCOVER_RESOURCES="false" export ASL_MCP_ATHENA_OUTPUT_LOCATION="s3://tu-bucket/athena-results/" export ASL_MCP_SECURITY_LAKE_DATABASE="amazon_security_lake_glue_db"

Opción B: Crear un bucket para los resultados de Athena

# Crear un bucket para los resultados de Athena aws s3 mb s3://aws-athena-query-results-$(aws sts get-caller-identity --query Account --output text)-us-east-1

Opción C: Ejecutar la herramienta de descubrimientoUtilice la herramienta discover_aws_resources para ver lo que falta y obtener recomendaciones específicas.

3. Base de datos de Security Lake no encontrada

Error: La base de datos 'amazon_security_lake_glue_db' no está disponible

Solución:

  • Verifique que Security Lake está habilitado en su cuenta de AWS
  • Compruebe que el nombre de la base de datos es correcto
  • Asegúrese de que tiene permisos para acceder al catálogo Glue

4. Tiempo de espera de la consulta

Error: Tiempo de espera de la consulta tras 300 segundos

Solución:

  • Aumentar ASL_MCP_QUERY_TIMEOUT_SECONDS
  • Utilice intervalos de tiempo más específicos para reducir la exploración de datos
  • Añada cláusulas WHERE adecuadas para filtrar los resultados

Optimización del rendimiento

  1. Utilice intervalos de tiempo específicos: Especifique siempre start_time y end_time para aprovechar la partición
  2. Limite losresultados: Utilice valores límite apropiados para evitar conjuntos de resultados grandes
  3. Filtrar por fuente: Especifique el parámetro de fuentes para consultar sólo las tablas pertinentes
  4. Controlar los costes: Las consultas de gran tamaño pueden generar gastos significativos para Athena

Depuración

Habilitar el registro de depuración:

export ASL_MCP_LOG_LEVEL=DEBUG

Esto proporcionará información detallada sobre:

  • Construcción y ejecución de consultas
  • Llamadas a la API de AWS
  • Procesamiento de resultados
  • Detalles de errores

Contribución

  1. Crear una bifurcación del repositorio
  2. Cree una rama de características(git checkout -b feature/amazing-feature)
  3. Realiza tus cambios
  4. Añade pruebas para la nueva funcionalidad
  5. Asegúrese de que todas las pruebas pasan(pytest)
  6. Confirmar los cambios(git commit -m 'Add amazing feature')
  7. Empuja a la rama(git push origin feature/amazing-feature)
  8. Abrir una Pull Request

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

Soporte

Para cuestiones y preguntas:

  • Abrir una incidencia en GitHub
  • Consulte la sección de solución de problemas anterior
  • Revise la documentación de AWS Security Lake
  • Consulte la especificación OCSF

Proyectos relacionados

Registro de cambios

v0.1.0 (Versión inicial)

  • Funcionalidad de búsqueda de direcciones IP
  • Búsqueda de hallazgos GuardDuty
  • Búsqueda de fuentes de datos
  • Validación del esquema OCSF
  • Completo conjunto de pruebas
  • Integración en AWS con gestión adecuada de errores

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
WeatherXM PROUna implementación de servidor MCP que expone las APIs WeatherXM PRO como herramientas MCP, permitie...Ver
UyuniModelo de servidor de protocolo de contexto para Uyuni Server API.Ver
PayPalEl kit de herramientas de agente de PayPal permite que los marcos de agentes más conocidos, como el...Ver
Servidor CISA M365 MCPUn servidor de Protocolo de Contexto de Modelo (MCP) que implementa los controles de seguridad CISA...Ver
Premios Vuelos Público MCPEste ejemplo le permite implementar un servidor MCP remoto que no requiere autenticación en Cloudfla...Ver
Servidor MCP CData ZuoraServidor de protocolo de contexto de modelo (MCP) de CData para ZuoraVer