Azure NSG 必须与附加到受 NSG 保护的子网的 NIC 位于同一资源组中吗?

Must Azure NSGs be in the same resource group as NICs which attach to the subnet protected by the NSG?

我在将 NIC(在资源组 A 中)附加到属于不同资源组(比如 B)中的 Vnet 和 NSG 的子网时遇到了一些问题。我在资源组 A 中有贡献者角色,但在资源组 B 中只有 Reader 角色。这可能吗?如果是这样,我做错了什么?这是它的样子(缩短了 UID)。

% az network nic create --resource-group A --name bastion-nic --vnet-name VN-B --subnet SubnetB

(InvalidResourceReference) 未找到资源 /subscriptions/b75f-c05a034bf2ff/resourceGroups/A/providers/Microsoft.Network/networkInterfaces/bastion-nic 引用的资源 /subscriptions/40ef-b75f-c05a034bf2ff/resourceGroups/A/providers/Microsoft.Network/virtualNetworks/VN-B/subnets/SubnetB。请确保引用的资源存在,并且两个资源都在同一区域。 代码:InvalidResourceReference

我在我的环境中测试了相同的场景。

场景: 我创建了一个用户,2 个资源组,即 contributorTest 具有 Contributor 用户访问权限和 readerTest 具有 Reader 用户访问权限。

如果我使用你正在使用的命令,那么它会给我和你一样的错误信息。为了描述您使用 vnet-name 时的问题,该命令认为 vnet 也存在于命令中提到的同一资源中。

az network nic create --resource-group contributorTest --name bastion-nic --vnet-name ansumantest-vnet --subnet default 

因此,例如在上面的命令中,资源组是 contributorTest,我们刚刚提供了 vnet 名称和子网名称,它认为它们存在于同一组中。所以它抛出如下错误:

作为解决方案,如果 VNet 位于不同的资源组中,您可以使用以下命令创建 NIC:

az network nic create --resource-group contributorTest --name bastion-nic --subnet /subscriptions/subID/resourceGroups/readerTest/providers/Microsoft.Network/virtualNetworks/ansumantest-vnet/subnets/default

在上面的命令中,我们没有提供 vnet 名称和子网名称,作为替代,我们提供了子网的 resourceID

注意:只有当您对两个资源组都有贡献者访问权限时,上述解决方案才有效,在您的情况下,您将收到以下错误:

要在此处描述问题,当您创建 NIC 时,需要将该 NIC 加入您指定的子网,但由于您仅对 VNET 资源组具有 reader 访问权限,因此它没有允许您加入网卡和子网。

所以,最终的解决方案可以是:

  • 在您要在其上创建 NIC 的同一资源组中拥有 VNET 和子网,并在其上拥有 Contributor 访问权限,然后使用您正在使用的命令。
  • 为第二个资源组的用户授予贡献者访问权限,并使用我提到的第二个命令作为解决方案。

为两个资源组提供参与者访问权限后第二个命令的输出: