Konfigurera offentliga och privata nätverksslutpunkter för Azure File Sync
Artikel
Azure Files och Azure File Sync tillhandahåller två huvudtyper av slutpunkter för åtkomst till Azure-filresurser:
Offentliga slutpunkter, som har en offentlig IP-adress och kan nås var som helst i världen.
Privata slutpunkter, som finns i ett virtuellt nätverk och har en privat IP-adress inifrån adressutrymmet för det virtuella nätverket.
För både Azure Files och Azure File Sync styr Azure-hanteringsobjekten (lagringskontot och Storage Sync Service) både de offentliga och privata slutpunkterna. Lagringskontot är en hanteringskonstruktion som representerar en delad lagringspool där du kan distribuera flera filresurser samt andra lagringsresurser, till exempel blobar eller köer. Storage Sync Service är en hanteringskonstruktion som representerar registrerade servrar, som är Windows-filservrar med en etablerad förtroenderelation med Azure File Sync, och synkroniseringsgrupper som definierar topologin för synkroniseringsrelationen.
Den här artikeln fokuserar på hur du konfigurerar nätverksslutpunkterna för både Azure Files och Azure File Sync. Mer information om hur du konfigurerar nätverksslutpunkter för direkt åtkomst till Azure-filresurser i stället för att cachelagra lokalt med Azure File Sync finns i Konfigurera Azure Files-nätverksslutpunkter.
Vi rekommenderar att du läser nätverksöverväganden för Azure File Sync innan du läser den här guiden.
Förutsättningar
Den här artikeln förutsätter att:
Du har en Azure-prenumeration. Om du inte redan har en prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Du har redan skapat en Azure-filresurs i ett lagringskonto som du vill ansluta till lokalt. Information om hur du skapar en Azure-filresurs finns i Skapa en Azure-filresurs.
När du skapar en privat slutpunkt för en Azure-resurs distribueras följande resurser:
En privat slutpunkt: En Azure-resurs som representerar antingen den privata slutpunkten för lagringskontot eller Tjänsten för synkronisering av lagring. Tänk på detta som en resurs som ansluter din Azure-resurs och ett nätverksgränssnitt.
Ett nätverksgränssnitt (NIC): Nätverksgränssnittet som underhåller en privat IP-adress i det angivna virtuella nätverket/undernätet. Det här är exakt samma resurs som distribueras när du distribuerar en virtuell dator (VM), men i stället för att tilldelas till en virtuell dator ägs den av den privata slutpunkten.
En privat DNS-zon: Om du aldrig har distribuerat en privat slutpunkt för det här virtuella nätverket tidigare distribueras en ny privat DNS-zon för ditt virtuella nätverk. En DNS A-post skapas också för Azure-resursen i den här DNS-zonen. Om du redan har distribuerat en privat slutpunkt i det här virtuella nätverket läggs en ny A-post för Azure-resurs till i den befintliga DNS-zonen. Det är valfritt att distribuera en DNS-zon, men vi rekommenderar starkt att du förenklar DNS-hanteringen.
Kommentar
Den här artikeln använder DNS-suffixen för de offentliga Azure-regionerna, core.windows.net för lagringskonton och afs.azure.net för Storage Sync Services. Detta gäller även för Azure Sovereign-moln som Azure US Government-molnet – ersätt bara lämpliga suffix för din miljö.
Gå till lagringskontot som du vill skapa en privat slutpunkt för. I innehållsförteckningen för lagringskontot väljer du Nätverk, Privata slutpunktsanslutningar och sedan + Privat slutpunkt för att skapa en ny privat slutpunkt.
Den resulterande guiden har flera sidor att slutföra.
På bladet Grundläggande väljer du önskad prenumeration, resursgrupp, namn, nätverksgränssnittsnamn och region för din privata slutpunkt. Dessa kan vara vad du vill, de behöver inte matcha lagringskontot på något sätt, även om du måste skapa den privata slutpunkten i samma region som det virtuella nätverk som du vill skapa den privata slutpunkten i. Välj sedan Nästa: Resurs.
På bladet Resurs väljer du fil för målunderresursen. Välj sedan Nästa: Virtuellt nätverk.
Med bladet Virtuellt nätverk kan du välja det specifika virtuella nätverk och undernät som du vill lägga till din privata slutpunkt i. Välj dynamisk eller statisk IP-adressallokering för den nya privata slutpunkten. Om du väljer statisk måste du också ange ett namn och en privat IP-adress. Du kan också ange en programsäkerhetsgrupp. När du är klar väljer du Nästa: DNS.
DNS-bladet innehåller information för att integrera din privata slutpunkt med en privat DNS-zon. Kontrollera att prenumerationen och resursgruppen är korrekta och välj sedan Nästa: Taggar.
Du kan också använda taggar för att kategorisera dina resurser, till exempel att använda namnet Miljö och värdet Test på alla testresurser. Ange namn/värdepar om du vill och välj sedan Nästa: Granska + skapa.
Klicka på Granska + skapa för att skapa den privata slutpunkten.
Om du har en virtuell dator i det virtuella nätverket eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files kan du testa att den privata slutpunkten är korrekt konfigurerad genom att köra följande kommandon från PowerShell, kommandoraden eller terminalen (fungerar för Windows, Linux eller macOS). Du måste ersätta <storage-account-name> med lämpligt lagringskontonamn:
Om allt fungerar bör du se följande utdata, där 192.168.0.5 är den privata IP-adressen för den privata slutpunkten i det virtuella nätverket (utdata som visas för Windows):
Om du vill skapa en privat slutpunkt för ditt lagringskonto måste du först hämta en referens till ditt lagringskonto och det virtuella nätverksundernätet som du vill lägga till den privata slutpunkten till. Ersätt <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>och <vnet-subnet-name> nedan:
$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
}
Om du vill skapa en privat slutpunkt måste du skapa en privat länktjänstanslutning till lagringskontot. Tjänsten private link är en indata för skapandet av den privata slutpunkten.
# 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
När du skapar en privat DNS-zon i Azure kan du använda det ursprungliga namnet på lagringskontot, till exempel storageaccount.file.core.windows.net för att matcha till den privata IP-adressen i det virtuella nätverket. Även om det är valfritt när du skapar en privat slutpunkt, krävs det uttryckligen för att montera Azure-filresursen direkt med hjälp av ett AD-användarhuvudnamn eller åtkomst via REST-API:et.
# 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
}
Nu när du har en referens till den privata DNS-zonen måste du skapa en A-post för ditt lagringskonto.
Om du har en virtuell dator i det virtuella nätverket, eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files, kan du testa att din privata slutpunkt har konfigurerats korrekt med följande kommandon:
Om allt fungerar bör du se följande utdata, där 192.168.0.5 är den privata IP-adressen för den privata slutpunkten i det virtuella nätverket:
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
Om du vill skapa en privat slutpunkt för ditt lagringskonto måste du först hämta en referens till ditt lagringskonto och det virtuella nätverksundernätet som du vill lägga till den privata slutpunkten till. Ersätt <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>och <vnet-subnet-name> nedan:
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 '"')
Om du vill skapa en privat slutpunkt måste du först se till att undernätets privata slutpunktsnätverksprincip är inställd på inaktiverad. Sedan kan du skapa en privat slutpunkt med az network private-endpoint create kommandot .
När du skapar en privat DNS-zon i Azure kan du använda det ursprungliga namnet på lagringskontot, till exempel storageaccount.file.core.windows.net för att matcha till den privata IP-adressen i det virtuella nätverket. Även om det är valfritt när du skapar en privat slutpunkt krävs det uttryckligen för att montera Azure-filresursen med hjälp av ett AD-användarhuvudnamn eller åtkomst via REST-API:et.
# 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
Nu när du har en referens till den privata DNS-zonen måste du skapa en A-post för ditt lagringskonto.
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
Om du har en virtuell dator i det virtuella nätverket, eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files, kan du testa att din privata slutpunkt har konfigurerats korrekt med följande kommandon:
Navigera till Private Link Center genom att skriva Private Link i sökfältet överst i Azure-portalen. I innehållsförteckningen för Private Link Center väljer du Privata slutpunkter och sedan + Lägg till för att skapa en ny privat slutpunkt.
Den resulterande guiden har flera sidor att slutföra.
På bladet Grundläggande väljer du önskad resursgrupp, namn och region för din privata slutpunkt. Dessa kan vara vad du vill, de behöver inte matcha Tjänsten för synkronisering av lagring på något sätt, även om du måste skapa den privata slutpunkten i samma region som det virtuella nätverk som du vill skapa den privata slutpunkten i.
På bladet Resurs väljer du alternativknappen för Anslut till en Azure-resurs i min katalog. Under Resurstyp väljer du Microsoft.StorageSync/storageSyncServices som resurstyp.
Med bladet Konfiguration kan du välja det specifika virtuella nätverk och undernät som du vill lägga till din privata slutpunkt i. Välj samma virtuella nätverk som det du använde för lagringskontot ovan. Bladet Konfiguration innehåller också information för att skapa/uppdatera den privata DNS-zonen.
Välj Granska + skapa för att skapa den privata slutpunkten.
Du kan testa att din privata slutpunkt har konfigurerats korrekt genom att köra följande PowerShell-kommandon.
Om allt fungerar korrekt bör du se följande utdata där 192.168.1.4, 192.168.1.5, 192.168.1.6och 192.168.1.7 är de privata IP-adresserna som tilldelats till den privata slutpunkten:
Name : mysssmanagement.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmanagement.westus2.privatelink.afs.azure.net
Name : mysssmanagement.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.4
Name : myssssyncp.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncp.westus2.privatelink.afs.azure.net
Name : myssssyncp.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.5
Name : myssssyncs.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : myssssyncs.westus2.privatelink.afs.azure.net
Name : myssssyncs.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.6
Name : mysssmonitoring.westus2.afs.azure.net
Type : CNAME
TTL : 60
Section : Answer
NameHost : mysssmonitoring.westus2.privatelink.afs.azure.net
Name : mysssmonitoring.westus2.privatelink.afs.azure.net
QueryType : A
TTL : 60
Section : Answer
IP4Address : 192.168.1.7
Om du vill skapa en privat slutpunkt för tjänsten för synkronisering av lagring måste du först hämta en referens till tjänsten för synkronisering av lagring. Kom ihåg att ersätta <storage-sync-service-resource-group> och <storage-sync-service> med rätt värden för din miljö. Följande PowerShell-kommandon förutsätter att du redan har fyllt i den virtuella nätverksinformationen.
$storageSyncServiceResourceGroupName = "<storage-sync-service-resource-group>"
$storageSyncServiceName = "<storage-sync-service>"
$storageSyncService = Get-AzStorageSyncService `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name $storageSyncServiceName `
-ErrorAction SilentlyContinue
if ($null -eq $storageSyncService) {
$errorMessage = "Storage Sync Service $storageSyncServiceName not found "
$errorMessage += "in resource group $storageSyncServiceResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
Om du vill skapa en privat slutpunkt måste du skapa en privat länktjänstanslutning till Tjänsten för synkronisering av lagring. Den privata länkanslutningen är en indata till skapandet av den privata slutpunkten.
# 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 "$storageSyncServiceName-Connection" `
-PrivateLinkServiceId $storageSyncService.ResourceId `
-GroupId "Afs" `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $storageSyncServiceResourceGroupName `
-Name "$storageSyncServiceName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Genom att skapa en privat DNS-zon i Azure kan värdnamnen för Tjänsten för synkronisering av lagring, till exempel mysssmanagement.westus2.afs.azure.net, matcha rätt privata IP-adresser för Tjänsten för synkronisering av lagring i det virtuella nätverket. Även om det är valfritt när du skapar en privat slutpunkt krävs det uttryckligen att Azure File Sync-agenten får åtkomst till Tjänsten för synkronisering av lagring.
# Get the desired Storage Sync Service suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$azureEnvironment = Get-AzContext | `
Select-Object -ExpandProperty Environment | `
Select-Object -ExpandProperty Name
switch($azureEnvironment) {
"AzureCloud" {
$storageSyncSuffix = "afs.azure.net"
}
"AzureUSGovernment" {
$storageSyncSuffix = "afs.azure.us"
}
"AzureChinaCloud" {
$storageSyncSuffix = "afs.azure.cn"
}
default {
Write-Error
-Message "The Azure environment $_ is not currently supported by Azure File Sync." `
-ErrorAction Stop
}
}
# For public cloud, this will generate the following DNS suffix:
# privatelink.afs.azure.net
$dnsZoneName = "privatelink.$storageSyncSuffix"
# 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
}
Nu när du har en referens till den privata DNS-zonen måste du skapa en A-post för storage sync-tjänsten.
Om du vill skapa en privat slutpunkt för tjänsten för synkronisering av lagring måste du först hämta en referens till tjänsten för synkronisering av lagring. Kom ihåg att ersätta <storage-sync-service-resource-group> och <storage-sync-service> med rätt värden för din miljö. Följande CLI-kommandon förutsätter att du redan har fyllt i den virtuella nätverksinformationen.
Om du vill skapa en privat slutpunkt måste du först se till att undernätets privata slutpunktsnätverksprincip är inställd på inaktiverad. Sedan kan du skapa en privat slutpunkt med az network private-endpoint create kommandot .
Genom att skapa en privat DNS-zon i Azure kan värdnamnen för Tjänsten för synkronisering av lagring, till exempel mysssmanagement.westus2.afs.azure.net, matcha rätt privata IP-adresser för Tjänsten för synkronisering av lagring i det virtuella nätverket. Även om det är valfritt när du skapar en privat slutpunkt krävs det uttryckligen att Azure File Sync-agenten får åtkomst till Tjänsten för synkronisering av lagring.
# Get the desired storage account suffix (afs.azure.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
azureEnvironment=$(az cloud show \
--query "name" |
tr -d '"')
storageSyncSuffix=""
if [ $azureEnvironment == "AzureCloud" ]
then
storageSyncSuffix="afs.azure.net"
elif [ $azureEnvironment == "AzureUSGovernment" ]
then
storageSyncSuffix="afs.azure.us"
else
echo "Unsupported Azure environment $azureEnvironment."
fi
# For public cloud, this will generate the following DNS suffix:
# privatelinke.afs.azure.net.
dnsZoneName="privatelink.$storageSyncSuffix"
# 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
Nu när du har en referens till den privata DNS-zonen måste du skapa en A-post för storage sync-tjänsten.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" | \
tr -d '"')
privateIpAddresses=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateIpAddress" \
--output tsv)
hostNames=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[].privateLinkConnectionProperties.fqdns[]" \
--output tsv)
i=0
for privateIpAddress in $privateIpAddresses
do
j=0
targetHostName=""
for hostName in $hostNames
do
if [ $i == $j ]
then
targetHostName=$hostName
break
fi
j=$(expr $j + 1)
done
endpointName=$(echo $targetHostName | \
cut -c1-$(expr $(expr index $targetHostName ".") - 1))
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name "$endpointName.$storageSyncServiceRegion" \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name "$endpointName.$storageSyncServiceRegion" \
--ipv4-address $privateIpAddress \
--output none
i=$(expr $i + 1)
done
Begränsa åtkomsten till de offentliga slutpunkterna
Du kan begränsa åtkomsten till de offentliga slutpunkterna för både lagringskontot och Storage Sync Services. Att begränsa åtkomsten till den offentliga slutpunkten ger ytterligare säkerhet genom att se till att nätverkspaket endast accepteras från godkända platser.
Begränsa åtkomsten till lagringskontots offentliga slutpunkt
Åtkomstbegränsningen till den offentliga slutpunkten görs med hjälp av brandväggsinställningarna för lagringskontot. I allmänhet begränsar de flesta brandväggsprinciper för ett lagringskonto nätverksåtkomst till ett eller flera virtuella nätverk. Det finns två sätt att begränsa åtkomsten till ett lagringskonto till ett virtuellt nätverk:
Skapa en eller flera privata slutpunkter för lagringskontot och inaktivera åtkomst till den offentliga slutpunkten. Detta säkerställer att endast trafik som kommer från de önskade virtuella nätverken kan komma åt Azure-filresurserna i lagringskontot.
Begränsa den offentliga slutpunkten till ett eller flera virtuella nätverk. Detta fungerar med hjälp av funktionen för det virtuella nätverket som kallas tjänstslutpunkter. När du begränsar trafiken till ett lagringskonto via en tjänstslutpunkt kommer du fortfarande åt lagringskontot via den offentliga IP-adressen.
Kommentar
Tillåt att Azure-tjänster i listan över betrodda tjänster får åtkomst till det här undantaget för lagringskontot måste väljas på ditt lagringskonto för att tillåta betrodda förstaparts-Microsoft usluge till exempel Azure File Sync att komma åt lagringskontot. Mer information finns i Bevilja åtkomst till betrodda Azure-tjänster.
Bevilja åtkomst till betrodda Azure-tjänster och inaktivera åtkomst till lagringskontots offentliga slutpunkt
När åtkomsten till den offentliga slutpunkten är inaktiverad kan lagringskontot fortfarande nås via sina privata slutpunkter. Annars avvisas giltiga begäranden till lagringskontots offentliga slutpunkt.
Gå till lagringskontot som du vill begränsa all åtkomst till den offentliga slutpunkten för. I innehållsförteckningen för lagringskontot väljer du Nätverk.
Längst upp på sidan väljer du alternativknappen Aktiverad från valda virtuella nätverk och IP-adresser . Detta döljer ett antal inställningar för att kontrollera begränsningen av den offentliga slutpunkten. Välj Tillåt att Azure-tjänster i listan över betrodda tjänster får åtkomst till det här lagringskontot så att betrodda förstaparts-Microsoft usluge som Azure File Sync får åtkomst till lagringskontot.
Följande PowerShell-kommando nekar all trafik till lagringskontots offentliga slutpunkt. Observera att det här kommandot har parametern inställd på -BypassAzureServices. På så sätt kan betrodda tjänster från första part, till exempel Azure File Sync, komma åt lagringskontot via den offentliga slutpunkten.
# 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
Följande CLI-kommando nekar all trafik till lagringskontots offentliga slutpunkt. Observera att det här kommandot har parametern inställd på -bypassAzureServices. På så sätt kan betrodda tjänster från första part, till exempel Azure File Sync, komma åt lagringskontot via den offentliga slutpunkten.
# 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
Bevilja åtkomst till betrodda Azure-tjänster och begränsa åtkomsten till lagringskontots offentliga slutpunkt till specifika virtuella nätverk
När du begränsar lagringskontot till specifika virtuella nätverk tillåter du begäranden till den offentliga slutpunkten inifrån de angivna virtuella nätverken. Detta fungerar med hjälp av funktionen för det virtuella nätverket som kallas tjänstslutpunkter. Detta kan användas med eller utan privata slutpunkter.
Gå till lagringskontot som du vill begränsa den offentliga slutpunkten till specifika virtuella nätverk för. I innehållsförteckningen för lagringskontot väljer du Nätverk.
Längst upp på sidan väljer du alternativknappen Aktiverad från valda virtuella nätverk och IP-adresser . Detta döljer ett antal inställningar för att kontrollera begränsningen av den offentliga slutpunkten. Välj +Lägg till befintligt virtuellt nätverk för att välja det specifika virtuella nätverk som ska tillåtas att komma åt lagringskontot via den offentliga slutpunkten. Välj ett virtuellt nätverk och ett undernät för det virtuella nätverket och välj sedan Aktivera.
Välj Tillåt att Azure-tjänster i listan över betrodda tjänster får åtkomst till det här lagringskontot så att betrodda förstaparts-Microsoft usluge som Azure File Sync får åtkomst till lagringskontot.
För att begränsa åtkomsten till lagringskontots offentliga slutpunkt till specifika virtuella nätverk med hjälp av tjänstslutpunkter måste vi först samla in information om lagringskontot och det virtuella nätverket. Fyll i <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>och <subnet-name> för att samla in den här informationen.
För att trafik från det virtuella nätverket ska tillåtas av Azure-nätverksinfrastrukturen för att komma till lagringskontots offentliga slutpunkt måste det virtuella nätverkets undernät ha Microsoft.Storage tjänstslutpunkten exponerad. Följande PowerShell-kommandon lägger till Microsoft.Storage tjänstslutpunkten i undernätet om den inte redan finns där.
För att begränsa åtkomsten till lagringskontots offentliga slutpunkt till specifika virtuella nätverk med hjälp av tjänstslutpunkter måste vi först samla in information om lagringskontot och det virtuella nätverket. Fyll i <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>och <subnet-name> för att samla in den här informationen.
För att trafik från det virtuella nätverket ska tillåtas av Azure-nätverksinfrastrukturen för att komma till lagringskontots offentliga slutpunkt måste det virtuella nätverkets undernät ha Microsoft.Storage tjänstslutpunkten exponerad. Följande CLI-kommandon lägger till Microsoft.Storage tjänstslutpunkten i undernätet om den inte redan finns där.
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
Det sista steget för att begränsa trafik till lagringskontot är att skapa en nätverksregel och lägga till i lagringskontots nätverksregeluppsättning.
Inaktivera åtkomst till den offentliga slutpunkten för Storage Sync Service
Med Azure File Sync kan du begränsa åtkomsten till specifika virtuella nätverk endast via privata slutpunkter. Azure File Sync stöder inte tjänstslutpunkter för att begränsa åtkomsten till den offentliga slutpunkten till specifika virtuella nätverk. Det innebär att de två tillstånden för tjänsten för lagringssynkronisering är aktiverade och inaktiverade.
Viktigt!
Du måste skapa en privat slutpunkt innan du inaktiverar åtkomst till den offentliga slutpunkten. Om den offentliga slutpunkten är inaktiverad och ingen privat slutpunkt har konfigurerats kan synkroniseringen inte fungera.
Gå till Tjänsten för synkronisering av lagring och välj Inställningar>Nätverk i det vänstra navigeringsfältet.
Under Tillåt åtkomst från väljer du Endast privata slutpunkter.
Välj en privat slutpunkt i listan Privata slutpunktsanslutningar .
Om du vill inaktivera åtkomsten till tjänsten för lagringssynkroniseringstjänstens offentliga slutpunkt anger du incomingTrafficPolicy egenskapen på Tjänsten för synkronisering av lagring till AllowVirtualNetworksOnly. Om du vill aktivera åtkomst till tjänsten för lagringssynkroniseringstjänstens offentliga slutpunkt anger du incomingTrafficPolicy till AllowAllTraffic i stället. Kom ihåg att ersätta <storage-sync-service-resource-group> och <storage-sync-service> med dina egna värden.
Azure CLI har inte stöd för incomingTrafficPolicy att ange egenskapen för Tjänsten för synkronisering av lagring. Välj fliken Azure PowerShell för att få instruktioner om hur du inaktiverar den offentliga slutpunkten för Storage Sync Service.
Azure Policy
Azure Policy hjälper till att framtvinga organisationsstandarder och utvärdera efterlevnaden mot dessa standarder i stor skala. Azure Files och Azure File Sync exponerar flera användbara principer för granskning och reparationsnätverk som hjälper dig att övervaka och automatisera distributionen.
Principer granskar din miljö och varnar dig om dina lagringskonton eller Storage Sync Services avviker från det definierade beteendet. Om till exempel en offentlig slutpunkt är aktiverad när principen har angetts för att inaktivera de offentliga slutpunkterna. Ändra/distribuera principer tar saker ett steg längre och ändrar proaktivt en resurs (till exempel Tjänsten för synkronisering av lagring) eller distribuerar resurser (till exempel privata slutpunkter) för att anpassa till principerna.
Följande fördefinierade principer är tillgängliga för Azure Files och Azure File Sync:
Inaktivera den offentliga slutpunkten för Storage Sync-tjänsten.
Ändra – Konfigurera Azure File Sync för att inaktivera åtkomst till offentligt nätverk
Distribuera
Azure File Sync
Distribuera en privat slutpunkt för Tjänsten för synkronisering av lagring.
Konfigurera Azure File Sync med privata slutpunkter
Distribuera
Azure File Sync
Distribuera en A-post till privatelink.afs.azure.net DNS-zon.
Konfigurera Azure File Sync för att använda privata DNS-zoner
Konfigurera en distributionsprincip för privat slutpunkt
Om du vill konfigurera en privat slutpunktsdistributionsprincip går du till Azure-portalen och söker efter Princip. Azure Policy Center bör vara ett toppresultat. Gå till Redigeringsdefinitioner> i principcentrets innehållsförteckning. Fönstret Definitioner innehåller de fördefinierade principerna för alla Azure-tjänster. Om du vill hitta den specifika principen väljer du kategorin Lagring i kategorifiltret eller söker efter Konfigurera Azure File Sync med privata slutpunkter. Välj ... och Tilldela för att skapa en ny princip från definitionen.
Med bladet Grundinställningar i guiden Tilldela princip kan du ange en undantagslista för omfång, resurs eller resursgrupp och ge principen ett eget namn som hjälper dig att särskilja den. Du behöver inte ändra dessa för att principen ska fungera, men det kan du om du vill göra ändringar. Välj Nästa för att gå vidare till sidan Parametrar .
På bladet Parametrar väljer du ... bredvid listrutan privateEndpointSubnetId för att välja det virtuella nätverk och undernät där de privata slutpunkterna för dina Storage Sync Service-resurser ska distribueras. Det kan ta flera sekunder att läsa in de tillgängliga virtuella nätverken i din prenumeration. Välj lämpligt virtuellt nätverk/undernät för din miljö och klicka på Välj. Välj Nästa för att gå vidare till bladet Reparation .
För att den privata slutpunkten ska kunna distribueras när en lagringssynkroniseringstjänst utan en privat slutpunkt identifieras måste du välja åtgärden Skapa en reparation på sidan Reparation. Välj slutligen Granska + skapa för att granska principtilldelningen och Skapa för att skapa den.
Den resulterande principtilldelningen körs regelbundet och kanske inte körs omedelbart efter att den har skapats.