UiPath Documentation
orchestrator
latest
false
重要 :
新发布内容的本地化可能需要 1-2 周的时间才能完成。

Orchestrator 用户指南

MCP 合规性指南

概述

UiPath MCP 服务器允许智能体通过模型上下文协议 (MCP) 利用外部工具和代码。

其中包括:

  • UiPath:客户可以直接将其他 UiPath 组件(例如流程、API 工作流等)用作工具。
  • 远程:连接到第三方服务,执行自定义代码 (CodedServers),或运行脚本命令 (CommandServers)。

虽然 UiPath Platform 为这些集成提供安全的通信和监管,但任何外部端点或自定义代码在核心平台安全边界之外运行。这意味着一旦数据或操作离开 UiPath 的受控环境,客户需对其安全性和合规性承担责任。在实际使用中,UiPath 在其服务内确保传输中和静态存储时的加密,并强制执行基于角色的访问控制,但对于 UiPath 之外的任何内容(外部服务器或代码),数据隐私、端点安全和法规合规仍由客户负责。

重要提示:

UiPath 不管理您的外部服务器或代码——这些组件的安全性和可靠性由您负责。因此,使用 MCP 的集成功能时,必须特别关注机密信息的处理方式、信任的端点以及执行的代码,以满足您组织的合规要求。

RemoteServers、CodedServers 和 CommandServers 的安全影响

RemoteServers

RemoteServer 配置定义了与外部 HTTP(S) 端点的连接(用于 MCP StreamableHttp 传输)。安全影响在于,发送至该外部服务或从该外部服务接收的任何数据均不在 UiPath 的直接控制范围内。如果 RemoteServer 需要身份验证(API 机密信息、令牌等),用户可能会倾向于将这些机密信息直接嵌入到 HTTP 标头或 URL 中。将机密信息直接存储在配置中存在风险——尽管 UiPath MCP 服务会在 UI 中对这类敏感标头值进行掩码显示,并在静态时在数据库中对其进行加密,但这些数据仍会在系统中传输,如果处理不当,仍可能被暴露。此外,诸如端点 URL、正文有效负载或查询参数等字段在数据库中不会被加密,因此绝不应在这些字段中存放任何敏感数据。如果端点遭到入侵或通信不安全,发送至外部端点的数据可能会被拦截或误用。简而言之,由于 RemoteServers 将您的自动化扩展到外部网络,因此您必须确保这些端点是可信的,并且在传输过程中不会泄露任何机密信息或敏感信息。

CodedServers 和 CommandServers

CodedServers 指您打包并作为智能体一部分运行的自定义代码(例如 Python 脚本或程序),而 CommandServers 则在无服务器运行时中运行 shell 命令或脚本。两者都会在由 UiPath 编排的临时无服务器容器中执行用户提供的逻辑。从安全角度来看,这意味着您的代码会在 UiPath 云环境中以一定的权限运行——具体而言,它在您组织的上下文下运行,并携带一个限定在您的组织/用户范围内、用于回调 UiPath 服务的身份验证令牌(持有者令牌)。主要影响在于,您运行的任何代码都会天然地被授予对该持有者令牌以及可能的其他环境变量的信任权限。如果您运行恶意或未经验证的代码,它可能会窃取该持有者令牌或其他敏感信息,并执行未经授权的操作。绝不可在 CodedServers/CommandServers 中使用不受信任的代码,因为其可能会外泄数据或滥用所授予的权限。即便是出于善意编写的代码,也可能存在漏洞,攻击者可以利用这些漏洞获取访问权限。此外,这些容器可能能够访问某些环境变量(用于配置、凭据等),这些都应被视为敏感暴露面——恶意代码可以在内存中读取它们。

总而言之,运行自定义代码或命令意味着您需要自行承担该代码行为所带来的风险。仅应部署高度可信且经过审查的代码,并且应遵循安全编码实践。

除上述特定组件外,MCP 的使用还引入了共享责任模型:UiPath 提供平台安全保障(隔离的执行容器、静态数据加密、网络防护以及云平台的合规认证),但您需负责所连接的任何外部系统及所运行内容的安全。以下各节概述了帮助您履行自身责任的最佳实践。

为安全地使用 MCP 集成并满足合规要求,请实施以下最佳实践。

1. 安全地处理机密信息(RemoteServer 标头和资产)

强烈建议不要将敏感机密信息(API 机密信息、令牌、凭据)直接存储在 RemoteServer 配置中。尽管平台会在静态时对机密信息标头值进行加密,并在 UI 中对其进行掩码显示,但我们仍不推荐这种做法。配置中的机密信息仍可能出现在日志中或被意外暴露,而且除指定的机密信息标头外,其他字段均不会被加密。不要在 URL、查询参数或请求正文等字段中以明文形式存放敏感数据。

Use Orchestrator Assets of type “Secret” to manage sensitive keys, and reference them in your RemoteServer headers.

例如:

  • An API key can be stored in an Asset named MY_API_KEY (Assets in Orchestrator are encrypted at rest by default). In the RemoteServer header configuration, the asset reference serves as the full header value, such as X-Api-Key: %ASSETS/MY_API_KEY%. If the remote endpoint expects a prefixed value, such as Bearer <token>, the full value can be stored in the asset and referenced as Authorization: %ASSETS/MY_API_KEY%.
  • When the Agent runs, Orchestrator resolves the asset through the asset API using the caller's identity and the MCP Server folder context before forwarding the request to the remote endpoint. This works without a robot or robot key, and Orchestrator enforces the required asset permissions.

这样,机密信息就不会以明文形式存储在 RemoteServer 设置中——而是安全地保存在资产保险库中。UI 只会显示掩码占位符。这种做法有助于避免机密信息的意外暴露,并符合不将凭据硬编码的原则。

总结来说:不要在您的智能体代码和配置中存放机密信息。将其集中存放在安全存储中。定期轮换 API 密钥,切勿将机密信息直接嵌入代码或 HTTP 请求中。

2. 受信任的端点和网络控件(RemoteServer 设置)

在配置 RemoteServers 时,仅连接到受信任的外部端点。每个 RemoteServer 都应指向经您组织在安全、隐私和合规方面审核通过的域名或服务。将新的第三方 API 或服务视为供应商——确保其符合您的安全标准(例如具备适当的认证、采用加密措施,并能妥善处理您的数据)。

对所有外部调用均使用 HTTPS。始终指定 https:// URL,以确保传输过程中的流量得到加密。对连接强制使用 TLS 1.2 或更高版本。平台默认通过 TLS 进行通信;作为客户,您应验证端点是否具有有效证书和强加密。切勿在智能体通信中使用明文 HTTP,否则可能会被拦截。

要点:将外部调用视为您 IT 环境的延伸。验证外部服务的安全性(SSL/TLS 已启用、不得使用自签名或过期证书等),并且仅在信任的情况下向其发送数据。被入侵或恶意的端点可能会窃取数据或注入有害响应,因此对外部服务器进行尽职调查至关重要。

3. Coded/Command 服务器的安全执行(仅限受信任代码)

对于 CodedServers 和 CommandServers,安全性在很大程度上取决于您运行的代码。切勿在未经充分审查的情况下运行不受信任或第三方代码。智能体容器会使用可调用 UiPath API(以及可能的其他集成)的访问令牌来执行您的代码。恶意代码可能会获取该持有者令牌或环境中的其他机密信息并将其外泄,或通过平台 API 执行破坏性操作。它还可能尝试利用容器运行时漏洞,尽管 UiPath 的无服务器容器是隔离运行的,且默认不以提升的权限执行。

为减轻这些风险:

  • 实施内部代码审查和来源验证。如果您在编码智能体中使用开源库或示例代码,请对该代码进行安全审查(例如是否存在后门、数据外泄逻辑等)。仅从官方、受信任的软件包仓库获取库文件。
  • 对代码和依赖项进行漏洞扫描。对您的智能体代码采用静态应用安全测试 (SAST),并对所使用的任何软件包使用依赖项漏洞扫描工具(如 OWASP Dependency Check、Snyk 等)。这有助于在部署前发现已知漏洞(例如某个可能允许远程代码执行的软件包)。建议进行持续扫描,因为库中可能会随着时间推移出现新的漏洞。
  • 限制代码可以执行的操作。尽管容器是临时性的,您仍应采用防御性编码实践。例如,避免将未经验证的输入传递给您的代码(以防止注入攻击)。从根本上,应尽量缩小容器内的攻击面。理想情况下,代码应仅执行其预期功能,不应执行其他操作。
  • 注意环境变量和文件系统访问权限。应假定容器可访问的任何机密信息(例如智能体的身份验证令牌或通过环境变量传入的其他凭据)都可能被您的代码读取。不要记录这些值,也不要将其发送到外部位置。此外,尽管容器可能提供一定的临时存储空间,但您也应避免将敏感信息写入磁盘,除非确有必要;如确有需要,应在结束前将其删除。

总而言之,应将智能体的代码执行环境视为拥有敏感访问权限的生产服务器:仅运行受信任的代码,遵循安全编码实践,并进行安全测试。UiPath 的平台提供了安全的沙箱,并确保代码在您的账户上下文下运行,但不会在细粒度层面对代码逻辑进行检查或沙箱隔离——这一责任由您承担。

4. 数据处理和隐私

除非绝对必要,否则避免将敏感数据发送到外部工具。任何从 UiPath 平台发送至外部 API 或服务的数据,都应被视为存在泄露风险。如可能,在将数据发送至 RemoteServer 之前,对个人数据或受监管信息进行掩码或脱敏处理。例如,如果智能体通过外部 AI API 对客户数据进行摘要处理,应考虑在提示中移除标识符或对其进行匿名化。这种数据最小化做法可确保符合隐私法规(GDPR、HIPAA 等)的要求,因为系统不会将受保护的数据暴露给可能不受相关协议约束的系统。

如果必须发送敏感信息,请确保外部提供方通过合同形式作出数据保护承诺(例如数据不会被存储或用于其他用途)。验证外部服务的数据驻留位置——如果未事先评估,将数据发送至其他地区的端点可能会违反您公司的政策。始终确保您对外部端点的使用符合您组织的合规要求(例如确保第三方服务具备 SOC 2、ISO 27001 或与您所在行业相关的其他认证)。

在 UiPath 平台内,平台会在可能的范围内记录所有智能体活动,包括工具的使用情况以及传递给工具的数据。利用这些日志,确保不会发送任何非预期的数据。定期审查您的智能体正在处理和向外部发送的信息。例如,如果您发现某个智能体在向 RemoteServer 发出请求时包含社会保障号码,应考虑修改智能体的逻辑,对此类数据进行哈希处理或将其移除。

如果您使用 Coded/Command MCP 服务器,日志记录由您负责。切勿记录诸如 PII 或安全信息等敏感数据。

同时,也要注意来自外部服务的输出数据。外部 AI 或脚本可能会返回敏感信息(甚至恶意内容)。在可行的情况下,对输出结果进行验证。例如,如果 RemoteServer 返回的响应将用于决策,应确保该响应符合预期的格式和范围。这有助于防止外部系统的操纵行为或意外行为。

简而言之,应将外部集成视为您合规数据流图的一部分——记录哪些数据正在通过哪项服务离开平台。这将有助于开展风险评估和审核。始终优先仅共享完成任务所需的最少信息(数据的知情必需原则)

5. 访问控制

配置和使用 MCP 集成的访问权限本身应受到严格控制。仅管理员或高度受信任的用户才能够创建或修改 RemoteServers、CodedServers 或 CommandServers 的配置。利用 Orchestrator 基于角色的访问控制 (RBAC) 来限制这些权限。例如,您可以设立一个专门的“智能体集成管理员”角色,并仅将其分配给卓越中心或 IT 安全团队的成员。这可以防止普通自动化开发人员或业务用户无意中添加不安全的连接或执行任意代码。每个新增的 MCP 服务器或智能体工具都应经过审查流程。

在分配角色和权限时,应贯彻最小权限原则。定义范围严格受限的角色,以确保用户只能执行其工作所必需的操作。例如,如果某个智能体只需要读取特定数据或执行特定流程,应确保运行该智能体的账户不具备对其他数据或管理功能的更广泛访问权限。避免在具有 Orchestrator 完全管理员权限的账户下运行智能体。应改用具备最小权限的专用服务账户。这样,即使智能体的令牌被泄露,潜在损害也仅会限于该账户的权限范围。

监控智能体的执行日志。以一致方式跟踪和记录智能体对所有工具的使用情况。通过审查这些日志,您可以发现异常情况(例如智能体调用其通常不会调用的端点,或在异常时间运行)。

明智的做法是定期对 MCP 服务配置进行合规检查:导出所有已配置 RemoteServers 的列表并验证其是否在批准名单内;检查任何描述或字段是否暴露了凭据;验证所有 Coded/Command 服务器是否均对应已通过安全审查的代码。建立这些“智能体工具”的清单,类似于 IT 资产清单。

最后,确保您的事件响应计划涵盖 MCP 服务相关场景。例如,如果外部端点遭到入侵或 API 密钥泄露,应制定流程以便迅速停用该 RemoteServer 或轮换凭据。由于 UiPath 将成为您企业集成环境的一部分,您的安全团队应了解这些集成与执行能力,并在威胁建模和应急演练中将相关风险场景纳入考虑。

通过控制访问、监控活动并及时调查任何异常情况,您履行了共享责任模型中属于您一方的责任——确保在符合安全和合规要求的前提下利用平台强大的能力。

职责隔离(UiPath™ 与客户)

使用 MCP 涉及 UiPath 和客户之间的共享责任模型。 下表总结了哪些安全方面由 UiPath 平台负责,哪些由客户负责:

表格 1. UiPath 与客户责任

区域UiPath 职责客户责任
平台安全为智能体执行提供安全的云基础设施和容器隔离。在 UiPath Cloud 内强制实施传输中 (TLS) 和静态加密。平台内的基于角色的访问控制 (RBAC) 和身份验证。安全使用平台。仅限获授权人员拥有平台访问权限。按照最小权限原则配置角色和权限。保护平台所连接的外部端点(确保其具备适当的安全控制、身份验证机制和合规认证)。管理网络控制措施,确保仅限获批准的流量进出 UiPath。
凭据管理对存储在 Orchestrator 资产或 Integration Service 中的凭据进行加密。资产中的机密信息由平台隐藏并加以保护。在运行时安全注入凭据(例如,替换 %ASSETS/KEY%)。平台不会在日志或明文中存储任何机密信息。以负责任的方式存储和管理机密信息。使用提供的安全存储(资产等)——不要在代码或配置中硬编码机密信息。定期轮换您的外部凭据,并移除任何未使用的密钥。如果使用第三方服务,请在第三方服务端管理 API 密钥或令牌(例如在泄露时予以吊销)。确保暴露给智能体的任何机密信息(即便是临时暴露)都在您这一方得到妥善处理(例如不要在其他地方重复使用)。
执行环境为 Coded/Command 服务器提供隔离的临时容器。确保每次执行都使用具有作用域限制的持有者令牌,且无法直接影响其他租户或主机 OS。记录智能体工具操作以供审核。强制实施超时和资源限制,以降低失控代码带来的影响。代码安全和完整性。仅部署安全且必要的代码。不要运行不受信任或未经审查的代码。验证所有自定义逻辑并执行安全测试(代码审查、漏洞扫描)。您需对您代码的行为负责——如果代码删除数据或泄露信息,其责任由您承担。将环境变量和容器内的任何数据视为敏感信息(因为其中可能包含令牌或私密数据)。及时修复您代码或库中的任何漏洞(平台不会知道您的代码是否存在缺陷——这一点需要由您自行管理)。
数据处理对智能体容器与 UiPath 服务之间传输的所有数据进行加密。为流经平台的数据提供审核日志,并支持监控(包括谁在何时运行了什么,以及任何已记录的输入/输出)。支持针对 UiPath 平台内数据的合规措施,例如数据掩码、安全存储以及客户管理的加密密钥。保护离开平台的数据。确定哪些数据可以发送至外部端点或由外部代码处理。对 PII/PHI 进行掩码处理或避免发送此类数据,除非该外部系统已获得相应批准。确保外部端点遵循数据驻留和保留要求(数据一旦离开 UiPath,其隐私责任由您承担)。在将特别敏感的数据发送至外部服务之前,实施额外的加密或假名化处理。
监控和响应为平台上的操作(配置更改、智能体运行、错误)提供集中式日志、告警和审核追踪记录。支持通过 OpenTelemetry 和其他接口与 SIEM 工具集成。UiPath 支持团队可协助处理平台层面的事件(例如基础设施中断、平台误用)并提供审核日志以协助调查。监控您的使用情况并响应事件。定期审查智能体运行日志和审核追踪记录,以查找异常情况。检测和响应任何可疑活动(例如智能体进行异常外部调用)。如果外部集成遭到入侵或被误用,您需要自行禁用该集成,并在外部侧处理相关事件。针对涉及外部系统的灾难恢复和事件响应制定计划(例如,如有需要,应制定轮换密钥或切换端点的操作手册)。涉及智能体集成的数据或流程的任何合规报告均需由您负责管理(UiPath 可提供平台操作相关数据,但端到端流程的报告需由您负责)。

这种职责划分与通用 Cloud 共享职责模型相一致:UiPath 会保护平台,您必须保护平台及其任何扩展的使用方式。确保您的内部策略涵盖 MCP 的使用,例如,所有第三方集成都必须经过安全批准、所有自定义智能体代码都必须经过安全审核等策略。 通过履行这些责任,您可以确保 MCP 服务的实施始终符合组织的安全标准。

建议的免责声明:当使用 MCP 服务和 MCP 通过外部代码或服务扩展 UiPath 时,客户将独自负责保护、管理和维护这些外部组件以及由它们处理的任何数据。 UiPath 可确保平台内的安全性(加密、身份验证、记录),但一旦数据离开 UiPath 平台边界,则不会控制或承担责任。在实践中,这意味着您应该以与系统的其他关键部分相同的严格程度来处理外部端点和自定义代码。 合规检查不是一次性工作,而是您在不断改进智能体和集成时需要一直承担的职责。

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新