✔️ Gilt für: Klassische Dateifreigaben, die mit dem Microsoft.Storage-Ressourcenanbieter erstellt wurden
✔️ Gilt für: Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden
Azure Files verfügt ü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 klassische Dateifreigaben (erstellt mit dem Microsoft.Storage-Ressourcenanbieter) sind öffentliche und private Endpunkte im Azure-Speicherkonto vorhanden. Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden, werden öffentliche und private Endpunkte auf Dateifreigabeebene und nicht auf Speicherkontoebene erstellt.
Dieser Artikel befasst sich mit der Konfiguration eines privaten Endpunkts für den direkten Zugriff auf die Azure Dateifreigabe. Ein Großteil dieses Artikels bezieht sich auch darauf, wie Azure-Dateisynchronisierung mit öffentlichen und privaten Endpunkten für das Speicherkonto interagiert. Weitere Informationen zu Netzwerkanforderungen für Azure-Dateisynchronisierung finden Sie unter Proxy- und Firewalleinstellungen für Azure-Dateisynchronisierung konfigurieren.
Wir empfehlen Ihnen, vor dem Lesen dieses Leitfadens den Artikel Azure Files – Überlegungen zum Netzwerkbetrieb zu lesen.
Voraussetzungen
- In diesem Artikel wird davon ausgegangen, dass Sie bereits ein Azure-Abonnement erstellt haben. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- In diesem Artikel wird davon ausgegangen, dass Sie bereits eine Azure-Dateifreigabe in einem Speicherkonto erstellt haben, mit dem aus der lokalen Umgebung eine Verbindung hergestellt werden soll. Informationen zum Erstellen einer Azure-Dateifreigabe finden Sie unter Erstellen einer Azure-Dateifreigabe.
- Falls Sie Azure PowerShell verwenden möchten, installieren Sie die neueste Version.
- Falls Sie die Azure CLI verwenden möchten, installieren Sie die neueste Version.
Endpunktkonfigurationen
Sie können Ihre Endpunkte so konfigurieren, dass der Netzwerkzugriff auf Ihr Speicherkonto beschränkt wird. Der Speicherkontozugriff kann auf zwei Arten auf ein virtuelles Netzwerk beschränkt werden:
Erstellen eines privaten Endpunkts
Wenn Sie einen privaten Endpunkt für Ihre Dateifreigaben erstellen, werden die folgenden Azure-Ressourcen bereitgestellt:
-
Ein privater Endpunkt: Eine Azure-Ressource, die einen privaten Endpunkt repräsentiert. Sie können sich dies als Ressource vorstellen, die eine Zielressource und eine Netzwerkschnittstelle 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. In dieser DNS-Zone wird auch ein DNS-Eintrag erstellt. Wenn Sie bereits einen privaten Endpunkt in diesem virtuellen Netzwerk bereitgestellt haben, wird der vorhandenen DNS-Zone ein neuer Eintrag hinzugefügt. Die Bereitstellung einer DNS-Zone ist optional. Es wird jedoch dringend empfohlen und erforderlich, wenn Sie Ihre Azure-Dateifreigaben mit einem AD-Dienstprinzipal oder mithilfe der FileREST-API bereitstellen.
Hinweis
In diesem Artikel wird das DNS-Suffix für die öffentlichen Azure-Regionen core.windows.net verwendet. Dieser Kommentar gilt auch für Azure Sovereign-Clouds wie die Azure US Government-Cloud und die von 21Vianet-Cloud betriebene Microsoft Azure. Ersetzen Sie einfach die entsprechenden Suffixe für Ihre Umgebung.
Klassisches und neues Dateifreigabeerlebnis
Der Prozess zum Erstellen privater Endpunkte unterscheidet sich geringfügig, je nachdem, ob Sie klassische Dateifreigaben oder die neue Dateifreigabe verwenden:
|
Klassische Dateifreigaben (Microsoft.Storage) |
Neue Dateifreigaben (Microsoft.FileShares) |
|
Ziel des privaten Endpunkts |
Speicherkonto |
Dateifreigabe |
|
Ressourcen-Cmdlet |
Get-AzStorageAccount |
Get-AzFileShare |
|
Gruppen-ID (Unterressource) |
file |
FileShare |
|
DNS A-Eintragsname |
Speicherkontoname |
Hostnamenpräfix (z. B. fs-xxxxxxxxxxxxxxxxx) |
Die Konfigurationsschritte für virtuelle Netzwerke, erstellung privater Endpunkte und DNS-Zonenkonfiguration sind für beide Umgebungen identisch. Nur der Ressourcenverweis, die Gruppen-ID und der DNS-Eintragsname unterscheiden sich.
Navigieren Sie zu der Ressourcengruppe, in der Sie einen privaten Endpunkt erstellen möchten. Klicken Sie auf +Erstellen und suchen Sie nach privatem Endpunkt. Wählen Sie die private Endpunktressource und dann "Erstellen" aus.
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. Sie müssen den privaten Endpunkt in derselben Region wie das virtuelle Netzwerk erstellen, in dem Sie den privaten Endpunkt erstellen möchten. Wählen Sie dann Weiter: Ressource aus.
Wenn Sie klassische Dateifreigaben verwenden:
Wählen Sie im Bereich Resource im Dropdown-Menü für den Ressourcentyp Microsoft.Storage/storageAccounts aus. Wählen Sie dann das bestimmte Speicherkonto aus, mit dem Sie eine Verbindung als Ressource herstellen möchten. Die Zielunterressource wird automatisch mit file befüllt. Wählen Sie anschließend Weiter: Virtuelles Netzwerk aus.
Wenn Sie die neue Dateifreigabe verwenden:
Wählen Sie im Blatt Resource im Dropdownmenü für den Ressourcentyp Microsoft.FileShares/fileShares aus. Wählen Sie dann die gewünschte Dateifreigabe als Ressource aus, mit der Sie eine Verbindung herstellen möchten. Die Zielunterressource wird automatisch mit FileShare befüllt. 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 Erstellen aus, um den privaten Endpunkt zu erstellen.
Um einen privaten Endpunkt zu erstellen, müssen Sie zuerst einen Verweis auf Ihr Speicherkonto oder Ihre Dateifreigabe und das virtuelle Netzwerksubnetz abrufen, dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie die unten aufgeführten Platzhalterwerte durch eigene Werte.
Rufen Sie für klassische Dateifreigaben eine Referenz auf das Speicherkonto ab:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$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
}
# Set common variables for private endpoint creation
$resourceGroupName = $storageAccountResourceGroupName
$privateLinkResourceId = $storageAccount.Id
$groupId = "file"
$dnsRecordName = $storageAccountName
Für Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, rufen Sie einen Verweis auf die Dateifreigabe ab:
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$fileShare = Get-AzFileShare `
-ResourceGroupName $fileShareResourceGroupName `
-ResourceName $fileShareName `
-ErrorAction SilentlyContinue
if ($null -eq $fileShare) {
$errorMessage = "File share $fileShareName not found "
$errorMessage += "in resource group $fileShareResourceGroupName."
Write-Error -Message $errorMessage -ErrorAction Stop
}
# Extract hostName and hostNamePrefix for DNS record
$hostName = $fileShare.HostName
$hostNamePrefix = $hostName.Split('.')[0]
# Set common variables for private endpoint creation
$resourceGroupName = $fileShareResourceGroupName
$privateLinkResourceId = $fileShare.Id
$groupId = "FileShare"
$dnsRecordName = $hostNamePrefix
Nachdem Sie die oben genannten allgemeinen Variablen festgelegt haben, sind die verbleibenden Schritte für beide Umgebungen identisch. Rufen Sie Referenzen auf das virtuelle Netzwerk und das Subnetz ab:
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<vnet-subnet-name>"
# 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
}
Zum Erstellen eines privaten Endpunkts müssen Sie eine Verbindung mit einem privaten Linkdienst 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.
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
-Name "$dnsRecordName-Connection" `
-PrivateLinkServiceId $privateLinkResourceId `
-GroupId $groupId `
-ErrorAction Stop
# Create a new private endpoint.
$privateEndpoint = New-AzPrivateEndpoint `
-ResourceGroupName $resourceGroupName `
-Name "$dnsRecordName-PrivateEndpoint" `
-Location $virtualNetwork.Location `
-Subnet $subnet `
-PrivateLinkServiceConnection $privateEndpointConnection `
-ErrorAction Stop
Durch das Erstellen einer Azure privaten DNS-Zone kann der ursprüngliche Hostname in die private IP innerhalb des virtuellen Netzwerks aufgelöst werden. Diese Vorgehensweise ist für die Erstellung eines privaten Endpunkts zwar optional, aber für die direkte Einbindung der Azure-Dateifreigabe mit einem AD-Benutzerprinzipal oder per Zugriff über die REST-API ist dies zwingend erforderlich.
# Get the host name suffix (core.windows.net for public cloud).
# This is done like this so this script will seamlessly work for non-public Azure.
$hostNameSuffix = 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.$hostNameSuffix"
# 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 einen Verweis auf die private DNS-Zone haben, müssen Sie einen Eintrag erstellen.
$privateEndpointIP = $privateEndpoint | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object @{
Name = "NetworkInterfaces";
Expression = { Get-AzNetworkInterface -ResourceId $_.Id }
} | `
Select-Object -ExpandProperty NetworkInterfaces | `
Select-Object -ExpandProperty IpConfigurations | `
Select-Object -ExpandProperty PrivateIpAddress
$privateDnsRecordConfig = New-AzPrivateDnsRecordConfig `
-IPv4Address $privateEndpointIP
New-AzPrivateDnsRecordSet `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $dnsRecordName `
-RecordType A `
-ZoneName $dnsZoneName `
-Ttl 600 `
-PrivateDnsRecords $privateDnsRecordConfig `
-ErrorAction Stop | `
Out-Null
Um einen privaten Endpunkt zu erstellen, müssen Sie zunächst eine Referenz auf Ihr Speicherkonto oder Ihre Dateifreigabe sowie das Subnetz des virtuellen Netzwerks abrufen, dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie die unten aufgeführten Platzhalterwerte durch eigene Werte.
Rufen Sie für klassische Dateifreigaben eine Referenz auf das Speicherkonto ab:
storageAccountResourceGroupName="<storage-account-resource-group-name>"
storageAccountName="<storage-account-name>"
# Get storage account ID
privateLinkResourceId=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" --output tsv)
# Set common variables for private endpoint creation
resourceGroupName=$storageAccountResourceGroupName
groupId="file"
dnsRecordName=$storageAccountName
Für Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, rufen Sie einen Verweis auf die Dateifreigabe ab:
# Install the fileshares extension
az extension add --name fileshares
fileShareResourceGroupName="<resource-group-name>"
fileShareName="<file-share-name>"
# Get the file share resource ID and host name
privateLinkResourceId=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "id" --output tsv)
hostName=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "properties.hostName" --output tsv)
hostNamePrefix=$(echo $hostName | cut -d'.' -f1)
# Set common variables for private endpoint creation
resourceGroupName=$fileShareResourceGroupName
groupId="FileShare"
dnsRecordName=$hostNamePrefix
Nachdem Sie die oben genannten allgemeinen Variablen festgelegt haben, sind die verbleibenden Schritte für beide Umgebungen identisch. Rufen Sie Referenzen auf das virtuelle Netzwerk und das Subnetz ab:
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<vnet-subnet-name>"
virtualNetwork=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "id" --output tsv)
subnet=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" --output tsv)
Um einen privaten Endpunkt zu erstellen, stellen Sie sicher, dass die Richtlinie für das private Endpunktnetzwerk des Subnetzs deaktiviert ist, und erstellen Sie dann den privaten Endpunkt mit az network private-endpoint create.
# Disable private endpoint network policies
az network vnet subnet update \
--ids $subnet \
--disable-private-endpoint-network-policies \
--output none
# Get virtual network location
region=$(az network vnet show \
--ids $virtualNetwork \
--query "location" --output tsv)
# Create a private endpoint
privateEndpoint=$(az network private-endpoint create \
--resource-group $resourceGroupName \
--name "$dnsRecordName-PrivateEndpoint" \
--location $region \
--subnet $subnet \
--private-connection-resource-id $privateLinkResourceId \
--group-id $groupId \
--connection-name "$dnsRecordName-Connection" \
--query "id" --output tsv)
Durch das Erstellen einer Azure privaten DNS-Zone kann der ursprüngliche Hostname in die private IP innerhalb des virtuellen Netzwerks aufgelöst werden. 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 FileREST-API ist dies erforderlich.
# Get the desired storage account suffix (core.windows.net for public cloud).
# This is done so the script will work for non-public Azure clouds.
storageAccountSuffix=$(az cloud show \
--query "suffixes.storageEndpoint" --output tsv)
# For public cloud, this generates the DNS suffix:
# privatelink.file.core.windows.net.
dnsZoneName="privatelink.file.$storageAccountSuffix"
# Find a DNS zone matching the desired name attached to this virtual network.
possibleDnsZones=$(az network private-dns zone list \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
dnsZone=""
for possibleDnsZone in $possibleDnsZones
do
possibleResourceGroupName=$(az resource show \
--ids $possibleDnsZone \
--query "resourceGroup" --output tsv)
link=$(az network private-dns link vnet list \
--resource-group $possibleResourceGroupName \
--zone-name $dnsZoneName \
--query "[?virtualNetwork.id == '$virtualNetwork'].id" \
--output tsv)
if [ -n "$link" ]
then
dnsZoneResourceGroup=$possibleResourceGroupName
dnsZone=$possibleDnsZone
break
fi
done
if [ -z "$dnsZone" ]
then
# No matching DNS zone attached to the virtual network, so create a new one.
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" --output tsv)
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 einen Verweis auf die private DNS-Zone haben, erstellen Sie einen A-Eintrag.
privateEndpointNIC=$(az network private-endpoint show \
--ids $privateEndpoint \
--query "networkInterfaces[0].id" --output tsv)
privateEndpointIP=$(az network nic show \
--ids $privateEndpointNIC \
--query "ipConfigurations[0].privateIPAddress" --output tsv)
az network private-dns record-set a create \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--name $dnsRecordName \
--output none
az network private-dns record-set a add-record \
--resource-group $dnsZoneResourceGroup \
--zone-name $dnsZoneName \
--record-set-name $dnsRecordName \
--ipv4-address $privateEndpointIP \
--output none
Überprüfen der Konnektivität
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: Führen Sie die folgenden Befehle über PowerShell, die Befehlszeile oder das Terminal aus (funktioniert für Windows, Linux oder macOS).
Für klassische Dateifreigaben ersetzen Sie <storage-account-name> durch den entsprechenden Speicherkontonamen:
nslookup <storage-account-name>.file.core.windows.net
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden, verwenden Sie den Hostnamen der Dateifreigabe. Wählen Sie auf der Registerkarte "Übersicht" der Dateifreigabe die JSON-Ansicht oben rechts aus. Kopieren Sie in der JSON-Ansicht unter "Eigenschaften" den Wert für "hostName". Das Format hat die Form fs-xxxxxxxxxxxxxxxxx.xx.file.storage.azure.net.
nslookup <file-share-host-name>
Bei erfolgreicher Ausführung sollte die Ausgabe ähnlich wie folgt angezeigt werden, wobei 192.168.0.5 die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk ist (Ausgabe für Windows).
Für klassische Dateifreigaben:
Server: UnKnown
Address: 10.2.4.4
Non-authoritative answer:
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Aliases: storageaccount.file.core.windows.net
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Server: UnKnown
Address: 10.2.4.4
Non-authoritative answer:
Name: <hostNamePrefix>.privatelink.file.core.windows.net
Address: 192.168.0.5
Aliases: <hostNamePrefix>.<zone>.file.storage.azure.net
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:
Für klassische Dateifreigaben:
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Resolve-DnsName -Name $fileShare.HostName
Bei erfolgreicher Ausführung sollte die Ausgabe ähnlich wie die folgende angezeigt werden. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk.
Für klassische Dateifreigaben:
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 Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Name Type TTL Section NameHost
---- ---- --- ------- --------
<hostNamePrefix>.<zone>.file.storage.azur CNAME 60 Answer <hostNamePrefix>.privatelink.file.core.windows.net
e.net
Name : <hostNamePrefix>.privatelink.file.core.windows.net
QueryType : A
TTL : 600
Section : Answer
IP4Address : 192.168.0.5
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:
Für klassische Dateifreigaben:
httpEndpoint=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "primaryEndpoints.file" --output tsv)
hostName=$(echo $httpEndpoint | cut -c7-$(expr length $httpEndpoint) | tr -d "/")
nslookup $hostName
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
hostName=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "properties.hostName" --output tsv)
nslookup $hostName
Bei erfolgreicher Ausführung sollte die Ausgabe ähnlich wie die folgende angezeigt werden. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk. Sie sollten weiterhin den ursprünglichen Hostnamen (storageaccount.file.core.windows.net für die klassische oder hostName für die neue Oberfläche) verwenden, um Ihre Dateifreigabe anstelle des privatelink-Pfads einzubinden.
Für klassische Dateifreigaben:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
storageaccount.file.core.windows.net canonical name = storageaccount.privatelink.file.core.windows.net.
Name: storageaccount.privatelink.file.core.windows.net
Address: 192.168.0.5
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
<hostNamePrefix>.<zone>.file.storage.azure.net canonical name = <hostNamePrefix>.privatelink.file.core.windows.net.
Name: <hostNamePrefix>.privatelink.file.core.windows.net
Address: 192.168.0.5
Einschränken des Zugriffs auf den öffentlichen Endpunkt
Um den Zugriff auf den öffentlichen Endpunkt einzuschränken, müssen Sie zuerst den allgemeinen Zugriff auf den öffentlichen Endpunkt deaktivieren. Das Deaktivieren des Zugriffs auf den öffentlichen Endpunkt wirkt sich nicht auf private Endpunkte aus. Nachdem der öffentliche Endpunkt deaktiviert wurde, können Sie bestimmte Netzwerke oder IP-Adressen auswählen, die weiterhin darauf zugreifen dürfen. Im Allgemeinen beschränken die meisten Firewallrichtlinien für Speicherkonten den Netzwerkzugriff auf ein virtuelles Netzwerk (oder auf mehrere).
Deaktivieren des Zugriffs auf den öffentlichen Endpunkt
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, es sei denn, sie stammen von einer bestimmten zugelassenen Quelle.
Für klassische Dateifreigaben:
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.
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Navigieren Sie zu der Dateifreigabe, für die Sie den öffentlichen Zugriff deaktivieren möchten. Wählen Sie im Dienstmenü unter Einstellungen die Option Konfiguration aus. Legen Sie den Zugriff des öffentlichen Netzwerks auf "Deaktiviert" fest, und wählen Sie dann " Speichern" aus.
Bei klassischen Dateifreigaben blockiert der folgende PowerShell-Befehl jeglichen Datenverkehr zum öffentlichen Endpunkt des Speicherkontos. Der Parameter -Bypass wird auf AzureServices festgelegt, damit vertrauenswürdige Erstanbieterdienste wie Azure-Dateisynchronisierung über den öffentlichen Endpunkt auf das Speicherkonto zugreifen können.
# This assumes $storageAccount is still defined from the beginning of this guide.
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Für Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, legen Sie -PublicNetworkAccess für die Dateifreigabe auf Disabled fest.
# To learn more about the Az.FileShare module, see https://www.powershellgallery.com/packages/Az.FileShare/0.1.0
Install-Module -Name Az.FileShare -Repository psgallery -RequiredVersion 0.1.0
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
Update-AzFileShare `
-ResourceGroupName $fileShareResourceGroupName `
-ResourceName $fileShareName `
-PublicNetworkAccess Disabled
Bei klassischen Dateifreigaben blockiert der folgende CLI-Befehl jeglichen Datenverkehr zum öffentlichen Endpunkt des Speicherkontos. Der Parameter --bypass wird auf AzureServices festgelegt, damit vertrauenswürdige Erstanbieterdienste wie Azure-Dateisynchronisierung über den öffentlichen Endpunkt auf das Speicherkonto zugreifen können.
# 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
Für Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, legen Sie --public-network-access für die Dateifreigabe auf Disabled fest.
# Install the fileshares extension
az extension add --name fileshares
fileShareResourceGroupName="<resource-group-name>"
fileShareName="<file-share-name>"
az fileshare update \
--name $fileShareName \
--resource-group $fileShareResourceGroupName \
--public-network-access Disabled
Einschränken des Zugriffs auf den öffentlichen Endpunkt 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.
Für klassische Dateifreigaben:
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.
Für Dateifreigaben, die mit dem Ressourcenanbieter Microsoft.FileShares erstellt wurden:
Navigieren Sie zur Dateifreigabe, für die Sie den öffentlichen Zugriff einschränken möchten. Wählen Sie im Dienstmenü unter Einstellungen die Option Konfiguration aus. Wählen Sie unter Öffentlicher Netzwerkzugriff die Option Aktiviert aus ausgewählten virtuellen Netzwerken aus, fügen Sie dann die virtuellen Netzwerke und Subnetze hinzu, die auf die Freigabe zugreifen dürfen, und wählen Sie Speichern aus.
Für klassische Dateifreigaben werden Dienstendpunkte verwendet, um den Zugriff auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke zu beschränken. Sammeln Sie zunächst Informationen über das Speicherkonto und das virtuelle Netzwerk. Ersetzen Sie die unten aufgeführten Platzhalterwerte durch eigene Werte.
$storageAccountResourceGroupName = "<storage-account-resource-group>"
$storageAccountName = "<storage-account-name>"
$restrictToVirtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$restrictToVirtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction Stop
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $restrictToVirtualNetworkResourceGroupName `
-Name $restrictToVirtualNetworkName `
-ErrorAction Stop
$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 $restrictToVirtualNetworkName." `
-ErrorAction Stop
}
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. Die folgenden PowerShell-Befehle fügen den Microsoft.Storage-Dienstendpunkt zum Subnetz hinzu, wenn er noch nicht vorhanden ist.
$serviceEndpoints = $subnet | `
Select-Object -ExpandProperty ServiceEndpoints | `
Select-Object -ExpandProperty Service
if ($serviceEndpoints -notcontains "Microsoft.Storage") {
if ($null -eq $serviceEndpoints) {
$serviceEndpoints = @("Microsoft.Storage")
} elseif ($serviceEndpoints -is [string]) {
$serviceEndpoints = @($serviceEndpoints, "Microsoft.Storage")
} else {
$serviceEndpoints += "Microsoft.Storage"
}
$virtualNetwork = $virtualNetwork | Set-AzVirtualNetworkSubnetConfig `
-Name $subnetName `
-AddressPrefix $subnet.AddressPrefix `
-ServiceEndpoint $serviceEndpoints `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Set-AzVirtualNetwork `
-ErrorAction Stop
}
Der letzte Schritt beim Einschränken des Datenverkehrs auf das Speicherkonto besteht darin, eine Netzwerkregel zu erstellen und sie dem Netzwerkregelsatz des Speicherkontos hinzuzufügen.
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule `
-VirtualNetworkResourceId $subnet.Id `
-ErrorAction Stop
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Bei Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, können Sie die IDs der zulässigen Subnetzressourcen mit Update-AzFileShare direkt an -PublicAccessPropertyAllowedSubnet übergeben. Für das Speicherkonto ist keine separate Konfiguration des Dienstendpunkts oder einer Netzwerkregel erforderlich.
# To learn more about the Az.FileShare module, see https://www.powershellgallery.com/packages/Az.FileShare/0.1.0
Install-Module -Name Az.FileShare -Repository psgallery -RequiredVersion 0.1.0
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$subnet = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName | `
Select-Object -ExpandProperty Subnets | `
Where-Object { $_.Name -eq $subnetName }
Update-AzFileShare `
-ResourceGroupName $fileShareResourceGroupName `
-ResourceName $fileShareName `
-PublicAccessPropertyAllowedSubnet @($subnet.Id)
Für klassische Dateifreigaben werden Dienstendpunkte verwendet, um den Zugriff auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke zu beschränken. Sammeln Sie zunächst Informationen über das Speicherkonto und das virtuelle Netzwerk. Ersetzen Sie die unten aufgeführten Platzhalterwerte durch eigene Werte.
storageAccountResourceGroupName="<storage-account-resource-group>"
storageAccountName="<storage-account-name>"
restrictToVirtualNetworkResourceGroupName="<vnet-resource-group-name>"
restrictToVirtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
storageAccount=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" --output tsv)
virtualNetwork=$(az network vnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--name $restrictToVirtualNetworkName \
--query "id" --output tsv)
subnet=$(az network vnet subnet show \
--resource-group $restrictToVirtualNetworkResourceGroupName \
--vnet-name $restrictToVirtualNetworkName \
--name $subnetName \
--query "id" --output tsv)
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. Die folgenden CLI-Befehle fügen den Microsoft.Storage-Dienstendpunkt zum Subnetz hinzu, wenn 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 beim Einschränken des Datenverkehrs auf das Speicherkonto besteht darin, eine Netzwerkregel zu erstellen und sie dem Netzwerkregelsatz des Speicherkontos hinzuzufügen.
az storage account network-rule add \
--resource-group $storageAccountResourceGroupName \
--account-name $storageAccountName \
--subnet $subnet \
--output none
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--bypass "AzureServices" \
--default-action "Deny" \
--output none
Bei Dateifreigaben, die mit dem Microsoft.FileShares-Ressourcenanbieter erstellt wurden, übergeben Sie die IDs der zulässigen Subnetzressourcen mit az fileshare update direkt an --allowed-subnets. Für das Speicherkonto ist keine separate Konfiguration des Dienstendpunkts oder der Netzwerkregel erforderlich.
# Install the fileshares extension
az extension add --name fileshares
fileShareResourceGroupName="<resource-group-name>"
fileShareName="<file-share-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
subnetId=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "id" --output tsv)
az fileshare update \
--name $fileShareName \
--resource-group $fileShareResourceGroupName \
--allowed-subnets $subnetId
Siehe auch