管道资源

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Azure Pipelines 提供的安全性不仅仅是保护 YAML 文件和源代码。 YAML 管道运行时,对资源的访问会经历一个名为 检查的系统。 为了保证资源的安全,检查可能会挂起甚至失败管道运行。 管道可以访问两种类型的资源:受保护和开放。

受保护的资源

管道通常有权访问机密。 例如,若要对生成进行签名,需要签名证书。 若要部署到生产环境,需要该环境的凭据。 Azure Pipelines 在向除环境以外的所有受保护资源的所有管道开放对资源的访问权限时,需要 管理员 角色。 对于环境,需要 “创建者” 角色。 详细了解 资源保护
在 Azure Pipelines 中,以下所有项都被视为 YAML 管道中的 受保护 资源:

“Protected”表示:

  • 项目内的特定用户和特定管道可以访问它们。 项目外部的用户和管道无法访问它们。
  • 每次 YAML 管道使用这些资源之一时,都可以运行其他手动或自动检查。 若要了解有关受保护资源的详细信息,请参阅 关于管道资源

保护存储库资源

存储库可以选择性地受到保护。 在组织或项目级别,可以选择将 Azure Pipelines 访问令牌的范围限制为提到的存储库。 执行此操作时,Azure Pipelines 将添加另外两个保护:

  • 提供给代理的用于运行作业的访问令牌将仅有权访问管道部分 resources 明确提到的存储库。
  • 添加到管道的存储库必须在管道首次使用该存储库时由具有存储库访问权限的人员授权。

默认情况下,对于 2020 年 5 月之后创建的所有组织,此设置处于打开状态。 之前创建的组织应在 组织设置中启用它。

打开资源

项目中的所有其他资源都被视为 开放 资源。 打开的资源包括:

  • Artifacts
  • 管道
  • 测试计划
  • 工作项

你将在 项目部分详细了解哪些管道可以访问哪些资源。

用户权限

受保护资源的第一道防线是用户权限。 通常,请确保仅向需要权限的用户授予权限。 所有受保护的资源都具有类似的安全模型。 资源的用户角色成员可以:

  • 删除在该资源上配置的审批者和检查
  • 向其他用户或管道授予使用该资源的访问权限

管道用户权限的屏幕截图

管道权限

使用 YAML 管道时,用户权限不足以保护受保护的资源。 可以轻松地复制受保护资源的名称 (例如,生产环境的服务连接) ,并将其包含在不同的管道中。 管道权限可防止此类复制。 对于每个受保护的资源,请确保已禁用授予对“所有管道”的访问权限的选项。 而是显式授予对信任的特定管道的访问权限。

管道权限的屏幕截图

检查

在 YAML 中,用户权限和管道权限的组合不足以完全保护受保护的资源。 向整个管道授予对资源的管道权限。 不会阻止攻击者在存储库中创建另一个分支、注入恶意代码以及使用相同的管道访问该资源。 即使没有恶意意图,大多数管道在部署到生产环境之前也需要第二组眼睛查看更改 (尤其是) 管道本身的更改。 检查 允许暂停管道运行,直到满足某些条件:

  • 手动审批检查。 在继续操作之前,将阻止使用项目保护资源的每次运行进行手动审批。 手动保护使你有机会查看代码并确保它来自正确的分支。
  • 受保护的分支检查。 如果为某些分支提供了手动代码评审流程,则可以将此保护扩展到管道。 在每个资源上配置受保护分支 检查。 这将自动停止管道在任何用户分支上运行。
  • 受保护的资源检查可以向环境、服务连接、存储库、变量组、代理池、变量组和安全文件添加检查,以指定在任何管道中的阶段可以使用资源之前必须满足的条件。 详细了解 检查和审批

配置检查的屏幕截图

后续步骤

接下来,请考虑如何将资源分组到 项目结构中。