如何通过PowerShell创建基于工作负载标识的ACR Docker Registry服务连接
复用已有服务主体创建Azure DevOps ACR工作负载标识服务连接
当前通过PowerShell脚本创建连接ACR的Docker Registry服务连接时,默认会在Entra ID中自动生成新的应用注册。要改为工作负载标识模式复用已有的服务主体/应用注册,需调整请求体的授权配置,以下是修正后的脚本:
$uri = "https://dev.azure.com/$($organization)/$($projectName)/_apis/serviceendpoint/endpoints?api-version=7.1-preview.4" # 构造请求体(复用已有服务主体的工作负载标识模式) $requestBody = @{ name = "DockerAcrTest1" type = "dockerregistry" url = "https://$($acrLoginServer)" authorization = @{ parameters = @{ loginServer = $acrLoginServer clientId = "<已有服务主体/应用注册的Client ID>" # 替换为你的已有服务主体ID tenantId = $tenantId scope = $acrRegistryId role = "8311e382-0749-4cb8-b61a-304f252e45ec" # ACR拉取权限角色ID,按需调整 } scheme = "WorkloadIdentity" # 关键:切换为工作负载标识授权方案 } data = @{ registryId = $acrRegistryId registrytype = "ACR" subscriptionId = $subscriptionId subscriptionName = $subscriptionName workloadIdentityFederationEnabled = $true # 启用工作负载标识联邦 } serviceEndpointProjectReferences = @( @{ projectReference = @{ id = $projectId name = $projectName } name = $serviceConnectionName # 项目中显示的服务连接名称 } ) }
关键修改说明
- 授权方案切换:将
authorization.scheme从ServicePrincipal改为WorkloadIdentity,这是复用已有服务主体的核心配置 - 指定已有服务主体:在
authorization.parameters中添加clientId,填入你需要复用的Entra ID应用注册/服务主体的Client ID - 启用工作负载标识联邦:在
data节点添加workloadIdentityFederationEnabled = $true,确保服务连接使用工作负载标识模式 - 移除自动创建逻辑:原脚本中触发自动创建应用的相关逻辑会被新的授权方案覆盖,不会再生成新的应用注册
内容的提问来源于stack exchange,提问作者Yashas .M
相关产品推荐
相关产品推荐

