如何在Azure DevOps GUI中创建长有效期的Azure Container Registry服务主体
Azure DevOps ACR服务连接长有效期SP解决方案
核心结论
通过Azure DevOps GUI直接创建ACR类型服务连接时,无法自定义自动生成的Service Principal(SP)密钥有效期,默认固定为3个月,没有GUI配置选项。要获得长有效期SP,需通过手动创建SP再关联服务连接,或结合脚本自动化实现。
手动创建长有效期SP并关联服务连接
按以下步骤操作,可自主设置SP密钥有效期(如1年):
- 在Azure Portal创建SP
- 搜索“应用注册”,点击“新注册”,填写名称,选择租户类型(推荐单租户),完成注册。
- 进入该应用注册页面,转到「证书和密码」,点击「新建客户端密码」,设置有效期(支持自定义时长,最长可选24个月),保存生成的密钥值(仅显示一次,务必记录)。
- 为SP分配ACR权限
- 打开目标Azure容器注册表(ACR),转到「访问控制(IAM)」,点击「添加角色分配」。
- 选择所需角色(如「ACR推送」用于流水线推送镜像,「ACR拉取」用于拉取镜像),搜索并选择刚创建的SP作为主体,完成分配。
- 在Azure DevOps手动创建服务连接
- 进入项目的「项目设置」→「服务连接」→「新建服务连接」,选择「Azure Container Registry」。
- 选择「手动」选项,依次填写ACR注册表名称、订阅ID、租户ID,再输入SP的客户端ID和刚才保存的密钥,完成创建。
此方式创建的服务连接,密钥有效期与你设置的一致,到期前只需更新SP密钥并同步到服务连接即可,无需重建连接。
解决更新SP密钥后流水线失败的问题
你之前更新SP密钥但未重建服务连接导致失败,原因是Azure DevOps服务连接存储的仍是旧密钥。正确操作无需重建连接:
- 进入Azure DevOps服务连接列表,找到目标ACR服务连接,点击「编辑」。
- 在编辑页面更新「客户端密码」为新生成的SP密钥,保存后流水线即可正常使用新密钥。
自动化获取长有效期SP的方案
若需自动化管理SP生命周期,可通过Azure CLI/PowerShell脚本实现:
- 脚本创建长有效期SP
以下PowerShell脚本可创建有效期1年的SP并分配ACR权限:# 替换为你的订阅ID、资源组、ACR名称 $subscriptionId = "你的订阅ID" $resourceGroup = "你的资源组名称" $acrName = "你的ACR名称" # 创建SP并分配ACR推送权限,有效期1年 $sp = az ad sp create-for-rbac --name "ACR-Pipeline-SP" ` --scopes "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ContainerRegistry/registries/$acrName" ` --role "ACR推送" ` --years 1 | ConvertFrom-Json # 输出关键信息,用于后续配置服务连接 Write-Host "客户端ID: $($sp.appId)" Write-Host "客户端密码: $($sp.password)" Write-Host "租户ID: $($sp.tenant)" - 自动同步密钥到服务连接
若需到期自动更新密钥并同步到Azure DevOps服务连接,可调用Azure DevOps REST API实现,示例curl命令:
可将此脚本集成到Azure自动化账户或DevOps管道中,定期执行实现自动续期。# 替换为你的组织、项目、服务连接ID、PAT令牌和新密钥 ORGANIZATION="你的组织名称" PROJECT="你的项目名称" ENDPOINT_ID="服务连接ID" PAT_BASE64=$(echo -n ":你的PAT令牌" | base64) NEW_SECRET="新的SP密钥" curl -X PATCH -H "Content-Type: application/json" -H "Authorization: Basic $PAT_BASE64" \ -d '{ "data": { "servicePrincipalKey": "'"$NEW_SECRET"'" } }' \ "https://dev.azure.com/$ORGANIZATION/$PROJECT/_apis/serviceendpoint/endpoints/$ENDPOINT_ID?api-version=7.1-preview.4"
内容的提问来源于stack exchange,提问作者SAUPARNA DATTA
相关产品推荐
相关产品推荐

