配置托管 DevOps 池安全设置

可以使用“ 安全 ”选项卡在池创建期间以及使用 “安全 设置”窗格创建池后为托管 DevOps 池配置安全设置。

配置组织访问权限

默认情况下,托管 DevOps 池是为单个组织配置的,有权访问授予组织内所有项目的池。 可以选择限制对组织中的特定项目的访问,并且可以根据需要授予对其他组织的访问权限。

将池与单个组织配合使用

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

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

为单个组织配置项目的屏幕截图。

在多个组织中使用池

启用 在多个组织中使用池,以便将您的池用于多个 Azure DevOps 组织。 对于每个组织,请指定允许使用池的项目,或留空以允许所有项目。 为了为每个组织配置并行度,需要通过指定池的最大代理来确定要分配给每个组织的并发部分。 所有组织的并行度之和必须等于池的最大并发性。 例如,如果 最大代理 数设置为 5,则指定组织的并行度之和必须为 5。 如果 最大代理 设置为一个,则只能将池与一个组织一起使用。

在以下示例中,池被配置为可用于 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 池才能配置 “允许所有管道在没有批准(开放访问)时在池上运行” 设置。 创建托管 DevOps 池后,可以在 Azure DevOps 中相应的代理池上查看和配置开放访问权限,以便对使用该池的每个项目进行查看和配置。

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

配置开放访问权限的屏幕截图。

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

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

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

如果尝试运行无权访问代理池的管道,将收到类似于 This pipeline needs permission to access a resource before this run can continue下面的错误。 可以通过配置开放访问权限(如上一部分所述)或 显式授权管道在代理池中运行来解决此问题。

配置交互式模式

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

配置交互式模式的屏幕截图。

池管理权限

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

配置池管理权限的屏幕截图。

  • 仅创建者 - 创建托管 DevOps 池的用户被添加为 Azure DevOps 代理池的管理员,并且在代理池安全设置中,“继承” 设置为 “关闭”仅限创建者 是默认设置。
  • 从项目继承权限 - 创建托管 DevOps 池的用户将添加为 Azure DevOps 代理池的管理员,在代理池安全设置中将 继承 设置为 On
  • 特定帐户 - 指定要作为 Azure DevOps 中创建的代理池管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。

注意

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

密钥库配置

托管 DevOps 池服务允许在预配期间从 Azure Key Vault 获取证书,这意味着在运行管道时,该证书将已经存在于计算机上。

若要使用此功能,必须:

注意

因此 api-version 2025-01-21,如果使用此功能,则只能在池中使用单个标识。 不久将添加对多个标识的支持。

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

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

以下设置配置从 Key Vault 提取的证书。

  • 证书observedCertificates

    指定要从 Key Vault 提取的证书,并将其安装在池中的所有计算机上。

  • 证书存储位置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 证书的屏幕截图。

注意

密钥库集成设置只能在创建池后进行配置。 无法在创建池期间配置 Key Vault 集成设置,也不会显示在池创建过程中 的“安全 ”选项卡中。

配置 SecretManagementSettings

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

重要

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

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

另请参阅