Azure Files verfügt über zwei Arten von Endpunkten für den Zugriff auf Azure-Dateifreigaben:
- Öffentliche Endpunkte, die eine öffentliche IP-Adresse besitzen. Der Zugriff hängt vom Protokoll und den Netzwerkregeln ab. NFS-Clients verwenden Service-Endpunkte aus erlaubten Subnetzen.
- Private Endpunkte, die in einem virtuellen Netzwerk vorhanden sind und eine private IP-Adresse im Adressraum des virtuellen Netzwerks aufweisen.
Für herkömmliche Dateifreigaben (die mit dem Ressourcenanbieter Microsoft.Storage erstellt wurden) hat das Azure-Speicherkonto öffentliche und private Endpunkte. Bei Dateifreigaben, die mit dem Microsoft.FileShares Ressourcenanbieter erstellt wurden, erstellen Sie öffentliche und private Endpunkte auf Dateifreigabeebene und nicht auf Speicherkontoebene.
Dieser Artikel erklärt, wie private Endpunkte konfiguriert und der öffentliche Endzugriff für beide Ressourcenanbieter eingeschränkt werden kann. Die klassischen Hinweise zur Dateifreigabe gelten auch für Speicherkonten, die mit Azure-Dateisynchronisierung verwendet werden, das klassische SMB-Dateifreigaben unterstützt. Für Datei-Sync-Netzwerkanforderungen siehe Konfigurieren von Azure-Dateisynchronisierung-Proxy- und Firewall-Einstellungen.
Lesen Sie vor der Lektüre dieses Leitfadens die Netzwerkaspekte für Azure Files.
Voraussetzungen
Du kannst den Netzwerkzugriff auf deine Dateifreigaben einschränken, indem du das Speicherkonto für klassische Freigaben oder die einzelne Microsoft.FileShares-Ressource konfigurierst. Um den Zugang zu einem virtuellen Netzwerk einzuschränken, verwenden Sie eine der folgenden Ansätze:
Erstellen eines privaten Endpunkts
Wenn Sie einen privaten Endpunkt für Ihre Dateifreigaben erstellen, stellen Sie die folgenden Azure Ressourcen bereit:
-
Ein privater Endpunkt: Eine Azure Ressource, die den privaten Endpunkt darstellt. Sie können sich diese Ressource als Verbinder zwischen einer Zielressource und einer Netzwerkschnittstelle vorstellen.
-
Eine Netzwerkschnittstelle (NIC): Die Netzwerkschnittstelle, die eine private IP-Adresse innerhalb des angegebenen virtuellen Netzwerks und Subnetz verwaltet. Diese Ressource ist identisch mit der Ressource, die Sie bereitstellen, wenn Sie einen virtuellen Computer (VM) bereitstellen. Anstatt sie jedoch einem virtuellen Computer zuzuweisen, besitzt der private Endpunkt ihn.
-
Eine private Domain Name System (DNS)-Zone: Diese Schritte erstellen oder wiederverwenden eine Azure-private DNS-Zone, die mit dem virtuellen Netzwerk verknüpft ist, und fügen einen A-Datensatz für den privaten Endpunkt hinzu. Sie können stattdessen Ihre eigene DNS-Infrastruktur verwenden, vorausgesetzt, die Clients lösen den Hostnamen der Dateifreigabe in die IP-Adresse des privaten Endpunkts auf.
Hinweis
In der öffentlichen Azure-Cloud nutzen beide Ressourcenanbieter die private DNS-Zoneprivatelink.file.core.windows.net. Ihre Client-Hostnamen unterscheiden sich; siehe Konnektivität überprüfen für Beispiele. Für klassische Dateifreigaben in anderen Azure-Clouds verwenden Sie das Speicherendpunktsuffix für diese Cloud. Überprüfen Sie die regionale Verfügbarkeit, bevor Sie Microsoft.FileShares bereitstellen.
Classic im Vergleich zu Microsoft.FileShares
Der Prozess zum Erstellen privater Endpunkte unterscheidet sich geringfügig, je nachdem, ob Sie klassische Dateifreigaben oder das neue Dateifreigabemodell verwenden. Bei klassischen Dateifreigaben erstellen Sie einen privaten Endpunkt für das Speicherkonto, das die Dateifreigaben enthält. Bei Dateifreigaben, die mit Microsoft.FileShares erstellt werden, erstellen Sie einen privaten Endpunkt für die Dateifreigabe selbst.
Viele der Schritte sind bei beiden Erfahrungen identisch. Nur die Ressourcenreferenz, die Gruppen-ID und der DNS-Datensatzname unterscheiden sich, wie in der folgenden Tabelle gezeigt.
|
Klassische Dateifreigaben (Microsoft.Storage) |
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. ) |
Wechseln Sie zu der Ressourcengruppe, in der Sie einen privaten Endpunkt erstellen möchten. Wählen Sie +Erstellen und suchen Sie nach privatem Endpunkt. Wählen Sie die private Endpunktressource und dann "Erstellen" aus.
Der Assistent hat mehrere Seiten, die ausgefüllt werden müssen.
Wählen Sie auf der Seite "Grundlagen " das Abonnement, die Ressourcengruppe, den Namen, den Netzwerkschnittstellennamen 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.
Auf der Seite Ressource wählen Sie Microsoft.Storage/storageAccounts aus dem Dropdownmenü für Ressourcentyp aus. Für Resource wählen Sie das spezifische Speicherkonto aus, mit dem Sie sich verbinden möchten. Für Ziel-Subressource wählen Sie file. Wählen Sie anschließend Weiter: Virtuelles Netzwerk aus.
Auf der Ressourcenseite wählen Sie Microsoft aus. FileShares/fileShares aus dem Dropdown-Menü für den Ressourcentyp. Wählen Sie für Ressource die spezifische Dateifreigabe aus, mit der Sie sich verbinden möchten. Die Ziel-Unterressource wird automatisch mit FileShare ausgefüllt. Wählen Sie anschließend Weiter: Virtuelles Netzwerk aus.
Auf der Seite 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 statisch auswählen, 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.
Die DNS-Seite enthält die Informationen zum Integrieren Ihres privaten Endpunkts in eine private DNS-Zone. Stellen Sie sicher, dass die Abonnement- und Ressourcengruppe korrekt ist, und wählen Sie dann "Weiter: Kategorien" 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, rufen Sie zuerst einen Verweis auf Ihr Speicherkonto oder Ihre Dateifreigabe und das virtuelle Netzwerk-Subnetz ab, in dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie die Platzhalterwerte im folgenden Code durch Ihre eigenen Werte.
Rufen Sie 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
Rufen Sie eine Referenz 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
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
Verknüpfen Sie die Azure private DNS-Zone mit dem virtuellen Netzwerk, damit Clients den ursprünglichen Hostnamen der Dateifreigabe zur IP-Adresse des privaten Endpunkts auflösen. Die folgenden Schritte gelten für beide Ressourcenanbieter.
# 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, benötigen Sie zunächst einen Verweis auf Ihr Speicherkonto oder Ihre Dateifreigabe sowie das virtuelle Netzwerk-Subnetz, dem Sie den privaten Endpunkt hinzufügen möchten. Ersetzen Sie die Platzhalterwerte in den folgenden Schritten durch Ihre eigenen Werte.
Rufen Sie 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
Rufen Sie eine Referenz auf die Dateifreigabe ab:
# Install the fileshare extension
az extension add --name fileshare
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
Nach dem Festlegen der allgemeinen Variablen 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 Subnetzes 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)
Verknüpfen Sie die Azure private DNS-Zone mit dem virtuellen Netzwerk, damit Clients den ursprünglichen Hostnamen der Dateifreigabe in die IP-Adresse des privaten Endpunkts auflösen. Die folgenden Schritte gelten für beide Ressourcenanbieter.
# 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
Führen Sie die Prüfungen von einem Client im virtuellen Netzwerk aus oder von einem verbundenen Netzwerk mit DNS, das für die Auflösung des privaten Endpunkts konfiguriert ist. Für die Unterschiede zwischen Ressourcenanbietern siehe DNS-Auflösung. Verwenden Sie den ursprünglichen Host-Namen, um die Share zu mounten, nicht den privatelink-Namen.
Führen Sie die folgende DNS-Abfrage über PowerShell, die Kommandozeile oder ein Terminal unter Windows, Linux oder macOS durch.
Ersetzen Sie <storage-account-name> durch den entsprechenden Speicherkontonamen:
nslookup <storage-account-name>.file.core.windows.net
Bei erfolgreicher Ausführung wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk (Ausgabe für Windows).
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
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 wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk (Ausgabe für Windows).
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
Führen Sie folgende PowerShell-Befehle aus, um die DNS-Auflösung zu überprüfen:
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
Bei erfolgreicher Ausführung wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk.
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
Resolve-DnsName -Name $fileShare.HostName
Bei erfolgreicher Ausführung wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk.
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
Führen Sie folgende Befehle aus, um den Hostnamen abzurufen und die DNS-Auflösung zu überprüfen:
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
Bei erfolgreicher Ausführung wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk. Du solltest trotzdem den ursprünglichen Hostnamen (storageaccount.file.core.windows.net) verwenden, um deine Dateifreigabe einzubinden, anstelle des Pfads privatelink.
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
hostName=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "properties.hostName" --output tsv)
nslookup $hostName
Bei erfolgreicher Ausführung wird die Ausgabe ähnlich wie die folgende angezeigt. Dabei 192.168.0.5 handelt es sich um die private IP-Adresse des privaten Endpunkts in Ihrem virtuellen Netzwerk. Du solltest weiterhin das ursprüngliche hostName der Dateifreigabe verwenden, um deine Dateifreigabe einzubinden, anstelle des Pfads privatelink.
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
Du kannst den öffentlichen Netzwerkzugang deaktivieren oder ihn für ausgewählte Netzwerke aktiviert lassen. Das sind separate Konfigurationen. Private Endpunkte funktionieren weiterhin in beiden Konfigurationen.
Für klassische Dateifreigaben konfigurieren Sie den öffentlichen Zugriff auf das Speicherkonto. Für Microsoft.FileShares konfigurieren Sie es für die einzelne Dateifreigabe. Klassische Dateifreigaben können ebenfalls einen Netzwerksicherheitsperimeter nutzen, vorbehaltlich der Protokollbeschränkungen. Im Erzwingen-Modus blockiert ein Perimeter den NFS-Verkehr durch Service-Endpunkte.
Deaktivieren des Zugriffs auf den öffentlichen Endpunkt
Wenn du den öffentlichen Netzwerkzugang deaktivierst, können Clients sich nicht über den öffentlichen Endpunkt verbinden, auch nicht über Service-Endpunkte. Clients können sich weiterhin über private Endpunkte verbinden. Diese Einstellung schränkt den ausgehenden Datenverkehr der Clients nicht ein.
Hinweis
Für klassische Dateifreigaben können bestehende Ausnahmen für vertrauenswürdige Dienste und Ressourceninstanzen auch nach der Deaktivierung des öffentlichen Netzwerkzugriffs weiterhin wirksam bleiben. Überprüfen Sie diese Ausnahmen, wenn Sie nur über private Endpunkte Zugriff benötigen. Siehe Azure Storage-Einschränkungen der Netzwerksicherheit.
Um den öffentlichen Netzwerkzugriff für klassische Dateifreigaben zu deaktivieren, folgen Sie diesen Schritten:
- Gehe zu dem Speicherkonto, bei dem du alle eingehenden Zugriffe auf den öffentlichen Endpunkt einschränken möchtest.
- Wählen Sie im Dienstmenü unter Sicherheit und Netzwerk die Option Azure-Netzwerk aus.
- Wählen Sie unter "Öffentlicher Netzwerkzugriff" die Option "Verwalten" aus.
- Wählen Sie Deaktivieren und dann Fahren aus.
- Klicken Sie auf Speichern.
Wechseln Sie zur Dateifreigabe, in der 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.
Stellen Sie für klassische Dateifreigaben -PublicNetworkAccess im Speicherkonto auf Disabled ein.
# Use the storage account variables from the beginning of this guide.
Set-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-PublicNetworkAccess Disabled `
-ErrorAction Stop |
Out-Null
Legen Sie -PublicNetworkAccess auf Disabled auf der Dateifreigabe fest.
# To learn more about the Az.FileShare module, see https://www.powershellgallery.com/packages/Az.FileShare/1.0.0
Install-Module -Name Az.FileShare -Repository PSGallery -RequiredVersion 1.0.0
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
Update-AzFileShare `
-ResourceGroupName $fileShareResourceGroupName `
-ResourceName $fileShareName `
-PublicNetworkAccess Disabled
Für klassische Dateifreigaben setzen Sie --public-network-access im Speicherkonto auf Disabled.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this guide.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--public-network-access Disabled \
--output none
Legen Sie --public-network-access auf Disabled auf der Dateifreigabe fest.
# Install the fileshare extension
az extension add --name fileshare
fileShareResourceGroupName="<resource-group-name>"
fileShareName="<file-share-name>"
az fileshare update \
--name $fileShareName \
--resource-group $fileShareResourceGroupName \
--public-network-access Disabled
Beschränken Sie den Zugriff auf den öffentlichen Endpunkt auf bestimmte Netzwerke
Um Clients aus ausgewählten Subnetzen zuzulassen, sollten Sie den öffentlichen Netzwerkzugang aktiviert lassen, Dienstendpunkte in diesen Subnetzen aktivieren und die Subnetze zu den Netzwerkregeln der Ressource hinzufügen. Du kannst Service-Endpunkte mit oder ohne private Endpunkte verwenden. Der klassische SMB- und FileREST-Zugriff kann ebenfalls IP-Adressregeln verwenden; NFS-Zugriff erfordert erlaubte Subnetze.
Die PowerShell- und CLI-Beispiele gehen davon aus, dass der öffentliche Netzwerkzugang bereits aktiviert ist. Die Microsoft. FileShares-Beispiele gehen ebenfalls davon aus, dass das Client-Subnetz bereits den Microsoft.Storage Service-Endpunkt besitzt. Um diesen Endpunkt zu konfigurieren, siehe Service-Endpunkte auf einem Subnetz aktivieren.
Für klassische Dateifreigaben folgen Sie diesen Schritten, um den öffentlichen Endpunkt auf bestimmte Netzwerke zu beschränken.
- Geh zu dem Speicherkonto, bei dem du den öffentlichen Endpunkt auf bestimmte Netzwerke beschränken möchtest.
- Wählen Sie im Dienstmenü unter Sicherheit und Netzwerk die Option Azure-Netzwerk aus.
- Wählen Sie unter "Zugriffsbereich für öffentliche Netzwerke" die Option "Aus ausgewählten Netzwerken aktivieren" aus. Diese Auswahl zeigt eine Reihe von Einstellungen zum Steuern der Einschränkung des öffentlichen Endpunkts an.
- Unter Virtuelle Netzwerke wählen Sie "Hinzufügen eines virtuellen Netzwerks">"Bestehendes virtuelles Netzwerk hinzufügen ", um das virtuelle Netzwerk auszuwählen, das über den öffentlichen Endpunkt auf das Speicherkonto zugreifen darf. Wählen Sie ein virtuelles Netzwerk und ein Subnetz für dieses virtuelle Netzwerk und dann Aktivieren aus. Wenn Sie ein neues virtuelles Netzwerk für diesen Zweck erstellen möchten, wählen Sie "Hinzufügen eines virtuellen Netzwerks>""Neues virtuelles Netzwerk hinzufügen", geben Sie die Details an und wählen Sie dann Erstellen.
- Für SMB- oder FileREST-Zugang verwenden Sie IPv4-Adressen , um beliebige öffentliche Internet-IP-Adressen anzugeben, die Sie erlauben möchten. IP-Adressregeln gewähren keinen NFS-Zugriff.
- Wenn eine Dienstintegration einen vertrauenswürdigen Dienstzugriff erfordert, wählen Sie das Kontrollkästchen "Vertrauenswürdige Microsoft Services zum Zugriff auf diese Ressource erlauben".
- Klicken Sie auf Speichern.
Wechseln Sie zur Dateifreigabe, in der Sie den öffentlichen Zugriff einschränken möchten. Wählen Sie im Menü "Dienst" unter "Einstellungen" die Option "Konfiguration" aus. Wählen Sie unter Öffentlicher Netzwerkzugriff die Option Aktiviert über ausgewählte virtuelle Netzwerke aus, fügen Sie die virtuellen Netzwerke und Subnetze hinzu, die auf die Freigabe zugreifen dürfen, und wählen Sie Speichern aus.
Beschränken Sie für klassische Dateifreigaben den Zugriff auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke mithilfe von Dienstendpunkten. Sammeln Sie zunächst Informationen über das Speicherkonto und das virtuelle Netzwerk. Ersetzen Sie die Platzhalterwerte in den folgenden Schritten durch Ihre eigenen 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
}
Um Datenverkehr aus dem virtuellen Netzwerk zuzulassen, muss die Azure Netzwerk fabric den Microsoft.Storage Dienstendpunkt für das Subnetz des virtuellen Netzwerks verfügbar machen. 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 `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Diese Befehle bewahren bestehende Bypass-Einstellungen. Wenn eine Integration einen vertrauenswürdigen Dienstzugriff erfordert, fügen Sie dem Update-Befehl -Bypass AzureServices hinzu. Der Parameter ersetzt die Bypass-Einstellung, also fügen Sie alle anderen Bypass-Optionen hinzu, die Ihr Workload noch erfordert.
Übergebe die erlaubten Subnetz-Ressourcen-IDs an Update-AzFileShare mithilfe von -AllowedSubnet. Netzwerkregeln gelten direkt für die Dateifreigabe, daher gibt es kein Speicherkonto zu konfigurieren. Das Client-Subnetz benötigt weiterhin einen Service-Endpunkt, wie in den obigen Voraussetzungen beschrieben.
# To learn more about the Az.FileShare module, see https://www.powershellgallery.com/packages/Az.FileShare/1.0.0
Install-Module -Name Az.FileShare -Repository PSGallery -RequiredVersion 1.0.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 `
-AllowedSubnet @($subnet.Id)
Beschränken Sie für klassische Dateifreigaben den Zugriff auf den öffentlichen Endpunkt des Speicherkontos auf bestimmte virtuelle Netzwerke mithilfe von Dienstendpunkten. Sammeln Sie zunächst Informationen über das Speicherkonto und das virtuelle Netzwerk. Ersetzen Sie die Platzhalterwerte in den folgenden Schritten durch Ihre eigenen 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)
Um Datenverkehr aus dem virtuellen Netzwerk zuzulassen, muss die Azure Netzwerk fabric den Microsoft.Storage Dienstendpunkt für das Subnetz des virtuellen Netzwerks verfügbar machen. 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 \
--default-action "Deny" \
--output none
Diese Befehle bewahren bestehende Bypass-Einstellungen. Wenn eine Integration einen vertrauenswürdigen Dienstzugriff erfordert, fügen Sie dem Update-Befehl --bypass AzureServices hinzu. Die Option ersetzt die Bypass-Einstellung, also fügen Sie alle anderen Bypass-Optionen hinzu, die Ihre Arbeitslast noch benötigt.
Übergebe die erlaubten Subnetz-Ressourcen-IDs an az fileshare update durch Verwenden von --allowed-subnets. Netzwerkregeln gelten direkt für die Dateifreigabe, daher gibt es kein Speicherkonto zu konfigurieren. Das Client-Subnetz benötigt weiterhin einen Service-Endpunkt, wie in den obigen Voraussetzungen beschrieben.
# Install the fileshare extension
az extension add --name fileshare
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
Beschränken Sie den ausgehenden Zugriff auf bestimmte Speicherkonten
Netzwerkregeln für eine Dateifreigabe regeln den eingehenden Zugriff. Sie schränken nicht ein, auf welche anderen Speicherressourcen Kunden zugreifen können. Für klassische Dateifreigaben kann man optional eine Service-Endpunkt-Richtlinie verwenden, um zu begrenzen, auf welche Speicherkonten Clients in einem Subnetz über Service-Endpunkte zugreifen können. Die Richtlinie filtert Ziele für Datenverkehr, der die Azure Firewall und virtuelle Netzwerkappliances umgeht. Es schränkt andere ausgehende Pfade nicht ein und ersetzt auch nicht die Netzwerkregeln und Autorisierungsanforderungen des Ziels. Weitere Informationen finden Sie unter Einschränken des ausgehenden Zugriffs mit Dienstendpunktrichtlinien.
Important
Service-Endpunkt-Richtlinien werden derzeit für Microsoft.FileShares-Dateifreigaben nicht unterstützt. Eine Richtlinie im Client-Subnetz blockiert den Zugriff auf diese Dateifreigaben über Service-Endpunkte, selbst wenn sie das entsprechende Abonnement oder die entsprechende Ressourcengruppe erlaubt. Diese Einschränkung gilt auch für Subnetze, die sowohl auf klassische als auch auf Microsoft.FileShares-Dateifreigaben zugreifen. Clients in diesem Subnetz müssen einen privaten Endpunkt nutzen, um auf Microsoft.FileShares-Dateifreigaben zuzugreifen.
Eine Service-Endpunkt-Richtlinie definiert die erlaubten Speicherziele für Clients im zugehörigen Subnetz. Es blockiert diese Clients daran, über Service-Endpunkte auf andere Speicherkonten zuzugreifen. Beachten Sie die folgenden Punkte:
- Füge jedes Speicherkonto hinzu, das Clients im Subnetz verwenden, bevor du die Richtlinie mit dem Subnetz verknüpfst. Diese Liste enthält Speicherkonten, die andere Workloads im Subnetz nutzen.
- Die Service-Endpunkt-Policy muss sich in derselben Region und im selben Abonnement wie das virtuelle Netzwerk befinden.
- Eine Richtlinie kann nur eine Richtliniendefinition für den Dienst
Microsoft.Storage enthalten. Um mehr Speicherkonten zu ermöglichen, fügen Sie deren Ressourcen-IDs derselben Richtliniendefinition hinzu. Sie können auch alle Speicherkonten in einer Ressourcengruppe oder einem Abonnement erlauben.
- Nachdem Sie eine Richtlinie mit einem Subnetz verknüpft haben, gilt die Richtlinie für den Datenverkehr zu Speicherkonten in allen Regionen.
- Diese Schritte gehen davon aus, dass das Subnetz keine Service-Endpunkt-Richtlinien hat. Wenn Richtlinien bereits verknüpft sind, überprüfen und aktualisieren Sie diese Richtlinien, anstatt ihre Zuordnungen zu ersetzen. Die PowerShell- und CLI-Beispiele stoppen, wenn sie bestehende Assoziationen finden.
Um eine Service-Endpunkt-Richtlinie zu erstellen und sie mit einem Subnetz zu verknüpfen, folgen Sie diesen Schritten. Für detaillierte Schritte siehe Erstellen und Zuordnen von Service-Endpunktrichtlinien.
- Im Suchfeld oben im Azure-Portal geben Sie Service Endpoint Policy ein. Wählen Sie in den Suchergebnissen Dienstendpunktrichtlinien aus.
- Wählen Sie + Erstellen aus.
- Wählen Sie im Tab Grundlagen das Abonnement und die Region Ihres virtuellen Netzwerks aus. Wählen Sie eine Ressourcengruppe aus und geben Sie einen Namen für die Richtlinie ein.
- Wählen Sie Weiter: Richtliniendefinitionen aus.
- Wählen Sie + Eine Ressource hinzufügen aus. Für Service wählen Sie Microsoft.Storage. Für Scope wählen Sie Single Account und dann das Speicherkonto, das Ihre Dateifreigaben enthält. Wählen Sie Hinzufügen aus. Wiederholen Sie diesen Schritt für jedes Speicherkonto, das Clients im Subnetz verwenden.
- Wählen Sie Review + Create und dann Create aus.
- Gehen Sie zur neuen Richtlinie für den Serviceendpunkt. Im Servicemenü wählen Sie unter Einstellungen, zugehörige Subnetze aus.
- Wählen Sie + Subnetzzuordnung bearbeiten, wählen Sie das virtuelle Netzwerk und Subnetz und wählen Sie dann Anwenden.
Die folgenden PowerShell-Befehle erstellen eine Service-Endpunkt-Richtlinie und ordnen sie einem Subnetz zu. Die Richtlinie begrenzt den Client-Zugriff von jenem Subnetz auf ein Speicherkonto über den Service-Endpunkt. Das Subnetz muss bereits über den Dienstendpunkt Microsoft.Storage verfügen. Ersetzen Sie die Platzhalterwerte durch Ihre eigenen Werte.
$storageAccountResourceGroupName = "<storage-account-resource-group>"
$storageAccountName = "<storage-account-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$policyName = "<service-endpoint-policy-name>"
$storageAccount = Get-AzStorageAccount `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName `
-ErrorAction Stop
$virtualNetwork = Get-AzVirtualNetwork `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $virtualNetworkName `
-ErrorAction Stop
$subnet = $virtualNetwork.Subnets | Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
throw "Subnet '$subnetName' wasn't found in virtual network '$virtualNetworkName'."
}
if ($subnet.ServiceEndpointPolicies.Count -gt 0) {
throw "The subnet already has service endpoint policies. Review and update them before changing the configuration."
}
# To allow clients to access more storage accounts, add their resource IDs to -ServiceResource.
$policyDefinition = New-AzServiceEndpointPolicyDefinition `
-Name "allowed-storage-accounts" `
-Service "Microsoft.Storage" `
-ServiceResource @($storageAccount.Id) `
-ErrorAction Stop
$policy = New-AzServiceEndpointPolicy `
-ResourceGroupName $virtualNetworkResourceGroupName `
-Name $policyName `
-Location $virtualNetwork.Location `
-ServiceEndpointPolicyDefinition $policyDefinition `
-ErrorAction Stop
$subnet.ServiceEndpointPolicies = @($policy)
$virtualNetwork | Set-AzVirtualNetwork -ErrorAction Stop | Out-Null
Die folgenden CLI-Befehle erstellen eine Service-Endpunkt-Richtlinie und ordnen sie einem Subnetz zu. Die Richtlinie begrenzt den Client-Zugriff aus diesem Subnetz auf ein Speicherkonto über den Service-Endpunkt. Das Subnetz muss bereits den Microsoft.Storage Service-Endpunkt haben. Ersetzen Sie die Platzhalterwerte durch Ihre eigenen Werte.
storageAccountResourceGroupName="<storage-account-resource-group>"
storageAccountName="<storage-account-name>"
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
policyName="<service-endpoint-policy-name>"
existingPolicyIds=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "serviceEndpointPolicies[].id" --output tsv) || exit 1
if [ -n "$existingPolicyIds" ]; then
echo "The subnet already has service endpoint policies. Review and update them before changing the configuration." >&2
exit 1
fi
storageAccountId=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" --output tsv) || exit 1
location=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "location" --output tsv) || exit 1
az network service-endpoint policy create \
--resource-group $virtualNetworkResourceGroupName \
--name $policyName \
--location $location \
--output none || exit 1
# To allow clients to access more storage accounts, add their resource IDs to --service-resources.
az network service-endpoint policy-definition create \
--resource-group $virtualNetworkResourceGroupName \
--policy-name $policyName \
--name "allowed-storage-accounts" \
--service "Microsoft.Storage" \
--service-resources $storageAccountId \
--output none || exit 1
az network vnet subnet update \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--service-endpoint-policy $policyName \
--output none || exit 1
Um von einem Subnetz mit einer Dienstrichtlinie für Endpunkte auf eine Microsoft.FileShares-Dateifreigabe zuzugreifen, erstellen Sie einen privaten Endpunkt für die Dateifreigabe. Service-Endpunkt-Richtlinien gelten nicht für Datenverkehr, der durch einen privaten Endpunkt läuft.
Siehe auch