Azure DevOps管道无法复制到Azure存储

时间:2020-06-05 12:00:47

标签: azure azure-devops azure-active-directory azure-pipelines

我有一个构建网络工件的管道,并尝试使用Azure Pipelines中提供的Azure File Copy任务将其复制到我的Azure存储中。最近2天,我一直在尝试修复此403响应,并指出存在权限错误。

  • 我为此管道有一个服务连接。
  • 服务连接应用程序注册在API权限中具有用于Azure存储的user_impersonation
  • 服务连接应用程序注册的目标存储帐户,资源组和订阅具有“存储Blob数据贡献者”和“存储Blob数据所有者”。

enter image description here

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

由于存储帐户使用防火墙,并且已根据your comment启用了IP范围白名单,因此您应该将代理的IP地址添加到白名单中。

  • 如果您正在运行自己的构建代理,这非常简单。
  • 如果您使用Microsoft托管的代理来运行作业,并且需要有关使用了哪些IP地址的信息,请参见Microsoft-hosted agents Agent IP ranges

在某些设置中,您可能需要了解部署代理的IP地址范围。例如,如果您需要授予托管代理通过防火墙的访问权限,则可能希望通过IP地址限制该访问权限。由于Azure DevOps使用Azure全球网络,因此IP范围会随时间变化。我们发布了weekly JSON file列出了Azure数据中心的IP范围,并按区域进行了细分。该文件在每个星期三以新的计划IP范围发布。新的IP范围在下周一生效。我们建议您经常进行检查,以确保保留最新列表。

由于Azure管理库中没有用于.NET的API来列出地理区域,因此您必须手动列出它们。

编辑:
此处存在一个已关闭(!-但仍处于活动状态)的GitHub问题:AzureDevops don't considerate as 'Microsoft Services'

编辑2:

您的托管代理在与您的组织相同的Azure地理环境中运行。每个地理区域都包含一个或多个区域。尽管您的代理可能与您的组织在同一地区运行,但不能保证这样做。要获取代理商可能使用的IP范围的完整列表,您必须使用地理位置中包含的所有区域的IP范围。例如,如果您的组织位于美国地理区域内,则必须为该地理区域内的所有区域使用IP范围。

要确定您的地理位置,请导航至https://dev.azure.com/<your_organization>/_settings/organizationOverview,获取您的区域,然后从Azure地理位置表中找到相关的地理位置。确定地理位置后,将每周文件的IP范围用于该地理位置的所有区域。