可以使用“安全”选项卡在池创建期间以及使用“安全设置”窗格创建池后为托管 DevOps 池配置安全设置。
默认情况下,托管 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": "2024-10-19",
"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
对象,该对象针对组织中所有项目都配置了该对象,该parallelism
对象fabrikam-tailspin
设置为 1
< />。
{
"AzureDevOps":
{
"organizations": [
{
"url": "https://dev.azure.com/fabrikam-tailspin",
"projects": [],
"parallelism": 1
}
]
}
}
该 organizationProfile
部分具有以下属性。
properties |
说明 |
AzureDevOps |
此值是在其中 organization-profile 定义的对象的名称,必须设置为 Azure DevOps 。 |
organizations |
可以使用池的组织列表。 url 指定组织的 URL, projects 是可以使用池的项目名称列表(空列表支持组织中的所有项目),并 parallelism 指定此组织可以使用的代理数。 组织的并行度之和必须与池的最大代理设置匹配。 |
permissionProfile |
指定创建 Azure DevOps 池时授予的权限。 只能在创建池期间设置此值。 允许使用的值为 Inherit 、CreatorOnly 和 SpecificAccounts 。 如果 specificAccounts 已指定,请为属性提供单个电子邮件地址或电子邮件地址 users 列表;否则省略 users 。 有关详细信息,请参阅 池管理权限。 |
在多个组织中使用池
启用 多个组织中的 “使用池”,以便将池与多个 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
}
]
}
}
如果测试需要交互式登录进行 UI 测试,请启用 EnableInteractiveMode 设置来启用交互式登录。
在属性的节fabricProfile
中osProfile
配置交互式模式。 Interactive
设置为logonType
启用交互模式或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": "2024-10-19",
"location": "eastus",
"properties": {
...
"fabricProfile": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {...},
"logonType": "Interactive"
},
"storageProfile": {...},
"kind": "Vmss"
}
}
]
}
在创建或更新池时,fabric-profile
使用参数中节中的osProfile
属性配置logonType
交互式模式。
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": {...}
}
}
池管理权限
作为托管 DevOps 池创建过程的一部分,在 Azure DevOps 中创建组织级代理池。 池 管理权限 设置指定哪些用户被授予新创建的 Azure DevOps 池的管理员角色。 若要在创建托管 DevOps 池后查看和管理 Azure DevOps 代理池权限,请参阅 创建和管理代理池 - 代理池的安全性。
- 仅 创建者 - 创建托管 DevOps 池的用户作为 Azure DevOps 代理池的管理员添加, 并且“继承 ”设置为 “关闭 ”代理池安全设置。 创建者只是 默认设置。
- 从项目 继承权限 - 创建托管 DevOps 池的用户将添加为 Azure DevOps 代理池的管理员, 在代理池安全设置中将继承 设置为 On 。
- 特定帐户 - 指定要作为 Azure DevOps 中创建的代理池管理员添加的帐户。 默认情况下,托管 DevOps 池创建者将添加到列表中。
注意
创建池时,池管理权限设置在“安全”选项卡上配置,创建池后不会显示在“安全”设置中。 若要在创建托管 DevOps 池后查看和管理 Azure DevOps 代理池权限,请参阅 创建和管理代理池 - 代理池的安全性。
在托管 DevOps 池资源部分的属性organizationProfile
中permissionsProfile
配置池管理权限。
{
"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 池提供在预配期间从 Azure 密钥库提取证书的功能,这意味着在运行 Azure DevOps 管道时,该证书已存在于计算机上。 若要使用此功能,必须在池中配置标识,并且此标识必须具有密钥库机密用户权限才能从密钥库中提取机密。 若要将标识分配给密钥库机密用户角色,请参阅使用 Azure 基于角色的访问控制提供对密钥库密钥、证书和机密的访问权限。
注意
因此 api-version 2024-10-19
,如果使用此功能,则只能在池中使用单个标识。 不久将添加对多个标识的支持。
只能使用一个标识从密钥库中提取机密。
密钥库集成是在设置>安全性。
注意
密钥库集成设置只能在创建池后进行配置。 密钥库在创建池期间无法配置集成设置,并且不会显示在创建池期间的安全选项卡。
Azure 密钥库在osProfile
属性的部分中fabricProfile
配置。 secretManagementSettings
设置能够访问所需证书。
{
"$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": "2024-10-19",
"location": "eastus",
"properties": {
...
"fabricProfile": {
"sku": {...},
"images": [...],
"osProfile": {
"secretsManagementSettings": {
"certificateStoreLocation": "LocalMachine",
"observedCertificates": [
"https://<keyvault-uri>/secrets/<certificate-name>"
],
"keyExportable": false
}
},
"storageProfile": {...},
"kind": "Vmss"
}
}
]
}
创建或更新池时,fabricProfile
将在属性部分中配置 osProfile
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": {...}
}
}
配置 SecretManagementSettings
使用池上检索的SecretManagementSettings
证书将自动与密钥库中发布的最新版本同步。 这些机密将在运行任何 Azure DevOps 管道时在计算机上,这意味着可以节省时间并删除用于提取证书的任务。
重要
如果由于权限或网络问题而无法从密钥库提取机密,则代理虚拟机的预配将失败。
对于 Windows,允许将证书存储位置设置为 LocalMachine
或 CurrentUser
。 此设置将确保该机密安装在计算机上的该位置。 有关机密检索工作原理的特定行为,请参阅适用于 Windows 的 Azure VMSS 密钥库扩展的文档。
对于 Linux,证书存储位置可以是计算机上的任意目录,证书将下载并同步到该位置。 有关默认设置和机密行为的详细信息,请参阅适用于 Linux 的 Azure VMSS 密钥库扩展的文档。
另请参阅