安全链依赖项
构建链可以跨越多个项目,这一点非常强大,但也带来风险:一个团队的配置可以依赖另一个团队拥有的配置,从而触发该配置并拉取其工件。
风险
如果没有任何限制,任何在某个项目中拥有 项目查看器 角色的用户,都可以从自己的项目创建对该项目配置的依赖。 这意味着外部用户即使没有直接运行这些配置的权限,也可以运行您的配置或导入其工件。
仅限制可见性本身并不足够。 在 UI 中看不到目标项目的项目管理员,只要知道配置 ID,仍可通过 版本化设置创建对该项目的依赖:
TeamCity 提供三种互补控制措施来保护敏感或资源密集型配置。
项目隔离
项目隔离是主要的强制执行机制。 它在 项目设置 的 项目隔离 选项卡中配置。

仅受信任的项目 模式会隔离项目及其子项目,防止该分支外部的配置依赖其中的配置。 来自不受信任的外部项目的依赖将无法启动。
- 默认信任关系
在隔离分支内,所有子项目相互信任 — 它们可以自由地相互依赖,无论是自上而下还是自下而上。 父项目信任其后代项目,反之亦然。
除非将外部项目添加到允许列表,否则从外部 进入隔离分支的依赖将失败。 从该分支 传出到非隔离项目的依赖始终允许。
还可以通过将子项目也切换到 仅受信任的项目 模式来收紧自上而下的信任,从而进一步隔离其自己的子分支。
- 受信任项目列表
要允许外部项目依赖隔离项目,请点击 添加新的受信任项目 并将其添加到列表中。 信任会传播到所有直接和间接子项目,因此请在隔离分支的 最上层 项目上添加受信任项目,以保持设置易于维护。
此页面会将当前项目上声明的信任关系与从父项目继承的信任关系分开显示。

将项目切换到 仅受信任的项目 模式时,启用 将当前依赖的项目添加到受信任项目中 ,让 TeamCity 扫描层次结构并预填充允许列表。 TeamCity 仅检测 static 快照和工件依赖项;请手动添加动态依赖项(在特定于分支的版本化设置中声明,或通过 REST API 创建)。
- 设置继承
如果没有父项目强制执行隔离,该项目会提供 所有项目 和 仅受信任的项目 模式。 如果父项目已强制执行隔离, 所有项目 会被 从父项目继承设置 取代。

在继承模式下,项目信任其后代项目、一直到隔离父项目为止的祖先项目,以及其父项目允许列表中的项目。
- 隔离和版本化设置
信任模式和允许列表 非 存储在 版本化设置中,并且即使禁用 允许通过 UI 编辑项目设置 ,它们仍可在 UI 中编辑。 这可确保信任策略只能由项目管理员通过 UI 更改,而不能通过普通开发者可能有权编辑的配置文件更改。
构建审批
构建审批 是一道补充关卡:外部团队仍可以创建对您的配置的依赖,但每个被触发的构建都会保留在队列中,直到指定审核者批准。
用户权限
最后,设置严格的 用户权限。 请记住,仅 项目查看器 角色就足以创建对项目的依赖,而且有限的 UI 可见性并不能防止通过版本化设置创建依赖。 因此,请将项目隔离 — 而非可见性 — 视为实际边界。