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

License: MIT Python 3.11+

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

  1. Atualize o config.yml
aws:
  region: "us-east-1"
  profile: {profileName}
  .
  .
  .
  1. 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=
    
  1. 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
    
  2. 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

  1. 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
  1. Crie o repositório ECR
$ aws ecr create-repository --repository-name aws-security-mcp --region {region}
  1. 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
  1. 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.
  2. 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:

  1. Descoberta: Usa organizations:ListAccounts para identificar contas de destino
  2. Assunção de função: Assume a função aws-security-mcp-cross-account-access em cada conta
  3. Gerenciamento de sessão: Mantém credenciais temporárias com atualização automática
  4. 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:

  1. Armazenamento S3: Seus logs estão armazenados em um bucket S3
  2. Tabela Athena: Existe uma tabela Athena configurada corretamente para o formato de log
  3. Permissões IAM: O servidor MCP tem permissões s3:GetObject e s3:ListBucket para 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

  1. Buckets S3: CloudTrail e VPC Flow Logs devem ser armazenados no S3
  2. Workgroup Athena: Configure um workgroup apropriado com localização de resultados
  3. Particionamento: Habilite a projeção de partição para desempenho
  4. Permissões IAM: Conceda permissões de consulta Athena à função de execução do MCP

Serviços AWS suportados

Atualmente disponíveis

ServiçoCapacidades
IAMUsuários, funções, políticas, chaves de acesso, análise de permissões
EC2Instâncias, grupos de segurança, VPCs, sub-redes, interfaces de rede
S3Buckets, permissões, análise de acesso público
GuardDutyDescobertas, detectores, inteligência de ameaças
SecurityHubDescobertas, padrões de conformidade, pontuações de segurança
LambdaFunções, permissões, configurações, gatilhos
CloudFrontDistribuições, origens, comportamentos, políticas de segurança
ELB/ALB/NLBBalanceadores de carga, grupos de destino, listeners, verificações de integridade
Route53Zonas hospedadas, registros DNS, verificações de integridade
WAFWeb ACLs, regras, limitação de taxa
ShieldStatus e métricas de proteção DDoS
Access AnalyzerAnálise de acesso IAM e descobertas
ECS/ECRServiços de contêiner, repositórios, varredura de imagens
OrganizationsEstrutura de contas, SCPs, unidades organizacionais
AthenaAná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