Konfigurieren von öffentlichen und privaten Netzwerkendpunkten für die Azure-Dateisynchronisierung
Artikel
Azure Files und die Azure-Dateisynchronisierung verfügen über zwei Arten von Endpunkten für den Zugriff auf Azure-Dateifreigaben:
Öffentliche Endpunkte mit einer öffentlichen IP-Adresse, auf die von jedem Ort der Welt aus zugegriffen werden kann.
Private Endpunkte, die in einem virtuellen Netzwerk vorhanden sind und eine private IP-Adresse im Adressraum des virtuellen Netzwerks aufweisen.
Für Azure Files und die Azure-Dateisynchronisierung werden mit den Azure-Verwaltungsobjekten (dem Speicherkonto und dem Speichersynchronisierungsdienst) sowohl die öffentlichen als auch die privaten Endpunkte gesteuert. Das Speicherkonto ist ein Verwaltungskonstrukt, das einen gemeinsam genutzten Pool mit Speicherplatz darstellt, in dem Sie mehrere Dateifreigaben sowie weitere Speicherressourcen wie Blobs oder Warteschlangen bereitstellen können. Der Speichersynchronisierungsdienst ist ein Verwaltungskonstrukt für registrierte Server. Hierbei handelt es sich um Windows-Dateiserver mit einer etablierten Vertrauensstellung mit der Azure-Dateisynchronisierung und mit Synchronisierungsgruppen, mit denen die Topologie der Synchronisierungsbeziehung definiert wird.
In diesem Artikel wird beschrieben, wie Sie die Netzwerkendpunkte für Azure Files und für die Azure-Dateisynchronisierung konfigurieren. Weitere Informationen zum Konfigurieren von Netzwerkendpunkten für den direkten Zugriff auf Azure-Dateifreigaben (anstelle der lokalen Zwischenspeicherung bei der Azure-Dateisynchronisierung) finden Sie unter Konfigurieren von Azure Files-Netzwerkendpunkten.
Sie verfügen über ein Azure-Abonnement. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Sie haben bereits eine Azure-Dateifreigabe in einem Speicherkonto erstellt, mit dem von der lokalen Umgebung aus eine Verbindung hergestellt werden soll. Informationen zum Erstellen einer Azure-Dateifreigabe finden Sie unter Erstellen einer Azure-Dateifreigabe.
Sie lassen Domänendatenverkehr zu den folgenden Endpunkten zu (siehe Azure-Dienstendpunkte):
Wenn Sie einen privaten Endpunkt für eine Azure-Ressource erstellen, werden die folgenden Ressourcen bereitgestellt:
Ein privater Endpunkt: Eine Azure-Ressource, die entweder den privaten Endpunkt für das Speicherkonto oder für den Speichersynchronisierungsdienst darstellt. Stellen Sie sich dies wie eine Ressource vor, die Ihre Azure-Ressource und eine Netzwerkschnittstelle miteinander verbindet.
Eine Netzwerkschnittstelle (NIC) : Die Netzwerkschnittstelle, über die eine private IP-Adresse im angegebenen virtuellen Netzwerk bzw. Subnetz verwaltet wird. Dies ist genau die gleiche Ressource, die bei der Bereitstellung eines virtuellen Computers bereitgestellt wird. Sie wird aber nicht einer VM zugewiesen, sondern befindet sich im Besitz des privaten Endpunkts.
Eine private DNS-Zone: Falls Sie für dieses virtuelle Netzwerk noch keinen privaten Endpunkt bereitgestellt haben, wird für Ihr virtuelles Netzwerk eine neue private DNS-Zone bereitgestellt. Ein DNS-A-Eintrag wird für die Azure-Ressource in dieser DNS-Zone ebenfalls erstellt. Wenn Sie in diesem virtuellen Netzwerk bereits einen privaten Endpunkt bereitgestellt haben, wird der vorhandenen DNS-Zone ein neuer A-Eintrag für die Azure-Ressource hinzugefügt. Die Bereitstellung einer DNS-Zone ist optional, aber diese Vorgehensweise wird dringend empfohlen, um die erforderliche DNS-Verwaltung zu vereinfachen.
Hinweis
In diesem Artikel werden die DNS-Suffixe für die öffentlichen Azure-Regionen verwendet. Dies sind core.windows.net für Speicherkonten und afs.azure.net für Speichersynchronisierungsdienste. Dies gilt auch für Azure Sovereign Clouds, z. B. die Azure US Government-Cloud. Fügen Sie einfach die entsprechenden Suffixe für Ihre Umgebung ein.
Erstellen des privaten Endpunkts für das Speicherkonto
Navigieren Sie zu dem Speicherkonto, für das Sie einen privaten Endpunkt erstellen möchten. Wählen Sie im Dienstmenü unter Sicherheit + Netzwerk die Option Netzwerk, Private Endpunktverbindungen und dann +Privater Endpunkt aus, um einen neuen privaten Endpunkt zu erstellen.
Im anschließend angezeigten Assistenten müssen mehrere Seiten ausgefüllt werden.
Wählen Sie auf dem Blatt Grundlagen das gewünschte Abonnement, die Ressourcengruppe, den Namen, den Namen der Netzwerkschnittstelle und die Region für Ihren privaten Endpunkt aus. Diese können beliebig sein und müssen nicht mit dem Speicherkonto übereinstimmen. Allerdings müssen Sie den privaten Endpunkt in derselben Region erstellen wie das virtuelle Netzwerk, in dem Sie den privaten Endpunkt erstellen möchten. Wählen Sie dann Weiter: Ressource aus.
Wählen Sie auf dem Blatt Ressource die Option Datei für die untergeordnete Zielressource aus. Wählen Sie anschließend Weiter: Virtuelles Netzwerk aus.
Auf dem Blatt Virtuelles Netzwerk können Sie das spezifische virtuelle Netzwerk und das Subnetz auswählen, dem Sie Ihren privaten Endpunkt hinzufügen möchten. Wählen Sie die dynamische oder statische IP-Adresszuordnung für den neuen privaten Endpunkt aus. Wenn Sie sich für eine statische Zuordnung entscheiden, müssen Sie auch einen Namen und eine private IP-Adresse angeben. Optional können Sie auch eine Anwendungssicherheitsgruppe angeben. Wenn Sie fertig sind, wählen Sie Weiter: DNS aus.
Das Blatt DNS enthält die Informationen zur Integration Ihres privaten Endpunkts in eine private DNS-Zone. Vergewissern Sie sich, dass Abonnement und Ressourcengruppe korrekt sind, und wählen Sie dann Weiter: Tags aus.
Sie können optional Tags anwenden, um Ihre Ressourcen zu kategorisieren, und beispielsweise den Namen Umgebung und den Wert Test auf alle Testressourcen anwenden. Geben Sie bei Bedarf Name-Wert-Paare ein, und wählen Sie dann Weiter: Überprüfen + erstellen aus.
Wählen Sie Überprüfen + erstellen aus, um den privaten Endpunkt zu erstellen.
Wenn Sie in Ihrem virtuellen Netzwerk über eine VM verfügen oder die DNS-Weiterleitung wie unter Konfigurieren der DNS-Weiterleitung für Azure Files beschrieben konfiguriert haben, können Sie testen, ob Ihr privater Endpunkt richtig eingerichtet wurde. Führen Sie hierzu die folgenden Befehle über PowerShell, die Befehlszeile oder das Terminal (für Windows, Linux oder macOS) aus. Sie müssen <storage-account-name> durch den entsprechenden Speicherkontonamen ersetzen:
Falls alles richtig funktioniert, sollte die folgende Ausgabe angezeigt werden (Beispiel für Windows), wobei 192.168.0.5 die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk ist:
Für die Erstellung eines privaten Endpunkts für Ihr Speicherkonto müssen Sie zuerst einen Verweis auf Ihr Speicherkonto und das Subnetz des virtuellen Netzwerks einrichten, dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie unten <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> und <vnet-subnet-name> entsprechend:
$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
}
Für die Erstellung eines privaten Endpunkts müssen Sie eine Private Link-Dienstverbindung mit dem Speicherkonto erstellen. Die Private Link-Dienstverbindung ist eine Voraussetzung für die Erstellung des privaten Endpunkts.
# 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
Die Erstellung einer privaten Azure DNS-Zone ermöglicht es, dass der Originalname des Speicherkontos, z. B. storageaccount.file.core.windows.net, in die private IP-Adresse im virtuellen Netzwerk aufgelöst wird. Diese Vorgehensweise ist für die Erstellung eines privaten Endpunkts zwar optional, aber für die direkte Bereitstellung der Azure-Dateifreigabe mit einem AD-Benutzerprinzipal oder per Zugriff über die REST-API ist dies zwingend erforderlich.
# 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
}
Nachdem Sie nun über einen Verweis auf die private DNS-Zone verfügen, müssen Sie einen A-Eintrag für Ihr Speicherkonto erstellen.
Falls Sie in Ihrem virtuellen Netzwerk über einen virtuellen Computer verfügen oder die DNS-Weiterleitung wie unter Konfigurieren der DNS-Weiterleitung für Azure Files beschrieben konfiguriert haben, können Sie mit den folgenden Befehlen testen, ob Ihr privater Endpunkt richtig eingerichtet wurde:
Falls alles richtig funktioniert, sollte die folgende Ausgabe angezeigt werden, wobei 192.168.0.5 die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk ist:
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
Für die Erstellung eines privaten Endpunkts für Ihr Speicherkonto müssen Sie zuerst einen Verweis auf Ihr Speicherkonto und das Subnetz des virtuellen Netzwerks einrichten, dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie unten <storage-account-resource-group-name>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> und <vnet-subnet-name> entsprechend:
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 '"')
Für die Erstellung eines privaten Endpunkts müssen Sie zunächst sicherstellen, dass die Netzwerkrichtlinie für den privaten Endpunkt des Subnetzes auf „Deaktiviert“ festgelegt ist. Anschließend können Sie mit dem Befehl az network private-endpoint create einen privaten Endpunkt erstellen.
Die Erstellung einer privaten Azure DNS-Zone ermöglicht es, dass der Originalname des Speicherkontos, z. B. storageaccount.file.core.windows.net, in die private IP-Adresse im virtuellen Netzwerk aufgelöst wird. Diese Vorgehensweise ist für die Erstellung eines privaten Endpunkts zwar optional, aber für die Bereitstellung der Azure-Dateifreigabe mit einem AD-Benutzerprinzipal oder per Zugriff über die REST-API ist dies zwingend erforderlich.
# 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
Nachdem Sie nun über einen Verweis auf die private DNS-Zone verfügen, müssen Sie einen A-Eintrag für Ihr Speicherkonto erstellen.
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
Falls Sie in Ihrem virtuellen Netzwerk über einen virtuellen Computer verfügen oder die DNS-Weiterleitung wie unter Konfigurieren der DNS-Weiterleitung für Azure Files beschrieben konfiguriert haben, können Sie mit den folgenden Befehlen testen, ob Ihr privater Endpunkt richtig eingerichtet wurde:
Falls alles richtig funktioniert, sollte die folgende Ausgabe angezeigt werden, wobei 192.168.0.5 die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk ist:
Navigieren Sie zum Private Link-Center, indem Sie oben im Azure-Portal in der Suchleiste den Suchbegriff Private Link eingeben. Wählen Sie im Inhaltsverzeichnis des Private Link-Centers die Option Private Endpunkte und dann + Hinzufügen aus, um einen neuen privaten Endpunkt zu erstellen.
Im anschließend angezeigten Assistenten müssen mehrere Seiten ausgefüllt werden.
Wählen Sie auf dem Blatt Grundlagen die gewünschte Ressourcengruppe, den Namen und die Region für Ihren privaten Endpunkt aus. Dies können beliebig ausgewählte Angaben sein, die nicht mit den Angaben für den Speichersynchronisierungsdienst übereinstimmen müssen. Allerdings müssen Sie den privaten Endpunkt in derselben Region wie das virtuelle Netzwerk erstellen, in dem Sie den privaten Endpunkt erstellen möchten.
Wählen Sie auf dem Blatt Ressourcen das Optionsfeld für Verbindung mit einer Azure-Ressource im eigenen Verzeichnis herstellen aus. Wählen Sie unter Ressourcentyp die Option Microsoft.StorageSync/storageSyncServices aus.
Auf dem Blatt Konfiguration können Sie das spezifische virtuelle Netzwerk und das Subnetz auswählen, dem Sie Ihren privaten Endpunkt hinzufügen möchten. Wählen Sie dasselbe virtuelle Netzwerk wie oben für das Speicherkonto aus. Das Blatt „Konfiguration“ enthält auch die Informationen zum Erstellen bzw. Aktualisieren der privaten DNS-Zone.
Klicken Sie auf Überprüfen + erstellen, um den privaten Endpunkt zu erstellen.
Sie können testen, ob Ihr privater Endpunkt richtig eingerichtet wurde, indem Sie die folgenden PowerShell-Befehle ausführen.
Wenn alles richtig funktioniert, sollte die folgende Ausgabe angezeigt werden, in der 192.168.1.4, 192.168.1.5, 192.168.1.6 und 192.168.1.7 für die privaten IP-Adressen stehen, die dem privaten Endpunkt zugewiesen sind:
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
Zum Erstellen eines privaten Endpunkts für Ihren Speichersynchronisierungsdienst benötigen Sie zunächst einen Verweis auf den Speichersynchronisierungsdienst. Achten Sie darauf, dass Sie <storage-sync-service-resource-group> und <storage-sync-service> durch die entsprechenden Werte für Ihre Umgebung ersetzen. Bei den folgenden PowerShell-Befehlen wird vorausgesetzt, dass Sie die oben verwendeten Informationen für das virtuelle Netzwerk bereits eingefügt haben.
$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
}
Für die Erstellung eines privaten Endpunkts müssen Sie eine Private Link-Dienstverbindung mit dem Speichersynchronisierungsdienst herstellen. Die Private Link-Verbindung ist eine Voraussetzung für die Erstellung des privaten Endpunkts.
# 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
Die Erstellung einer Zone mit privatem Azure-DNS ermöglicht es, dass Hostnamen für den Speichersynchronisierungsdienst, z. B. mysssmanagement.westus2.afs.azure.net, in die richtigen privaten IP-Adressen für den Speichersynchronisierungsdienst im virtuellen Netzwerk aufgelöst werden. Dies ist in Bezug auf die Erstellung eines privaten Endpunkts zwar optional, aber dennoch unbedingt erforderlich, wenn der Azure-Dateisynchronisierungs-Agent auf den Speichersynchronisierungsdienst zugreifen soll.
# 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
}
Nachdem Sie nun über einen Verweis auf die private DNS-Zone verfügen, müssen Sie einen A-Eintrag für Ihren Speichersynchronisierungsdienst erstellen.
Zum Erstellen eines privaten Endpunkts für Ihren Speichersynchronisierungsdienst benötigen Sie zunächst einen Verweis auf den Speichersynchronisierungsdienst. Achten Sie darauf, dass Sie <storage-sync-service-resource-group> und <storage-sync-service> durch die entsprechenden Werte für Ihre Umgebung ersetzen. Bei den folgenden CLI-Befehlen wird vorausgesetzt, dass Sie die oben verwendeten Informationen für das virtuelle Netzwerk bereits eingefügt haben.
Für die Erstellung eines privaten Endpunkts müssen Sie zunächst sicherstellen, dass die Netzwerkrichtlinie für den privaten Endpunkt des Subnetzes auf „Deaktiviert“ festgelegt ist. Anschließend können Sie mit dem Befehl az network private-endpoint create einen privaten Endpunkt erstellen.
Die Erstellung einer Zone mit privatem Azure-DNS ermöglicht es, dass Hostnamen für den Speichersynchronisierungsdienst, z. B. mysssmanagement.westus2.afs.azure.net, in die richtigen privaten IP-Adressen für den Speichersynchronisierungsdienst im virtuellen Netzwerk aufgelöst werden. Dies ist in Bezug auf die Erstellung eines privaten Endpunkts zwar optional, aber dennoch unbedingt erforderlich, wenn der Azure-Dateisynchronisierungs-Agent auf den Speichersynchronisierungsdienst zugreifen soll.
# 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
Nachdem Sie nun über einen Verweis auf die private DNS-Zone verfügen, müssen Sie einen A-Eintrag für Ihren Speichersynchronisierungsdienst erstellen.
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
Einschränken des Zugriffs auf die öffentlichen Endpunkte
Sie können den Zugriff auf die öffentlichen Endpunkte des Speicherkontos und des Speichersynchronisierungsdiensts einschränken. Die Einschränkung des Zugriffs auf den öffentlichen Endpunkt sorgt für zusätzliche Sicherheit, indem sichergestellt wird, dass nur Netzwerkpakete von genehmigten Orten akzeptiert werden.
Beschränken des Zugriffs auf den öffentlichen Endpunkt des Speicherkontos
Der Zugriff auf den öffentlichen Endpunkt wird in den Firewalleinstellungen für das Speicherkonto beschränkt. Im Allgemeinen beschränken die meisten Firewallrichtlinien für Speicherkonten den Netzwerkzugriff auf ein virtuelles Netzwerk (oder auf mehrere). Der Speicherkontozugriff kann auf zwei Arten auf ein virtuelles Netzwerk beschränkt werden:
Erstellen eines oder mehrerer privater Endpunkte für das Speicherkonto und Deaktivieren des Zugriffs auf den öffentlichen Endpunkt. Dadurch wird sichergestellt, dass nur von Datenverkehr aus den gewünschten virtuellen Netzwerken auf die Azure-Dateifreigaben im Speicherkonto zugegriffen werden kann.
Beschränken des öffentlichen Endpunkts auf ein einzelnes virtuelles Netzwerk (oder auf mehrere). Hierzu werden sogenannte Dienstendpunkte des virtuellen Netzwerks verwendet. Wenn Sie den Datenverkehr für ein Speicherkonto über einen Dienstendpunkt beschränken, erfolgt der Zugriff auf das Speicherkonto weiterhin über die öffentliche IP-Adresse.
Hinweis
Die Ausnahme Erlauben Sie Azure-Diensten auf der Liste der vertrauenswürdigen Dienste den Zugriff auf dieses Speicherkonto muss für das Speicherkonto ausgewählt sein, um vertrauenswürdigen Microsoft-Erstanbieterdiensten, z. B. der Azure-Dateisynchronisierung, den Zugriff auf das Speicherkonto zu erlauben. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf vertrauenswürdige Azure-Dienste.
Gewähren des Zugriffs auf vertrauenswürdige Azure-Dienste und Deaktivieren des Zugriffs auf den öffentlichen Endpunkt des Speicherkontos
Wenn der gesamte Zugriff auf den öffentlichen Endpunkt deaktiviert wird, kann über die entsprechenden privaten Endpunkte weiterhin auf das Speicherkonto zugegriffen werden. Andernfalls werden gültige Anforderungen, die an den öffentlichen Endpunkt des Speicherkontos gesendet werden, abgelehnt.
Navigieren Sie zu dem Speicherkonto, für das Sie den gesamten Zugriff auf den öffentlichen Endpunkt einschränken möchten. Wählen Sie im Inhaltsverzeichnis des Speicherkontos den Eintrag Netzwerke aus.
Wählen Sie oben auf der Seite das Optionsfeld Aktiviert aus ausgewählten virtuellen Netzwerken und IP-Adressen aus. Hierdurch werden einige Einstellungen zum Steuern der Einschränkung des öffentlichen Endpunkts eingeblendet. Aktivieren Sie Azure-Diensten auf der Liste der vertrauenswürdigen Dienste den Zugriff auf dieses Speicherkonto erlauben, um vertrauenswürdigen Microsoft-Erstanbieterdiensten, z. B. der Azure-Dateisynchronisierung, den Zugriff auf das Speicherkonto zu erlauben.
Mit dem folgenden PowerShell-Befehl wird der gesamte Datenverkehr an den öffentlichen Endpunkt des Speicherkontos abgelehnt. Beachten Sie, dass für diesen Befehl der Parameter -Bypass auf AzureServices festgelegt ist. Hierdurch können vertrauenswürdige Erstanbieterdienste, z. B. die Azure-Dateisynchronisierung, über den öffentlichen Endpunkt auf das Speicherkonto zugreifen.
# 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
Mit dem folgenden CLI-Befehl wird der gesamte Datenverkehr an den öffentlichen Endpunkt des Speicherkontos abgelehnt. Beachten Sie, dass für diesen Befehl der Parameter -bypass auf AzureServices festgelegt ist. Hierdurch können vertrauenswürdige Erstanbieterdienste, z. B. die Azure-Dateisynchronisierung, über den öffentlichen Endpunkt auf das Speicherkonto zugreifen.
# 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
Gewähren des Zugriffs auf vertrauenswürdige Azure-Dienste und Beschränken des Zugriffs auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke
Wenn Sie das Speicherkonto auf bestimmte virtuelle Netzwerke einschränken, lassen Sie Anforderungen an den öffentlichen Endpunkt aus den angegebenen virtuellen Netzwerken zu. Hierzu werden sogenannte Dienstendpunkte des virtuellen Netzwerks verwendet. Die Nutzung ist mit oder ohne private Endpunkte möglich.
Navigieren Sie zu dem Speicherkonto, für das Sie den öffentlichen Endpunkt auf bestimmte virtuelle Netzwerke einschränken möchten. Wählen Sie im Inhaltsverzeichnis des Speicherkontos den Eintrag Netzwerke aus.
Wählen Sie oben auf der Seite das Optionsfeld Aktiviert aus ausgewählten virtuellen Netzwerken und IP-Adressen aus. Hierdurch werden einige Einstellungen zum Steuern der Einschränkung des öffentlichen Endpunkts eingeblendet. Wählen Sie + Vorhandenes virtuelles Netzwerk hinzufügen aus, um das jeweilige virtuelle Netzwerk auszuwählen, für das der Zugriff auf das Speicherkonto über den öffentlichen Endpunkt zulässig sein soll. Wählen Sie ein virtuelles Netzwerk und ein Subnetz für dieses virtuelle Netzwerk und dann Aktivieren aus.
Aktivieren Sie Azure-Diensten auf der Liste der vertrauenswürdigen Dienste den Zugriff auf dieses Speicherkonto erlauben, um vertrauenswürdigen Microsoft-Erstanbieterdiensten, z. B. der Azure-Dateisynchronisierung, den Zugriff auf das Speicherkonto zu erlauben.
Zum Einschränken des Zugriffs auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke mit Dienstendpunkten müssen wir zunächst Informationen zum Speicherkonto und virtuellen Netzwerk sammeln. Geben Sie die Werte für <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> und <subnet-name> ein, um diese Informationen zu sammeln.
Damit der Datenverkehr aus dem virtuellen Netzwerk von der Azure-Netzwerkfabric zugelassen wird und an den öffentlichen Endpunkt des Speicherkontos fließen kann, muss für das Subnetz des virtuellen Netzwerks der Dienstendpunkt Microsoft.Storage verfügbar gemacht werden. Mit den folgenden PowerShell-Befehlen wird der Dienstendpunkt Microsoft.Storage dem Subnetz hinzugefügt, falls er noch nicht vorhanden ist.
Der letzte Schritt zum Einschränken des Datenverkehrs für das Speicherkonto ist das Erstellen einer Netzwerkregel und das Hinzufügen zum Netzwerkregelsatz des Speicherkontos.
Zum Einschränken des Zugriffs auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke mit Dienstendpunkten müssen wir zunächst Informationen zum Speicherkonto und virtuellen Netzwerk sammeln. Geben Sie die Werte für <storage-account-resource-group>, <storage-account-name>, <vnet-resource-group-name>, <vnet-name> und <subnet-name> ein, um diese Informationen zu sammeln.
Damit der Datenverkehr aus dem virtuellen Netzwerk von der Azure-Netzwerkfabric zugelassen wird und an den öffentlichen Endpunkt des Speicherkontos fließen kann, muss für das Subnetz des virtuellen Netzwerks der Dienstendpunkt Microsoft.Storage verfügbar gemacht werden. Mit den folgenden CLI-Befehlen wird der Dienstendpunkt Microsoft.Storage dem Subnetz hinzugefügt, falls er noch nicht vorhanden ist.
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
Der letzte Schritt zum Einschränken des Datenverkehrs für das Speicherkonto ist das Erstellen einer Netzwerkregel und das Hinzufügen zum Netzwerkregelsatz des Speicherkontos.
Deaktivieren des Zugriffs auf den öffentlichen Endpunkt des Speichersynchronisierungsdiensts
Mit der Azure-Dateisynchronisierung können Sie den Zugriff auf bestimmte virtuelle Netzwerke nur über private Endpunkte einschränken. Die Verwendung von Dienstendpunkten für die Einschränkung des Zugriffs auf den öffentlichen Endpunkt auf bestimmte virtuelle Netzwerke wird von der Azure-Dateisynchronisierung nicht unterstützt. Dies bedeutet, dass der öffentliche Endpunkt des Speichersynchronisierungsdienstes die beiden Zustände aktiviert und deaktiviert annehmen kann.
Wichtig
Sie müssen einen privaten Endpunkt erstellen, bevor Sie den Zugriff auf den öffentlichen Endpunkt deaktivieren. Wenn der öffentliche Endpunkt deaktiviert ist und kein privater Endpunkt konfiguriert ist, kann die Synchronisierung nicht funktionieren.
Navigieren Sie zum Speichersynchronisierungsdienst und wählen Sie im linken Navigationsbereich Einstellungen>Netzwerk aus.
Wählen Sie unter Zugriff zulassen von die Option Nur von privaten Endpunkten aus.
Wählen Sie in der Liste Private Endpunktverbindungen einen privaten Endpunkt aus.
Zum Deaktivieren des Zugriffs auf den öffentlichen Endpunkt des Speichersynchronisierungsdiensts legen Sie die incomingTrafficPolicy-Eigenschaft für den Speichersynchronisierungsdienst auf AllowVirtualNetworksOnly fest. Legen Sie incomingTrafficPolicy stattdessen auf AllowAllTraffic fest, wenn Sie den Zugriff auf den öffentlichen Endpunkt des Speichersynchronisierungsdiensts aktivieren möchten. Ersetzen Sie <storage-sync-service-resource-group> und <storage-sync-service> durch Ihre eigenen Werte.
Das Festlegen der incomingTrafficPolicy-Eigenschaft für den Speichersynchronisierungsdienst wird von Azure CLI nicht unterstützt. Die Azure PowerShell-Registerkarte enthält Anleitungen zum Deaktivieren des öffentlichen Endpunkts für den Speichersynchronisierungsdienst.
Azure Policy
Azure Policy unterstützt die Durchsetzung von Organisationsstandards und die bedarfsorientierte Einhaltung dieser Standards. Azure Files und Azure-Dateisynchronisierung stellen mehrere hilfreiche Netzwerkrichtlinien zur Überwachung und Wartung zur Verfügung, mit denen Sie Ihre Bereitstellung überwachen und automatisieren können.
Richtlinien überwachen Ihre Umgebung und warnen Sie, wenn Ihre Speicherkonten oder Speichersynchronisierungsdienste vom definierten Verhalten abweichen. Beispiel: Ein öffentlicher Endpunkt ist aktiviert. In Ihrer Richtlinie wurde aber festgelegt, dass die öffentlichen Endpunkte deaktiviert sein sollen. Die Richtlinien zum Ändern und Bereitstellen gehen einen Schritt weiter und ändern eine Ressource proaktiv (z. B. den Speichersynchronisierungsdienst) oder stellen Ressourcen (z. B. private Endpunkte) so bereit, dass sie den Richtlinien entsprechen.
Folgende vordefinierte Richtlinien stehen für Azure Files und die Azure-Dateisynchronisierung zur Verfügung:
Die Azure-Dateisynchronisierung sollte eine private Verbindung verwenden
Ändern
Azure-Dateisynchronisierung
Deaktivieren Sie den öffentlichen Endpunkt für den Speichersynchronisierungsdienst.
Ändern – Azure-Dateisynchronisierung zum Deaktivieren des Zugriffs auf öffentliche Netzwerke konfigurieren
Bereitstellen
Azure-Dateisynchronisierung
Stellen Sie einen privaten Endpunkt für den Speichersynchronisierungsdienst bereit.
Konfigurieren der Azure-Dateisynchronisierung mit privaten Endpunkten
Bereitstellen
Azure-Dateisynchronisierung
Stellen Sie einen A-Eintrag für die DNS-Zone „privatelink.afs.azure.net“ bereit.
Konfigurieren der Azure-Dateisynchronisierung für die Verwendung privater DNS-Zonen
Einrichten einer Bereitstellungsrichtlinie für den privaten Endpunkt
Wenn Sie eine Bereitstellungsrichtlinie für den privaten Endpunkt einrichten möchten, wechseln Sie zum Azure-Portal, und suchen Sie nach Richtlinie. Das Azure-Richtliniencenter (Azure Policy Center) sollte ein Topergebnis sein. Navigieren Sie im Inhaltsverzeichnis des Richtliniencenters zu Erstellung>Definitionen. Der daraufhin angezeigte Bereich Definitionen enthält die vordefinierten Richtlinien für alle Azure-Dienste. Wenn Sie die jeweilige Richtlinie suchen möchten, wählen Sie im Kategoriefilter die Kategorie Speicher aus, oder suchen Sie nach Azure-Dateisynchronisierung mit privaten Endpunkten konfigurieren. Wählen Sie ... und Zuweisen aus, um eine neue Richtlinie aus der Definition zu erstellen.
Auf dem Blatt Grundlagen des Assistenten zum Zuweisen von Richtlinien können Sie eine Ausschlussliste für einen Bereich, eine Ressource oder Ressourcengruppe festlegen und Ihrer Richtlinie einen Anzeigenamen zuweisen, damit Sie sie einfacher unterscheiden können. Sie müssen diese Elemente nicht ändern, damit die Richtlinie funktioniert, aber Sie können bei Bedarf Änderungen vornehmen. Wählen Sie Weiter aus, um die Seite Parameter anzuzeigen.
Wählen Sie auf dem Blatt Parameter die ... neben der Dropdownliste privateEndpointSubnetId aus, um das virtuelle Netzwerk und das Subnetz auszuwählen, in dem die privaten Endpunkte für Ihre Speichersynchronisierungsdienst-Ressourcen bereitgestellt werden sollten. Bei dem daraufhin angezeigten Assistenten kann es einige Sekunden dauern, bis die verfügbaren virtuellen Netzwerke in Ihrem Abonnement geladen sind. Wählen Sie das entsprechende virtuelle Netzwerk/Subnetz für Ihre Umgebung aus, und klicken Sie auf Auswählen. Wählen Sie Weiter aus, um das Blatt Wartung anzuzeigen.
Damit der private Endpunkt bereitgestellt werden kann, wenn ein Speichersynchronisierungsdienst ohne einen privaten Endpunkt identifiziert wird, müssen Sie auf der Seite Wartung das Kontrollkästchen Korrekturtask erstellen aktivieren. Wählen Sie abschließend Überprüfen und erstellen aus, um die Richtlinienzuweisung zu überprüfen, und wählen Sie Erstellen aus, um sie zu erstellen.
Die daraufhin angezeigte Richtlinienzuweisung wird in regelmäßigen Abständen ausgeführt. Direkt nach der Erstellung wird sie möglicherweise noch nicht ausgeführt.