將另一個租戶的虛擬網路新增到 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 儲存體帳戶防火牆是一個簡單的流程。按照本指南中概述的步驟操作,你可以在保持嚴格網路規則的同時,為儲存體帳戶設定安全存取。