您应该为 VNET 专用终结点的每个 Azure 资源(CosmosDB、KeyVault、存储)创建多个子网还是只使用一个?
Posted
技术标签:
【中文标题】您应该为 VNET 专用终结点的每个 Azure 资源(CosmosDB、KeyVault、存储)创建多个子网还是只使用一个?【英文标题】:Should you create multiple subnets for each Azure resource (CosmosDB, KeyVault, Storage) for VNET Private Endpoints or only use one? 【发布时间】:2021-12-26 21:25:37 【问题描述】:我正在尝试遵循有关如何关闭 VNET 后面的数据库、存储帐户和 KeyVault 等资源的教程。没有任何教程涉及如何为多个资源创建子网。从我看到的文档中,他们只是为函数创建子网,而不是为资源创建子网。但从我阅读的一篇博客中,他们为 KeyVault 创建了一个子网。所以我不太确定在这里做什么。
现在我有几个 Web 应用程序,一个功能应用程序需要连接到 KeyVault、存储帐户、CosmosDB 和搜索服务。我的计划是为以下对象创建一个子网:
网络应用 功能 KeyVault 存储帐户 CosmosDB这是要走的路吗?还是我只为这些功能创建一个?我读到这些需要有自己的子网。感谢您的帮助!
【问题讨论】:
您打算如何连接所有这些子网?通常,您将两个必须通信的资源放在同一个私有子网中。 @MartinLiversage 我认为这是由 VNET 处理的。那么你将如何连接这些呢?只使用一个子网来处理所有事情?在此找不到任何文档 您的威胁模型是什么?通常,更多的 VNET 更安全,因为您对网络进行了分段。对一种资源的破坏只允许对直接连接的资源进行攻击。话虽如此,我猜您的 Web 应用程序和您的函数都需要连接到密钥库、存储帐户和 Cosmos DB,这些都是您要保护的资源,因此似乎一切都在一个 VNET 中。如果您担心安全问题,那么您应该咨询我不是的安全专家。 只要我们至少有办法关闭资源,我们就很好。但问题仍然存在,我是否为每个资源创建一个子网? blog.nillsf.com/index.php/2020/09/16/… 在本教程中,他为他的 KV 创建了一个子网。那么为每个资源创建一个有意义吗? 浏览文章后,我更好地理解了您的问题。我假设您只需要一个 VNET。我不知道创建多个子网是否有意义。 PrivateLink 是仅适用于密钥保管库的功能还是 Cosmos DB 支持?我不知道。但是,如文章中所述,确保应用程序的不同部分通过私有 VNET 进行通信通常更安全。另一方面,大多数应用程序可能会跳过 VNET 部分。它归结为威胁模型...... 【参考方案1】:我在我的环境中进行了同样的测试。
我在同一个区域创建了两个 Web 应用,一个函数应用、存储帐户和密钥保管库
我创建了一个包含三个子网的虚拟网络。
我将 Web 应用程序和函数应用程序与 VNET 集成集成到我创建的虚拟网络的两个不同子网(Web 应用程序的子网 1 和函数应用程序的子网 2)。
我为函数应用和 Web 应用创建了单独的子网,因为子网被委派给该特定服务。
VNET 集成用于从 Web 应用或函数应用安全地连接到虚拟网络中的资源。
我在我创建的虚拟网络的同一子网 (subnet3) 中为存储帐户和密钥保管库创建了专用终结点。
我们可以为不同的私有端点使用相同的子网。此外,我们可以为每个私有端点创建单独的子网
我能够从 Web 应用和函数应用连接到存储帐户和密钥保管库
因此,在您的情况下,您可以为 Web 应用程序、函数应用程序创建单独的子网,以便它们可以与 VNET 集成。
您可以为密钥保管库和存储帐户等资源的所有专用终结点创建另一个子网,以便可以通过虚拟网络和专用终结点从 Web 应用和函数应用安全地访问它们
有关私有端点的更多信息,您可以参考:Azure virtual network service endpoints | Microsoft Docs
【讨论】:
以上是关于您应该为 VNET 专用终结点的每个 Azure 资源(CosmosDB、KeyVault、存储)创建多个子网还是只使用一个?的主要内容,如果未能解决你的问题,请参考以下文章
Azure Web App VNet 与具有专用链接的存储帐户集成
如何使用 Azure 数据工厂使用私有终结点访问 Azure Function?