可以使用“ 安全 ”选项卡在池创建期间以及使用 “安全 设置”窗格创建池后为托管 DevOps 池配置安全设置。
默认情况下,托管 DevOps 池是为单个组织配置的,有权访问授予组织内所有项目的池。 可以选择限制对组织中的特定项目的访问,并且可以根据需要授予对其他组织的访问权限。
注意
如果您将池配置为授予所有项目访问权限,则该池将被添加到您拥有相应权限的项目中。
如果将池配置为授予特定项目的访问权限,则必须有权在所有指定项目中添加池,否则池创建将失败。
若要查看在组织和项目中配置托管 DevOps 池所需的权限,请参阅 先决条件 - 验证 Azure DevOps 权限。
 
将池与单个组织配合使用
默认情况下,托管 DevOps 池配置为与创建池时指定的单个 Azure DevOps 组织一起使用。 为单个组织配置池时,将在 池 设置中显示并配置组织名称。
默认情况下, 向所有项目添加池 设置为 “是”,并向组织中的所有项目授予对托管 DevOps 池的访问权限。 选择 “否 ”可指定项目列表,以限制组织中的哪些项目可以使用该池。
              
               
              
              
            
组织在托管 DevOps 池资源的属性中 organizationProfile 配置。
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "name": "fabrikam-managed-pool",
            "type": "microsoft.devopsinfrastructure/pools",
            "apiVersion": "2025-01-21",
            "location": "eastus",
            "properties": {
            ...
            "organizationProfile": {
                "organizations": [
                    {
                        "url": "https://dev.azure.com/fabrikam-tailspin",
                        "projects": [],
                        "parallelism": 4
                    }
                ],
                "permissionProfile": {
                    "kind": "CreatorOnly"
                },
                "kind": "AzureDevOps"
            }
        }
    ]
}
该 organizationProfile 部分具有以下属性。
| properties | 说明 | 
| organizations | 可以使用池的组织列表。 url指定组织的 URL,projects是可以使用池的项目名称列表(空列表支持组织中的所有项目),并parallelism指定此组织可以使用的代理数。 组织的并行度之和必须与池的最大代理设置匹配。 | 
| permissionProfile | 指定创建 Azure DevOps 池时授予的权限。 只能在创建池期间设置此值。 允许使用的值为 Inherit、CreatorOnly和SpecificAccounts。 如果specificAccounts已指定,请为属性提供单个电子邮件地址或电子邮件地址users列表;否则省略users。 有关详细信息,请参阅 池管理权限。 | 
| kind | 此值指定池的组织类型,并且必须设置为 Azure DevOps。 | 
在organization-profile或更新池时,组织是在参数中配置的。
az mdp pool create \
   --organization-profile organization-profile.json
   # other parameters omitted for space
以下示例显示了一个organization-profile对象,该对象针对组织中所有项目都配置了该对象,该fabrikam-tailspin对象parallelism设置为 1< />。
{
  "AzureDevOps":
  {
      "organizations": [
      {
          "url": "https://dev.azure.com/fabrikam-tailspin",
          "projects": [],
          "parallelism": 1
      }
    ]
  }
}
该 organizationProfile 部分具有以下属性。
| properties | 说明 | 
| AzureDevOps | 此值是在其中 organization-profile定义的对象的名称,必须设置为Azure DevOps。 | 
| organizations | 可以使用池的组织列表。 openAccess指定托管 DevOps 池在创建池期间是否为池配置 开放访问权限 ,url指定组织的 URL,projects是可以使用池的项目名称列表(空列表支持组织中的所有项目),并parallelism指定此组织可以使用的代理数。 组织的并行度之和必须与池的最大代理设置匹配。 | 
| permissionProfile | 指定创建 Azure DevOps 池时授予的权限。 只能在创建池期间设置此值。 允许使用的值为 Inherit、CreatorOnly和SpecificAccounts。 如果specificAccounts已指定,请为属性提供单个电子邮件地址或电子邮件地址users列表;否则省略users。 有关详细信息,请参阅 池管理权限。 | 
组织在托管 DevOps 池资源的属性中 organizationProfile 配置。
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-01-21' = {
  name: 'fabrikam-managed-pool'
  location: 'eastus'
  properties: {
    organizationProfile: {
      organizations: [
        {
          url: 'https://dev.azure.com/fabrikam-tailspin'
          projects: []
          parallelism: 4
        }
      ]
      permissionProfile: {
        kind: 'CreatorOnly'
      }
      kind: 'AzureDevOps'
    }
  }
}
该 organizationProfile 部分具有以下属性。
| properties | 说明 | 
| organizations | 可以使用池的组织列表。 url指定组织的 URL,projects是可以使用池的项目名称列表(空列表支持组织中的所有项目),并parallelism指定此组织可以使用的代理数。 组织的并行度之和必须与池的最大代理设置匹配。 | 
| permissionProfile | 指定创建 Azure DevOps 池时授予的权限。 只能在创建池期间设置此值。 允许使用的值为 Inherit、CreatorOnly和SpecificAccounts。 如果specificAccounts已指定,请为属性提供单个电子邮件地址或电子邮件地址users列表;否则省略users。 有关详细信息,请参阅 池管理权限。 | 
| kind | 此值指定池的组织类型,并且必须设置为 Azure DevOps。 | 
 
在多个组织中使用池
启用 在多个组织中使用池,以便将您的池用于多个 Azure DevOps 组织。 对于每个组织,请指定允许使用池的项目,或留空以允许所有项目。 为了为每个组织配置并行度,需要通过指定池的最大代理来确定要分配给每个组织的并发部分。 所有组织的并行度之和必须等于池的最大并发性。 例如,如果 最大代理 数设置为 5,则指定组织的并行度之和必须为 5。 如果 最大代理 设置为一个,则只能将池与一个组织一起使用。
在以下示例中,池被配置为可用于 fabrikam-tailspin 组织中的 FabrikamResearch 和 FabrikamTest 项目,以及可用于 fabrikam-blue 组织中的所有项目。
              
               
              
              
            
如果收到类似 The sum of parallelism for all organizations must equal the max concurrency.错误,请确保资源池的最大 代理数 与 并行度 列的总和匹配。
将其他组织添加到组织列表,以配置池以用于多个组织。 以下示例配置了两个组织。 第一个组织配置为对所有项目使用托管 DevOps 池,第二个组织限制为两个项目。 在此示例中,池的最大代理设置为四个,每个组织都可以使用这四个代理中的两个。
"organizationProfile": {
    "organizations": [
        {
            "url": "https://dev.azure.com/fabrikam-tailspin",
            "projects": [],
            "parallelism": 2
        },
        {
            "url": "https://dev.azure.com/fabrikam-prime",
            "projects": [ "fabrikam-dev", "fabrikam-test" ],
            "parallelism": 2
        }
    ],
    "permissionProfile": {
        "kind": "CreatorOnly"
    },
    "kind": "AzureDevOps"
}
在organization-profile或更新池时,组织是在参数中配置的。
az mdp pool create \
   --organization-profile organization-profile.json
   # other parameters omitted for space
将其他组织添加到组织列表,以配置池以用于多个组织。 以下示例配置了两个组织。 第一个组织配置为对所有项目使用托管 DevOps 池,第二个组织限制为两个项目。 在此示例中,池的最大代理设置为四个,每个组织都可以使用这四个代理中的两个。
{
  "AzureDevOps":
  {
      "organizations": [
        {
            "url": "https://dev.azure.com/fabrikam-tailspin",
            "projects": [],
            "parallelism": 2
        },
        {
            "url": "https://dev.azure.com/fabrikam-prime",
            "projects": [ "fabrikam-dev", "fabrikam-test" ],
            "parallelism": 2
        }
    ]
  }
}
将其他组织添加到组织列表,以配置池以用于多个组织。 以下示例配置了两个组织。 第一个组织配置为对所有项目使用托管 DevOps 池,第二个组织限制为两个项目。 在此示例中,池的最大代理设置为四个,每个组织都可以使用这四个代理中的两个。
organizationProfile: {
  organizations: [
    {
      url: 'https://dev.azure.com/fabrikam-tailspin'
      projects: []
      parallelism: 2
    }
    {
      url: 'https://dev.azure.com/fabrikam-prime'
      projects: ['fabrikam-dev', 'fabrikam-test']
      parallelism: 2
    }
  ]
  permissionProfile: {
    kind: 'CreatorOnly'
  }
  kind: 'AzureDevOps'
}
 
若要为管道配置开放访问权限,除了 先决条件 - 验证 Azure DevOps 权限中所述的权限之外,还必须具有以下权限。
默认情况下,必须先显式授权每个管道定义在自承载代理池(例如托管 DevOps 池)中运行,然后才能在该池中首次运行。
Azure DevOps 提供以下模式,用于授权管道在代理池中运行。
- 
              授权特定管道 - 单独授权 Azure DevOps 项目中的特定管道以在池中运行。 此方法是默认方法。
- 
              打开访问权限 - 将项目级别的代理池配置为可用于该项目中的所有管道。
启用 “允许所有管道在池上运行,而无需批准(开放访问权限)” ,以便在创建池时在 Azure DevOps 中配置 开放访问 代理池设置。
注意
只有在创建池的时候,托管的 DevOps 池才能配置 “允许所有管道在没有批准(开放访问)时在池上运行” 设置。 创建托管 DevOps 池后,可以在 Azure DevOps 中相应的代理池上查看和配置开放访问权限,以便对使用该池的每个项目进行查看和配置。
 
启用 “允许所有管道在池上运行,而无需批准(开放访问权限)” ,以便从指定项目中的所有管道配置对托管 DevOps 池的访问权限。
              
               
              
              
            
- 如果向所有项目添加池设置为“是”,托管的 DevOps 池将为所有项目中的所有管道配置开放访问。
- 如果将池添加到所有项目设置为否,则管理的 DevOps 池仅为列出的项目中的所有流水线配置开放访问。
如果在 多个组织中启用“使用池”,则可以为每个组织单独指定 开放访问权限 。
              
               
              
              
            
注意
在使用更高版本时,将会出现“api-version 2025-01-21”设置。
 
组织在托管 DevOps 池资源的属性中 organizationProfile 配置。 以下示例配置了两个组织。
- 组织 fabrikam-tailspin在所有项目上都配置了 开放访问权限 。
- 
              fabrikam-prime组织被配置为具有两个项目的可用性,并且仅在这两个项目上启用了 开放访问权限。
"organizationProfile": {
    "organizations": [
        {
            "url": "https://dev.azure.com/fabrikam-tailspin",
            "projects": [],
            "openAccess": true,
            "parallelism": 2
        },
        {
            "url": "https://dev.azure.com/fabrikam-prime",
            "projects": [ "fabrikam-dev", "fabrikam-test" ],
            "openAccess": true,
            "parallelism": 2
        }
    ],
    "permissionProfile": {
        "kind": "CreatorOnly"
    },
    "kind": "AzureDevOps"
}
重要
仅在创建托管 DevOps 池期间配置开放访问权限。 若要在创建池后更改“打开访问”设置(包括添加或删除托管 DevOps 池配置中的项目),必须为使用该池的每个项目在 Azure DevOps 中的相应代理池上手动配置“打开”访问权限。
 
在openAccess池时,organization-profile设置会配置在参数中。
az mdp pool create \
   --organization-profile organization-profile.json
   # other parameters omitted for space
在以下示例orgaization-profile中,配置了两个组织。
- 组织 fabrikam-tailspin在所有项目上都配置了 开放访问权限 。
- 
              fabrikam-prime组织被配置为具有两个项目的可用性,并且仅在这两个项目上启用了 开放访问权限。
{
  "AzureDevOps":
  {
      "organizations": [
        {
            "url": "https://dev.azure.com/fabrikam-tailspin",
            "projects": [],
            "parallelism": 2
        },
        {
            "url": "https://dev.azure.com/fabrikam-prime",
            "projects": [ "fabrikam-dev", "fabrikam-test" ],
            "parallelism": 2
        }
    ]
  }
}
重要
仅在创建托管 DevOps 池期间配置开放访问权限。 若要在创建池后更改“打开访问”设置(包括添加或删除托管 DevOps 池配置中的项目),必须为使用该池的每个项目在 Azure DevOps 中的相应代理池上手动配置“打开”访问权限。
 
注意
在使用更高版本时,将会出现“api-version 2025-01-21”设置。
 
组织在托管 DevOps 池资源的属性中 organizationProfile 配置。 以下示例配置了两个组织。
- 组织 fabrikam-tailspin在所有项目上都配置了 开放访问权限 。
- 
              fabrikam-prime组织被配置为具有两个项目的可用性,并且仅在这两个项目上启用了 开放访问权限。
organizationProfile: {
  organizations: [
    {
      url: 'https://dev.azure.com/fabrikam-tailspin'
      projects: []
      openAccess: true
      parallelism: 2
    }
    {
      url: 'https://dev.azure.com/fabrikam-prime'
      projects: ['fabrikam-dev', 'fabrikam-test']
      openAccess: true
      parallelism: 2
    }
  ]
  permissionProfile: {
    kind: 'CreatorOnly'
  }
  kind: 'AzureDevOps'
}
重要
仅在创建托管 DevOps 池期间配置开放访问权限。 若要在创建池后更改“打开访问”设置(包括添加或删除托管 DevOps 池配置中的项目),必须为使用该池的每个项目在 Azure DevOps 中的相应代理池上手动配置“打开”访问权限。
 
 
如果尝试运行无权访问代理池的管道,将收到类似于 This pipeline needs permission to access a resource before this run can continue下面的错误。 可以通过配置开放访问权限(如上一部分所述)或 显式授权管道在代理池中运行来解决此问题。
如果测试需要交互式登录进行 UI 测试,请启用 EnableInteractiveMode 设置来启用交互式登录。
在属性的节osProfile中fabricProfile配置交互式模式。 
              logonType设置为Interactive启用交互模式或Service禁用交互模式。
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "name": "fabrikam-managed-pool",
            "type": "microsoft.devopsinfrastructure/pools",
            "apiVersion": "2025-01-21",
            "location": "eastus",
            "properties": {
            ...
            "fabricProfile": {
                "sku": {...},
                "images": [...],
                "osProfile": {
                    "secretsManagementSettings": {...},
                    "logonType": "Interactive"
                },
                "storageProfile": {...},
                "kind": "Vmss"
            }
        }
    ]
}
在logonType或osProfile池时,通过在fabric-profile参数中的节配置属性来设置交互式模式。
az mdp pool create \
   --fabric-profile fabric-profile.json
   # other parameters omitted for space
以下示例展示了在启用 osProfile 模式的情况下,fabric-profile.json 文件的 Interactive 节。
{
  "vmss": {
    "sku": {...},
    "images": [...],
    "osProfile": {
      "secretsManagementSettings": {...},
      "logonType": "Interactive"
    },
    "storageProfile": {...}
  }
}
在属性的节osProfile中fabricProfile配置交互式模式。 
              logonType设置为Interactive启用交互模式或Service禁用交互模式。
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-01-21' = {
  name: 'fabrikam-managed-pool'
  location: 'eastus'
  properties: {
    fabricProfile: {
      sku: {...}
      images: [...]
      osProfile: {
        secretsManagementSettings: {...}
        logonType: 'Interactive'
      }
      storageProfile: {...}
      kind: 'Vmss'
    }
  }
}
 
池管理权限
作为托管 DevOps 池创建过程的一部分,代理池在 Azure DevOps 组织级别创建,并在每个指定项目中创建项目级代理池。 
              池管理权限设置指定哪些用户被授予 Azure DevOps 中新创建的代理池的管理员权限。 若要在创建托管 DevOps 池后查看和管理 Azure DevOps 代理池权限,请参阅 创建和管理代理池 - 代理池的安全性。
              
               
              
              
            
- 
              仅创建者 - 创建托管 DevOps 池的用户被添加为 Azure DevOps 代理池的管理员,并且在代理池安全设置中,“继承” 设置为 “关闭”。 
              仅限创建者 是默认设置。
- 
              从项目继承权限 - 创建托管 DevOps 池的用户将添加为 Azure DevOps 代理池的管理员,在代理池安全设置中将 继承 设置为 On 。
- 
              特定帐户 - 指定要作为 Azure DevOps 中创建的代理池管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。
注意
创建池时,池 管理权限 设置在“ 安全 ”选项卡上配置,创建池后不会显示在 “安全 ”设置中。 若要在创建托管 DevOps 池后查看和管理 Azure DevOps 代理池权限,请参阅 创建和管理代理池 - 代理池的安全性。
 
在托管 DevOps 池资源部分的属性permissionsProfile中organizationProfile配置池管理权限。
{
"organizationProfile": {
    "organizations": [...],
    "permissionProfile": {
        "kind": "CreatorOnly"
    },
    "kind": "AzureDevOps"
}
只能在创建池期间设置该 permissionProfile 属性。 允许使用的值为 Inherit、CreatorOnly 和 SpecificAccounts。
- 
              CreatorOnly- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 “关闭 ”。 
              仅限创建者 是默认设置。
- 
              Inherit- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 On 。
- 
              SpecificAccounts- 指定要在 Azure DevOps 中创建的代理池的管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。 提供属性的单个电子邮件地址或电子邮件地址users列表;否则省略users。
"organizationProfile": {
    "organizations": [...],
    "permissionProfile": {
      "kind": "SpecificAccounts",
      "users" : ["User1@fabrikam.com", "User2@fabrikam.com" ]
    },
    "kind": "AzureDevOps"
}
              organization-profile池时,在参数中配置池管理权限。
az mdp pool create \
   --organization-profile organization-profile.json
   # other parameters omitted for space
{
  "AzureDevOps":
  {
    "organizations":  [...],
    "permissionProfile": {
        "kind": "CreatorOnly"
    }
  }
}
只能在创建池期间设置该 permissionProfile 属性。 允许使用的值为 Inherit、CreatorOnly 和 SpecificAccounts。
- 
              CreatorOnly- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 “关闭 ”。 
              仅限创建者 是默认设置。
- 
              Inherit- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 On 。
- 
              SpecificAccounts- 指定要在 Azure DevOps 中创建的代理池的管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。 提供属性的单个电子邮件地址或电子邮件地址users列表;否则省略users。
{
  "AzureDevOps" : {
    "organizationProfile": {
      "organizations": [...],
      "permissionProfile": {
        "kind": "SpecificAccounts",
        "users" : ["User1@fabrikam.com", "User2@fabrikam.com" ]
      }
    }
  }
}
在托管 DevOps 池资源部分的属性permissionsProfile中organizationProfile配置池管理权限。
organizationProfile: {
  organizations: [...]
  permissionProfile: {
    kind: 'CreatorOnly'
  }
  kind: 'AzureDevOps'
}
只能在创建池期间设置该 permissionProfile 属性。 允许使用的值为 Inherit、CreatorOnly 和 SpecificAccounts。
- 
              CreatorOnly- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 “关闭 ”。 
              仅限创建者 是默认设置。
- 
              Inherit- 创建托管 DevOps 池的用户将作为 Azure DevOps 代理池的管理员添加,在代理池安全设置中将 继承 设置为 On 。
- 
              SpecificAccounts- 指定要在 Azure DevOps 中创建的代理池的管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。 提供属性的单个电子邮件地址或电子邮件地址users列表;否则省略users。
organizationProfile: {
  organizations: [...]
  permissionProfile: {
    kind: 'SpecificAccounts'
    users: ['User1@fabrikam.com', 'User2@fabrikam.com']
  }
  kind: 'AzureDevOps'
}
 
密钥库配置
托管 DevOps 池服务允许在预配期间从 Azure Key Vault 获取证书,这意味着在运行管道时,该证书将已经存在于计算机上。
若要使用此功能,必须:
- 
              在池上配置标识,此标识必须具有 Key Vault 机密用户权限才能从 Key Vault 中提取机密。 若要将标识分配给 Key Vault 机密用户 角色,请参阅 使用 Azure 基于角色的访问控制提供对 Key Vault 密钥、证书和机密的访问权限。 
- 配置 Key Vault 集成设置的主体(如果您正在配置 Key Vault 设置,那么就是您的帐户)必须在存储证书的 Key Vault 上拥有 Key Vault Certificate User 角色分配。 
- 
              即将推出 - 如果为 Azure Key Vault 强制实施网络隔离以仅允许授权资源访问,则必须将以下 IP 地址添加到 Azure Key Vault 允许列表。 以下 IP 地址范围和任何新的 IP 地址范围将添加到名为 DevOpsInfrastructure 的即将推出的 Azure 服务标记中。 - 
- 
| 位置 | 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 |  - 
| westcentralus | 128.24.189.20 |  
 
注意
因此 api-version 2025-01-21,如果使用此功能,则只能在池中使用单个标识。 不久将添加对多个标识的支持。
只能使用一个标识从密钥库中提取机密。
托管 DevOps 池的证书设置是在池级别进行的,其中某些设置特定于 Windows 或 Linux。 如果工作流同时需要 Linux 和 Windows 映像,则如果找不到适用于 Windows 和 Linux 的常见证书设置集,则可能需要将它们划分为多个池。
 
以下设置配置从 Key Vault 提取的证书。
- 
              证书 (- observedCertificates)
 - 指定要从 Key Vault 提取的证书,并将其安装在池中的所有计算机上。 
- 
              证书存储位置 (- certificateStoreLocation)
 - 指定要在代理上安装证书的位置。 - 
- 
              Windows 代理:指定 LocalMachine或CurrentUser。
- 
              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 集成设置,也不会显示在池创建过程中 的“安全 ”选项卡中。
 
Azure 密钥库在osProfile属性的部分中fabricProfile配置。 
              secretManagementSettings设置能够访问所需证书。
注意
该 osProfile.certificateStoreName 属性仅在 apiVersion 2025-01-21 及更高版本中可用。
 
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "name": "fabrikam-managed-pool",
            "type": "microsoft.devopsinfrastructure/pools",
            "apiVersion": "2025-01-21",
            "location": "eastus",
            "properties": {
            ...
            "fabricProfile": {
                "sku": {...},
                "images": [...],
                "osProfile": {
                    "secretsManagementSettings": {
                        "certificateStoreLocation": "LocalMachine",
                        "certificateStoreName": "Root",
                        "observedCertificates": [
                            "https://<keyvault-uri>/secrets/<certificate-name>"
                        ],
                        "keyExportable": false
                    }
                },
                "storageProfile": {...},
                "kind": "Vmss"
            }
        }
    ]
}
创建或更新池时osProfile,fabricProfile将在属性部分中配置  Azure 密钥库。 
              secretManagementSettings设置能够访问所需证书。
az mdp pool create \
   --fabric-profile fabric-profile.json
   # other parameters omitted for space
以下示例显示了 osProfile 已配置的fabric-profile.json 文件的 secretsManagementSettings节。
{
  "vmss": {
    "sku": {...},
    "images": [...],
    "osProfile": {
      "secretsManagementSettings": {
          "certificateStoreLocation": "LocalMachine",
          "observedCertificates": [
              "https://<keyvault-uri>/secrets/<certificate-name>"
          ],
          "keyExportable": false
      },
      "logonType": "Interactive"
    },
    "storageProfile": {...}
  }
}
Azure 密钥库在osProfile属性的部分中fabricProfile配置。 
              secretManagementSettings设置能够访问所需证书。
注意
该 osProfile.certificateStoreName 属性仅在 apiVersion 2025-01-21 及更高版本中可用。
 
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-01-21' = {
  name: 'fabrikam-managed-pool'
  location: 'eastus'
  properties: {
    fabricProfile: {
      sku: {...}
      images: [...]
      osProfile: {
        secretsManagementSettings: {
          certificateStoreLocation: 'LocalMachine'
          certificateStoreName: 'Root'
          observedCertificates: 'https://<keyvault-uri>/secrets/<certificate-name>'
          keyExportable: false
        }
      }
      kind: 'Vmss'
    }
  }
}
 
配置 SecretManagementSettings
使用池上检索的SecretManagementSettings证书将自动与密钥库中发布的最新版本同步。 这些机密将在首次运行管道之前保存在计算机上,这意味着可以节省时间并省去提取证书的任务。
重要
如果由于权限或网络问题而无法从密钥库提取机密,则代理虚拟机的预配将失败。
 
另请参阅