Konfigurace koncových bodů sítě pro přístup ke sdíleným složkám Azure
Článek
Azure Files poskytuje dva hlavní typy koncových bodů pro přístup ke sdíleným složkám Azure:
Veřejné koncové body, které mají veřejnou IP adresu a jsou přístupné odkudkoli na světě.
Privátní koncové body, které existují ve virtuální síti a mají privátní IP adresu z adresního prostoru dané virtuální sítě.
Veřejné a privátní koncové body existují v účtu úložiště Azure. Účet úložiště je konstruktor správy, který představuje sdílený fond úložiště, ve kterém můžete nasadit více sdílených složek a také další prostředky úložiště, jako jsou kontejnery objektů blob nebo fronty.
Tento článek se zaměřuje na to, jak nakonfigurovat koncové body účtu úložiště pro přímý přístup ke sdílené složce Azure. Většina tohoto článku se týká také toho, jak Synchronizace souborů Azure spolupracovat s veřejnými a privátními koncovými body pro účet úložiště. Další informace o aspektech sítí pro Synchronizace souborů Azure najdete v tématu konfigurace Synchronizace souborů Azure nastavení proxy serveru a brány firewall.
Tento článek předpokládá, že jste už vytvořili předplatné Azure. Pokud ještě nemáte předplatné, vytvořte si bezplatný účet , než začnete.
Tento článek předpokládá, že jste už vytvořili sdílenou složku Azure v účtu úložiště, ke kterému se chcete připojit z místního prostředí. Informace o tom, jak vytvořit sdílenou složku Azure, najdete v tématu Vytvoření sdílené složky Azure.
Koncové body můžete nakonfigurovat tak, aby omezovaly síťový přístup k vašemu účtu úložiště. Existují dva přístupy k omezení přístupu k účtu úložiště na virtuální síť:
Vytvořte jeden nebo více privátních koncových bodů pro účet úložiště a omezte veškerý přístup k veřejnému koncovému bodu. Tím se zajistí, že přístup ke sdíleným složkám Azure v rámci účtu úložiště bude mít přístup jenom provoz pocházející z požadovaných virtuálních sítí. Podívejte se na náklady na Private Link.
Omezte veřejný koncový bod na jednu nebo více virtuálních sítí. Funguje to pomocí funkce virtuální sítě označované jako koncové body služby. Když omezíte provoz na účet úložiště prostřednictvím koncového bodu služby, stále přistupujete k účtu úložiště přes veřejnou IP adresu, ale přístup je možný jenom z umístění, která zadáte ve své konfiguraci.
Vytvoření privátního koncového bodu
Když pro svůj účet úložiště vytvoříte privátní koncový bod, nasadí se následující prostředky Azure:
Privátní koncový bod: Prostředek Azure představující privátní koncový bod účtu úložiště. Můžete si to představit jako prostředek, který propojuje účet úložiště a síťové rozhraní.
Síťové rozhraní: Síťové rozhraní, které udržuje privátní IP adresu v rámci zadané virtuální sítě nebo podsítě. Jedná se o úplně stejný prostředek, který se nasadí při nasazení virtuálního počítače, ale místo přiřazení k virtuálnímu počítači vlastní privátní koncový bod.
Zóna DNS (Private Domain Name System): Pokud jste ještě nenasadili privátní koncový bod pro tuto virtuální síť, nasadí se pro vaši virtuální síť nová zóna privátního DNS. Vytvoří se také záznam DNS A pro účet úložiště v této zóně DNS. Pokud jste už v této virtuální síti nasadili privátní koncový bod, přidá se do existující zóny DNS nový záznam A pro účet úložiště. Nasazení zóny DNS je volitelné. Důrazně se ale doporučuje a vyžaduje se, pokud připojujete sdílené složky Azure s instančním objektem AD nebo pomocí rozhraní FileREST API.
Poznámka:
Tento článek používá příponu DNS účtu úložiště pro veřejné oblasti Azure. core.windows.net Tento komentář platí také pro suverénní cloudy Azure, jako je cloud Azure US Government a Microsoft Azure provozovaný cloudem 21Vianet. Stačí nahradit příslušné přípony pro vaše prostředí.
Přejděte do účtu úložiště, pro který chcete vytvořit privátní koncový bod. V obsahu účtu úložiště vyberte sítě, připojení privátního koncového bodu a potom + privátní koncový bod a vytvořte nový privátní koncový bod.
Výsledný průvodce má k dokončení více stránek.
V okně Základy vyberte požadované předplatné, skupinu prostředků, název, název síťového rozhraní a oblast pro váš privátní koncový bod. Může to být cokoli, nemusí se nijak shodovat s účtem úložiště, i když musíte vytvořit privátní koncový bod ve stejné oblasti jako virtuální síť, ve které chcete privátní koncový bod vytvořit. Pak vyberte Další: Prostředek.
V okně Prostředek vyberte soubor pro cílový dílčí prostředek. Pak vyberte Další: Virtuální síť.
Okno Virtuální síť umožňuje vybrat konkrétní virtuální síť a podsíť, ke které chcete přidat privátní koncový bod. Vyberte dynamické nebo statické přidělování IP adres pro nový privátní koncový bod. Pokud vyberete statickou adresu, budete také muset zadat název a privátní IP adresu. Volitelně můžete také zadat skupinu zabezpečení aplikace. Až budete hotovi, vyberte Další: DNS.
Okno DNS obsahuje informace pro integraci privátního koncového bodu s privátní zónou DNS. Ujistěte se, že je předplatné a skupina prostředků správné, a pak vyberte Další: Značky.
Volitelně můžete použít značky pro kategorizaci prostředků, jako je použití názvu Prostředí a hodnota Test u všech testovacích prostředků. V případě potřeby zadejte páry název/hodnota a pak vyberte Další: Zkontrolovat a vytvořit.
Kliknutím na Zkontrolovat a vytvořit privátní koncový bod.
Pokud chcete pro svůj účet úložiště vytvořit privátní koncový bod, musíte nejprve získat odkaz na váš účet úložiště a podsíť virtuální sítě, do které chcete přidat privátní koncový bod. Nahradit <storage-account-resource-group-name>, , <vnet-resource-group-name><storage-account-name>, <vnet-name>a <vnet-subnet-name> níže:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<vnet-subnet-name>"
# Get storage account reference, and throw error if it doesn't exist
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction SilentlyContinue
if ($null -eq $storageAccount) {
$errorMessage = "Storage account $storageAccountName not found "
$errorMessage += "in resource group $storageAccountResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get virtual network reference, and throw error if it doesn't exist
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName `
-ErrorAction SilentlyContinue
if ($null -eq $virtualNetwork) {
$errorMessage = "Virtual network $virtualNetworkName not found "
$errorMessage += "in resource group $virtualNetworkResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Get reference to virtual network subnet, and throw error if it doesn't exist
$subnet = $virtualNetwork | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
Write-Error `
-Message "Subnet $subnetName not found in virtual network $virtualNetworkName." `
-ErrorAction Stop
}
Pokud chcete vytvořit privátní koncový bod, musíte vytvořit připojení služby private link k účtu úložiště. Připojení služby Private Link je vstupem pro vytvoření privátního koncového bodu.
# Disable private endpoint network policies
$subnet.PrivateEndpointNetworkPolicies = "Disabled"
$virtualNetwork = $virtualNetwork | `
Set-AzVirtualNetwork -ErrorAction Stop
# Create a private link service connection to the storage account.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$storageAccountName-Connection" `
-PrivateLinkServiceId $storageAccount.Id `
-GroupId "file" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageAccountResourceGroupName `
-Name "$storageAccountName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Vytvoření privátní zóny DNS Azure umožňuje původní název účtu úložiště, například storageaccount.file.core.windows.net přeložit na privátní IP adresu uvnitř virtuální sítě. I když je z pohledu vytvoření privátního koncového bodu volitelné, je explicitně vyžadováno pro přímé připojení sdílené složky Azure pomocí objektu zabezpečení uživatele AD nebo přístupu přes rozhraní REST API.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$storageAccountSuffix = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty StorageEndpointSuffix
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
$dnsZoneName = "privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
$dnsZone = Get-AzPrivateDnsZone | `
Where-Object { $_.Name -eq $dnsZoneName } | `
Where-Object {
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $_.ResourceGroupName `
-ZoneName $_.Name `
-ErrorAction SilentlyContinue
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so create new one.
$dnsZone = New-AzPrivateDnsZone `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsZoneName `
-ErrorAction Stop
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink `
-ResourceGroupName $virtualNetworkResourceGroupName `
-ZoneName $dnsZoneName `
-Name "$virtualNetworkName-DnsLink" `
-VirtualNetworkId $virtualNetwork.Id `
-ErrorAction Stop
}
Teď, když máte odkaz na privátní zónu DNS, musíte pro svůj účet úložiště vytvořit záznam A.
Pokud chcete pro svůj účet úložiště vytvořit privátní koncový bod, musíte nejprve získat odkaz na váš účet úložiště a podsíť virtuální sítě, do které chcete přidat privátní koncový bod. Nahradit <storage-account-resource-group-name>, , <vnet-resource-group-name><storage-account-name>, <vnet-name>a <vnet-subnet-name> níže:
storageAccountResourceGroupName="<storage-account-resource-group-name>"
storageAccountName="<storage-account-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<vnet-subnet-name>"
# Get storage account ID
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" | \
tr -d '"')
# Get virtual network ID
virtualNetwork=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "id" | \
tr -d '"')
# Get subnet ID
subnet=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" | \
tr -d '"')
Pokud chcete vytvořit privátní koncový bod, musíte nejdřív zajistit, aby zásady sítě privátních koncových bodů podsítě byly zakázané. Potom můžete pomocí příkazu vytvořit privátní koncový bod az network private-endpoint create .
Vytvoření privátní zóny DNS Azure umožňuje původní název účtu úložiště, například storageaccount.file.core.windows.net přeložit na privátní IP adresu uvnitř virtuální sítě. I když je z pohledu vytvoření privátního koncového bodu nepovinný, je explicitně potřeba pro připojení sdílené složky Azure pomocí objektu zabezpečení uživatele AD nebo přístupu přes rozhraní REST API.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
storageAccountSuffix=$(az cloud show \
--query "suffixes.storageEndpoint" | \
tr -d '"')
# For public cloud, this will generate the following DNS suffix:
# privatelink.file.core.windows.net.
dnsZoneName="privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching desired name attached to this virtual network.
possibleDnsZones=""
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
possibleDnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" | \
tr -d '"')
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -z $link ]
then
echo "1" > /dev/null
else
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z $dnsZone ]
then
# No matching DNS zone attached to virtual network, so create a new one
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" | \
tr -d '"')
az network private-dns link vnet create \
--resource-group $virtualNetworkResourceGroupName \
--zone-name $dnsZoneName \
--name "$virtualNetworkName-DnsLink" \
--virtual-network $virtualNetwork \
--registration-enabled false \
--output none
dnsZoneResourceGroup=$virtualNetworkResourceGroupName
fi
Teď, když máte odkaz na privátní zónu DNS, musíte pro svůj účet úložiště vytvořit záznam A.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateEndpointIP=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[0].privateIPAddress" | \
tr -d '"')
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name $storageAccountName \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name $storageAccountName \
--ipv4-address $privateEndpointIP \
--output none
Pokud máte virtuální počítač uvnitř virtuální sítě nebo jste nakonfigurovali předávání DNS podle popisu konfigurace předávání DNS pro službu Azure Files, můžete otestovat, jestli je váš privátní koncový bod správně nastavený. Z PowerShellu, příkazového řádku nebo terminálu (funguje pro Windows, Linux nebo macOS) spusťte následující příkazy. Musíte nahradit <storage-account-name> odpovídajícím názvem účtu úložiště:
V případě úspěchu by se měl zobrazit následující výstup, kde 192.168.0.5 je privátní IP adresa privátního koncového bodu ve vaší virtuální síti (výstup zobrazený pro Windows):
Pokud máte virtuální počítač ve vaší virtuální síti nebo jste nakonfigurovali předávání DNS, jak je popsáno v konfiguraci předávání DNS pro službu Azure Files, můžete otestovat, že je váš privátní koncový bod správně nastavený spuštěním následujících příkazů:
V případě úspěchu by se měl zobrazit následující výstup, kde 192.168.0.5 je privátní IP adresa privátního koncového bodu ve vaší virtuální síti:
Name Type TTL Section NameHost
---- ---- --- ------- --------
storageaccount.file.core.windows CNAME 60 Answer storageaccount.privatelink.file.core.windows.net
.net
Name : storageaccount.privatelink.file.core.windows.net
QueryType : A
TTL : 600
Section : Answer
IP4Address : 192.168.0.5
Pokud máte virtuální počítač ve vaší virtuální síti nebo jste nakonfigurovali předávání DNS, jak je popsáno v konfiguraci předávání DNS pro službu Azure Files, můžete otestovat, že je váš privátní koncový bod správně nastavený spuštěním následujících příkazů:
Pokud vše proběhlo úspěšně, měli byste vidět následující výstup, kde 192.168.0.5 je privátní IP adresa privátního koncového bodu ve vaší virtuální síti. Místo cesty byste měli sdílenou privatelink složku připojitstorageaccount.file.core.windows.net.
Omezení přístupu k veřejnému koncovému bodu nejprve vyžaduje, abyste zakázali obecný přístup k veřejnému koncovému bodu. Zakázání přístupu k veřejnému koncovému bodu nemá vliv na privátní koncové body. Po zakázání veřejného koncového bodu můžete vybrat konkrétní sítě nebo IP adresy, které k němu můžou dál přistupovat. Obecně platí, že většina zásad brány firewall pro účet úložiště omezuje síťový přístup k jedné nebo více virtuálním sítím.
Zakázání přístupu k veřejnému koncovému bodu
Pokud je přístup k veřejnému koncovému bodu zakázaný, bude k účtu úložiště stále možné přistupovat prostřednictvím jeho privátních koncových bodů. Jinak budou platné požadavky na veřejný koncový bod účtu úložiště odmítnuty, pokud nejsou z konkrétního povoleného zdroje.
Přejděte do účtu úložiště, pro který chcete omezit veškerý přístup k veřejnému koncovému bodu. V obsahu účtu úložiště vyberte Sítě.
V horní části stránky vyberte přepínač Povoleno z vybraných virtuálních sítí a IP adres . Tím se zruší skrytí řady nastavení pro řízení omezení veřejného koncového bodu. Výběrem možnosti Povolit službám Azure v seznamu důvěryhodných služeb přístup k tomuto účtu úložiště povolte důvěryhodným služby Microsoft první strany, jako je Synchronizace souborů Azure pro přístup k účtu úložiště.
Následující příkaz PowerShellu zakáže veškerý provoz do veřejného koncového bodu účtu úložiště. Všimněte si, že tento příkaz má -Bypass parametr nastavený na AzureServices. To umožní důvěryhodným službám první strany, jako je Synchronizace souborů Azure, přístup k účtu úložiště prostřednictvím veřejného koncového bodu.
# This assumes $storageAccount is still defined from the beginning of this of this guide.
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Následující příkaz rozhraní příkazového řádku zakáže veškerý provoz do veřejného koncového bodu účtu úložiště. Všimněte si, že tento příkaz má -bypass parametr nastavený na AzureServices. To umožní důvěryhodným službám první strany, jako je Synchronizace souborů Azure, přístup k účtu úložiště prostřednictvím veřejného koncového bodu.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this guide.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
Omezení přístupu k veřejnému koncovému bodu na konkrétní virtuální sítě
Když omezíte účet úložiště na konkrétní virtuální sítě, povolíte požadavky na veřejný koncový bod v rámci zadaných virtuálních sítí. Funguje to pomocí funkce virtuální sítě označované jako koncové body služby. Můžete ho použít s privátními koncovými body nebo bez.
Přejděte na účet úložiště, pro který chcete omezit veřejný koncový bod na konkrétní virtuální sítě. V obsahu účtu úložiště vyberte Sítě.
V horní části stránky vyberte přepínač Povoleno z vybraných virtuálních sítí a IP adres . Tím se zruší skrytí řady nastavení pro řízení omezení veřejného koncového bodu. Vyberte +Přidat existující virtuální síť a vyberte konkrétní virtuální síť, která by měla mít povolený přístup k účtu úložiště prostřednictvím veřejného koncového bodu. Vyberte virtuální síť a podsíť pro tuto virtuální síť a pak vyberte Povolit.
Výběrem možnosti Povolit službám Azure v seznamu důvěryhodných služeb přístup k tomuto účtu úložiště povolte důvěryhodným služby Microsoft první strany, jako je Synchronizace souborů Azure pro přístup k účtu úložiště.
Abychom omezili přístup k veřejnému koncovému bodu účtu úložiště na konkrétní virtuální sítě pomocí koncových bodů služby, musíme nejprve shromáždit informace o účtu úložiště a virtuální síti. <storage-account-resource-group>Vyplňte a <storage-account-name><vnet-resource-group-name><vnet-name><subnet-name> shromážděte tyto informace.
Aby se provoz z virtuální sítě umožnil síťovým prostředkům infrastruktury Azure dostat do veřejného koncového bodu účtu úložiště, musí Microsoft.Storage mít podsíť virtuální sítě vystavený koncový bod služby. Následující příkazy PowerShellu Microsoft.Storage přidají koncový bod služby do podsítě, pokud tam ještě není.
Abychom omezili přístup k veřejnému koncovému bodu účtu úložiště na konkrétní virtuální sítě pomocí koncových bodů služby, musíme nejprve shromáždit informace o účtu úložiště a virtuální síti. <storage-account-resource-group>Vyplňte a <storage-account-name><vnet-resource-group-name><vnet-name><subnet-name> shromážděte tyto informace.
Aby se provoz z virtuální sítě umožnil síťovým prostředkům infrastruktury Azure dostat do veřejného koncového bodu účtu úložiště, musí Microsoft.Storage mít podsíť virtuální sítě vystavený koncový bod služby. Následující příkazy rozhraní příkazového řádku přidají Microsoft.Storage koncový bod služby do podsítě, pokud tam ještě není.
serviceEndpoints=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "serviceEndpoints[].service" \
--output tsv)
foundStorageServiceEndpoint=false
for serviceEndpoint in $serviceEndpoints
do
if [ $serviceEndpoint = "Microsoft.Storage" ]
then
foundStorageServiceEndpoint=true
fi
done
if [ $foundStorageServiceEndpoint = false ]
then
serviceEndpointList=""
for serviceEndpoint in $serviceEndpoints
do
serviceEndpointList+=$serviceEndpoint
serviceEndpointList+=" "
done
serviceEndpointList+="Microsoft.Storage"
az network vnet subnet update \
--ids $subnet \
--service-endpoints $serviceEndpointList \
--output none
fi
Posledním krokem při omezení provozu na účet úložiště je vytvoření síťového pravidla a přidání do sady pravidel sítě účtu úložiště.