配置托管 DevOps 池安全设置

了解如何为托管 DevOps 池配置安全设置。 可通过两种方法配置安全设置:

  • 使用 “安全 ”选项卡创建池时
  • 使用 “安全 设置”窗格创建池后

配置组织访问权限

默认情况下,您使用托管 DevOps 池创建的池会配置为适用于单个组织中的所有项目。 可以选择性地限制对组织中的特定项目的访问权限,还可以授予对其他组织的访问权限。

如果您配置池并授予对所有项目的访问权限,则池将添加到您具有相应权限的项目中。 如果配置池并授予对特定项目的访问权限,则必须有权在所有指定项目中添加该池,否则池创建将失败。

若要查看在组织和项目中配置托管 DevOps 池所需的权限,请参阅 先决条件:验证 Azure DevOps 权限

使用单个组织的资源池

默认情况下,托管 DevOps 池在创建时会配置为使用用户指定的单个 Azure DevOps 组织。 为单个组织配置池时,将在 设置中显示并配置组织名称。

默认情况下, “向所有项目添加池 ”设置设置为 “是”,并向组织中的所有项目授予对托管 DevOps 池的访问权限。 若要限制组织中的哪些项目可以使用该池,请选择 “否”,然后指定哪些项目应具有访问权限。

显示如何为单个组织配置项目的屏幕截图。

在多个组织中使用资源池

若要将池用于多个 Azure DevOps 组织,请在 多个组织中启用“使用池”。 对于每个组织,请指定允许使用池的项目,或将此字段留空以允许所有项目。 根据池的最大代理值决定的并发性,指定要分配给每个组织的并发份额,以配置每个组织的并行度。 所有组织的并行度之和必须等于池的最大并发性。 例如,如果 最大代理 数设置为 5,则指定组织的并行度之和必须为 5。 如果 “最大代理 ”值设置为 1,则只能将池与一个组织一起使用。

在以下示例中,池被配置为可用于 fabrikam-tailspin 组织中的 FabrikamResearchFabrikamTest 项目,以及可用于 fabrikam-blue 组织中的所有项目。

显示如何配置多个组织的屏幕截图。

如果收到类似 The sum of parallelism for all organizations must equal the max concurrency错误,请确保资源池的最大 代理数并行度 列的总和匹配。

为池的管道配置开放访问权限

若要为管道配置开放访问权限,除了先决条件中所述的权限外,还必须具有以下权限 - 验证 Azure DevOps 权限

默认情况下,必须先显式授权每个管道定义在自承载代理池(例如使用托管 DevOps 池创建的池)中运行,然后才能在该池中首次运行。

Azure DevOps 提供以下模式来授权管道在代理池中运行。

  • 授权特定管道(默认值):从 Azure DevOps 项目单独授权特定管道以在池中运行。
  • 打开访问权限:将项目级别的代理池配置为可用于该项目中的所有管道。

启用 “允许所有管道在池上运行(未经批准)”, 以便在创建池时在 Azure DevOps 中配置 开放访问 代理池设置。

只有在创建托管 DevOps 池时,才能配置允许所有管道在没有审批情况下在池上运行(开放访问)的设置。 创建池后,可以在 Azure DevOps 中查看和配置相应代理池“打开访问”权限,以便为使用该池的每个项目进行设置。

若要从指定项目中的所有管道配置对池的访问权限,请启用“允许所有管道在池上运行”,而无需批准(打开访问权限)。

显示如何配置开放访问权限的屏幕截图。

  • 如果向所有项目添加池设置为“是”,托管的 DevOps 池将为所有项目中的所有管道配置开放访问
  • 如果将 “向所有项目添加池 ”设置为 “否”,则托管 DevOps 池仅为列出的项目中的所有管道配置 开放访问权限

如果在 多个组织中启用“使用池”,则可以为每个组织单独指定 开放访问权限

显示如何为多个组织配置开放访问权限的屏幕截图。

如果尝试运行无权访问代理池的管道,将收到错误,例如“此管道需要访问资源的权限,然后才能继续运行。可以通过配置开放访问(如上一部分所述)或 显式授权管道在代理池中运行来解决此问题。

配置交互式模式

如果测试需要交互式登录进行 UI 测试,请启用 EnableInteractiveMode 设置来启用交互式登录。

显示如何启用交互式模式的屏幕截图。

配置池管理权限

作为托管 DevOps 池创建过程的一部分,代理池在 Azure DevOps 组织级别创建,并在每个指定项目中创建项目级代理池。 池管理权限设置指定哪些用户被授予 Azure DevOps 中新创建的代理池的管理员权限。 若要在创建托管 DevOps 池后查看和管理 Azure DevOps 代理池权限,请参阅 “创建和管理代理池:代理池的安全性”。

显示如何配置池管理权限的屏幕截图。

  • 创建者仅:此设置将创建托管 DevOps 池的用户添加为 Azure DevOps 代理池的管理员,并将 “继承 ”设置为 “关闭 ”代理池安全设置。 仅限创建者 是默认设置。
  • 从项目继承权限:此设置将创建托管 DevOps 池的用户添加为 Azure DevOps 代理池的管理员,并将 “继承 ”设置为 “打开 ”代理池安全设置。
  • 特定帐户:可以使用此设置指定要在 Azure DevOps 中添加为代理池管理员的帐户。 默认情况下,包含池创建者。

可以在创建池时在“安全”选项卡上配置池管理权限设置。 创建池后,它不会显示在 安全 设置中。 若要在创建池后查看和管理 Azure DevOps 代理池权限,请参阅 “创建和管理代理池 - 代理池的安全性”。

配置密钥保管库

托管 DevOps 池提供在预配期间从 Azure 密钥保管库提取证书的功能。 在运行您的管道之前,计算机上已经存在证书。

若要使用此功能,必须:

  • 在池上配置标识。 必须授予此标识 Key Vault 机密用户 从密钥保管库中提取机密的权限。 若要将标识分配给 Key Vault 机密用户 角色,请参阅 使用 Azure 基于角色的访问控制提供对密钥保管库密钥、证书和机密的访问权限

  • 配置密钥保管库集成设置时(即如果您正在配置密钥保管库设置的帐户),该帐户主体必须在存储证书的密钥保管库中具有Key Vault 证书用户角色分配。

  • 若要为 Azure Key Vault 实例强制实施网络隔离以仅允许授权资源访问,必须将以下 IP 地址添加到 Azure Key Vault 允许列表。 以下 IP 地址范围位于名为 DevOpsInfrastructureAzure 服务标记中。

    位置 IP 地址范围
    australiaeast 4.198.194.192/28
    brazilsouth 74.163.143.32/28
    canadacentral 130.107.66.0/28
    centralindia 98.70.255.112/28
    centralus 72.152.33.16/28
    eastus2 72.153.21.192/28
    germanywestcentral 131.189.121.128/28
    northeurope 72.145.24.48/28
    东南亚 135.171.33.48/28
    switzerlandnorth 74.161.82.192/28
    uksouth 131.145.107.64/28
    westus3 57.154.125.208/28

注意

截至 api-version 2025-01-21,如果使用此功能,则只能在池中使用单个标识。

只能使用一个标识从密钥保管库中提取机密。

在池级别进行设置 DevOps 托管池的证书设置,其中某些设置是为 Windows 或 Linux 专门设计的。 如果工作流需要 Linux 和 Windows 映像,如果找不到适用于 Windows 和 Linux 的常见证书设置集,则可能需要将它们划分为多个池。

以下设置配置从密钥保管库提取的证书:

  • 证书observedCertificates):此设置指定要从密钥保管库中提取的证书,并将其安装在池中的所有计算机上。
  • 证书存储位置certificateStoreLocation):此设置指定在代理上安装证书的位置。
    • Windows 代理:指定 LocalMachineCurrentUser
    • Linux 代理:仅在 Ubuntu 分发版上支持设置 证书存储位置 。 指定用于存储证书的磁盘路径(例如, /var/lib/waagent/Microsoft.Azure.KeyVault/app1)。 对于 Ubuntu 分发版,如果指定受信任的存储位置(例如, /usr/local/share/ca-certificates),证书将作为根添加到该证书存储中。 有关详细信息,请参阅 在信任存储中安装根 CA 证书
  • 证书存储名称certificateStoreName
    • Windows 代理:此设置指定证书存储的名称。 My 要么是(本地证书存储,如果未指定名称,则为默认值),要么是Root(受信任的根目录)。
    • Linux 代理:此设置不用于 Linux 代理。
  • 可导出私钥keyExportable):此设置指定证书的密钥是否可导出。 默认值为 false

可以在“设置>”中配置密钥保管库集成。

显示如何配置密钥保管库证书的屏幕截图。

只能在创建池后配置 Key Vault 集成设置。 创建池时,无法配置 Key Vault 集成设置。 创建池期间,它们不会显示在 “安全 ”选项卡上。

配置 SecretManagementSettings

使用 SecretManagementSettings 在您的池中检索的证书会自动与密钥保管库中发布的最新版本同步。 这些机密在首次管道运行之前已经存在于计算机上,这意味着可以节省时间并省去获取证书的任务。

重要

如果由于权限或网络问题,无法从密钥保管库提取机密,则代理虚拟机的预配将失败。

对于 Windows,可以将 证书存储位置 值设置为 LocalMachineCurrentUser。 此设置可确保在计算机上的该位置安装机密。 有关机密检索工作原理的特定行为,请参阅 适用于 Windows 的 Azure Key Vault 扩展