← 返回信息流

dev.to #ai短讯

使用 db-mcp-gateway 为 AI 代理提供安全的数据库访问

dev.to作者:developerz.ai开源AI评分:50/100

db-mcp-gateway 是一个自托管的 Model Context Protocol (MCP) 网关项目,旨在解决 AI 智能体访问生产数据库时的凭证暴露问题。该项目通过隔离凭证、集成企业单点登录(SSO)以及记录完整的审计日志,为平台和安全团队提供了一种安全的解决方案,使 AI 能够准确读取数据生成响应。

介绍

人工智能代理越来越需要从生产数据库中读取数据,以生成准确的响应。在不暴露凭据的情况下提供这种访问权限,对平台和安全团队来说是一个难题。db-mcp-gateway 项目提供了一个自托管的模型上下文协议(Model Context Protocol)网关,它能够隔离凭据、与企业单点登录(SSO)集成,并记录完整的审计轨迹。本文解释了该网关的工作原理、配置方法,以及它为何符合零信任安全架构。

核心安全原则

凭据隔离

网关在内部存储所有数据库密码。AI 代理永远不会收到连接字符串,且任何日志行中都不会包含凭据。数据流向如下:

AI Agent → MCP Protocol → Gateway → Database

网关执行身份验证,然后仅将查询结果转发给代理。这消除了通过开发人员笔记本电脑、CI 流水线或错误消息泄露凭据的风险。

身份与访问控制

身份验证由 Okta、Google Workspace、Entra、Authentik 或 Keycloak 等 SSO 提供商驱动。登录流程在浏览器中进行,因此不需要嵌入式的浏览器。权限以 YAML 文件中的授权形式表达,并与 SSO 系统中定义的组绑定。

grants:
  - group: backend-devs
    databases: [production_postgres]
    actions: [query_read]
    constraints:
      schemas: [public, analytics]
      row_limit: 1000
      require_reason: true

每个授权都可以限制可查询的模式、限制返回的行数,并要求提供原因字段以满足合规报告需求。由于 YAML 文件存储在版本控制系统中,每一次更改都可以通过拉取请求进行审计。

审计轨迹

所有经过网关的请求都会使用以下字段进行记录:

  • 时间戳
  • SSO 用户标识符
  • 使用的组和授权
  • 访问的数据库和模式
  • 查询文本(为节省长度而截断)
  • 原因(如果需要)

这些日志存储在网关容器内的 PostgreSQL 表中,提供了不可变的记录,可用于安全审查或合规性审计。

基于代码的权限配置

权限模型完全基于代码。典型的工作流程如下:

  1. 编辑 config.yaml 以添加或修改授权。
  2. 提交拉取请求。
  3. 审查并合并更改。
  4. 网关重新加载配置,无需停机。

这种方法与 GitOps 实践保持一致,并消除了对带内管理 UI 的需求,从而减少了攻击面。

部署

网关作为单个 Docker 镜像分发。快速启动步骤如下:

# 拉取最新镜像
docker pull ghcr.io/developerz-ai/db-mcp-gateway:1.1.1

# 使用您的配置运行
docker run -p 8080:8080 \
  -v $(pwd)/config.yaml:/app/config.yaml \
  ghcr.io/developerz-ai/db-mcp-gateway:1.1.1

容器使用 PostgreSQL 实例来存储其自身状态和审计日志。它支持 PostgreSQL 和 MongoDB 作为目标数据库;其他引擎在启动时会被拒绝,这简化了安全加固工作。

用例

平台 / SRE 团队

他们可以为 AI 代理授予对生产数据库的只读访问权限,而无需在主机上存储密码。审计轨迹满足了内部合规要求。

后端开发人员

开发人员编写自然语言提示,AI 代理将其转换为安全的 SELECT 语句。由于网关强制执行行限制和模式过滤,从而防止了意外数据泄露。

安全官

通过将每个查询完全归因于 SSO 用户,可以进行详细调查。如果必要,不可变的日志可以导出以供外部审计。

结论

db-mcp-gateway 提供了一种实用方案,使 AI 智能体能够在隐藏凭据、强制执行最小权限原则并提供完整审计日志的同时查询生产数据库。它依赖于标准的单点登录(SSO)提供商和简单的 Docker 部署,非常适合已经采用 GitOps 和零信任安全实践的组织。要开始使用,请克隆代码库并遵循快速入门指南。

译文已达到本站中文翻译的字数上限,剩余内容请查看原文。

阅读原文