✔️ Van toepassing op: Klassieke bestandsshares die zijn gemaakt met de Resourceprovider Microsoft.Storage
✔️ Van toepassing op: Bestandsshares die zijn gemaakt met de resourceprovider Microsoft.FileShares
Azure Files biedt twee hoofdtypen eindpunten voor toegang tot Azure-bestandsshares:
- Openbare eindpunten, die een openbaar IP-adres hebben en waartoe u overal ter wereld toegang hebt.
- Privé-eindpunten, die zich binnen een virtueel netwerk bevinden en een privé-IP-adres hebben in de adresruimte van het virtuele netwerk.
Voor klassieke bestandsshares (gemaakt met de Microsoft.Storage resourceprovider) heeft het Azure opslagaccount openbare en privé-eindpunten. Voor bestandsshares die zijn gemaakt met de Microsoft.FileShares resourceprovider, maakt u openbare en privé-eindpunten op bestandsshareniveau in plaats van het opslagaccountniveau.
In dit artikel wordt uitgelegd hoe u een privé-eindpunt configureert voor toegang tot de Azure bestandsshare rechtstreeks. Veel van dit artikel is ook van toepassing op de werking van Azure File Sync met openbare en privé-eindpunten voor het opslagaccount. Voor meer informatie over netwerkoverwegingen voor Azure File Sync, zie Azure File Sync proxy- en firewallinstellingen configureren.
Raadpleeg Azure Files overwegingen voor netwerken voordat u deze handleiding leest.
Vereisten
Je kunt je endpoints zo configureren dat ze de netwerktoegang tot je opslagaccount en bestandsdelingen beperken. Om de toegang tot een virtueel netwerk te beperken, gebruik een van de volgende benaderingen:
-
Maak één of meer private endpoints aan en beperk alle toegang tot het publieke endpoint (aanbevolen). Deze aanpak zorgt ervoor dat alleen verkeer dat afkomstig is van de gewenste virtuele netwerken toegang heeft tot de Azure bestandsshares. Zie Private Link-kosten.
-
Beperk het openbare eindpunt tot een of meer virtuele netwerken. Deze benadering maakt gebruik van een mogelijkheid van het virtuele netwerk dat service-eindpunten wordt genoemd. Wanneer je het verkeer beperkt tot een opslagaccount via een service-endpoint, krijg je toegang tot het opslagaccount of de bestandsdeling via het publieke IP-adres, maar toegang is alleen mogelijk vanaf de locaties die je in je configuratie hebt opgegeven.
Een privé-eindpunt maken
Wanneer u een privé-eindpunt voor uw bestandsshares maakt, implementeert u de volgende Azure resources:
-
Een privé-eindpunt: een Azure resource die het privé-eindpunt vertegenwoordigt. U kunt deze resource beschouwen als een connector tussen een doelresource en een netwerkinterface.
-
Een netwerkinterface (NIC):de netwerkinterface die een privé-IP-adres onderhoudt binnen het opgegeven virtuele netwerk en subnet. Deze resource is hetzelfde als de resource die u implementeert wanneer u een virtuele machine (VM) implementeert. In plaats van deze toe te wijzen aan een virtuele machine, is het privé-eindpunt eigenaar van het eindpunt.
-
Een privé-DNS-zone (Domain Name System): Als u nog geen privé-eindpunt voor dit virtuele netwerk hebt geïmplementeerd, wordt er een nieuwe privé-DNS-zone geïmplementeerd voor uw virtuele netwerk. Er wordt ook een DNS-record gemaakt in deze DNS-zone. Als u al een privé-eindpunt in dit virtuele netwerk hebt geïmplementeerd, wordt er een nieuwe record toegevoegd aan de bestaande DNS-zone. Het implementeren van een DNS-zone is optioneel. Het wordt echter sterk aanbevolen, en is vereist als u uw Azure-bestandsshares koppelt met een AD-service-principal of de FileREST-API gebruikt.
Notitie
In dit artikel wordt het DNS-achtervoegsel gebruikt voor de Azure openbare regio's. core.windows.net Dit commentaar is ook van toepassing op Azure onafhankelijke clouds, zoals de Azure US Government cloud en de Azure beheerd door de 21Vianet-cloud. Vervang gewoon de juiste achtervoegsels voor uw omgeving.
Klassieke versus nieuwe ervaring voor bestandsshares
Het proces van het aanmaken van privé-endpoints verschilt enigszins, afhankelijk van of je klassieke bestandsdelingen of het nieuwe bestandsdelingsmodel gebruikt. Voor klassieke bestandsdelingen maak je een privé-endpoint aan voor het opslagaccount dat de bestandsdelingen bevat. Voor bestandsshares die zijn gemaakt met Microsoft.FileShares, maak je een privé-eindpunt voor de bestandsshare zelf.
Veel van de stappen zijn identiek voor beide ervaringen. Alleen de bronreferentie, groeps-ID en DNS-recordnaam verschillen, zoals weergegeven in de volgende tabel.
|
Klassieke bestandsdeling (Microsoft.Storage) |
Nieuwe bestandsshares (Microsoft.FileShares) |
|
Doel van privé-eindpunt |
opslagaccount |
Bestand delen |
|
Resource-cmdlet |
Get-AzStorageAccount |
Get-AzFileShare |
|
Groeps-id (subresource) |
file |
FileShare |
|
naam van DNS A-record |
Naam van het opslagaccount |
Hostnaamvoorvoegsel (bijvoorbeeld fs-xxxxxxxxxxxxxxxxx) |
Ga naar de resourcegroep waar u een privé-eindpunt wilt maken. Selecteer + Maken en zoek naar privé-eindpunt. Selecteer de privé-eindpuntresource en selecteer vervolgens Maken.
De wizard heeft meerdere pagina's om te voltooien.
Selecteer op de pagina Basis het abonnement, de resourcegroep, de naam, de netwerkinterfacenaam en de regio voor uw privé-eindpunt. U moet het privé-eindpunt maken in dezelfde regio als het virtuele netwerk waarin u het privé-eindpunt wilt maken. Vervolgens selecteer Volgende: Resource.
Als je klassieke bestandsdelingen gebruikt in een opslagaccount:
Selecteer op de pagina BronnenMicrosoft. Storage/storageAccounts in het dropdownmenu voor Resource type. Selecteer voor Resource het specifieke opslagaccount waarmee je wilt verbinden. Voor Doelsubresource, selecteert u file. Selecteer Volgende: Virtueel netwerk vervolgens.
Als je bestandsshares gebruikt die zijn gemaakt met de resourceprovider Microsoft.FileShares:
Selecteer op de pagina BronnenMicrosoft. FileShares/fileShares vanuit het dropdownmenu voor Resource type. Selecteer voor Resource het specifieke bestandsdeel waarmee je wilt verbinden. De doelsubresource wordt automatisch ingevuld met FileShare. Selecteer Volgende: Virtueel netwerk vervolgens.
Op de pagina Virtual Network kunt u de specifieke virtual network en het subnet selecteren waaraan u uw privé-eindpunt wilt toevoegen. Selecteer dynamische of statische IP-adrestoewijzing voor het nieuwe privé-eindpunt. Als u statisch selecteert, moet u ook een naam en een privé-IP-adres opgeven. U kunt eventueel ook een toepassingsbeveiligingsgroep opgeven. Wanneer u klaar bent, selecteert u Volgende: DNS.
De DNS-pagina bevat de informatie voor het integreren van uw privé-eindpunt met een privé-DNS-zone. Controleer of het abonnement en de resourcegroep kloppen, en selecteer vervolgens Next: Tags.
U kunt eventueel tags toepassen om uw resources te categoriseren, zoals het toepassen van de naam Environment en de waarde Test op alle testresources. Voer desgewenst naam-/waardeparen in en selecteer vervolgens Volgende: Beoordelen en maken.
Selecteer Maken om het privé-eindpunt te maken.
Als u een privé-eindpunt wilt maken, moet u eerst een verwijzing naar uw opslagaccount of uw bestandsshare en het subnet van het virtuele netwerk ophalen waar u het privé-eindpunt wilt toevoegen. Vervang de tijdelijke aanduidingen in de volgende code door uw eigen waarden.
Voor klassieke bestandsshares krijgt u een verwijzing naar het opslagaccount:
$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
Voor bestandsshares die zijn gemaakt met de Microsoft.FileShares-resourceprovider, haal een verwijzing naar de bestandsshare op:
$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
Nadat u de algemene variabelen hebt ingesteld, zijn de resterende stappen voor beide ervaringen hetzelfde. Haal verwijzingen op naar het virtuele netwerk en subnet:
$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
}
Als u een privé-eindpunt wilt maken, moet u een private link-serviceverbinding maken. De verbinding van de privé-link is een invoer voor het maken van het privé-eindpunt.
# 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
Als u een Azure privé-DNS-zone maakt, wordt de oorspronkelijke hostnaam omgezet in het privé-IP-adres in het virtuele netwerk. Hoewel optioneel vanuit het perspectief van het creëren van een privé-endpoint, is het expliciet vereist om de Azure-bestandsdeling direct te mounten via een Active Directory (AD) user principal of via de REST API te benaderen.
# 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
}
Nu u een verwijzing naar de privé-DNS-zone hebt, moet u een record maken.
$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
Als u een privé-eindpunt wilt maken, moet u eerst een verwijzing naar uw opslagaccount of bestandsshare ophalen, plus het subnet van het virtuele netwerk waaraan u het privé-eindpunt wilt toevoegen. Vervang de tijdelijke aanduidingen in de volgende stappen door uw eigen waarden.
Voor klassieke bestandsshares krijgt u een verwijzing naar het opslagaccount:
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
Voor bestandsshares die zijn gemaakt met de Microsoft.FileShares-resourceprovider, haal een verwijzing naar de bestandsshare op:
# 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
Nadat u de algemene variabelen hebt ingesteld, zijn de resterende stappen voor beide ervaringen hetzelfde. Haal verwijzingen op naar het virtuele netwerk en subnet:
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)
Als u een privé-eindpunt wilt maken, moet u ervoor zorgen dat het netwerkbeleid voor het privé-eindpunt van het subnet is uitgeschakeld en maakt u vervolgens het privé-eindpunt met 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)
Als u een Azure privé-DNS-zone maakt, wordt de oorspronkelijke hostnaam omgezet in het privé-IP-adres in het virtuele netwerk. Hoewel dit vanuit het oogpunt van het maken van een privé-eindpunt optioneel is, is het vereist voor het koppelen van de Azure-bestandsshare met behulp van een AD-gebruikersprincipal of voor toegang via de FileREST API.
# 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
Nu u een verwijzing naar de privé-DNS-zone hebt, maakt u een A-record.
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
Connectiviteit verifiëren
Als u een virtuele machine in uw virtuele netwerk hebt of als u DNS-doorsturen hebt geconfigureerd zoals beschreven in Dns-doorsturen configureren voor Azure Files, kunt u testen of uw privé-eindpunt correct is ingesteld. Voer de volgende opdrachten uit vanuit PowerShell, de opdrachtregel of de terminal (werkt voor Windows, Linux of macOS).
Voor klassieke bestandsshares vervangt u <storage-account-name> door de juiste naam van het opslagaccount:
nslookup <storage-account-name>.file.core.windows.net
Voor bestandsshares die zijn gemaakt met de Microsoft.FileShares-resourceprovider, gebruikt u de hostnaam van de bestandsshare. Selecteer in de rechterbovenhoek op het tabblad Overzicht van de bestandsshare de JSON-weergave . Kopieer in de JSON-weergave onder Eigenschappen de waarde voor hostName. De indeling ziet eruit als fs-xxxxxxxxxxxxxxxxx.xx.file.storage.azure.net.
nslookup <file-share-host-name>
Als dit lukt, ziet u uitvoer die lijkt op het volgende, waarbij 192.168.0.5 het privé-IP-adres van het privé-eindpunt in uw virtuele netwerk is (uitvoer weergegeven voor Windows).
Voor klassieke bestandsshares:
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
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
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
Als u een virtuele machine in uw virtuele netwerk hebt of als u DNS-doorsturen hebt geconfigureerd zoals beschreven in DNS-doorsturen configureren voor Azure Files, kunt u testen of uw privé-eindpunt correct is ingesteld door de volgende opdrachten uit te voeren:
Voor klassieke bestandsshares:
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
Resolve-DnsName -Name $fileShare.HostName
Als dit lukt, ziet u uitvoer die lijkt op het volgende, waarbij 192.168.0.5 het privé-IP-adres van het privé-eindpunt in uw virtuele netwerk is.
Voor klassieke bestandsshares:
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
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
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
Als u een virtuele machine in uw virtuele netwerk hebt of als u DNS-doorsturen hebt geconfigureerd zoals beschreven in DNS-doorsturen configureren voor Azure Files, kunt u testen of uw privé-eindpunt correct is ingesteld door de volgende opdrachten uit te voeren:
Voor klassieke bestandsshares:
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
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
hostName=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "properties.hostName" --output tsv)
nslookup $hostName
Als dit lukt, ziet u uitvoer die lijkt op het volgende, waarbij 192.168.0.5 het privé-IP-adres van het privé-eindpunt in uw virtuele netwerk is. U moet nog altijd de oorspronkelijke hostnaam gebruiken (storageaccount.file.core.windows.net voor klassiek, of de hostName van de bestandsshare voor de nieuwe ervaring) om uw bestandsshare te koppelen in plaats van het pad privatelink.
Voor klassieke bestandsshares:
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
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
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
Toegang tot openbare eindpunten beperken
Als u de toegang tot openbare eindpunten wilt beperken, moet u eerst algemene toegang tot het openbare eindpunt uitschakelen. Het uitschakelen van toegang tot het openbare eindpunt heeft geen invloed op privé-eindpunten. Nadat u het openbare eindpunt hebt uitgeschakeld, selecteert u specifieke netwerken of IP-adressen die toegang kunnen blijven krijgen tot het eindpunt. Over het algemeen beperken de meeste firewallbeleidsregels voor een opslagaccount netwerktoegang tot een of meer virtuele netwerken.
Je kunt ook een netwerkbeveiligingsperimeter gebruiken om inkomende en uitgaande toegangsregels centraal te beheren.
Toegang tot het openbare eindpunt uitschakelen
Wanneer je de toegang tot het openbare netwerk uitschakelt, beperk je inkomende toegang terwijl je uitgaande toegang toestaat. Je kunt nog steeds toegang krijgen tot het opslagaccount via de privé-eindpunten. Anders worden verzoeken naar het publieke eindpunt van het opslagaccount geweigerd, tenzij ze van een specifiek toegestane bron komen.
Om publieke netwerktoegang voor klassieke bestandsdelingen uit te schakelen, volgt u deze stappen:
- Ga naar het opslagaccount waar je alle inkomende toegang tot het publieke eindpunt wilt beperken.
- Selecteer in het servicemenu onder Security + netwerkenNetwerken.
- Onder Openbare netwerktoegang, selecteer Beheren.
- Selecteer Uitschakelen en vervolgens Doorgaan.
- Kies Opslaan.
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
Ga naar de bestandsshare waar u openbare toegang wilt uitschakelen. Selecteer Configuratie in het servicemenu onder Instellingen. Stel openbare netwerktoegang in opUitgeschakeld en selecteer Opslaan.
Voor klassieke bestandsshares weigert de volgende PowerShell-opdracht al het verkeer naar het openbare eindpunt van het opslagaccount. Stel de parameter -Bypass in op AzureServices zodat vertrouwde eerstepartijservices zoals Azure File Sync toegang krijgen tot het opslagaccount via het openbare eindpunt.
# 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
Voor bestandsshares die zijn gemaakt met de resourceprovider Microsoft.FileShares, stelt u -PublicNetworkAccess op Disabled in voor de bestandsshare.
# 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
Voor klassieke bestandsshares blokkeert de volgende CLI-opdracht al het verkeer naar het openbare eindpunt van het opslagaccount. Stel de parameter --bypass in op AzureServices zodat vertrouwde eerstepartijservices zoals Azure File Sync toegang krijgen tot het opslagaccount via het openbare eindpunt.
# 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
Voor bestandsshares die zijn gemaakt met de resourceprovider Microsoft.FileShares, stelt u --public-network-access op Disabled in voor de bestandsshare.
# 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
Beperk de toegang tot het publieke eindpunt tot specifieke netwerken
Wanneer je de toegang tot het publieke eindpunt beperkt tot specifieke netwerken, sta je verzoeken toe naar het publieke eindpunt vanuit gespecificeerde virtuele netwerken of IP-adressen. Deze beperking werkt door gebruik te maken van een mogelijkheid genaamd service endpoints. Je kunt service-endpoints gebruiken met of zonder private endpoints.
Voor klassieke bestandsdelingen volg deze stappen om het publieke eindpunt te beperken tot specifieke netwerken.
- Ga naar het opslagaccount waar je het publieke eindpunt wilt beperken tot specifieke netwerken.
- Selecteer in het servicemenu onder Security + netwerkenNetwerken.
- Selecteer onder Het bereik openbare netwerktoegang de optie Inschakelen uit geselecteerde netwerken. Deze selectie toont een aantal instellingen voor het beheren van de beperking van het openbare eindpunt.
- Selecteer onder Virtuele netwerkenVirtueel> netwerktoevoegen om bestaand virtueel netwerk toe te voegen om het virtuele netwerk te selecteren dat toegang zou moeten krijgen tot het opslagaccount via het publieke eindpunt. Selecteer een virtueel netwerk en een subnet voor dat virtuele netwerk en selecteer vervolgens Inschakelen. Als je hiervoor een nieuw virtueel netwerk wilt aanmaken, selecteer dan een virtueel netwerk>toevoegen Voeg nieuw virtueel netwerk toe, geef de details en kies vervolgens Aanmaken.
-
Onder IPv4-adressen specificeer je alle openbare internet-IP-adressen die je wilt kunnen bereiken voor het opslagaccount.
- Schakel het selectievakje Vertrouwde Microsoft-services toegang geven tot deze resource in om vertrouwde Microsoft-services van de eerste partij, zoals Azure File Sync, toegang te geven tot het opslagaccount.
- Kies Opslaan.
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider:
Ga naar de bestandsshare waar u openbare toegang wilt beperken. Selecteer Configuratie in het servicemenu onder Instellingen. Selecteer onder Openbare netwerktoegangingeschakeld in geselecteerde virtuele netwerken, voeg de virtuele netwerken en subnetten toe die toegang hebben tot de share en selecteer Opslaan.
Voor klassieke bestandsshares beperkt u de toegang tot het openbare eindpunt van het opslagaccount tot specifieke virtuele netwerken met behulp van service-eindpunten. Verzamel eerst informatie over het opslagaccount en het virtuele netwerk. Vervang de tijdelijke aanduidingen in de volgende stappen door uw eigen waarden.
$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
}
Als u verkeer van het virtuele netwerk wilt toestaan, moet de Azure netwerkinfrastructuur het Microsoft.Storage service-eindpunt beschikbaar maken voor het subnet van het virtuele netwerk. Met de volgende PowerShell-opdrachten voegt u het Microsoft.Storage-service-eindpunt toe aan het subnet als dit nog niet is gebeurd.
$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
}
De laatste stap bij het beperken van verkeer naar het opslagaccount is het maken van een netwerkregel en deze toevoegen aan de netwerkregelset van het opslagaccount.
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule `
-VirtualNetworkResourceId $subnet.Id `
-ErrorAction Stop
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider, geef de toegestane subnetresource-id's rechtstreeks door aan Update-AzFileShare met behulp van -AllowedSubnet. Er is geen afzonderlijke configuratie van service-eindpunten of netwerkregels voor het opslagaccount nodig.
# 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)
Voor klassieke bestandsshares beperkt u de toegang tot het openbare eindpunt van het opslagaccount tot specifieke virtuele netwerken met behulp van service-eindpunten. Verzamel eerst informatie over het opslagaccount en het virtuele netwerk. Vervang de tijdelijke aanduidingen in de volgende stappen door uw eigen waarden.
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)
Als u verkeer van het virtuele netwerk wilt toestaan, moet de Azure netwerkinfrastructuur het Microsoft.Storage service-eindpunt beschikbaar maken voor het subnet van het virtuele netwerk. Met de volgende CLI-opdrachten voegt u het Microsoft.Storage-service-eindpunt toe aan het subnet als dit nog niet is gebeurd.
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
De laatste stap bij het beperken van verkeer naar het opslagaccount is het maken van een netwerkregel en deze toevoegen aan de netwerkregelset van het opslagaccount.
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
Voor bestandsshares die zijn gemaakt met de Microsoft. FileShares-resourceprovider, geef de toegestane subnetresource-id's rechtstreeks door aan az fileshare update met behulp van --allowed-subnets. Er is geen afzonderlijke configuratie van service-eindpunten of netwerkregels voor het opslagaccount nodig.
# 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
Zie ook