将另一个租户的虚拟网络添加到 Azure 存储帐户防火墙,是测试连接、安全共享文件或实现合作伙伴协作的常见场景。这样可以确保数据访问仅限于特定网络,而不会将存储帐户暴露给所有网络。
在本指南中,我们将重点介绍如何使用 PowerShell 和 Azure CLI 在本地计算机上实现这一目标。我们还将提供有关跨区域和跨租户配置的提示和注意事项。
主要用例
此方法非常适合以下场景:
- 测试不同租户或区域中应用程序之间的连接。
- 允许合作伙伴或协作者安全地访问文件,而无需将存储帐户向所有网络开放。
前提条件
在继续操作之前,请确保以下几点:
- 你可以访问包含该存储帐户的 Azure 订阅。
- 你拥有另一个租户或区域中虚拟网络和子网的管理权限。
- 你已安装所需的工具: Azure PowerShell 或 Azure CLI.
PowerShell 方法
第 1 步:安装 Az 模块
按照 Microsoft Learn 上的分步说明来 在 Windows 上安装 Azure PowerShell.
第 2 步:配置虚拟网络和存储帐户防火墙
在你的 PowerShell 会话中运行以下命令:
# Import Az.Storage module
Import-Module -Name Az.Storage
# Authenticate and connect to your Azure account
Connect-AzAccount
# Select the subscription containing the storage account
Select-AzSubscription -SubscriptionId "xxxx-xxxx-xxxx-xxxx"
# List existing virtual network rules for the storage account
(Get-AzStorageAccountNetworkRuleSet -ResourceGroupName "myresourcegroup" -AccountName "mystorageaccount").VirtualNetworkRules
# Enable a service endpoint for Azure Storage on an existing virtual network and subnet
Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Set-AzVirtualNetworkSubnetConfig -Name "mysubnet" -AddressPrefix "10.0.0.0/24" -ServiceEndpoint "Microsoft.Storage.Global" | Set-AzVirtualNetwork
# Add a network rule for the virtual network and subnet
$subnet = Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Get-AzVirtualNetworkSubnetConfig -Name "mysubnet"
Add-AzStorageAccountNetworkRule -ResourceGroupName "myresourcegroup" -Name "mystorageaccount" -VirtualNetworkResourceId $subnet.Id
Azure CLI 方法
第 1 步:安装 Azure CLI
按照适用于你的平台的安装指南操作: 安装 Azure CLI.
第 2 步:配置虚拟网络和存储帐户防火墙
在你的 CLI 会话中运行以下命令:
# Authenticate and sign in to your Azure account
az login
# List existing virtual network rules for the storage account
az storage account network-rule list --resource-group "myresourcegroup" --account-name "mystorageaccount" --query virtualNetworkRules
# Enable a service endpoint for Azure Storage on an existing virtual network and subnet
az network vnet subnet update --resource-group "myresourcegroup" --vnet-name "myvnet" --name "mysubnet" --service-endpoints "Microsoft.Storage.Global"
# Add a network rule for the virtual network and subnet
subnetid=$(az network vnet subnet show --resource-group "myresourcegroup" --vnet-name "myvnet" --name "mysubnet" --query id --output tsv)
az storage account network-rule add --resource-group "myresourcegroup" --account-name "mystorageaccount" --subnet $subnetid
特别注意事项
跨租户虚拟网络规则
要为属于另一个 Microsoft Entra 租户的子网添加网络规则,必须使用完全限定的 VirtualNetworkResourceId 参数。格式如下:
/subscriptions/<subscription-ID>/resourceGroups/<resourceGroup-Name>/providers/Microsoft.Network/virtualNetworks/<vNet-name>/subnets/<subnet-name>
请确保你拥有另一个租户中虚拟网络的正确订阅 ID 和资源组详细信息。
跨区域服务终结点
本地和跨区域服务终结点不能共存于同一子网中。如果需要将现有服务终结点替换为跨区域终结点:
- 删除现有的
Microsoft.Storage终结点。 - 将它们重新创建为跨区域终结点(
Microsoft.Storage.Global).
额外提示
- 测试连接
添加虚拟网络规则后,请使用以下工具测试与存储帐户的连接,例如 Azure Storage Explorer 或特定于应用程序的配置。 - 文档参考
有关详细说明,请参阅 配置 Azure 存储防火墙和虚拟网络. - 成本注意事项
- 根据你的 Azure 定价模型,启用服务终结点可能会产生额外费用。
- 跨区域配置通常涉及更高的网络出口费用。
结论
使用 PowerShell 或 Azure CLI 时,将来自不同区域或租户的虚拟网络添加到 Azure 存储帐户防火墙是一个简单的过程。按照本指南中概述的步骤操作,你可以在保持严格网络规则的同时,为存储帐户配置安全访问。