AWS Security MCP
Um servidor MCP que permite que assistentes de IA interajam com os serviços de segurança da AWS.
Documentação
AWS Security MCP
Um servidor Model Context Protocol (MCP) que permite que assistentes de IA realizem análises abrangentes de segurança da AWS por meio de consultas em linguagem natural.
Visão Geral
O AWS Security MCP conecta assistentes de IA como o Claude aos serviços de segurança da AWS, permitindo análise de infraestrutura em tempo real por meio de consultas conversacionais. O sistema descobre e analisa automaticamente recursos em várias contas da AWS, fornecendo insights de segurança sem exigir conhecimento profundo da CLI da AWS.
Principais Capacidades
- Descoberta entre contas: Detecção automática e acesso a contas da AWS Organization
- Interface em linguagem natural: Consulte recursos da AWS usando inglês simples
- Análise de segurança: Descobertas integradas do GuardDuty, SecurityHub e Access Analyzer
- Mapeamento de infraestrutura: Topologia de rede, modelagem de ameaças, revisão de segurança e análise de raio de explosão
- Análise de logs: Análise baseada em Athena de CloudTrail, VPC Flow Logs e eventos de segurança
Pré-requisitos
- Python: 3.11 ou superior
- Gerenciador de pacotes: uv
- Conta AWS: Com permissões IAM apropriadas
- Cliente MCP: Claude Desktop, Cline ou cliente compatível
Requisitos da AWS
As credenciais AWS do servidor MCP devem ter as seguintes permissões:
Permissões principais do 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": "*"
}
]
}
Permissões de integração Athena
Para capacidades avançadas de análise de logs, permissões adicionais são necessárias:
{
"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 gerenciadas AWS necessárias
Política SecurityAudit (Obrigatória)
Anexe a política gerenciada SecurityAudit da AWS ao usuário IAM ou função IAM do seu servidor MCP:
Policy ARN: arn:aws:iam::aws:policy/SecurityAudit
Esta política fornece acesso somente leitura abrangente aos serviços de segurança da AWS e é essencial para a funcionalidade do AWS Security MCP. Ela inclui permissões para:
- IAM: Usuários, funções, políticas, análise de acesso
- EC2: Grupos de segurança, instâncias, configurações de VPC
- S3: Políticas de bucket, ACLs, configurações de acesso público
- GuardDuty: Descobertas, detectores, inteligência de ameaças
- SecurityHub: Padrões de segurança, descobertas de conformidade
- Access Analyzer: Análise de acesso IAM e descobertas
- Lambda: Configurações e permissões de funções
- CloudFront: Configurações de segurança de distribuições
- Route53: Configurações de DNS e verificações de integridade
- WAF: Regras e configurações de Web ACL
- Todos os outros serviços AWS relacionados à segurança
Políticas gerenciadas opcionais
- AthenaFullAccess:
arn:aws:iam::aws:policy/AmazonAthenaFullAccess(para análise simplificada de logs Athena)
Notas importantes
- É melhor usar este servidor MCP com o Claude Desktop Pro/Max Plan ou qualquer outra plataforma que permita lidar com tamanho de token maior que 100.000
- Substitua os nomes de bucket nas permissões S3 pelos nomes reais dos buckets de CloudTrail, VPC Flow Logs e resultados Athena
- A política SecurityAudit é obrigatória para a funcionalidade básica do AWS Security MCP
- As permissões de integração Athena são opcionais e necessárias apenas para recursos avançados de análise de logs
- Todas as permissões seguem o princípio do menor privilégio com acesso somente leitura quando possível
Início rápido ~ configuração local
- Atualize o config.yml
aws:
region: "us-east-1"
profile: {profileName}
.
.
.
- Configure suas credenciais AWS via ~ configuração local
- aws sso
$ aws configure sso SSO Session Name - email@example.com URL - https://yourDomain.awsapps.com/start/# Region - us-east-1 - variáveis de ambiente
export AWS_ACCESS_KEY_ID= export export AWS_SECRET_ACCESS_KEY= export export AWS_SESSION_TOKEN=
-
Execute os seguintes comandos
git clone https://github.com/groovyBugify/aws-security-mcp.git uv venv source .venv/bin/activate uv pip install -r requirements.txt -
Configure o 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"] } } }
Início rápido ~ como serviço AWS ECS
- Faça login no AWS ECR
$ aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {accountID}.dkr.ecr.{region}.amazonaws.com
- Crie o repositório ECR
$ aws ecr create-repository --repository-name aws-security-mcp --region {region}
- Construa a imagem 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
-
Implantando como serviço AWS ECS
- Crie uma definição de tarefa com CPU "2048" e memória "4096", isso é opcional, você pode escolher qualquer valor
- Configure a definição de tarefa para fazer mapeamento de porta para a porta 8000
- Crie a função de tarefa ECS com as seguintes permissões
- Política IAM SecurityAudit
- Acesso Athena (política mencionada acima)
- Permissões STS Assume Role para assumir funções entre contas
- Crie a função de execução de tarefa ECS com permissões básicas
- Quando a definição de tarefa estiver concluída.
- Crie um serviço AWS ECS usando a definição de tarefa
- Você também pode configurar o Load Balancer
- Certifique-se de desativar a sessão de aderência (Sticky Sessions) nos Load Balancers
- Registre o grupo de destino e os listeners do ALB para a porta 80/443 -> Serviço ECS (8000)
- Registre o ALB para o domínio Route53.
-
Configure o 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"] } } }
Configuração
Configuração YAML
Edite config.yaml na raiz do projeto de acordo com suas necessidades:
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
Substituição por variáveis de ambiente
As variáveis de ambiente têm precedência sobre a configuração YAML:
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
export AWS_DEFAULT_REGION=eu-west-1
Exemplos de uso
Consultas básicas de infraestrutura
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álise de segurança
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.
Operações entre contas
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"
Arquitetura
Acesso entre contas
O AWS Security MCP implementa um modelo hub-and-spoke para acesso a múltiplas contas:
- Descoberta: Usa
organizations:ListAccountspara identificar contas de destino - Assunção de função: Assume a função
aws-security-mcp-cross-account-accessem cada conta - Gerenciamento de sessão: Mantém credenciais temporárias com atualização automática
- Fallback: Usa a cadeia de credenciais padrão para contas não organizacionais
Configuração necessária da função IAM
Crie esta função em cada conta AWS de destino:
Nome da função: aws-security-mcp-cross-account-access
Política de confiança:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::YOUR-MASTER-ACCOUNT-ID:root"
},
"Action": "sts:AssumeRole"
}
]
}
Permissões: Anexe a política gerenciada AWS arn:aws:iam::aws:policy/SecurityAudit
Integração Athena
Visão geral
O AWS Security MCP integra-se ao Amazon Athena para fornecer capacidades avançadas de análise de logs. Este recurso requer tabelas Athena pré-existentes contendo seus logs relevantes para segurança.
Tipos de log suportados
Embora o servidor MCP possa analisar qualquer fonte de log por meio do Athena, as seguintes fontes são recomendadas para fornecer metadados de segurança abrangentes ao seu cliente MCP. Para cobertura de segurança ideal, recomendamos implementar pelo menos CloudTrail e VPC Flow Logs:
Fontes de log recomendadas:
- AWS CloudTrail: Auditoria de chamadas de API e rastreamento de atividade do usuário
- VPC Flow Logs: Análise de padrões de tráfego de rede
- CloudFront Logs: Análise de solicitações e respostas de CDN
- ALB Access Logs: Insights de tráfego do balanceador de carga de aplicação
- WAF Logs: Eventos e bloqueios do firewall de aplicação web (Cloudflare/AWS WAF/Akamai)
- AWS Shield Logs: Eventos de proteção e mitigação de DDoS
Flexibilidade para fontes de log personalizadas
O servidor MCP suporta consultas a qualquer tipo de log armazenado no S3, dando a você flexibilidade total para analisar fontes de log personalizadas ou adicionais. Para habilitar a análise de qualquer fonte de log, garanta:
- Armazenamento S3: Seus logs estão armazenados em um bucket S3
- Tabela Athena: Existe uma tabela Athena configurada corretamente para o formato de log
- Permissões IAM: O servidor MCP tem permissões
s3:GetObjectes3:ListBucketpara o bucket de destino
Essa arquitetura permite estender a análise de segurança além dos logs padrão da AWS para incluir logs de aplicação, eventos de segurança personalizados ou saídas de ferramentas de segurança de terceiros.
Capacidades de consulta
Depois que as tabelas estiverem configuradas, você pode realizar consultas avançadas:
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"
Pré-requisitos de configuração
- Buckets S3: CloudTrail e VPC Flow Logs devem ser armazenados no S3
- Workgroup Athena: Configure um workgroup apropriado com localização de resultados
- Particionamento: Habilite a projeção de partição para desempenho
- Permissões IAM: Conceda permissões de consulta Athena à função de execução do MCP
Serviços AWS suportados
Atualmente disponíveis
| Serviço | Capacidades |
|---|---|
| IAM | Usuários, funções, políticas, chaves de acesso, análise de permissões |
| EC2 | Instâncias, grupos de segurança, VPCs, sub-redes, interfaces de rede |
| S3 | Buckets, permissões, análise de acesso público |
| GuardDuty | Descobertas, detectores, inteligência de ameaças |
| SecurityHub | Descobertas, padrões de conformidade, pontuações de segurança |
| Lambda | Funções, permissões, configurações, gatilhos |
| CloudFront | Distribuições, origens, comportamentos, políticas de segurança |
| ELB/ALB/NLB | Balanceadores de carga, grupos de destino, listeners, verificações de integridade |
| Route53 | Zonas hospedadas, registros DNS, verificações de integridade |
| WAF | Web ACLs, regras, limitação de taxa |
| Shield | Status e métricas de proteção DDoS |
| Access Analyzer | Análise de acesso IAM e descobertas |
| ECS/ECR | Serviços de contêiner, repositórios, varredura de imagens |
| Organizations | Estrutura de contas, SCPs, unidades organizacionais |
| Athena | Análise de logs, correlação de eventos de segurança |
Adições planejadas
- Autenticação OAuth
- Análise de conformidade do AWS Config
- Integração AWS Security Hub CSPM
- Integração CSPM externa
Configuração avançada
Implantação em produção
Para ambientes de produção, use a seguinte configuração:
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
Implantação 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
Configuração do Load Balancer
- Verificação de integridade:
GET /health - Endpoint SSE:
/sse - Tempo limite: mínimo de 60 segundos
- Sticky Sessions: Não necessário
Solução de problemas
Problemas comuns
Falha na descoberta de ferramentas
# 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
Acesso entre contas negado
# 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 desempenho
# Reduce concurrent operations
cross_account:
max_concurrent_assumptions: 3
# Enable minimal logging
server:
minimal_logging: true
Modo de depuração
Habilite o registro detalhado para solução de problemas:
export MCP_LOG_LEVEL=debug
export MCP_STARTUP_QUIET=false
python3 aws_security_mcp/main.py sse
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
Suporte
- Problemas: GitHub Issues
- Documentação: Project Wiki
- Problemas de segurança: Por favor, relate em particular aos mantenedores