Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Servidor MCP do MongoDB

Práticas recomendadas de segurança de servidor do MongoDB MCP

Esta página descreve as melhores práticas de segurança para o servidor MongoDB MCP.

A --readOnly opção MCP Server ativa o modo somente leitura. --readOnly restringe o Servidor MCP a executar somente ferramentas que executam operações de leitura, conexão e metadados.

Por padrão, o modo somente leitura não está habilitado e o Servidor MCP permite operações de gravação em cluster. Para melhorar a segurança, habilite o modo somente leitura do servidor MCP e use um usuário de banco de dados somente leitura para se conectar aos clusters.

O modo somente leitura evita modificações acidentais ou maliciosas de dados realizadas com o Servidor MCP.

Para habilitar o modo somente leitura, inclua --readOnly no arquivo de configuração JSON do aplicação cliente MCP ou na linha de comando ou defina a variável de ambiente do sistema operacional MDB_MCP_READ_ONLY como true. As seções a seguir mostram exemplos de cada método.

O exemplo a seguir mostra --readOnly no arquivo de configuração JSON do cliente MCP para o aplicação cliente Execution Desktop :

{
"mcpServers": {
"MongoDB": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server@latest",
"--connectionString",
"mongodb://localhost:27017/myDatabase",
"--readOnly"
]
}
}
}

Para obter outros exemplo de arquivos de configuração JSON do cliente ,consulte Configurar o servidor MCP.

O exemplo seguinte define --readOnly com o comando npx:

npx -y mongodb-mcp-server@latest \
--connectionString "mongodb://localhost:27017/myDatabase" \
--readOnly

Use variáveis de ambiente para passar segredos e connection strings para o servidor MCP.

As variáveis de ambiente são mais seguras porque os argumentos da linha de comando podem ser rastreados, armazenados em cache e aparecem em locais diferentes no computador.

O exemplo a seguir define a variável de ambiente MDB_MCP_READ_ONLY como true:

"MongoDB": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mongodb-mcp-server@latest",
],
"env": {
"MDB_MCP_READ_ONLY": true
}
}

Para obter mais informações sobre variáveis de ambiente, consulte Definição de variáveis de ambiente do servidor MCP.

Para uma implementação segura, use o acesso ao banco de dados somente leitura com o servidor MCP:

  • Crie usuários dedicados do banco de dados somente leitura para conexões do servidor MCP.

  • Utilize a função read do banco de dados ou crie uma função personalizada somente para leitura para os usuários do banco de dados .

  • Nunca use credenciais de banco de dados write com o servidor MCP.

Casos de uso para acesso ao banco de dados somente leitura:

  • Análise de dados: consulte e analise dados de produção sem risco de modificação.

  • Relatórios: gere relatórios a partir de dados em tempo real.

  • Monitoramento: examine as métricas do banco de dados e os indicadores de desempenho.

  • Suporte ao desenvolvimento: permita que os desenvolvedores consultem os dados de produção para fins de depuração sem permitir o acesso de gravação.

Além disso, use a opção do servidor MCP --readOnly para garantir o acesso aos dados somente leitura. Para obter detalhes, consulte a seção anterior Modo somente leitura do servidor MCP.

O acesso ao banco de dados somente leitura é recomendado para produção. Mas considere o acesso de escrita limitado para os seguintes casos de uso:

  • Ambientes de desenvolvimento e preparação.

  • Execute tarefas administrativas com a autorização correta .

  • Clusters de teste isolados com dados não críticos.

Você pode distribuir o servidor MCP local ou remotamente.

Em um servidor MCP local, o servidor MCP e o aplicação cliente são executados no mesmo computador.

Um servidor MCP local permite o controle sobre o ambiente de instalação:

  • Configuração e dependências: você gerencia as dependências de software do Servidor MCP. Para definir os parâmetros do servidor MCP e as conexões do banco de dados , edite arquivos no computador local.

  • Segurança de credenciais: informações confidenciais para chaves API e connection strings são armazenadas localmente em arquivos de configuração ou variáveis de ambiente. Você protege as credenciais.

  • Atualizações manuais de software: quando uma nova versão do MCP Server está disponível, os usuários podem baixar e instalar o software MCP Server. Isso pode fazer com que os usuários executem versões diferentes do MCP Server.

Implemente um servidor MCP local para os seguintes cenários:

  • Exigem configuração fácil para começar a usar o Servidor MCP em seu computador.

  • Gerencie sua própria configuração e atualizações.

Os protocolos de transporte MCP permitem a comunicação de mensagens entre o aplicação cliente e o servidor MCP. Para um servidor MCP local, use um dos seguintes protocolos de transporte:

  • Stdio (entrada/saída padrão): o aplicação cliente inicia o servidor MCP como um processo filho e se comunica usando pipes padrão do sistema operacional (stdin stdoute). O MongoDB recomenda o protocolo de transporte Stdio para sistemas locais.

  • Streamable HTTP: o servidor MCP inicia um servidor localhost no. O cliente se comunica com o servidor MCP usando solicitações HTTP Streamable, que criam uma sessão persistente. Um ID de sessão exclusivo é incluído em um cabeçalho de mensagem para manter o estado e o contexto da interação.

Aviso

Com o Streamable HTTP, o servidor MCP é vinculado a localhost (127.0.0.1) por padrão. Isso garante que o servidor MCP aceite somente conexões originadas no mesmo computador.

A vinculação ao 0.0.0.0 expõe o servidor MCP a toda a rede local, o que permite que outros dispositivos na mesma rede acessem potencialmente o servidor MCP. Isso é um risco à segurança e pode permitir o acesso não autorizado ao contexto do seu banco de dados . Se você precisar expor o servidor MCP fora localhost do, implemente a autenticação de segurança descrita em Como proteger conexões com o servidor MCP.

O Stdio cria um link direto entre o aplicação cliente e o servidor MCP. O Stdio é melhor se apenas um aplicação se comunicar com o servidor MCP, pois o aplicação e o servidor MCP estão intimamente vinculados. Ao usar o Stdio, o servidor MCP deve ser executado no mesmo computador que o aplicação cliente .

O Streamable HTTP é flexível e funciona como um servidor privado no seu computador. Vários clientes podem se conectar ao servidor MCP. O Streamable HTTP é fácil de testar. Ao contrário do Stdio, o Streamable HTTP também permite implantar remotamente e implantar localmente o servidor MCP.

Em um sistema remoto do Servidor MCP, o Servidor MCP é executado em um computador na nuvem ou em um servidor local.

Os aplicativos do cliente se conectam ao Servidor MCP pela rede e usam o Streamable HTTP. Isso fornece um ambiente compartilhado central acessível a vários usuários, sistemas automatizados, aplicativos e agentes de IA.

Considere os seguintes pontos para sistemas remotos do Servidor MCP:

  • A implementação remota tem riscos adicionais de segurança e requer uma configuração segura.

  • No mínimo, você precisa configurar o isolamento da rede, a autenticação no Servidor MCP e configurar o gerenciamento de segredos na nuvem ou no local.

A comunicação em um sistema remoto do Servidor MCP normalmente usa Streamable HTTP. Considere os seguintes pontos para Streamable HTTP:

  • Mantenha o Servidor MCP vinculado a localhost (127.0.0.1) para conexões, que é o padrão.

  • A vinculação ao localhost exige que os administradores adicionem um proxy reverso na frente do servidor MCP. Por exemplo, use um proxy reverso Nginx.

  • O Servidor MCP depende do proxy reverso para interromper o tráfego malicioso antes que o tráfego chegue ao Servidor MCP.

  • Gerenciamento central: políticas de segurança, registros, controle de versão e controle de acesso são gerenciados em um só local.

  • Automação de suporte: PipelinesCI/CD, frameworks de testes automatizados e outros agentes podem operar como clientes para fluxos de trabalho automatizados.

  • Hardware adicional: requer servidor dedicado e infraestrutura de rede.

  • Segurança complexa: requer segurança de rede, autenticação, autorização e gerenciamento de certificados TLS.

  • ponto único de falha: se o servidor remoto falhar, isso afetará todos os usuários. Considere implementar alta disponibilidade para ambientes críticos.

Em todos os sistemas MCP, a autenticação no Servidor MCP é executada separadamente da autenticação para o serviço ao qual o Servidor MCP fornece acesso. O Servidor MongoDB MCP fornece acesso configurado estaticamente às instâncias do MongoDB que o Servidor MCP protege.

O Servidor MCP não oferece funcionalidade de autenticação ou autorização de entrada, e você deve configurar a autenticação e a autorização. Isso é especialmente importante para uma implantação remota do Servidor MCP, pois o Servidor MCP está disponível em uma rede.

Todas as conexões de entrada com o servidor do MCP devem ser protegidas, caso contrário, o banco de dados será exposto.

As conexões devem ser protegidas mesmo que a conexão entre o Servidor MCP e o banco de dados seja totalmente segura, conforme descrito nas seções a seguir. Isso ocorre porque o servidor MCP fornece um ponto de conexão separado .

A proteção de conexões de entrada para o Servidor MCP requer um serviço externo que opere em paralelo com o Servidor MCP. Isso normalmente requer um proxy reverso para impor controles de acesso para conexões de entrada. O proxy mapeia os direitos de acesso da solicitação recebida para uma instância específica do Servidor MCP, que é configurada estaticamente para se conectar a uma instância do banco de dados MongoDB localmente ao Servidor MCP ou a um cluster Atlas .

Outros métodos para proteger o servidor MCP são possíveis. Para simplificar, as seções a seguir pressupõem o uso de um padrão de proxy.

Na autorização delegada, o usuário delega um subconjunto de sua autoridade a um agente. O MongoDB recomenda o uso do OAuth 2.1 com o servidor MCP.

Para operar com o servidor MCP, uma implantação deve ter um servidor de autorização OAuth (AS) protegido por contas de usuário autenticadas e um proxy na frente do servidor MCP que opere como um servidor de recursos OAuth (RS). O agente opera como um cliente OAuth .

A delegação OAuth opera da seguinte forma:

  1. O agente solicita acesso ao servidor MCP. O servidor MCP é protegido por um proxy.

  2. O proxy envia o agente para o AS, que inicia uma solicitação de autorização

  3. O usuário faz login no AS e autoriza o agente a acessar o RS, que é o proxy que protege o servidor MCP.

  4. O agente recebe um token de acesso para acessar o RS.

  5. O agente usa o token de acesso para chamar o servidor MCP por meio do proxy.

  6. O proxy valida o token de acesso e permite a chamada para o servidor MCP.

  7. O Servidor MCP recebe a solicitação de proxy e executa o comando no banco de dados por meio da conexão segura configurada estaticamente.

O servidor MCP e o banco de dados nunca leem o token de acesso. O proxy é confiável para proteger o servidor MCP. Ignorar o proxy arrisca acessar o Servidor MCP e os bancos de dados que o Servidor MCP pode acessar.

O formato do token é oculto. OsJWTs são um formato comum que permite ao proxy verificar de forma independente o token emitido pelo AS.

A autenticação direta não é recomendada.

Com a autenticação direta, o agente fornece credenciais para o proxy. O proxy autentica as credenciais. As credenciais podem ser uma chave de API ou outra credencial que identifique o agente. O padrão é simples, mas tem os seguintes problemas:

  • Somente o agente é identificado, não o usuário para o qual o agente está agindo.

  • Não há um método para auditar quem está realizando qual ação por meio do servidor MCP.

  • O acesso geralmente é controlado centralmente para todos os usuários ou diretamente no proxy.

As seções a seguir descrevem antipadrão que você não deve usar.

Não use a representação de usuário.

Com a representação do usuário, o usuário fornece suas credenciais diretamente ao agente. O agente envia as credenciais ao proxy para autenticação. A representação do usuário tem os seguintes problemas:

  • Somente o usuário é identificado. O fato de o agente agir em nome do usuário é oculto.

  • As credenciais do usuário são vazadas para sistemas intermediários. Isso coloca as contas de usuário em risco.

  • As ações que o usuário pode executar são permitidas para o agente, e a liberação limitada de funções é impossível.

  • A desconexão de um agente exige a rotação das credenciais do usuário, o que interrompe as contas e os sistemas do usuário.

  • As credenciais não phishable e não repetíveis não podem operar.

Não use autenticação de passagem.

Na autenticação de passagem, o agente obtém e passa credenciais para acessar o banco de dados para o proxy. O proxy valida as credenciais e as passa para o servidor MCP. O Servidor MCP utiliza as credenciais para se conectar ao banco de dados. A autenticação de passagem tem os seguintes problemas:

  • Somente credenciais copiáveis e reproduzíveis podem operar, o que limita as conexões a opções de baixa segurança.

  • A cadeia de conexão está ocultada do sistema.

  • Qualquer um pode potencialmente omitir a próxima parte da cadeia.

O método que o Servidor MCP usa para acessar com segurança o banco de dados é separado do método usado para proteger o acesso ao Servidor MCP. As seções a seguir descrevem a segurança do banco de dados e da rede.

O servidor MCP suporta os seguintes métodos de autenticação do banco de dados :

  • Autenticação empresarial com certificados LDAP, X.509, OIDC e Kerberos.

  • Autenticação padrão do SCRAM-SHA-256 para fornecer autenticação de senha forte.

  • Autenticação de certificadomTLS para contas de serviço e comunicação entre clusters.

O banco de dados MongoDB suporta os seguintes métodos de autorização :

  • RBAC para limitar o acesso ao banco de dados .

  • Permissões de banco de dados granulares para limitar o acesso a bancos de dados específicos, collections individuais e operações como leitura, escrita e ações administrativas.

  • Funções de banco de dados personalizadas para equipes. Por exemplo, acesso somente leitura para equipe de analítica e acesso de leitura e gravação para equipe de operações.

  • Segurança adicional da collection para limitar o acesso à collection.

Recomendações para isolamento de rede:

  • Implemente clusters em um VPC privado ou VNet sem acesso direto à Internet.

  • Conexões seguras à rede privada na nuvem com emparelhamento de VPC e endpoints privados.

  • Restrinja o acesso ao banco de dados a endereços IP ou blocos CIDR específicos.

Recomendações para configuração de firewall :

  • Restringir o acesso à porta 27017 do servidor MongoDB somente a servidores de aplicação autorizados.

  • Configure as regras do firewall da nuvem com grupos de segurança e uma ACL para o tráfego de rede de entrada e saída.

  • Desative as portas não criptografadas e aplique TLS 1.2+ a todas as conexões.

Voltar

Proxy