Konfigurowanie punktów końcowych sieci usługi Azure File Sync
Artykuł
Czas czytania: 28 min
Azure Files i Azure File Sync zapewniają dwa główne typy punktów końcowych na potrzeby uzyskiwania dostępu do udziałów plików platformy Azure:
Publiczne punkty końcowe, które mają publiczny adres IP i mogą być dostępne z dowolnego miejsca na świecie.
Prywatne punkty końcowe, które istnieją w sieci wirtualnej i mają prywatny adres IP z przestrzeni adresowej tej sieci wirtualnej.
W przypadku Azure Files i Azure File Sync obiekty zarządzania platformy Azure, konto magazynu i usługa synchronizacji magazynu kontrolują zarówno publiczne, jak i prywatne punkty końcowe. Konto magazynu to konstrukcja zarządzania reprezentująca udostępnioną pulę magazynu, w której można wdrożyć wiele udziałów plików, a także inne zasoby magazynu, takie jak kontenery obiektów blob lub kolejki. Usługa synchronizacji magazynu to konstrukcja zarządzania reprezentująca zarejestrowane serwery, które są serwerami plików systemu Windows z ustanowioną relacją zaufania z Azure File Sync i grupami synchronizacji, które definiują topologię relacji synchronizacji.
Ten artykuł koncentruje się na sposobie konfigurowania punktów końcowych sieci dla Azure Files i Azure File Sync. Aby dowiedzieć się więcej na temat konfigurowania punktów końcowych sieci na potrzeby bezpośredniego uzyskiwania dostępu do udziałów plików platformy Azure zamiast buforowania lokalnego przy użyciu Azure File Sync, zobacz Konfigurowanie punktów końcowych sieci Azure Files.
Masz subskrypcję platformy Azure. Jeśli nie masz jeszcze subskrypcji, przed rozpoczęciem utwórz bezpłatne konto.
Utworzono już udział plików platformy Azure na koncie magazynu, z którym chcesz nawiązać połączenie ze środowiska lokalnego. Aby dowiedzieć się, jak utworzyć udział plików platformy Azure, zobacz Tworzenie udziału plików platformy Azure.
Podczas tworzenia prywatnego punktu końcowego dla zasobu platformy Azure są wdrażane następujące zasoby:
Prywatny punkt końcowy: zasób platformy Azure reprezentujący prywatny punkt końcowy konta magazynu lub usługę synchronizacji magazynu. Można to traktować jako zasób łączący zasób platformy Azure i interfejs sieciowy.
Interfejs sieciowy (NIC): interfejs sieciowy, który utrzymuje prywatny adres IP w określonej sieci wirtualnej/podsieci. Jest to dokładnie ten sam zasób, który jest wdrażany podczas wdrażania maszyny wirtualnej, jednak zamiast być przypisanym do maszyny wirtualnej, jest on własnością prywatnego punktu końcowego.
Prywatna strefa DNS: jeśli nigdy wcześniej nie wdrożono prywatnego punktu końcowego dla tej sieci wirtualnej, zostanie wdrożona nowa prywatna strefa DNS dla sieci wirtualnej. Rekord DNS A zostanie również utworzony dla zasobu platformy Azure w tej strefie DNS. Jeśli w tej sieci wirtualnej wdrożono już prywatny punkt końcowy, do istniejącej strefy DNS zostanie dodany nowy rekord A dla zasobu platformy Azure. Wdrażanie strefy DNS jest opcjonalne, jednak zdecydowanie zalecane, aby uprościć wymagane zarządzanie systemem DNS.
Uwaga
W tym artykule używane są sufiksy DNS dla regionów publicznych platformy Azure dla core.windows.net kont magazynu i afs.azure.net usług synchronizacji magazynu. Ten komentarz dotyczy również chmur suwerennych platformy Azure, takich jak chmura platformy Azure DLA instytucji rządowych USA — wystarczy zastąpić odpowiednie sufiksy dla danego środowiska.
Tworzenie prywatnego punktu końcowego konta magazynu
Przejdź do konta magazynu, dla którego chcesz utworzyć prywatny punkt końcowy. W spisie treści dla konta magazynu wybierz pozycję Sieć, Połączenia z prywatnym punktem końcowym, a następnie pozycję + Prywatny punkt końcowy , aby utworzyć nowy prywatny punkt końcowy.
Wynikowy kreator ma wiele stron do ukończenia.
W bloku Podstawowe wybierz odpowiednią subskrypcję, grupę zasobów, nazwę, nazwę interfejsu sieciowego i region dla prywatnego punktu końcowego. Mogą to być elementy, których potrzebujesz, nie muszą w żaden sposób odpowiadać kontu magazynu, chociaż musisz utworzyć prywatny punkt końcowy w tym samym regionie co sieć wirtualna, w której chcesz utworzyć prywatny punkt końcowy. Następnie wybierz pozycję Dalej: Zasób.
W bloku Zasób wybierz plik dla docelowego zasobu podrzędnego. Następnie wybierz pozycję Dalej: Virtual Network.
Blok Virtual Network umożliwia wybranie określonej sieci wirtualnej i podsieci, do której chcesz dodać prywatny punkt końcowy. Wybierz dynamiczną lub statyczną alokację adresów IP dla nowego prywatnego punktu końcowego. W przypadku wybrania opcji statycznych należy również podać nazwę i prywatny adres IP. Opcjonalnie możesz również określić grupę zabezpieczeń aplikacji. Po zakończeniu wybierz pozycję Dalej: DNS.
Blok DNS zawiera informacje dotyczące integracji prywatnego punktu końcowego z prywatną strefą DNS. Upewnij się, że subskrypcja i grupa zasobów są poprawne, a następnie wybierz pozycję Dalej: Tagi.
Opcjonalnie można zastosować tagi w celu kategoryzowania zasobów, takich jak zastosowanie nazwy Środowisko i wartość Test do wszystkich zasobów testowych. W razie potrzeby wprowadź pary nazwa/wartość, a następnie wybierz pozycję Dalej: Przejrzyj i utwórz.
Kliknij pozycję Przejrzyj i utwórz , aby utworzyć prywatny punkt końcowy.
Jeśli masz maszynę wirtualną w sieci wirtualnej lub skonfigurowano przekazywanie DNS zgodnie z opisem w temacie Konfigurowanie przekazywania DNS dla Azure Files, możesz sprawdzić, czy prywatny punkt końcowy został poprawnie skonfigurowany, uruchamiając następujące polecenia z poziomu programu PowerShell, wiersza polecenia lub terminalu (działa w systemach Windows, Linux lub macOS). Musisz zastąpić <storage-account-name> odpowiednią nazwą konta magazynu:
Jeśli wszystko zadziałało pomyślnie, powinny zostać wyświetlone następujące dane wyjściowe, gdzie 192.168.0.5 jest prywatnym adresem IP prywatnego punktu końcowego w sieci wirtualnej (dane wyjściowe wyświetlane dla systemu Windows):
Aby utworzyć prywatny punkt końcowy dla konta magazynu, należy najpierw uzyskać odwołanie do konta magazynu i podsieci sieci wirtualnej, do której chcesz dodać prywatny punkt końcowy. Zastąp wartości <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>i <vnet-subnet-name> poniżej:
$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
}
Aby utworzyć prywatny punkt końcowy, musisz utworzyć połączenie usługi łącza prywatnego z kontem magazynu. Połączenie usługi łącza prywatnego jest danymi wejściowymi do tworzenia prywatnego punktu końcowego.
# 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
Utworzenie prywatnej strefy DNS platformy Azure umożliwia oryginalną nazwę konta magazynu, taką jak storageaccount.file.core.windows.net rozpoznawanie prywatnego adresu IP wewnątrz sieci wirtualnej. Chociaż opcjonalnie z perspektywy tworzenia prywatnego punktu końcowego jest on jawnie wymagany do instalowania udziału plików platformy Azure bezpośrednio przy użyciu jednostki użytkownika usługi AD lub uzyskiwania dostępu za pośrednictwem interfejsu API REST.
# 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
}
Teraz, gdy masz odwołanie do prywatnej strefy DNS, musisz utworzyć rekord A dla konta magazynu.
Jeśli masz maszynę wirtualną w sieci wirtualnej lub skonfigurowano przekazywanie DNS zgodnie z opisem w temacie Konfigurowanie przekazywania DNS dla Azure Files, możesz sprawdzić, czy prywatny punkt końcowy został poprawnie skonfigurowany przy użyciu następujących poleceń:
Jeśli wszystko zadziałało pomyślnie, powinny zostać wyświetlone następujące dane wyjściowe, gdzie 192.168.0.5 jest prywatnym adresem IP prywatnego punktu końcowego w sieci wirtualnej:
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
Aby utworzyć prywatny punkt końcowy dla konta magazynu, należy najpierw uzyskać odwołanie do konta magazynu i podsieci sieci wirtualnej, do której chcesz dodać prywatny punkt końcowy. Zastąp wartości <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>i <vnet-subnet-name> poniżej:
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 '"')
Aby utworzyć prywatny punkt końcowy, należy najpierw upewnić się, że zasady sieci prywatnego punktu końcowego podsieci są ustawione na wyłączone. Następnie możesz utworzyć prywatny punkt końcowy za az network private-endpoint create pomocą polecenia .
Utworzenie prywatnej strefy DNS platformy Azure umożliwia oryginalną nazwę konta magazynu, taką jak storageaccount.file.core.windows.net rozpoznawanie prywatnego adresu IP wewnątrz sieci wirtualnej. Chociaż opcjonalnie z perspektywy tworzenia prywatnego punktu końcowego jest on jawnie wymagany do instalowania udziału plików platformy Azure przy użyciu jednostki użytkownika usługi AD lub uzyskiwania dostępu za pośrednictwem interfejsu API REST.
# 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
Teraz, gdy masz odwołanie do prywatnej strefy DNS, musisz utworzyć rekord A dla konta magazynu.
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
Jeśli masz maszynę wirtualną w sieci wirtualnej lub skonfigurowano przekazywanie DNS zgodnie z opisem w temacie Konfigurowanie przekazywania DNS dla Azure Files, możesz sprawdzić, czy prywatny punkt końcowy został poprawnie skonfigurowany przy użyciu następujących poleceń:
Jeśli wszystko zadziałało pomyślnie, powinny zostać wyświetlone następujące dane wyjściowe, gdzie 192.168.0.5 jest prywatnym adresem IP prywatnego punktu końcowego w sieci wirtualnej:
Przejdź do Centrum Private Link, wpisując Private Link na pasku wyszukiwania w górnej części Azure Portal. W spisie treści centrum Private Link wybierz pozycję Prywatne punkty końcowe, a następnie pozycję + Dodaj, aby utworzyć nowy prywatny punkt końcowy.
Wynikowy kreator ma wiele stron do ukończenia.
W bloku Podstawy wybierz odpowiednią grupę zasobów, nazwę i region dla prywatnego punktu końcowego. Mogą to być elementy, które mają być zgodne z usługą synchronizacji magazynu w żaden sposób, chociaż należy utworzyć prywatny punkt końcowy w tym samym regionie co sieć wirtualna, w której chcesz utworzyć prywatny punkt końcowy.
W bloku Zasób wybierz przycisk radiowy Połącz z zasobem platformy Azure w moim katalogu. W obszarze Typ zasobu wybierz pozycję Microsoft. StorageSync/storageSyncServices dla typu zasobu.
Blok Konfiguracja umożliwia wybranie określonej sieci wirtualnej i podsieci, do której chcesz dodać prywatny punkt końcowy. Wybierz tę samą sieć wirtualną, która była używana dla powyższego konta magazynu. Blok Konfiguracja zawiera również informacje dotyczące tworzenia/aktualizowania prywatnej strefy DNS.
Kliknij pozycję Przejrzyj i utwórz , aby utworzyć prywatny punkt końcowy.
Możesz sprawdzić, czy prywatny punkt końcowy został poprawnie skonfigurowany, uruchamiając następujące polecenia w programie PowerShell.
Jeśli wszystko działa prawidłowo, powinny zostać wyświetlone następujące dane wyjściowe, gdzie 192.168.1.4, 192.168.1.5192.168.1.6, i 192.168.1.7 są prywatnymi adresami IP przypisanymi do prywatnego punktu końcowego:
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
Aby utworzyć prywatny punkt końcowy dla usługi synchronizacji magazynu, najpierw należy uzyskać odwołanie do usługi synchronizacji magazynu. Pamiętaj, aby zastąpić <storage-sync-service-resource-group> wartości i <storage-sync-service> poprawnymi wartościami dla danego środowiska. W poniższych poleceniach programu PowerShell założono, że używasz już informacji o sieci wirtualnej z powyższych.
$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
}
Aby utworzyć prywatny punkt końcowy, należy utworzyć połączenie usługi łącza prywatnego z usługą synchronizacji magazynu. Połączenie łącza prywatnego jest danymi wejściowymi do tworzenia prywatnego punktu końcowego.
# 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
Utworzenie prywatnej strefy DNS platformy Azure umożliwia rozpoznawanie nazw hostów dla usługi synchronizacji magazynu, takich jak mysssmanagement.westus2.afs.azure.net, w celu rozpoznawania poprawnych prywatnych adresów IP dla usługi synchronizacji magazynu wewnątrz sieci wirtualnej. Chociaż jest to opcjonalne z perspektywy tworzenia prywatnego punktu końcowego, jest jawnie wymagane, aby agent Azure File Sync uzyskiwał dostęp do usługi synchronizacji magazynu.
# 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
}
Teraz, gdy masz odwołanie do prywatnej strefy DNS, musisz utworzyć rekord A dla usługi synchronizacji magazynu.
Aby utworzyć prywatny punkt końcowy dla usługi synchronizacji magazynu, najpierw należy uzyskać odwołanie do usługi synchronizacji magazynu. Pamiętaj, aby zastąpić <storage-sync-service-resource-group> wartości i <storage-sync-service> poprawnymi wartościami dla danego środowiska. W poniższych poleceniach interfejsu wiersza polecenia założono, że używasz już informacji o sieci wirtualnej z powyższych.
Aby utworzyć prywatny punkt końcowy, należy najpierw upewnić się, że zasady sieci prywatnego punktu końcowego podsieci są ustawione na wyłączone. Następnie możesz utworzyć prywatny punkt końcowy za az network private-endpoint create pomocą polecenia .
Utworzenie prywatnej strefy DNS platformy Azure umożliwia rozpoznawanie nazw hostów dla usługi synchronizacji magazynu, takich jak mysssmanagement.westus2.afs.azure.net, w celu rozpoznawania poprawnych prywatnych adresów IP dla usługi synchronizacji magazynu wewnątrz sieci wirtualnej. Chociaż jest to opcjonalne z perspektywy tworzenia prywatnego punktu końcowego, jest jawnie wymagane, aby agent Azure File Sync uzyskiwał dostęp do usługi synchronizacji magazynu.
# 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
Teraz, gdy masz odwołanie do prywatnej strefy DNS, musisz utworzyć rekord A dla usługi synchronizacji magazynu.
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
Ograniczanie dostępu do publicznych punktów końcowych
Możesz ograniczyć dostęp do publicznych punktów końcowych zarówno konta magazynu, jak i usług synchronizacji magazynu. Ograniczanie dostępu do publicznego punktu końcowego zapewnia dodatkowe zabezpieczenia, zapewniając, że pakiety sieciowe są akceptowane tylko z zatwierdzonych lokalizacji.
Ograniczanie dostępu do publicznego punktu końcowego konta magazynu
Ograniczenie dostępu do publicznego punktu końcowego odbywa się przy użyciu ustawień zapory konta magazynu. Ogólnie rzecz biorąc, większość zasad zapory dla konta magazynu ograniczy dostęp sieciowy do co najmniej jednej sieci wirtualnej. Istnieją dwie metody ograniczania dostępu do konta magazynu do sieci wirtualnej:
Ogranicz publiczny punkt końcowy do co najmniej jednej sieci wirtualnej. Działa to przy użyciu możliwości sieci wirtualnej nazywanej punktami końcowymi usługi. Po ograniczeniu ruchu do konta magazynu za pośrednictwem punktu końcowego usługi nadal uzyskujesz dostęp do konta magazynu za pośrednictwem publicznego adresu IP.
Uwaga
Pozycja Zezwalaj usługom platformy Azure na liście zaufanych usług na dostęp do tego wyjątku konta magazynu musi być wybrana na koncie magazynu, aby zezwolić na dostęp do konta magazynu zaufanych usług Microsoft innych firm, takich jak Azure File Sync. Aby dowiedzieć się więcej, zobacz Udzielanie dostępu do zaufanych usług platformy Azure.
Udzielanie dostępu do zaufanych usług platformy Azure i wyłączanie dostępu do publicznego punktu końcowego konta magazynu
Gdy dostęp do publicznego punktu końcowego jest wyłączony, konto magazynu nadal może być dostępne za pośrednictwem jego prywatnych punktów końcowych. W przeciwnym razie prawidłowe żądania do publicznego punktu końcowego konta magazynu zostaną odrzucone.
Przejdź do konta magazynu, dla którego chcesz ograniczyć dostęp do publicznego punktu końcowego. W spisie treści dla konta magazynu wybierz pozycję Sieć.
W górnej części strony wybierz przycisk radiowy Włączone z wybranych sieci wirtualnych i adresów IP . Spowoduje to ukrycie wielu ustawień kontroli ograniczeń publicznego punktu końcowego. Wybierz pozycję Zezwalaj usługom platformy Azure na liście zaufanych usług, aby uzyskać dostęp do tego konta magazynu, aby zezwolić na dostęp do konta magazynu zaufanych usług Microsoft innych firm, takich jak Azure File Sync.
Następujące polecenie programu PowerShell uniemożliwi cały ruch do publicznego punktu końcowego konta magazynu. Zwróć uwagę, że to polecenie ma -Bypass parametr ustawiony na AzureServiceswartość . Umożliwi to zaufanym usługom pierwszej firmy, takim jak Azure File Sync uzyskiwanie dostępu do konta magazynu za pośrednictwem publicznego punktu końcowego.
# 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
Następujące polecenie interfejsu wiersza polecenia spowoduje odmowę całego ruchu do publicznego punktu końcowego konta magazynu. Zwróć uwagę, że to polecenie ma -bypass parametr ustawiony na AzureServiceswartość . Umożliwi to zaufanym usługom pierwszej firmy, takim jak Azure File Sync uzyskiwanie dostępu do konta magazynu za pośrednictwem publicznego punktu końcowego.
# 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
Udzielanie dostępu do zaufanych usług platformy Azure i ograniczanie dostępu do publicznego punktu końcowego konta magazynu do określonych sieci wirtualnych
Jeśli ograniczasz konto magazynu do określonych sieci wirtualnych, zezwalasz na żądania do publicznego punktu końcowego z określonych sieci wirtualnych. Działa to przy użyciu możliwości sieci wirtualnej nazywanej punktami końcowymi usługi. Może być używany z prywatnymi punktami końcowymi lub bez tych punktów końcowych.
Przejdź do konta magazynu, dla którego chcesz ograniczyć publiczny punkt końcowy do określonych sieci wirtualnych. W spisie treści dla konta magazynu wybierz pozycję Sieć.
W górnej części strony wybierz przycisk radiowy Włączone z wybranych sieci wirtualnych i adresów IP . Spowoduje to ukrycie wielu ustawień kontroli ograniczeń publicznego punktu końcowego. Wybierz pozycję +Dodaj istniejącą sieć wirtualną , aby wybrać określoną sieć wirtualną, która powinna mieć dostęp do konta magazynu za pośrednictwem publicznego punktu końcowego. Wybierz sieć wirtualną i podsieć dla tej sieci wirtualnej, a następnie wybierz pozycję Włącz.
Wybierz pozycję Zezwalaj usługom platformy Azure na liście zaufanych usług, aby uzyskać dostęp do tego konta magazynu, aby zezwolić na dostęp do konta magazynu zaufanych usług Microsoft innych firm, takich jak Azure File Sync.
Aby ograniczyć dostęp do publicznego punktu końcowego konta magazynu do określonych sieci wirtualnych przy użyciu punktów końcowych usługi, najpierw musimy zebrać informacje o koncie magazynu i sieci wirtualnej. Wypełnij pola <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>i <subnet-name> , aby zebrać te informacje.
Aby ruch z sieci wirtualnej mógł być dozwolony przez sieć szkieletową sieci platformy Azure w celu uzyskania dostępu do publicznego punktu końcowego konta magazynu, podsieć sieci wirtualnej musi mieć Microsoft.Storage uwidoczniony punkt końcowy usługi. Następujące polecenia programu PowerShell spowodują dodanie Microsoft.Storage punktu końcowego usługi do podsieci, jeśli jeszcze nie istnieje.
Aby ograniczyć dostęp do publicznego punktu końcowego konta magazynu do określonych sieci wirtualnych przy użyciu punktów końcowych usługi, najpierw musimy zebrać informacje o koncie magazynu i sieci wirtualnej. Wypełnij pola <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name>i <subnet-name> , aby zebrać te informacje.
Aby ruch z sieci wirtualnej mógł być dozwolony przez sieć szkieletową sieci platformy Azure w celu uzyskania dostępu do publicznego punktu końcowego konta magazynu, podsieć sieci wirtualnej musi mieć Microsoft.Storage uwidoczniony punkt końcowy usługi. Następujące polecenia interfejsu Microsoft.Storage wiersza polecenia spowodują dodanie punktu końcowego usługi do podsieci, jeśli jeszcze nie istnieje.
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
Ostatnim krokiem ograniczania ruchu do konta magazynu jest utworzenie reguły sieciowej i dodanie jej do zestawu reguł sieciowych konta magazynu.
Wyłączanie dostępu do publicznego punktu końcowego usługi synchronizacji magazynu
Azure File Sync umożliwia ograniczenie dostępu do określonych sieci wirtualnych tylko za pośrednictwem prywatnych punktów końcowych; Azure File Sync nie obsługuje punktów końcowych usługi w celu ograniczenia dostępu do publicznego punktu końcowego do określonych sieci wirtualnych. Oznacza to, że dwa stany publicznego punktu końcowego usługi synchronizacji magazynu są włączone i wyłączone.
Nie jest to możliwe za pośrednictwem Azure Portal. Wybierz kartę Azure PowerShell, aby uzyskać instrukcje dotyczące wyłączania publicznego punktu końcowego usługi synchronizacji magazynu.
Aby wyłączyć dostęp do publicznego punktu końcowego usługi synchronizacji magazynu, ustawimy incomingTrafficPolicy właściwość w usłudze synchronizacji magazynu na AllowVirtualNetworksOnlywartość . Jeśli chcesz włączyć dostęp do publicznego punktu końcowego usługi synchronizacji magazynu, ustaw zamiast tego wartość incomingTrafficPolicyAllowAllTraffic . Pamiętaj, aby zastąpić elementy <storage-sync-service-resource-group> i <storage-sync-service>.
Interfejs wiersza polecenia platformy Azure nie obsługuje ustawiania incomingTrafficPolicy właściwości w usłudze synchronizacji magazynu. Wybierz kartę Azure PowerShell, aby uzyskać instrukcje dotyczące wyłączania publicznego punktu końcowego usługi synchronizacji magazynu.
Azure Policy
Azure Policy pomaga wymuszać standardy organizacji i oceniać zgodność z tymi standardami na dużą skalę. Azure Files i Azure File Sync uwidaczniać kilka przydatnych zasad sieciowych inspekcji i korygowania, które ułatwiają monitorowanie i automatyzowanie wdrożenia.
Zasady przeprowadzają inspekcję środowiska i ostrzegają, jeśli konta magazynu lub usługi synchronizacji magazynu różnią się od zdefiniowanego zachowania. Jeśli na przykład publiczny punkt końcowy jest włączony, gdy zasady zostały ustawione tak, aby publiczne punkty końcowe były wyłączone. Modyfikowanie/wdrażanie zasad krok dalej i proaktywne modyfikowanie zasobu (takiego jak usługa synchronizacji magazynu) lub wdrażanie zasobów (takich jak prywatne punkty końcowe) w celu dostosowania ich do zasad.
Następujące wstępnie zdefiniowane zasady są dostępne dla Azure Files i Azure File Sync:
Wyłącz publiczny punkt końcowy usługi synchronizacji magazynu.
Modyfikowanie — konfigurowanie Azure File Sync w celu wyłączenia dostępu do sieci publicznej
Wdróż
Azure File Sync
Wdróż prywatny punkt końcowy dla usługi synchronizacji magazynu.
Konfigurowanie Azure File Sync przy użyciu prywatnych punktów końcowych
Wdróż
Azure File Sync
Wdróż rekord A w strefie DNS privatelink.afs.azure.net.
Konfigurowanie Azure File Sync do używania prywatnych stref DNS
Konfigurowanie zasad wdrażania prywatnego punktu końcowego
Aby skonfigurować zasady wdrażania prywatnego punktu końcowego, przejdź do Azure Portal i wyszukaj pozycję Zasady. Środek Azure Policy powinien być najlepszym wynikiem. Przejdź do pozycji Tworzenie>definicji w spisie treści centrum zasad. Wynikowe okienko Definicje zawiera wstępnie zdefiniowane zasady we wszystkich usługach platformy Azure. Aby znaleźć określone zasady, wybierz kategorię Magazyn w filtrze kategorii lub wyszukaj pozycję Konfiguruj Azure File Sync z prywatnymi punktami końcowymi. Wybierz pozycję ... i przypisz , aby utworzyć nowe zasady na podstawie definicji.
Blok Podstawy kreatora przypisywania zasad umożliwia ustawienie listy wykluczeń zakresu, zasobów lub grup zasobów oraz nadanie zasadom przyjaznej nazwy ułatwiającej jej odróżnienie. Nie trzeba ich modyfikować, aby zasady działały, ale możesz wprowadzić modyfikacje. Wybierz przycisk Dalej , aby przejść do strony Parametry .
W bloku Parametry wybierz pozycję ... obok listy rozwijanej privateEndpointSubnetId , aby wybrać sieć wirtualną i podsieć, w której powinny zostać wdrożone prywatne punkty końcowe dla zasobów usługi synchronizacji magazynu. Załadowanie dostępnych sieci wirtualnych w ramach subskrypcji może potrwać kilka sekund. Wybierz odpowiednią sieć wirtualną/podsieć dla środowiska, a następnie kliknij pozycję Wybierz. Wybierz przycisk Dalej , aby przejść do bloku Korygowanie .
Aby prywatny punkt końcowy był wdrażany po zidentyfikowaniu usługi synchronizacji magazynu bez prywatnego punktu końcowego, należy wybrać zadanie Tworzenia korygowania na stronie Korygowanie . Na koniec wybierz pozycję Przejrzyj i utwórz , aby przejrzeć przypisanie zasad i utworzyć je.
Wynikowe przypisanie zasad będzie wykonywane okresowo i może nie być uruchamiane natychmiast po utworzeniu.