✔️ Gäller för: Klassiska fildelningar som skapats med Microsoft.Storage-resursleverantören
✔️ Gäller för: Fildelningar som skapats med resursprovidern Microsoft.FileShares
Azure Files innehåller två huvudtyper av slutpunkter för åtkomst till Azure-filresurser:
- Offentliga slutpunkter, som har en offentlig IP-adress och du kan komma åt var som helst i världen.
- Privata slutpunkter, som finns i ett virtuellt nätverk och har en privat IP-adress inifrån adressutrymmet för det virtuella nätverket.
För klassiska fildelningar (skapade med resursleverantören Microsoft.Storage) har Azure-lagringskontot offentliga och privata slutpunkter. För filresurser som skapats med Microsoft.FileShares resursprovidern skapar du offentliga och privata slutpunkter på filresursnivå i stället för lagringskontonivån.
Den här artikeln fokuserar på hur du konfigurerar en privat slutpunkt för direkt åtkomst till Azure filresurs. Mycket av den här artikeln handlar också om hur Azure File Sync interopererar med offentliga och privata slutpunkter för lagringskontot. För mer information om nätverksöverväganden för Azure File Sync, se konfigurera Azure File Sync-proxy och brandväggsinställningar.
Innan du läser den här guiden bör du läsa Azure Files nätverksöverväganden.
Förutsättningar
Du kan konfigurera dina endpoints för att begränsa nätverksåtkomst till ditt lagringskonto och fildelningar. För att begränsa åtkomsten till ett virtuellt nätverk, använd en av följande metoder:
-
Skapa en eller flera privata endpoints och begränsa all åtkomst till den publika endpointen (rekommenderas). Den här metoden säkerställer att endast trafik som kommer från de önskade virtuella nätverken kan komma åt Azure filresurser. Se Kostnaden för Private Link.
-
Begränsa den offentliga slutpunkten till ett eller flera virtuella nätverk. Den här metoden använder funktionen för det virtuella nätverket som kallas tjänstslutpunkter. När du begränsar trafiken till ett lagringskonto via en tjänsteändpunkt, får du tillgång till lagringskontot eller fildelningen via den publika IP-adressen, men åtkomst är endast möjlig från de platser du anger i din konfiguration.
Skapa en privat slutpunkt
När du skapar en privat slutpunkt för dina filresurser distribuerar du följande Azure resurser:
-
En privat slutpunkt: En Azure resurs som representerar den privata slutpunkten. Du kan se den här resursen som en anslutningsapp mellan en målresurs och ett nätverksgränssnitt.
-
Ett nätverksgränssnitt (NIC): Nätverksgränssnittet som underhåller en privat IP-adress i det angivna virtuella nätverket och undernätet. Den här resursen är samma som den du distribuerar när du distribuerar en virtuell dator (VM). Men i stället för att tilldela den till en virtuell dator äger den privata slutpunkten den.
-
En privat DNS-zon (Domain Name System): Om du inte tidigare distribuerade en privat slutpunkt för det här virtuella nätverket distribueras en ny privat DNS-zon för ditt virtuella nätverk. En DNS-post skapas också i den här DNS-zonen. Om du redan har distribuerat en privat slutpunkt i det här virtuella nätverket läggs en ny post till i den befintliga DNS-zonen. Det är valfritt att distribuera en DNS-zon. Det rekommenderas dock starkt och är obligatoriskt om du monterar dina Azure-fildelningar med en AD-tjänstprincip eller använder FileREST-API:et.
Anmärkning
Den här artikeln använder DNS-suffixet för Azure offentliga regioner, core.windows.net. Den här kommentaren gäller även för Azure nationella moln som Azure US Government molnet och Azure som drivs av 21Vianet-molnet. Ersätt bara lämpliga suffix för din miljö.
Klassisk kontra den nya fildelningsupplevelsen
Processen för att skapa privata slutpunkter skiljer sig något beroende på om du använder klassiska fildelningar eller den nya fildelningsmodellen. För klassiska fildelningar skapar du en privat slutpunkt för lagringskontot som innehåller fildelarna. För fildelningar skapade med Microsoft. FileShares, du skapar en privat endpoint för själva fildelningen.
Många av stegen är identiska för båda upplevelserna. Endast resursreferensen, grupp-ID och DNS-postnamnet skiljer sig åt, vilket visas i följande tabell.
|
Klassiska filresurser (Microsoft.Storage) |
Nya fildelningar (Microsoft.FileShares) |
|
Privat slutpunktsmål |
Lagringskonto |
Fildelning |
|
Resurs-cmdlet |
Get-AzStorageAccount |
Get-AzFileShare |
|
Grupp-ID (underresurs) |
file |
FileShare |
|
DNS Ett postnamn |
Lagringskontonamn |
Värdnamnsprefix (till exempel fs-xxxxxxxxxxxxxxxxx) |
Gå till resursgruppen där du vill skapa en privat slutpunkt. Välj + Skapa och sök efter privat slutpunkt. Välj den privata slutpunktsresursen och välj sedan Skapa.
Guiden består av flera sidor som måste fyllas i.
På sidan Grundläggande väljer du prenumeration, resursgrupp, namn, nätverksgränssnittsnamn och region för din privata slutpunkt. Du måste skapa den privata slutpunkten i samma region som det virtuella nätverk som du vill skapa den privata slutpunkten i. Välj sedan Nästa: Resurs.
Om du använder klassiska fildelningar i ett lagringskonto:
På sidan Resurser, välj Microsoft. Storage/storageAccounts från rullgardinsmenyn för resurstyp. För Resurs, välj det specifika lagringskonto du vill ansluta till. För Mål-delresurs, välj file. Välj sedan Nästa: Virtuellt nätverk.
Om du använder fildelningar skapade med Microsoft. Fildelningsresursleverantör:
På sidan Resurser, välj Microsoft. FileShares/fileShares från rullgardinsmenyn för resurstyp. För Resource, välj den specifika fildelning du vill ansluta till. Målunderresursen fylls i automatiskt med FileShare. Välj sedan Nästa: Virtuellt nätverk.
På sidan Virtual Network kan du välja den specifika virtual network och det undernät som du vill lägga till din privata slutpunkt i. Välj dynamisk eller statisk IP-adressallokering för den nya privata slutpunkten. Om du väljer statisk måste du också ange ett namn och en privat IP-adress. Du kan också ange en programsäkerhetsgrupp. När du är klar väljer du Nästa: DNS.
DNS-sidan innehåller information om hur du integrerar din privata slutpunkt med en privat DNS-zon. Kontrollera att prenumerationen och resursgruppen är korrekta och välj sedan Nästa: Taggar.
Du kan också använda taggar för att kategorisera dina resurser, till exempel att använda namnet Miljö och värdet Test på alla testresurser. Ange namn/värdepar om du vill och välj sedan Nästa: Granska + skapa.
Välj Skapa för att skapa den privata slutpunkten.
Om du vill skapa en privat slutpunkt får du först en referens till ditt lagringskonto eller din filresurs och det virtuella nätverksundernätet där du vill lägga till den privata slutpunkten. Ersätt platshållarvärdena i följande kod med dina egna värden.
För klassiska filresurser, hämta en referens till lagringskontot:
$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 fildelningar som skapats med resursprovidern Microsoft.FileShares, hämta en referens till fildelningen:
$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
När du har angett de vanliga variablerna är de återstående stegen desamma för båda funktionerna. Hämta referenser till det virtuella nätverket och undernätet:
$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
}
Om du vill skapa en privat slutpunkt måste du skapa en privat länktjänstanslutning. Anslutningen till private link-tjänsten är ett indata vid skapandet av den privata slutpunkten.
# 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
Om du skapar en Azure privat DNS-zon matchas det ursprungliga värdnamnet mot den privata IP-adressen i det virtuella nätverket. Även om det är valfritt ur perspektivet att skapa en privat endpoint, krävs det uttryckligen för att montera Azure-fildelningen direkt med en služba Active Directory (AD) användarprincip eller för att komma åt via REST API.
# 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 när du har en referens till den privata DNS-zonen måste du skapa en post.
$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
Om du vill skapa en privat slutpunkt får du först en referens till ditt lagringskonto eller filresurs, plus det virtuella nätverksundernätet där du vill lägga till den privata slutpunkten. Ersätt platshållarvärdena i följande steg med dina egna värden.
För klassiska filresurser, hämta en referens till lagringskontot:
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 fildelningar som skapats med resursprovidern Microsoft.FileShares, hämta en referens till fildelningen:
# 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
När du har angett de vanliga variablerna är de återstående stegen desamma för båda funktionerna. Hämta referenser till det virtuella nätverket och undernätet:
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)
Om du vill skapa en privat slutpunkt kontrollerar du att undernätets privata slutpunktsnätverksprincip är inaktiverad och skapar sedan den privata slutpunkten med 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)
Om du skapar en Azure privat DNS-zon matchas det ursprungliga värdnamnet mot den privata IP-adressen i det virtuella nätverket. Även om det är valfritt ur perspektivet att skapa en privat endpoint, krävs det för att montera Azure-fildelningen genom att använda en AD-användarprincip eller komma åt via 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 när du har en referens till den privata DNS-zonen skapar du en A-post.
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
Verifiera anslutningen
Om du har en virtuell dator i det virtuella nätverket, eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files, kan du testa att den privata slutpunkten är korrekt konfigurerad. Kör följande kommandon från PowerShell, kommandoraden eller terminalen (fungerar för Windows, Linux eller macOS).
För klassiska filresurser ersätter du <storage-account-name> med lämpligt lagringskontonamn:
nslookup <storage-account-name>.file.core.windows.net
För filresurser som skapats med Microsoft. FileShares-resursprovider, använd filresursens värdnamn. På fliken Översikt för filresursen väljer du JSON-vy uppe till höger. I JSON-vyn under egenskaper kopierar du värdet för hostName. Formatet ser ut som fs-xxxxxxxxxxxxxxxxx.xx.file.storage.azure.net.
nslookup <file-share-host-name>
Om det lyckas visas utdata som liknar följande, där 192.168.0.5 är den privata IP-adressen för den privata slutpunkten i det virtuella nätverket (utdata som visas för Windows).
För klassiska filresurser:
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 fildelningar som skapats med resursprovidern Microsoft.FileShares:
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
Om du har en virtuell dator i det virtuella nätverket, eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files, kan du testa att din privata slutpunkt har konfigurerats korrekt genom att köra följande kommandon:
För klassiska filresurser:
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.file) | `
Select-Object -ExpandProperty Host
Resolve-DnsName -Name $storageAccountHostName
För fildelningar som skapats med resursprovidern Microsoft.FileShares:
Resolve-DnsName -Name $fileShare.HostName
Om det lyckas visas utdata som liknar följande, där 192.168.0.5 är den privata IP-adressen för den privata slutpunkten i det virtuella nätverket.
För klassiska filresurser:
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 fildelningar som skapats med resursprovidern Microsoft.FileShares:
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
Om du har en virtuell dator i det virtuella nätverket, eller om du har konfigurerat DNS-vidarebefordran enligt beskrivningen i Konfigurera DNS-vidarebefordran för Azure Files, kan du testa att din privata slutpunkt har konfigurerats korrekt genom att köra följande kommandon:
För klassiska filresurser:
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 fildelningar som skapats med resursprovidern Microsoft.FileShares:
hostName=$(az fileshare show \
--resource-group $fileShareResourceGroupName \
--name $fileShareName \
--query "properties.hostName" --output tsv)
nslookup $hostName
Om det lyckas visas utdata som liknar följande, där 192.168.0.5 är den privata IP-adressen för den privata slutpunkten i det virtuella nätverket. Du bör fortfarande använda det ursprungliga värdnamnet (storageaccount.file.core.windows.net för den klassiska upplevelsen eller filresursens hostName för den nya upplevelsen) för att montera filresursen i stället för sökvägen privatelink.
För klassiska filresurser:
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 fildelningar som skapats med resursprovidern Microsoft.FileShares:
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
Begränsa offentlig slutpunktsåtkomst
Om du vill begränsa åtkomsten till den offentliga slutpunkten inaktiverar du först allmän åtkomst till den offentliga slutpunkten. Inaktivering av åtkomst till den offentliga slutpunkten påverkar inte privata slutpunkter. När du har inaktiverat den offentliga slutpunkten väljer du specifika nätverk eller IP-adresser som kan fortsätta att komma åt den. I allmänhet begränsar de flesta brandväggsprinciper för ett lagringskonto nätverksåtkomst till ett eller flera virtuella nätverk.
Du kan också använda en nätverkssäkerhetsperimeter för att centralt hantera inkommande och utgående åtkomstregler.
Inaktivera åtkomst till den offentliga slutpunkten
När du inaktiverar tillgång till offentligt nätverk begränsar du inkommande åtkomst samtidigt som utgående åtkomst tillåts. Du kan fortfarande komma åt lagringskontot via dess privata endpoints. Annars avvisas förfrågningar till lagringskontots publika endpoint, om de inte kommer från en specifikt tillåten källa.
För att inaktivera offentlig nätverksåtkomst för klassiska fildelningar, följ dessa steg:
- Gå till lagringskontot där du vill begränsa all inkommande åtkomst till den publika slutpunkten.
- Från servicemenyn, under Security + networking, välj Networking.
- Under Åtkomst till offentligt nätverk väljer du Hantera.
- Välj Inaktivera och välj sedan Fortsätt.
- Välj Spara.
För fildelningar som skapats med resursprovidern Microsoft.FileShares:
Gå till filresursen där du vill inaktivera offentlig åtkomst. I tjänstmenyn går du till Inställningar och väljer Konfiguration. Ange Åtkomst till Offentligt nätverktill Inaktiverad och välj sedan Spara.
För klassiska fildelningar nekar följande PowerShell-kommando all trafik åtkomst till lagringskontots offentliga slutpunkt. Ange parametern -Bypass till AzureServices för att tillåta betrodda tjänster från första part, till exempel Azure File Sync för åtkomst till lagringskontot via den offentliga slutpunkten.
# 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 fildelningar som skapats med resursprovidern Microsoft.FileShares anger du -PublicNetworkAccess till Disabled på fildelningen.
# 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 klassiska fildelningar blockerar följande CLI-kommando all trafik till lagringskontots offentliga slutpunkt. Ange parametern --bypass till AzureServices för att tillåta betrodda tjänster från första part, till exempel Azure File Sync för åtkomst till lagringskontot via den offentliga slutpunkten.
# 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 fildelningar som skapats med resursprovidern Microsoft.FileShares anger du --public-network-access till Disabled på fildelningen.
# 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
Begränsa åtkomsten till den publika ändpunkten till specifika nätverk
När du begränsar åtkomsten till den publika ändpunkten till specifika nätverk, tillåter du förfrågningar till den publika ändpunkten från angivna virtuella nätverk eller IP-adresser. Denna begränsning fungerar genom att använda en funktion som kallas service endpoints. Du kan använda tjänstslutpunkter med eller utan privata slutpunkter.
För klassiska fildelningar, följ dessa steg för att begränsa den publika ändpunkten till specifika nätverk.
- Gå till lagringskontot där du vill begränsa den publika slutpunkten till specifika nätverk.
- Från servicemenyn, under Security + networking, välj Networking.
- Under Åtkomstomfång för offentligt nätverk väljer du Aktivera från valda nätverk. Det här valet visar ett antal inställningar för att kontrollera begränsningen av den offentliga slutpunkten.
- Under Virtuella nätverk, välj Lägg till ett virtuellt nätverk>Lägg till befintligt virtuellt nätverk för att välja det virtuella nätverk som ska få tillgång till lagringskontot via den publika slutpunkten. Välj ett virtuellt nätverk och ett undernät för det virtuella nätverket och välj sedan Aktivera. Om du vill skapa ett nytt virtuellt nätverk för detta ändamål, välj Lägg till ett virtuellt nätverk>Lägg till nytt virtuellt nätverk, ange detaljerna och välj sedan Skapa.
- Under IPv4-adresser, ange alla publika internet-IP-adresser som du vill ska kunna komma åt lagringskontot.
- Markera kryssrutan Tillåt betrodda Microsoft-tjänster att få åtkomst till den här resursen om du vill ge betrodda Microsoft-tjänster från Microsoft, till exempel Azure File Sync, åtkomst till lagringskontot.
- Välj Spara.
För fildelningar som skapats med resursprovidern Microsoft.FileShares:
Gå till filresursen där du vill begränsa den offentliga åtkomsten. På tjänstmenyn går du till Inställningar och väljer Konfiguration. Under Åtkomst till offentligt nätverk väljer du Aktiverad från valda virtuella nätverk, lägger till de virtuella nätverk och undernät som tillåts komma åt resursen och väljer Spara.
För klassiska filresurser begränsar du åtkomsten till lagringskontots offentliga slutpunkt till specifika virtuella nätverk med hjälp av tjänstslutpunkter. Samla först in information om lagringskontot och det virtuella nätverket. Ersätt platshållarvärdena i följande steg med dina egna värden.
$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
}
För att tillåta trafik från det virtuella nätverket måste Azures nätverksinfrastruktur exponera Microsoft.Storage tjänstslutpunkten mot det virtuella nätverkets undernät. Följande PowerShell-kommandon lägger till tjänstslutpunkten Microsoft.Storage i undernätet om den inte redan finns där.
$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
}
Det sista steget för att begränsa trafik till lagringskontot är att skapa en nätverksregel och lägga till den i lagringskontots nätverksregeluppsättning.
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule `
-VirtualNetworkResourceId $subnet.Id `
-ErrorAction Stop
$storageAccount | Update-AzStorageAccountNetworkRuleSet `
-DefaultAction Deny `
-Bypass AzureServices `
-VirtualNetworkRule $networkRule `
-WarningAction SilentlyContinue `
-ErrorAction Stop | `
Out-Null
För fildelningar som skapats med resursprovidern Microsoft.FileShares skickar du de tillåtna resurs-ID:na för undernät direkt till Update-AzFileShare genom att använda -AllowedSubnet. Det finns inget behov av separat tjänstslutpunkt eller nätverksregelkonfiguration på lagringskontot.
# 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)
För klassiska filresurser begränsar du åtkomsten till lagringskontots offentliga slutpunkt till specifika virtuella nätverk med hjälp av tjänstslutpunkter. Samla först in information om lagringskontot och det virtuella nätverket. Ersätt platshållarvärdena i följande steg med dina egna värden.
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)
För att tillåta trafik från det virtuella nätverket måste Azures nätverksinfrastruktur exponera Microsoft.Storage tjänstslutpunkten mot det virtuella nätverkets undernät. Följande CLI-kommandon lägger till tjänstslutpunkten Microsoft.Storage i undernätet om den inte redan finns där.
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
Det sista steget för att begränsa trafik till lagringskontot är att skapa en nätverksregel och lägga till den i lagringskontots nätverksregeluppsättning.
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
För fildelningar som skapats med resursprovidern Microsoft.FileShares skickar du de tillåtna resurs-ID:na för undernät direkt till az fileshare update genom att använda --allowed-subnets. Det finns inget behov av separat tjänstslutpunkt eller nätverksregelkonfiguration på lagringskontot.
# 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
Se även