外部数据连接
连接 PostgreSQL 和 BigQuery,在查询电子表格的同时查询外部数据
概述
外部数据连接让您可以直接在 ModelMonkey 中查询数据库。无需手动导出数据或编写复杂的导入脚本,您可以让 ModelMonkey 从 PostgreSQL 或 BigQuery 数据库中提取数据,并将其与电子表格数据合并使用。
连接建立后,您可以提出如下问题:"将 Google Sheets 中的销售数据与 PostgreSQL 中的客户画像进行对比",或"查找上个月的所有订单,并与数据库中的用户资料进行关联"。
Tip
您的凭据使用 Google Cloud KMS 进行企业级信封加密保护。ModelMonkey 从不以明文形式存储密码。
支持的数据源
ModelMonkey 目前支持两种外部数据源:
PostgreSQL
连接任何可通过互联网访问的 PostgreSQL 数据库,包括自托管 PostgreSQL、Amazon RDS、Google Cloud SQL、Azure Database for PostgreSQL 及其他托管 PostgreSQL 服务。
Google BigQuery
使用服务账号连接 Google BigQuery 数据集,非常适合大规模分析工作负载和数据仓库查询。
两种连接类型均仅支持只读查询,以防止生产数据被意外修改。
创建连接
要创建新的外部数据连接,请按以下步骤操作:
- 从 ModelMonkey 侧边栏打开"外部数据连接"面板
- 点击"新建连接"按钮
- 选择数据源类型(PostgreSQL 或 BigQuery)
- 输入连接详情
- 测试连接以验证其是否正常工作
- 保存连接
设置向导将引导您完成每个步骤,并在保存前验证您的配置。
PostgreSQL 连接设置
要连接 PostgreSQL 数据库,您需要提供以下信息:
必填字段
- 连接名称:用于标识此连接的名称(例如:"生产分析数据库")
- 主机:数据库服务器的主机名或 IP 地址
- 端口:PostgreSQL 端口(默认:5432)
- 数据库:要连接的数据库名称
- 用户名:数据库用户名
- 密码:数据库密码
可选字段
- Schema:使用的默认 schema(默认:"public")
- SSL 模式:SSL 连接的处理方式
- Disable:不使用 SSL(不建议在生产环境中使用)
- Allow:如果可用则使用 SSL
- Prefer:优先尝试 SSL,失败后回退至非 SSL(默认)
- Require:始终使用 SSL
Warning
出于安全考虑,请使用只读数据库用户,并将其访问权限限制在您需要查询的数据表范围内。
Connection Name: Production Analytics
Host: analytics-db.example.com
Port: 5432
Database: analytics
Schema: public
SSL Mode: Require
Username: readonly_userPostgreSQL 配置示例
BigQuery 连接设置
要连接 Google BigQuery,您需要一个具有适当权限的服务账号:
必填字段
- 连接名称:用于标识此连接的名称
- Project ID:您的 Google Cloud 项目 ID(可在 Google Cloud Console 中查看)
- 服务账号 JSON:具有 BigQuery 访问权限的服务账号 JSON 密钥文件
可选字段
- Dataset ID:默认查询的数据集
- Location:数据存储位置(US、EU 或特定区域)
所需 IAM 角色
您的服务账号需要以下权限:
- BigQuery Data Viewer:读取表元数据和数据
- BigQuery Job User:创建并执行查询
- BigQuery Read Session User:通过 Storage API 读取数据
Tip
请为 ModelMonkey 创建专用服务账号,并仅授予上述所列权限。切勿使用个人凭据或权限过宽的服务账号。
创建 BigQuery 服务账号
要为 BigQuery 访问创建服务账号,请按以下步骤操作:
- 前往 Google Cloud Console(console.cloud.google.com)
- 导航至"IAM 和管理" → "服务账号"
- 点击"创建服务账号"
- 输入名称,例如"modelmonkey-readonly"
- 授予以下角色:
- BigQuery Data Viewer
- BigQuery Job User
- BigQuery Read Session User
- 点击"完成"以创建账号
- 点击新建的服务账号,然后切换到"密钥"选项卡
- 点击"添加密钥" → "创建新密钥" → "JSON"
- 下载 JSON 文件并将其上传至 ModelMonkey
请妥善保管此 JSON 文件,它提供了访问您 BigQuery 数据的权限。
Warning
切勿分享您的服务账号 JSON 文件,也不要将其提交到版本控制系统。如密钥泄露,请立即在 Google Cloud Console 中将其删除。
测试连接
在保存连接之前,ModelMonkey 会验证是否能够成功访问您的数据库:
测试内容
- 与主机的网络连通性
- 使用您的凭据进行身份验证
- 查询数据库的权限
测试结果
测试成功后将显示:
- 服务器版本信息
- 可用 schema(PostgreSQL)
- 可访问的数据表数量
如果测试失败,您将看到说明问题原因的具体错误信息。常见问题包括:
- 主机名或端口不正确
- 用户名或密码错误
- 防火墙阻止了连接
- 缺少数据库权限
安全性与凭据管理
ModelMonkey 采用企业级安全措施保护您的数据库凭据:
信封加密
您的凭据使用为每个连接专门生成的数据加密密钥(DEK)进行加密。DEK 本身在存储前由 Google Cloud KMS 加密。这种双层加密方式确保您的凭据永远不会以明文形式存储。
SSRF 防护
ModelMonkey 会屏蔽对私有 IP 地址段、本地回环地址及云元数据端点的连接请求,即使提供了恶意输入也能有效防范潜在安全漏洞。
安全内存处理
解密后的凭据存储在安全内存缓冲区中,使用完毕后自动清除。
只读访问
BigQuery 连接被明确配置为只读模式。对于 PostgreSQL,我们建议使用仅具有 SELECT 权限的数据库用户。
使用连接
连接激活后,您只需用自然语言向 ModelMonkey 提问即可进行查询:
请求示例
- "从我们的 PostgreSQL 数据库中显示收入排名前 10 的客户"
- "将 Google Sheets 中的销售数据与外部数据库中的客户画像进行对比"
- "查找上个月的所有订单,并与用户资料进行关联"
- "分析我们 BigQuery 分析数据中的趋势"
ModelMonkey 将自动完成以下操作:
- 安全连接至您的外部数据库
- 将您的请求转换为 SQL
- 执行查询
- 返回结果并写入您的电子表格
您可以在单个请求中合并来自多个数据源的数据,轻松实现电子表格数据与外部数据库记录的关联查询。
Tip
在请求中通过名称引用连接,例如"从生产分析连接中",可以帮助 ModelMonkey 准确识别要查询的数据库。
管理连接
查看连接
所有连接均显示在"外部数据连接"面板中。每个连接显示以下信息:
- 连接名称
- 提供商类型(PostgreSQL 或 BigQuery)
- 主机或项目信息
- 启用/停用状态
- 创建日期
连接状态
- 启用:该连接可用于查询
- 停用:该连接存在但已被禁用
删除连接
要移除某个连接:
- 点击连接卡片上的菜单图标(三个点)
- 选择"删除"
- 确认删除操作
删除连接将永久移除该连接及其加密凭据,此操作不可撤销。
故障排查
连接测试失败
- 验证主机名是否正确且可公开访问
- 检查防火墙是否已开放数据库端口
- 确认用户名和密码是否正确
- 对于 BigQuery,确保服务账号已具备所需角色
查询返回错误
- 检查数据库用户是否对目标表具有 SELECT 权限
- 确认表名和 schema 名称是否正确
- 对于 BigQuery,确保服务账号可以访问指定的数据集
连接超时
- 您的数据库可能位于防火墙后,阻止了 ModelMonkey 服务器的访问
- 检查云服务提供商是否要求 IP 白名单配置
- 如果无法直接访问,请考虑使用数据库代理或 VPN
"检测到 SSRF 尝试"错误
- 不支持连接到私有 IP 地址或本地回环地址
- 请为数据库使用可公开访问的主机名
- 云托管数据库(RDS、Cloud SQL 等)通常提供公共访问端点
最佳实践
使用专用只读用户
为 ModelMonkey 单独创建一个仅具有 SELECT 权限的数据库用户。这样即使凭据泄露,也能将影响范围降到最低。
启用 SSL/TLS
对于生产环境的 PostgreSQL 连接,始终将 SSL 模式设置为"Require"。BigQuery 连接始终采用加密传输。
限制表访问权限
仅授予 ModelMonkey 需要查询的表和 schema 的访问权限,避免使用超级用户或管理员账号。
使用清晰的连接名称
为连接起一个直观易懂的名称(例如"生产分析数据库"、"预发环境订单库"),便于在请求中准确引用。
定期审查连接
定期检查您的连接列表,删除不再需要的连接。活跃连接越少,安全暴露面越小。