Azure DevOps管道-构建Docker镜像并将其推送到具有受限网络访问权限的Azure容器注册表



我在Azure DevOps中有一个管道,它应该构建Docker映像并将其推送到Azure容器注册表。因此,我有一个服务连接(类型:dockerregistry(,以便授权管道进行推送。如果我删除容器注册表中的网络限制,一切都会很好。

一旦我想限制网络访问,它就不再工作;拒绝";在docker任务的管道输出中。我还尝试添加Azure DevOps IP范围(13.107.43.0/24、13.107.42.0/24、13107.9.0/24、13.107.6.0/24(

知道怎么了吗?

实际上,当您使用管道时,所有任务都在代理中运行。还有代理商的网络,你可以在这里看看。正如您所看到的,您需要允许代理的IP地址,并且IP范围随着时间的推移而变化。每周您都需要在组织区域的防火墙规则中添加新的IP地址。所以这有点麻烦。

与控制访问IP地址相比,我建议您控制ACR的凭据权限。如果一个人没有足够的权限,即使他可以访问ACR,他也不能做需要特别权限的事情。以下是有关ACR权限的详细信息。

您可以在推送之前在管道中动态添加代理IP,然后进行等效的删除:

- task: AzureCLI@2
inputs:
azureSubscription: $(ACR_SERVICE_CONNECTION_NAME)
scriptType: pscore
scriptLocation: inlineScript
inlineScript: |
# Open firewall on ACR for IP of current agent
$agentIp = (New-Object net.webclient).downloadstring("http://checkip.dyndns.com") -replace "[^d.]"
az acr network-rule add -n YourACRName--ip-address $agentIp

最新更新