Oracle Database Tools MCP Server 是 OCI 提供的托管、多租户 MCP 服务,让外部 AI 应用通过 Streamable HTTP 访问 Oracle AI Database。它不要求团队自行部署中间件,而是复用 Database Tools Connection、OCI IAM Identity Domains、Vault 和应用角色来管理身份、数据库连接、工具和秘密。
服务支持内置数据库工具,也允许用 SQL 和 PL/SQL 创建自定义工具,还可以接入 Generative AI 的自然语言转 SQL 能力。能力越强,授权模型越需要精确设计。MCP 用户能否调用服务、服务能否使用某条连接、连接以谁的身份进入数据库,是三个不同问题。
安全部署不能只给一个宽泛 compartment policy。优先使用资源级范围,把 MCP Server、Database Tools Connection、Vault secret、数据库与可选 Object Storage bucket 分别限定到具体 OCID;只为确实需要的身份和功能授予 use、read 或 manage。
Database Tools MCP Server 运行在 OCI Database Tools 服务中,客户端通过远程 Streamable HTTP 调用。生命周期、伸缩和服务端执行由 OCI 托管,适合企业共享与集中治理。
SQLcl MCP Server 通常由桌面 MCP 客户端启动本地进程,使用本机保存的 SQLcl 连接。两者都能操作 Oracle Database,但部署位置、身份来源、传输和策略模型不同。
托管服务不会自动比本地进程安全。它减少自建中间件,却增加 IAM、Identity Domain、资源 principal、Vault、远程端点和多租户配置,需要按 OCI 权限模型管理。
官方概览说明,服务支持 Database Tools Connections 能连接的 Oracle Database Cloud Services,底层数据库版本为 Oracle Database 19c 或 Oracle AI Database 26ai。
部署前先确认目标数据库、网络路径和认证方式受 Database Tools Connection 支持。名称中包含 Oracle AI Database 不表示任意自建 Oracle 版本都自动兼容。
开发、测试和生产建立不同 Connection 与 MCP Server,避免同一工具集跨环境使用共享凭据。
第一,需要已经运行的 Oracle AI Database,以及为它创建的 Database Tools Connection。第二,需要 OCI Vault 和加密密钥,用于保存数据库密码、证书等连接秘密。
第三,需要 IAM Identity Domain,并拥有管理 MCP 资源所需权限。第四,需要在目标 compartment 创建和管理 MCP Server、Toolset 与 Connection 的 IAM policy。
先画出资源关系和所有者,再创建策略。边做边授予 manage all-resources 会留下难以收回的过度权限。
托管服务通过 Streamable HTTP 暴露远程 MCP 端点。客户端需要服务地址并完成 OAuth 2.0 或 Personal Access Token 认证。
OAuth 更适合交互式用户和企业身份治理,可以应用登录、令牌过期、组成员与条件访问。PAT 适合明确的自动化客户端,但应有短生命周期、清晰所有者和安全存储。
不要把 PAT 写进仓库、客户端截图或共享配置。客户端被撤销后还要检查活动令牌与会话,而不是只删除本地服务器条目。
MCP Server 的工具通过分配给 Identity Domain 用户和组的应用角色授权。能调用服务不等于能调用所有 Toolset,每个角色只应覆盖任务所需工具。
例如报告用户只使用 SQL Report 和只读查询,迁移提案角色可以使用特定自定义校验工具,管理员工具不应暴露给通用聊天 Agent。
组授权便于管理,但嵌套组和历史成员容易扩大范围。定期导出应用角色成员,核对实际使用和离职撤销。
服务包含 SQL 报告、SQL 脚本执行等预构建工具。自定义 Toolset 可以用 SQL 或 PL/SQL 定义更贴合业务的操作。
自定义工具应比任意 SQL 更窄:固定对象、使用绑定参数、限制返回列和行数,并在 PL/SQL 中检查调用者与业务条件。不要创建接受完整 SQL 字符串并直接动态执行的“通用工具”。
工具描述会影响模型选择,必须写清副作用、输入限制和审批条件。描述不是安全边界,数据库授权与服务角色仍需独立限制。
使用 Generative AI SQL Assistant Toolset 时,需要 use generative-ai-nl2sql 权限,并将范围限制到指定 semantic store。
自然语言转 SQL 可以提高易用性,也会引入模型误解、提示注入和昂贵查询。生成 SQL 应在执行前经过语法、对象范围、数据分类与资源限制检查。
不使用 NL2SQL 时不要授予该权限。可选功能的 IAM policy 不应提前加入通用模板。
第一层是已认证 MCP 用户,它决定谁可以调用服务和哪些应用角色生效。第二层是 MCP Server Runtime Identity,它决定服务访问 OCI 资源时使用登录用户身份还是 MCP Server resource principal。
第三层是 Database Tools Connection Runtime Identity,它决定建立数据库连接时使用已认证用户身份,还是 Connection 自己的 resource principal。
三层组合决定 IAM policy、秘密读取者、数据库会话身份和审计归属。不能只说“使用 IAM”而忽略到底是哪一个 principal。
Authenticated Principal 表示请求以当前登录用户身份访问 OCI 资源。权限跟随用户和组,便于个人责任追踪和按人撤销。
用户需要 invoke MCP Server、use 指定 Database Tools Connection,并按认证方式拥有 database-connections 或 secret-bundles 权限。
人员变动时组成员变化可以立即收紧权限,但用户令牌缓存和数据库会话寿命仍需检查。不能假定 IAM 移组会立刻终止所有活动 SQL。
Resource Principal 让 MCP Server 或 Database Tools Connection 以资源自身身份访问 OCI。适合服务自动化、后台任务和不希望把个人云权限传递给执行层的场景。
策略使用 any-user 搭配 request.principal.id 精确限定到资源 OCID。看到 any-user 不代表向整个租户开放,安全性依赖 where 条件是否正确。
不要省略 principal ID 条件,也不要把策略扩大到整个动态组。每个 Server 和 Connection 使用独立资源身份,便于撤销和审计。
Token 模式使用 IAM 令牌进入数据库,适合传播用户身份和减少长期密码。Password 模式从 Vault secret 获取数据库用户名、密码或证书。
Token 模式要求相关用户能 use database-connections,并让 MCP Server 获得代表用户取数据库令牌的 OBO 权限。数据库还需正确映射 IAM 身份和角色。
Password 模式必须限制 secret-bundles 读取到具体 secret OCID。秘密中的数据库账户仍应最小权限,Vault 不能把 DBA 密码变成安全的 Agent 凭据。
database-tools-db-connect-obo 允许 MCP Server 代表请求用户获取数据库令牌。Oracle 文档指出,该权限当前必须在 tenancy 级授予,因为 OCI IAM 与 DBaaS 不能把 OBO 数据库连接限制到特定数据库或 compartment。
这是一项范围较宽的能力,只能授予由可信管理员管理的 MCP Server,并通过 request.principal.id 锁定到具体 MCP Server OCID。
启用前审查服务器管理员、Toolset 和应用角色;启用后监控 token 获取与数据库登录。若不需要 Token 认证,就不要授予 OBO。
资源级策略通过 target.resource.id、target.secret.id、target.database.id 等条件限制到单个资源,是生产环境的首选。
Compartment 级策略允许访问该 compartment 中所有匹配资源,配置更简单,但新建资源可能自动落入权限范围。共享 compartment 尤其容易过度授权。
为 MCP 建立专用 compartment 或坚持资源级条件。策略模板生成后仍要人工审查,不能直接复制所有可选权限。
MCP 用户始终需要 use database-tools-mcp-servers-invocation,才能调用指定服务。策略应限定身份域组、compartment 和 MCP Server OCID。
此外,用户或服务 principal 需要 use database-tools-connections,取决于所选运行身份。只允许使用明确 Connection,而不是整个 compartment。
管理 MCP Server 与调用 MCP Server 是不同权限。日常使用者不应获得 manage database-tools-mcp-family。
Password 认证或使用 key store 时,需要 read secret-bundles。读取者可能是用户、MCP Server 或 Connection resource principal,取决于身份组合。
where 条件同时限制 request.principal.id 和 target.secret.id。多个连接需要多个 secret 时,显式列出允许组合,不使用所有 secret 通配符。
Vault、密钥和 secret 管理权限只给管理员。运行身份通常只需读取 secret bundle,不需要更新、删除或管理密钥。
长时间 SQL 报告或脚本可以通过 Database Tools runtime work request 异步运行。官方说明异步请求至少需要 MCP Server 或 Connection 中一个采用 Resource Principal。
如果两层都使用 Authenticated Principal,异步请求不受支持。原因是后台任务需要在用户交互会话结束后仍拥有稳定的服务身份。
授权 work request 时限制创建者 principal,避免一个用户或服务读取他人的任务。设置超时、取消、并发和结果保留策略。
异步请求可能把输入或结果放入 Object Storage,因此需要 use buckets 和 manage objects。manage objects 能创建、覆盖和删除对象,范围比数据库查询更大。
策略必须限制到指定 bucket 名称和 resource principal,不允许访问 compartment 中所有 bucket。结果 bucket 使用专用加密、生命周期和访问日志。
如果当前工具不需要异步对象传输,不要授予 Object Storage 权限。最小权限也包括不启用未使用功能。
使用用户 Token 与 Authenticated Principal 时,可以把用户身份传播到数据库会话,改善细粒度授权和审计。Resource Principal 或共享 Password 模式则更接近服务身份。
选择模式前明确审计问题:需要知道哪个人执行,还是只需知道哪个 MCP 服务执行。高敏感访问通常更适合用户身份传播。
无论模式如何,数据库侧角色和对象权限仍需最小化。IAM 允许连接不等于数据库用户应拥有所有 schema。
把复杂业务操作封装成固定 SQL,而不是开放任意 query 参数。所有输入使用绑定变量,拒绝把表名、排序字段和条件直接拼接。
只返回业务必需列,设置行数上限与执行超时。敏感数据通过数据库视图、VPD 或 Oracle Deep Data Security 控制。
工具版本化,变更经过代码审查和测试。工具所有者、应用角色和数据库对象授权同步维护,避免旧角色获得新能力。
PL/SQL 可以修改数据、调用包、提交事务和访问外部网络。工具应明确是否有副作用,并把高风险操作放到独立 Toolset 和应用角色。
避免动态 SQL 和通用过程执行器。采用 invoker rights 或经过审查的 definer rights 包,内部再次检查调用身份、参数范围和业务状态。
生产写入增加人工审批或独立工作流,不让对话中的一次工具确认等同于发布授权。
SQL Report 适合预定义查询和标准结果,风险通常低于任意 SQL。报告参数必须绑定,输出按角色过滤和遮罩。
SQL script execution 能处理更复杂任务,也可能包含 DDL、DML 和 PL/SQL。限制脚本来源、对象范围、最大执行时间和异步结果位置。
开发与生产使用不同 Toolset。生产脚本只允许批准角色调用,并由数据库侧审计每次执行。
远程 MCP 通过 Streamable HTTP,客户端必须使用 TLS 并验证服务端证书。企业代理、出口和 DNS 规则只允许官方端点。
Database Tools Connection 到数据库的网络路径通过私有端点、安全列表或 NSG 限制。数据库不应暴露公共互联网,仅接受批准服务来源。
OAuth token、PAT、database token 和 Vault secret 都不能进入查询参数、日志或模型上下文。
OCI Audit 记录 MCP Server、Connection、Vault 和 IAM 控制面操作;Database Tools 记录服务调用和 work request;Oracle Database 审计记录 SQL 与会话。
Identity Domain 记录登录、OAuth 客户端和应用角色变化。Object Storage 记录异步结果访问。统一时间和请求标识便于关联。
重点告警包括 OBO token 异常、secret 读取增加、未授权 Toolset、生产写入、应用角色变更、跨 compartment 调用和未知客户端。
调用者只需 use invocation 和所需连接、工具权限。manage database-tools-mcp-family 只给平台管理员。
这会让新 Connection、secret 或 bucket 自动可用。改用资源 OCID 条件或专用 compartment。
OBO 必须 tenancy 级授权,影响面大。where 条件锁定 MCP Server OCID,并只由可信管理员管理。
限制 work request 创建者和 bucket 名称,设置生命周期与加密,不让用户读取他人结果。
改成参数化、固定对象的窄工具,使用数据库权限和应用角色再次限制。
先用测试 compartment 创建 Database Tools Connection、Vault secret、Identity Domain 应用和 MCP Server。只启用一个只读 Toolset。
验证授权用户能调用,未授权用户被拒绝;资源级 policy 不能访问其他 Connection 和 secret;数据库用户只能读取批准对象。
再测试 OAuth 过期、PAT 撤销、组成员移除、secret 轮换和数据库会话终止。异步功能单独测试 work request 与 bucket 范围。
最后检查 OCI、身份域、Database Tools、Object Storage 和数据库审计能否关联同一次调用。测试通过后再逐步增加 NL2SQL 与自定义 PL/SQL 工具。
用户通过 OAuth 认证并按组获得应用角色;MCP invocation 与 Connection 使用权限限定到具体 OCID;密码保存在 Vault,读取限制到指定 principal 和 secret。
数据库账户只访问必要 schema 和对象;自定义工具参数化并限制行数;生产写操作分离;Streamable HTTP 与数据库连接都使用安全网络。
不使用异步、Object Storage 或 NL2SQL 时不授予对应权限。每季度复核组成员、PAT、resource principal、策略和数据库角色。
Oracle Database Tools MCP Server 的安全性来自身份与资源的组合,而不是“托管”两个字。明确用户、MCP Server 和 Connection 三层 principal,优先采用资源级 IAM policy,限制 Vault、数据库、Toolset 和异步结果范围,再用审计串联每次调用,才能让 MCP 客户端安全访问 Oracle AI Database。
AWS Labs 的 SQL Server MCP Server 如何阻止危险写入查询?
ubuntu开始菜单中的图标怎么删除?
Oracle SQLcl MCP Server 可以执行哪些 SQL 和 PL/SQL 操作?
GPT-5.2 使用 high 而非 xhigh Reasoning Effort 时能处理多长的软件任务?
GPT-5 的 Reasoning Effort 与 Verbosity 应如何组合?
SQL MCP 服务器如何为 SQL Server 和 PostgreSQL 强制只读访问?