服務端點可讓您從虛擬網路內的子網安全地連線到彈性 SAN,而不需要私人 IP。 虛擬網路服務端點是公用的,可透過網際網路存取。 您可以使用儲存體服務端點,設定虛擬網路規則來控制磁碟區群組的存取。
本文說明如何設定與您的彈性 SAN 的服務端點連線。
先決條件
您可以在 SAN 層級啟用對彈性 SAN 端點的公用因特網存取。 啟用彈性 SAN 的公用網路存取可讓您透過儲存體服務端點設定個別磁碟區群組的公用存取。 依據預設,即使您允許在 SAN 層級存取個別磁碟區群組,還是會拒絕公用存取。 您必須明確設定磁碟區群組,以允許從特定 IP 位址範圍和虛擬網路子網路存取。
您可以在建立彈性 SAN 時啟用公用網路存取,或使用 Azure PowerShell 模組或 Azure CLI 為現有的 SAN 啟用它。
使用 Azure PowerShell 模組或 Azure CLI 來啟用公用網路存取。
使用此範例程式代碼來更新彈性 SAN,以使用 PowerShell 啟用公用網路存取。 將 RgName
和 EsanName
的值取代為您自己的值,然後執行範例:
# Set the variable values.
$RgName = "<ResourceGroupName>"
$EsanName = "<ElasticSanName>"
# Update the Elastic San.
Update-AzElasticSan -Name $EsanName -ResourceGroupName $RgName -PublicNetworkAccess Enabled
使用此範例程式代碼來更新彈性 SAN,以使用 Azure CLI 啟用公用網路存取。 使用您自己的值取代 RgName
和 EsanName
的值:
# Set the variable values.
$RgName="<ResourceGroupName>"
$EsanName="<ElasticSanName>"
# Update the Elastic San.
az elastic-san update \
--elastic-san-name $EsanName \
--resource-group $RgName \
--public-network-access enabled
若要從需要存取權的虛擬網路設定 Azure 儲存體服務端點,您必須具有透過自訂 Azure 角色設定服務端點的 Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action
Azure 資源提供者作業 (部分機器翻譯) 權限。
虛擬網路服務端點是公用的,可透過網際網路存取。 您可以使用儲存體服務端點,設定虛擬網路規則來控制磁碟區群組的存取。
備註
目前只透過 PowerShell、CLI 和 REST API 支援設定規則,以授與權限存取虛擬網路中的子網路,而這些虛擬網路屬於不同的 Microsoft Entra 租用戶。 這些規則無法透過 Azure 入口網站設定,只能在入口網站中檢視。
瀏覽至虛擬網路,然後選取 [服務端點]。
選取 [+ 新增]。
在新增服務端點畫面:
- 針對 [服務]選取 [Microsoft.Storage.Global],以新增跨區域服務端點。
備註
您可能會看到 Microsoft.Storage 列為可用的儲存體服務端點。 此選項適用於只針對回溯相容性存在的區域內端點。 除非您有使用區域內端點的特定原因,否則請一律使用跨區域端點。
針對子網路選取您想要允許存取的所有子網路。
選取 ,然後新增。
使用下列範例程式代碼,為您的彈性 SAN 磁碟區群組建立記憶體服務端點。
# Define some variables
$RgName = "<ResourceGroupName>"
$VnetName = "<VnetName>"
$SubnetName = "<SubnetName>"
# Get the virtual network and subnet
$Vnet = Get-AzVirtualNetwork -ResourceGroupName $RgName -Name $VnetName
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $Vnet -Name $SubnetName
# Enable the storage service endpoint
$Vnet | Set-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $Subnet.AddressPrefix -ServiceEndpoint "Microsoft.Storage.Global" | Set-AzVirtualNetwork
使用下列範例程式代碼,為您的彈性 SAN 磁碟區群組建立記憶體服務端點:
# Define some variables
RgName="<ResourceGroupName>"
VnetName="<VnetName>"
SubnetName="<SubnetName>"
# Enable the storage service endpoint
az network vnet subnet update --resource-group $RgName --vnet-name $VnetName --name $SubnetName --service-endpoints "Microsoft.Storage.Global"
預設情況下,所有透過服務端點傳入的資料要求都會被封鎖。 只有從您在網路規則中設定的允許來源要求資料的應用程式能夠存取您的資料。
您可以透過 Azure 入口網站、PowerShell 或 CLI 管理磁碟區群組的虛擬網路規則。
這很重要
若要從另一個Microsoft Entra 租使用者中的虛擬網路/子網存取記憶體帳戶,您必須使用 PowerShell 或 Azure CLI。 Azure 入口網站 不會在其他Microsoft Entra 租用戶中顯示子網。
如果您刪除已包含在網路規則中的子網,則會將其從磁碟區群組的網路規則中移除。 如果您以相同名稱建立新的子網路,將無法存取磁碟區群組。 若要允許存取,您必須在磁碟區群組的網路規則中明確授權新的子網路。
- 巡覽至您的 SAN,然後選取 [磁碟區群組]。
- 選取磁碟區群組,然後選取 [建立]。
- 新增現有的虛擬網路和子網路,然後選取 [儲存]。
下列腳本清單會啟用現有虛擬網路和子網上 Azure 記憶體的服務端點,然後新增虛擬網路和子網的網路規則。
小提示
若要為屬於另一個 Microsoft Entra 租用戶之虛擬網路中的子網路新增網路規則,請使用完整的 VirtualNetworkResourceId 參數,格式為 "/subscriptions/subscription-ID/resourceGroups/resourceGroup-Name/providers/Microsoft.Network/virtualNetworks/vNet-name/subnets/subnet-name"。
$Rules = Get-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSanName $sanName -Name $volGroupName
$Rules.NetworkAclsVirtualNetworkRule
Get-AzVirtualNetwork -ResourceGroupName "myresourcegroup" -Name "myvnet" | Set-AzVirtualNetworkSubnetConfig -Name "mysubnet" -AddressPrefix "10.0.0.0/24" -ServiceEndpoint "Microsoft.Storage.Global" | Set-AzVirtualNetwork
$rule = New-AzElasticSanVirtualNetworkRuleObject -VirtualNetworkResourceId $Subnet.Id -Action Allow
Add-AzElasticSanVolumeGroupNetworkRule -ResourceGroupName $RgName -ElasticSanName $EsanName -VolumeGroupName $EsanVgName -NetworkAclsVirtualNetworkRule $rule
如果您需要,您可以使用下列腳本來移除虛擬網路規則:
## You can remove a virtual network rule by object, by resource ID, or by removing all the rules in a volume group
### remove by networkRule object
Remove-AzElasticSanVolumeGroupNetworkRule -ResourceGroupName myRGName -ElasticSanName mySANName -VolumeGroupName myVolGroupName -NetworkAclsVirtualNetworkRule $virtualNetworkRule1,$virtualNetworkRule2
### remove by networkRuleResourceId
Remove-AzElasticSanVolumeGroupNetworkRule -ResourceGroupName myRGName -ElasticSanName mySANName -VolumeGroupName myVolGroupName -NetworkAclsVirtualNetworkResourceId "myResourceID"
### Remove all network rules in a volume group by pipeline
((Get-AzElasticSanVolumeGroup -ResourceGroupName myRGName -ElasticSanName mySANName -VolumeGroupName myVolGroupName).NetworkAclsVirtualNetworkRule) | Remove-AzElasticSanVolumeGroupNetworkRule -ResourceGroupName myRGName -ElasticSanName mySANName -VolumeGroupName myVolGroupName
下列腳本會列出來自特定磁碟區群組的資訊、在現有的虛擬網路和子網上啟用 Azure 記憶體的服務端點,並新增虛擬網路和子網的網路規則。
小提示
若要為屬於另一個 Microsoft Entra 租用戶之虛擬網路中的子網路新增規則,請使用完整的子網路識別碼,格式為 /subscriptions/\<subscription-ID\>/resourceGroups/\<resourceGroup-Name\>/providers/Microsoft.Network/virtualNetworks/\<vNet-name\>/subnets/\<subnet-name\>
。
您可以使用 subscription 參數,為屬於另一個 Microsoft Entra 租用戶的虛擬網路擷取子網路識別碼。
az elastic-san volume-group show -e $sanName -g $RgName -n $volumeGroupName
az network vnet subnet update --resource-group "myresourcegroup" --vnet-name "myvnet" --name "mysubnet" --service-endpoints "Microsoft.Storage.Global"
# First, get the current length of the list of virtual networks to ensure you append a new network instead of replacing existing ones.
virtualNetworkListLength = az elastic-san volume-group show -e $sanName -n $volumeGroupName -g $RgName --query 'length(networkAcls.virtualNetworkRules)'
az elastic-san volume-group update -e $sanName -g $RgName --name $volumeGroupName --network-acls virtual-network-rules[$virtualNetworkListLength] "{virtualNetworkRules:[{id:/subscriptions/subscriptionID/resourceGroups/RGName/providers/Microsoft.Network/virtualNetworks/$VnetName/subnets/default, action:Allow}]}"
如果您需要,您可以移除網路規則。 例如,下列命令會移除第一個網路規則,並加以修改以移除您想要的網路規則。
az elastic-san volume-group update -e $sanName -g $RgName -n $volumeGroupName --network-acls virtual-network-rules[1]=null
啟用所需的端點並授與網路規則中的存取之後,您就可以設定用戶端以連線到適當的彈性 SAN 磁碟區。
備註
如果虛擬機(VM)與彈性 SAN 磁碟區的連線中斷,VM 會在 90 秒內嘗試重新連接,直到終止為止。 失去與彈性 SAN 磁碟區的連線並不會讓 VM 重新啟動。
後續步驟