3

我们正在为我们的云服务使用 azure 存储帐户。此存储帐户是虚拟网络的一部分,因此对存储帐户的访问受到限制selected networks并添加了 vnet。这在我们的服务中非常有效。

当我们尝试在 azure 管道中将数据复制到此存储帐户时,就会出现问题。在管道中,我们临时将防火墙规则添加到存储帐户,以允许从管道代理的 IP 地址到存储帐户的流量。然后我们复制数据(通过 azcopy),最后删除防火墙规则。这适用于私人代理。但是,我们也使用托管在 azure中的私人代理。问题是,如果代理在 azure 中运行,则与存储帐户的连接使用私有 azure ip 地址,并且防火墙规则不起作用。这是在这个文档中指定的:

与存储帐户部署在同一区域的服务使用私有 Azure IP 地址进行通信。因此,您不能根据公共出站 IP 地址范围限制对特定 Azure 服务的访问。

有没有办法强制外部路由?在我看来,在当前配置下,我们无法从 azure 中连接到存储帐户,但我们能够从 azure 之外的私有代理(或任何其他 pc)连接,这似乎真的很愚蠢。

我已经尝试使用存储帐户部分中的routing preference设置,并使用端点,但这没有任何区别。firewalls and virtual networks-internetrouting

4

2 回答 2

1

解决方案是使用私有端点。我正在处理同样的问题,经过大量研究后,我发现私有端点将有助于通过代理所在的远程 vnet 和存储所在的 vnet 之间的内部 IP 进行访问。我已经对此进行了测试并在下面提供了详细信息。

经过测试,我发现这种工作方式是通过在存储 vnet 中创建私有 DNS 并设置 vnet DNS 链接,允许代理所在的远程 vnet 中的 VM 将存储帐户连接解析为私有 IP,而不是一个公共 IP。此外,在远程 vnet 中创建了一个 NIC,它提供了到存储的私有 IP 的路由。

因此,NIC 与为私有 IP 连接提供路由的代理位于同一个 vnet 中,并且存在一个 DNS 链接以将存储解析为私有 IP,这一切都正常工作。代理将依赖私有 DNS 而不是公共 DNS 来解析存储主机名,因此代理将通过私有 IP 与 azure 正确通信。

编辑:我已经设置了一个私有端点并确认它按预期工作。使用 terraform 这样做有一些注意事项,我在相关的 azurerm 提供程序 GitHub 问题中概述了这些注意事项:

https://github.com/hashicorp/terraform-provider-azurerm/issues/2977#issuecomment-1011183736

于 2022-01-11T16:11:27.333 回答
-1

根据此处,您需要允许访问与您所在地区匹配的整个 azure 数据中心。所以我在想一些自动化的东西来查询 API,检索 IP 范围并使用它。

于 2020-11-26T20:51:39.677 回答