如何跨區域和租戶將虛擬網路新增至 Azure 儲存體帳戶防火牆

將另一個租戶的虛擬網路新增到 Azure 儲存體帳戶防火牆,是測試連線、安全共用檔案或實現合作夥伴協作的常見情境。這樣可以確保資料存取僅限於特定網路,而不會將儲存體帳戶暴露給所有網路。

在本指南中,我們將著重介紹如何使用 PowerShell 和 Azure CLI 在本機電腦上實現這一目標。我們還將提供有關跨區域和跨租戶設定的提示和注意事項。


主要使用案例

此方法非常適合下列情境:

  • 測試不同租戶或區域中應用程式之間的連線。
  • 允許合作夥伴或協作者安全地存取檔案,而無需將儲存體帳戶向所有網路開放。

必要條件

在繼續操作之前,請確認以下幾點:

  1. 你可以存取包含該儲存體帳戶的 Azure 訂用帳戶。
  2. 你擁有另一個租戶或區域中虛擬網路和子網路的管理權限。
  3. 你已安裝所需的工具: 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 和資源群組詳細資訊。

跨區域服務端點

本機和跨區域服務端點不能共存於同一子網路中。如果需要將現有服務端點取代為跨區域端點:

  1. 刪除現有的 Microsoft.Storage 端點。
  2. 將它們重新建立為跨區域端點(Microsoft.Storage.Global).

額外提示

  1. 測試連線
    新增虛擬網路規則後,請使用下列工具測試與儲存體帳戶的連線,例如 Azure Storage Explorer 或特定於應用程式的設定。
  2. 文件參考
    有關詳細說明,請參閱 設定 Azure 儲存體防火牆和虛擬網路.
  3. 成本注意事項
    • 根據你的 Azure 定價模型,啟用服務端點可能會產生額外費用。
    • 跨區域設定通常涉及更高的網路輸出費用。

結論

使用 PowerShell 或 Azure CLI 時,將來自不同區域或租戶的虛擬網路新增到 Azure 儲存體帳戶防火牆是一個簡單的流程。按照本指南中概述的步驟操作,你可以在保持嚴格網路規則的同時,為儲存體帳戶設定安全存取。

發表留言