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

rnm*_*one 2 azure azure-active-directory azure-devops azure-pipelines

我有一个管道,用于构建 Web 工件并尝试使用 Azure Pipelines 中提供的 Azure 文件复制任务将它们复制到我的 Azure 存储。过去 2 天我一直在尝试修复此 403 响应,指出存在权限错误。

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

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

ric*_*sch 5

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

  • 如果您正在运行自己的构建代理,那就非常简单了。
  • 如果您使用 Microsoft 托管代理来运行作业并且需要有关所使用的 IP 地址的信息,请参阅Microsoft 托管代理代理 IP 范围

在某些设置中,您可能需要知道部署代理的 IP 地址范围。例如,如果您需要授予托管代理通过防火墙的访问权限,您可能希望通过 IP 地址限制该访问。由于 Azure DevOps 使用 Azure 全球网络,因此 IP 范围会随时间变化。我们每周发布一个 JSON 文件,列出 Azure 数据中心的 IP 范围(按区域划分)。该文件每周三发布,其中包含新计划的 IP 范围。新的 IP 范围将于下周一生效。我们建议您经常回来查看,以确保您拥有最新的列表。

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

编辑:
这里有一个已关闭(!-但仍然有效)的 GitHub 问题:AzureDevops don't think as 'Microsoft Services'

编辑2:

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

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