Den här artikeln förklarar hur man skapar privata endpoints och begränsar offentlig endpoint-åtkomst för Azure-fildelningar. För klassiska fildelningar (Microsoft. Storage) konfigurerar du lagringskontot. För fildelningar som skapats med Microsoft.FileShares konfigurerar du varje fildelning. De klassiska stegen för fildelning gäller också för lagringskonton som Azure File Sync använder. För nätverkskrav för Azure File Sync, se Konfigurera Azure File Sync-proxy- och brandväggsinställningar.
För att välja mellan privata endpoints och nätverksregler, se Azure Files nätverksöverväganden.
Förutsättningar
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 domännamnszon (DNS): Dessa steg skapar eller återanvänder en privat Azure-DNS-zon kopplad till det virtuella nätverket och lägger till en A-post för den privata slutpunkten. Du kan använda din egen DNS-infrastruktur istället, förutsatt att klienterna löser upp filresursens värdnamn till den privata endpointens IP-adress.
Anmärkning
I Azure public cloud använder båda resursleverantörerna den privata DNS-zonenprivatelink.file.core.windows.net. Deras klientvärdnamn skiljer sig åt; se Verifiera anslutning för exempel. För klassiska fildelningar i andra Azure-moln, använd lagringsändpunktssuffixet för det molnet.
Processen för att skapa privata slutpunkter skiljer sig något beroende på om du använder klassiska fildelningar eller Microsoft.FileShares. 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 resursleverantörerna. Endast resursreferensen, grupp-ID och DNS-postnamnet skiljer sig åt, vilket visas i följande tabell.
|
Klassiska filresurser (Microsoft.Storage) |
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 Grunder , välj prenumeration, resursgrupp, namn, nätverksgränssnittsnamn och region för din privata endpoint. Den privata slutpunkten måste vara i samma region som dess virtuella nätverk. Välj sedan Nästa: Resurs.
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.
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 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å en referens till lagringskontot:
$storageAccountResourceGroupName = "<storage-account-resource-group-name>"
$storageAccountName = "<storage-account-name>"
$storageAccountParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
ErrorAction = "SilentlyContinue"
}
$storageAccount = Get-AzStorageAccount @storageAccountParams
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å en referens till fildelningen:
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$fileShareParams = @{
ResourceGroupName = $fileShareResourceGroupName
ResourceName = $fileShareName
ErrorAction = "SilentlyContinue"
}
$fileShare = Get-AzFileShare @fileShareParams
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
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
$virtualNetworkParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $virtualNetworkName
ErrorAction = "SilentlyContinue"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
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) {
$errorMessage = "Subnet $subnetName not found in virtual network $virtualNetworkName."
Write-Error -Message $errorMessage -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.
$connectionParams = @{
Name = "$dnsRecordName-Connection"
PrivateLinkServiceId = $privateLinkResourceId
GroupId = $groupId
ErrorAction = "Stop"
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @connectionParams
# Create a new private endpoint.
$privateEndpointParams = @{
ResourceGroupName = $resourceGroupName
Name = "$dnsRecordName-PrivateEndpoint"
Location = $virtualNetwork.Location
Subnet = $subnet
PrivateLinkServiceConnection = $privateEndpointConnection
ErrorAction = "Stop"
}
$privateEndpoint = New-AzPrivateEndpoint @privateEndpointParams
Koppla en Azure privat DNS-zon till det virtuella nätverket så att klienterna kan översätta fildelningens ursprungliga värdnamn till den privata endpointens IP-adress. Följande kommandon använder en zon som redan är kopplad till det virtuella nätverket. Om ingen är kopplad använder de zonen i det virtuella nätverkets resursgrupp, eller skapar en och länkar den. Dessa steg gäller för båda resursleverantörerna.
# Get the host name suffix (core.windows.net for public cloud).
# Reading it from the context lets this script work in non-public Azure clouds.
$hostNameSuffix = Get-AzContext |
Select-Object -ExpandProperty Environment |
Select-Object -ExpandProperty StorageEndpointSuffix
# For public cloud, this generates 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 {
$dnsLinkParams = @{
ResourceGroupName = $_.ResourceGroupName
ZoneName = $_.Name
ErrorAction = "SilentlyContinue"
}
$privateDnsLink = Get-AzPrivateDnsVirtualNetworkLink @dnsLinkParams
$privateDnsLink.VirtualNetworkId -eq $virtualNetwork.Id
}
if ($null -eq $dnsZone) {
# No matching DNS zone attached to virtual network, so use the zone in the
# virtual network's resource group, or create one, and link it.
$dnsZoneParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $dnsZoneName
ErrorAction = "SilentlyContinue"
}
$dnsZone = Get-AzPrivateDnsZone @dnsZoneParams
if ($null -eq $dnsZone) {
$dnsZoneParams.ErrorAction = "Stop"
$dnsZone = New-AzPrivateDnsZone @dnsZoneParams
}
$dnsLinkParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
ZoneName = $dnsZoneName
Name = "$virtualNetworkName-DnsLink"
VirtualNetworkId = $virtualNetwork.Id
ErrorAction = "Stop"
}
$privateDnsLink = New-AzPrivateDnsVirtualNetworkLink @dnsLinkParams
}
Nu när du har en referens till den privata DNS-zonen skapar du en A-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
$dnsRecordParams = @{
ResourceGroupName = $dnsZone.ResourceGroupName
Name = $dnsRecordName
RecordType = "A"
ZoneName = $dnsZone.Name
Ttl = 600
PrivateDnsRecords = $privateDnsRecordConfig
ErrorAction = "Stop"
}
New-AzPrivateDnsRecordSet @dnsRecordParams | 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å 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å en referens till fildelningen:
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
Efter att de gemensamma variablerna har ställts in är de återstående stegen desamma för båda resursleverantörerna. 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)
För att skapa en privat endpoint, se till att subnätets privata endpoint-nätverkspolicy är inaktiverad, och skapa sedan den privata endpointen med az network private-endpoint create.
# Disable private endpoint network policies
az network vnet subnet update \
--ids $subnet \
--private-endpoint-network-policies Disabled \
--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)
Koppla en Azure privat DNS-zon till det virtuella nätverket så att klienterna kan översätta fildelningens ursprungliga värdnamn till den privata endpointens IP-adress. Följande kommandon använder en zon som redan är kopplad till det virtuella nätverket. Om ingen zon är länkad använder de zonen i det virtuella nätverkets resursgrupp, eller skapar en och länkar den. Dessa steg gäller för båda resursleverantörerna.
# 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 is linked to the virtual network. Use the zone in the
# virtual network's resource group if it exists, or create a new one.
dnsZone=$(az network private-dns zone list \
--resource-group $virtualNetworkResourceGroupName \
--query "[?name == '$dnsZoneName'].id" \
--output tsv)
if [ -z "$dnsZone" ]
then
dnsZone=$(az network private-dns zone create \
--resource-group $virtualNetworkResourceGroupName \
--name $dnsZoneName \
--query "id" --output tsv)
fi
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
Kör kontrollerna från en klient i det virtuella nätverket, eller från ett anslutet nätverk med DNS konfigurerat för att lösa den privata slutpunkten. För skillnader mellan resursleverantörer, se DNS-upplösning. Använd det ursprungliga värdnamnet för att montera sharen, inte privatelink namnet.
Kör följande DNS-uppslagning från PowerShell, kommandoraden eller en terminal på Windows, Linux eller macOS.
Ersätt <storage-account-name> med lämpligt lagringskontonamn:
nslookup <storage-account-name>.file.core.windows.net
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).
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
Använd värdnamnet på fildelningen. På fildelningens Översiktssida , välj JSON View. Under properties, kopiera värdet av 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).
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ör att verifiera DNS-namnupplösningen, hämta värdnamnet med Azure PowerShell och slå sedan upp det från en klient i det virtuella nätverket.
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.File) |
Select-Object -ExpandProperty Host
$storageAccountHostName
På en klient i det virtuella nätverket, kör följande kommando. Ersätt <host-name> med värdnamnet från föregående steg.
Resolve-DnsName -Name "<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.
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
$fileShare.HostName
På en klient i det virtuella nätverket, kör följande kommando. Ersätt <host-name> med värdnamnet från föregående steg.
Resolve-DnsName -Name "<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.
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ör att verifiera DNS-upplösningen, hämta värdnamnet med Azure CLI och slå sedan upp det från en klient i det virtuella nätverket.
httpEndpoint=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "primaryEndpoints.file" --output tsv)
hostName=${httpEndpoint#https://}
hostName=${hostName%/}
echo $hostName
På en klient i det virtuella nätverket, kör följande kommando. Ersätt <host-name> med värdnamnet från föregående steg.
nslookup <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.
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)
echo $hostName
På en klient i det virtuella nätverket, kör följande kommando. Ersätt <host-name> med värdnamnet från föregående steg.
nslookup <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.
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
Du kan inaktivera offentlig nätverksåtkomst eller ha den aktiverad för utvalda nätverk. Dessa konfigurationer är separata. Privata endpoints fortsätter att fungera i båda konfigurationerna.
För klassiska fildelningar, konfigurera allmän åtkomst på lagringskontot. För Microsoft.FileShares, konfigurera den på den enskilda fildelningen.
Klassiska fildelningar kan också använda en nätverkssäkerhetsperimeter, med förbehåll för dess protokollbegränsningar. I Enforced-läge nekar en perimeter trafik genom service-endpoints som inte har en tilldelad IP-adress. Klienter måste använda en privat ändpunkt eller en standardtjänständpunkt.
Inaktivera åtkomst till offentligt nätverk
När du inaktiverar offentlig nätverksåtkomst kan klienter inte ansluta via den publika endpointen, inklusive via service-endpoints. Klienter kan fortfarande ansluta via privata endpoints. Denna inställning begränsar inte utgående trafik från klienterna.
Anmärkning
För klassiska fildelningar kvarstår befintliga undantag för betrodda tjänster och resursinstanser även efter att du inaktiverat offentlig nätverksåtkomst. Gå igenom dessa undantag om du endast har behov av åtkomst via privata endpoints. Se Undantag för Azure-tjänster.
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.
Gå till filresursen där du vill inaktivera offentlig åtkomst. På tjänstmenyn går du till Inställningar och väljer Nätverk. För tillgång till offentliga endpoints, välj Inaktiverat och välj sedan Spara.
För klassiska fildelningar, ställ in -PublicNetworkAccess på Disabled på lagringskontot.
# Use the storage account variables from the beginning of this article.
$publicNetworkAccessParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
PublicNetworkAccess = "Disabled"
ErrorAction = "Stop"
}
Set-AzStorageAccount @publicNetworkAccessParams | Out-Null
Ange -PublicNetworkAccess till Disabled på filresursen.
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$publicNetworkAccessParams = @{
ResourceGroupName = $fileShareResourceGroupName
ResourceName = $fileShareName
PublicNetworkAccess = "Disabled"
}
Update-AzFileShare @publicNetworkAccessParams
För klassiska fildelningar, ställ in --public-network-access på Disabled på lagringskontot.
# This assumes $storageAccountResourceGroupName and $storageAccountName
# are still defined from the beginning of this article.
az storage account update \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--public-network-access Disabled \
--output none
Ange --public-network-access till Disabled på filresursen.
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
För att tillåta klienter från utvalda subnät, behåll offentlig nätverksåtkomst aktiverad, aktivera service-endpoints på dessa subnät och lägg till subnäten i resursens nätverksregler. Du kan använda tjänstslutpunkter med eller utan privata slutpunkter. Subnät kan finnas i andra regioner, prenumerationer och Microsoft Entra-klientorganisationer. För att lägga till ett subnät från en annan tenant, använd PowerShell eller Azure CLI. Information om detta finns i regler för virtuella nätverk.
För SMB- och FileREST-åtkomst kan du också lägga till IP-adressregler. IP-adressregler beviljar inte NFS-åtkomst. För NFS-åtkomst, använd en virtuell nätverksregel. Om lagringskontot ligger i en nätverkssäkerhetsperimeter kan du använda en standardservice-endpoint istället.
Exemplen med PowerShell och CLI förutsätter att offentlig nätverksåtkomst redan är aktiverad. Microsoft.FileShares-exemplen antar också att klientsubnätet redan har Microsoft.Storage tjänstslutpunkten. För att konfigurera den endpointen, se Aktivera service-endpoints på ett subnät.
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 Åtkomst till offentligt nätverk väljer du Hantera.
- Under Omfattning för offentlig nätverksåtkomst, välj Aktiverad för valda nätverk och välj sedan Spara.
- Under Resursinställningar: Virtuella nätverk, IP-adresser och undantag väljer du Hantera.
- Under Virtuella nätverk väljer du Lägg till ett virtuellt nätverk>Lägg till befintligt virtuellt nätverk. Välj det virtuella nätverket och subnäten. Om ett subnät inte har service-endpointen
Microsoft.Storage , välj Aktivera och vänta tills operationen är klar. Välj sedan Lägg till.
- För SMB- eller FileREST-åtkomst, under IPv4-adresser, ange de publika IP-adresser eller intervall du vill tillåta. IP-adressregler beviljar inte NFS-åtkomst.
- Om en tjänsteintegration kräver betrodd tjänståtkomst, välj under Undantag, Tillåt betrodda Microsoft-tjänster att komma åt denna resurs.
- Välj Spara.
För Microsoft. FileShares, följ dessa steg för att begränsa den publika endpointen till specifika nätverk.
- Gå till filresursen där du vill begränsa den offentliga åtkomsten.
- På tjänstmenyn går du till Inställningar och väljer Nätverk.
- Se till att åtkomsten till publika endpoints är inställd på Aktiverad.
- Under Publika endpoint-begränsningar, välj Lägg till ett virtuellt nätverk. Välj det virtuella nätverket och subnäten. Om ett subnät inte har service-endpointen
Microsoft.Storage , välj Aktivera och vänta tills operationen är klar. Välj sedan Lägg till.
- Välj 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>"
$storageAccountParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
ErrorAction = "Stop"
}
$storageAccount = Get-AzStorageAccount @storageAccountParams
$virtualNetworkParams = @{
ResourceGroupName = $restrictToVirtualNetworkResourceGroupName
Name = $restrictToVirtualNetworkName
ErrorAction = "Stop"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
$subnet = $virtualNetwork |
Select-Object -ExpandProperty Subnets |
Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
$errorMessage = "Subnet $subnetName not found in virtual network $restrictToVirtualNetworkName."
Write-Error -Message $errorMessage -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") {
# Change the subnet object directly so the subnet keeps its delegations
# and service endpoint policies.
$storageEndpointParams = @{
TypeName = "Microsoft.Azure.Commands.Network.Models.PSServiceEndpoint"
Property = @{ Service = "Microsoft.Storage" }
}
$storageEndpoint = New-Object @storageEndpointParams
$subnet.ServiceEndpoints = @($subnet.ServiceEndpoints | Where-Object { $_ }) + $storageEndpoint
$virtualNetwork = $virtualNetwork | Set-AzVirtualNetwork -ErrorAction Stop
}
Det sista steget i att begränsa trafiken till lagringskontot är att skapa en virtuell nätverksregel och lägga till den i lagringskontots nätverksregeluppsättning.
$networkRuleParams = @{
VirtualNetworkResourceId = $subnet.Id
ErrorAction = "Stop"
}
$networkRule = $storageAccount | Add-AzStorageAccountNetworkRule @networkRuleParams
$networkRuleSetParams = @{
DefaultAction = "Deny"
VirtualNetworkRule = $networkRule
WarningAction = "SilentlyContinue"
ErrorAction = "Stop"
}
$storageAccount | Update-AzStorageAccountNetworkRuleSet @networkRuleSetParams | Out-Null
Dessa kommandon bevarar befintliga bypass-inställningar. Om en integration kräver betrodd tjänståtkomst, lägg till -Bypass AzureServices i update-kommandot. Parametern ersätter bypass-inställningen, så inkludera eventuella andra bypass-alternativ som din arbetsbelastning fortfarande kräver.
För SMB- eller FileREST-åtkomst från internet kan du också tillåta publika IP-adresser eller intervall. IP-adressregler gäller inte för klienter i samma Azure-region som lagringskontot. För andra begränsningar, se IP-adressregler.
$ipAddressOrRange = "<public-ip-address-or-cidr-range>"
$ipRuleParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
IPAddressOrRange = $ipAddressOrRange
ErrorAction = "Stop"
}
Add-AzStorageAccountNetworkRule @ipRuleParams | Out-Null
Skicka de tillåtna subnätresurs-ID:na till Update-AzFileShare genom att använda -AllowedSubnet. Nätverksregler gäller direkt för fildelningen, så det finns inget lagringskonto att konfigurera. Klientsubnätet måste redan ha Microsoft.Storage tjänsteändpunkten.
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$virtualNetworkParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $virtualNetworkName
}
$subnet = Get-AzVirtualNetwork @virtualNetworkParams |
Select-Object -ExpandProperty Subnets |
Where-Object { $_.Name -eq $subnetName }
$allowedSubnetParams = @{
ResourceGroupName = $fileShareResourceGroupName
ResourceName = $fileShareName
AllowedSubnet = @($subnet.Id)
}
Update-AzFileShare @allowedSubnetParams
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 i att begränsa trafiken till lagringskontot är att skapa en virtuell 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 \
--default-action "Deny" \
--output none
Dessa kommandon bevarar befintliga bypass-inställningar. Om en integration kräver betrodd tjänståtkomst, lägg till --bypass AzureServices i update-kommandot. Alternativet ersätter bypass-inställningen, så inkludera alla andra bypass-alternativ som din arbetsbelastning fortfarande kräver.
För SMB- eller FileREST-åtkomst från internet kan du också tillåta publika IP-adresser eller intervall. IP-adressregler gäller inte för klienter i samma Azure-region som lagringskontot. För andra begränsningar, se IP-adressregler.
ipAddressOrRange="<public-ip-address-or-cidr-range>"
az storage account network-rule add \
--resource-group $storageAccountResourceGroupName \
--account-name $storageAccountName \
--ip-address $ipAddressOrRange \
--output none
Skicka de tillåtna subnätresurs-ID:na till az fileshare update genom att använda --allowed-subnets. Nätverksregler gäller direkt för fildelningen, så det finns inget lagringskonto att konfigurera. Klientsubnätet måste redan ha Microsoft.Storage slutpunkt för tjänsten.
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
Tillåt åtkomst från en standardservice-endpoint
Genom att använda en standard service-endpoint kan klienter i ett subnät nå ett lagringskonto i en nätverkssäkerhetsperimeter via en service-endpoint. En inkommande åtkomstregel i perimeterprofilen tillåter varje subnät som använder service-endpointens IP-adress. Regeln gäller för SMB, NFS och FileREST.
Följande steg skapar en publik IP-adress, tilldelar den subnätets Microsoft.Storage service-endpoint och lägger till en inkommande åtkomstregel för adressen i perimeterprofilen.
Tänk på följande:
- Lagringskontot måste vara kopplat till en nätverkssäkerhetsperimeter. För att skapa en perimeter och associera lagringskontot, se Quickstart: Create a network security perimeter - Azure portal.
- Subnätet måste redan ha tjänsteändpunkten
Microsoft.Storage. För att lägga till det, se Begränsa åtkomst till den publika ändpunkten till specifika nätverk.
- Den publika IP-adressen måste använda Standard-SKU, statisk allokering och IPv4. Den måste vara i samma region som det virtuella nätverket.
- Du kan tilldela samma IP-adress till andra subnät och virtuella nätverk i samma region, inklusive virtuella nätverk i andra prenumerationer i samma Microsoft Entra-klientorganisation.
- Alla tjänsteändpunkter på ett subnät måste använda samma IP-adress.
- Tilldelning eller ändring av IP-adressen kopplar ned aktiva anslutningar från subnätet. Planera ändringen för en underhållsperiod.
- För att tilldela en publik IP-adress till en tjänsteändpunkt behöver du behörigheten
Microsoft.Network/publicIPAddresses/joinServiceEndpointNetworkIdentifier/action . Rollen Network Contributor inkluderar denna behörighet.
- Regler för virtuella nätverk som tillåter subnätet att fortsätta att gälla tills perimeterkopplingen är i Enforced-läge.
- Du kan också lägga till IP-adressen i lagringskontots IP-adressregler istället för en perimeterregel. Utan en perimeter ger en grundläggande tjänstslutpunkt med en virtuell nätverksregel samma åtkomst utan extra kostnad.
För att tillåta åtkomst från en standardservice-endpoint, följ dessa steg. För mer information, se Konfigurera en standardtjänst-endpoint med Azure-portalen.
- I sökrutan högst upp i Azure-portalen, ange publika IP-adresser. Välj Offentliga IP-adresser i sökresultatet.
- Välj + Skapa.
- På fliken Grunder , välj prenumeration, resursgrupp och region för ditt virtuella nätverk. Ange ett namn. För IP-version, välj IPv4. För SKU, välj Standard.
- Välj Granska + skapaoch välj sedan Skapa.
- När distributionen är klar, gå till den nya publika IP-adressen. Kopiera värdet på IP-adressen.
- Gå till det virtuella nätverket som innehåller klientsubnätet. Från servicemenyn, under Inställningar, välj Subnät. Välj undernätet.
- Under Service Endpoints väljer du, för Network identifier subscription, prenumerationen för den publika IP-adressen. För nätverksidentifierare, välj den publika IP-adress som du skapade.
- I tjänstelistan, för Microsoft.Storage, välj Aktivera nätverksidentifierare. Välj Spara.
- Gå till nätverkssäkerhetsperimetern som lagringskontot är kopplat till. Från servicemenyn, under Inställningar, välj Profiler. Välj profilen som lagringskontot är kopplat till.
- Från servicemenyn, under Inställningar, välj regler för inkommande åtkomst. Välj Lägg till.
- För Regelnamn, ange ett namn. För Källtyp, välj IP-adressintervall. För tillåtna källor, ange IP-adressen du kopierade, följt av
/32. Välj Lägg till.
Följande PowerShell-kommandon skapar en publik IP-adress, tilldelar den till subnätets Microsoft.Storage tjänstslutpunkt och lägger till en inkommande åtkomstregel för adressen till perimeterprofilen. Ersätt platshållarvärdena med dina egna värden.
$virtualNetworkResourceGroupName = "<vnet-resource-group-name>"
$virtualNetworkName = "<vnet-name>"
$subnetName = "<subnet-name>"
$publicIpName = "<public-ip-name>"
$perimeterResourceGroupName = "<perimeter-resource-group-name>"
$perimeterName = "<perimeter-name>"
$profileName = "<profile-name>"
$accessRuleName = "<access-rule-name>"
$virtualNetworkParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $virtualNetworkName
ErrorAction = "Stop"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
$subnet = $virtualNetwork.Subnets | Where-Object { $_.Name -eq $subnetName }
if ($null -eq $subnet) {
throw "Subnet '$subnetName' wasn't found in virtual network '$virtualNetworkName'."
}
$storageEndpoint = $subnet.ServiceEndpoints | Where-Object { $_.Service -eq "Microsoft.Storage" }
if ($null -eq $storageEndpoint) {
throw "The subnet doesn't have the Microsoft.Storage service endpoint. Add it before you continue."
}
$publicIpParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $publicIpName
Location = $virtualNetwork.Location
Sku = "Standard"
AllocationMethod = "Static"
IpAddressVersion = "IPv4"
ErrorAction = "Stop"
}
$publicIp = New-AzPublicIpAddress @publicIpParams
$networkIdentifierParams = @{
TypeName = "Microsoft.Azure.Commands.Network.Models.PSResourceId"
Property = @{ Id = $publicIp.Id }
}
$storageEndpoint.NetworkIdentifier = New-Object @networkIdentifierParams
$virtualNetwork | Set-AzVirtualNetwork -ErrorAction Stop | Out-Null
$accessRuleParams = @{
ResourceGroupName = $perimeterResourceGroupName
SecurityPerimeterName = $perimeterName
ProfileName = $profileName
Name = $accessRuleName
Direction = "Inbound"
AddressPrefix = @("$($publicIp.IpAddress)/32")
ErrorAction = "Stop"
}
New-AzNetworkSecurityPerimeterAccessRule @accessRuleParams | Out-Null
Följande CLI-kommandon skapar en publik IP-adress, tilldelar den subnätets Microsoft.Storage tjänstslutpunkt och lägger till en inkommande åtkomstregel för adressen till perimeterprofilen. Ersätt platshållarvärdena med dina egna värden. Kommandona az network perimeter behöver tillägget nsp för Azure CLI. Installera det genom att köra az extension add --name nsp.
virtualNetworkResourceGroupName="<vnet-resource-group-name>"
virtualNetworkName="<vnet-name>"
subnetName="<subnet-name>"
publicIpName="<public-ip-name>"
perimeterResourceGroupName="<perimeter-resource-group-name>"
perimeterName="<perimeter-name>"
profileName="<profile-name>"
accessRuleName="<access-rule-name>"
storageEndpointIndex=$(az network vnet subnet show \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--query "serviceEndpoints[].service" \
--output tsv | \
grep --line-number --line-regexp --fixed-strings "Microsoft.Storage" | \
cut -d ":" -f 1)
if [ -z "$storageEndpointIndex" ]; then
echo "The subnet doesn't have the Microsoft.Storage service endpoint. Add it before you continue." >&2
else
location=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "location" \
--output tsv) &&
az network public-ip create \
--resource-group $virtualNetworkResourceGroupName \
--name $publicIpName \
--location $location \
--sku Standard \
--allocation-method Static \
--version IPv4 \
--output none &&
publicIpId=$(az network public-ip show \
--resource-group $virtualNetworkResourceGroupName \
--name $publicIpName \
--query "id" \
--output tsv) &&
publicIpAddress=$(az network public-ip show \
--resource-group $virtualNetworkResourceGroupName \
--name $publicIpName \
--query "ipAddress" \
--output tsv) &&
az network vnet subnet update \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--set "serviceEndpoints[$((storageEndpointIndex - 1))].networkIdentifier={\"id\":\"$publicIpId\"}" \
--output none &&
az network perimeter profile access-rule create \
--resource-group $perimeterResourceGroupName \
--perimeter-name $perimeterName \
--profile-name $profileName \
--access-rule-name $accessRuleName \
--direction Inbound \
--address-prefixes "$publicIpAddress/32" \
--output none
fi
Begränsa utgående åtkomst till specifika lagringskonton
Nätverksregler för en fildelning styr inkommande åtkomst. De begränsar inte vilka andra lagringsresurser klienter kan komma åt. För klassiska fildelningar kan du använda en service-endpoint-policy för att begränsa vilka lagringskonton klienter i ett subnät kan nå via service-endpoints. Principen filtrerar destinationer för trafik som kringgår Azure Firewall och nätverksvirtuella enheter. Den begränsar inte andra utgående vägar och ersätter inte destinationens nätverksregler och auktorisationskrav. För mer information, se Begränsa utgående åtkomst med tjänsteendpoint-policys.
Important
Tjänsteendpoint-policyer stöder inte Microsoft. FileShares fildelningar. En policy på klientsubnätet blockerar åtkomst till dessa fildelningar via service-endpoints, även om den tillåter den prenumeration eller resursgrupp som de tillhör. Denna begränsning gäller även subnät som har åtkomst till både classic- och Microsoft.FileShares-fildelningar. Klienter i det subnätet måste använda en privat endpoint för att komma åt Microsoft.FileShares-fildelningar.
En tjänsteändpunktspolicy definierar de tillåtna lagringsdestinationerna för klienter i det tillhörande subnätet. Den blockerar dessa klienter från att komma åt andra lagringskonton via service-endpoints. Tänk på följande:
- Lägg till alla lagringskonton som klienter i subnätet använder innan du kopplar policyn till subnätet. Denna lista inkluderar lagringskonton som andra arbetsbelastningar i subnätet använder.
- Tjänsteendpoint-policyn måste vara i samma region och prenumeration som det virtuella nätverket.
- En policy kan endast innehålla en policydefinition för tjänsten
Microsoft.Storage . För att tillåta fler lagringskonton, lägg till deras resurs-ID:n i samma policydefinition. Du kan också tillåta alla lagringskonton i en resursgrupp eller prenumeration.
- Efter att du kopplar en policy till ett subnät gäller policyn för trafik till lagringskonton i alla regioner.
- Dessa steg antar att subnätet inte har några tjänsteendpoint-policys. Om policyer redan är kopplade, granska och uppdatera dessa policyer istället för att ersätta deras associationer. PowerShell- och CLI-exemplen avbryts om de hittar befintliga associationer.
För att skapa en serviceendpoint-policy och associera den med ett subnät, följ dessa steg. För detaljerade steg, se Skapa och associera tjänsteendpoint-policys.
- I sökrutan högst upp i Azure-portalen, ange Service endpoint policy. Välj Tjänstslutpunktsprinciper i sökresultaten.
- Välj + Skapa.
- På fliken Grunder , välj prenumeration och region för ditt virtuella nätverk. Välj en resursgrupp och ange ett namn för policyn.
- Välj Nästa: Principdefinitioner.
- Välj + Lägg till en resurs. För Service, välj Microsoft.Storage. För Scope, välj Ett konto, och välj sedan lagringskontot som innehåller dina fildelningar. Välj Lägg till. Upprepa detta steg för varje lagringskonto som klienter i subnätet använder.
- Välj Granska + skapa, och välj sedan Skapa.
- Gå till den nya service-endpoint-policyn. Från servicemenyn, under Inställningar, välj Associerade subnät.
- Välj Redigera subnätsassociation, välj det virtuella nätverket och subnätet och välj sedan Tillämpa.
Följande PowerShell-kommandon skapar en tjänsteendpoint-policy och kopplar den till ett subnät. Policyn begränsar klientåtkomst från det subnätet till ett lagringskonto via service-endpointen. Subnätet måste redan ha tjänsteändpunkten Microsoft.Storage. Ersätt platshållarvärdena med dina egna värden.
$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>"
$storageAccountParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
ErrorAction = "Stop"
}
$storageAccount = Get-AzStorageAccount @storageAccountParams
$virtualNetworkParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $virtualNetworkName
ErrorAction = "Stop"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
$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.
$policyDefinitionParams = @{
Name = "allowed-storage-accounts"
Service = "Microsoft.Storage"
ServiceResource = @($storageAccount.Id)
ErrorAction = "Stop"
}
$policyDefinition = New-AzServiceEndpointPolicyDefinition @policyDefinitionParams
$policyParams = @{
ResourceGroupName = $virtualNetworkResourceGroupName
Name = $policyName
Location = $virtualNetwork.Location
ServiceEndpointPolicyDefinition = $policyDefinition
ErrorAction = "Stop"
}
$policy = New-AzServiceEndpointPolicy @policyParams
$subnet.ServiceEndpointPolicies = @($policy)
$virtualNetwork | Set-AzVirtualNetwork -ErrorAction Stop | Out-Null
Följande CLI-kommandon skapar en tjänsteendpoint-policy och kopplar den till ett subnät. Policyn begränsar klientåtkomst från det subnätet till ett lagringskonto via service-endpointen. Subnätet måste redan ha tjänsteändpunkten Microsoft.Storage. Ersätt platshållarvärdena med dina egna värden.
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)
if [ -n "$existingPolicyIds" ]; then
echo "The subnet already has service endpoint policies. Review and update them before changing the configuration." >&2
else
storageAccountId=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "id" --output tsv) &&
location=$(az network vnet show \
--resource-group $virtualNetworkResourceGroupName \
--name $virtualNetworkName \
--query "location" --output tsv) &&
az network service-endpoint policy create \
--resource-group $virtualNetworkResourceGroupName \
--name $policyName \
--location $location \
--output none &&
# 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 &&
az network vnet subnet update \
--resource-group $virtualNetworkResourceGroupName \
--vnet-name $virtualNetworkName \
--name $subnetName \
--service-endpoint-policy $policyName \
--output none
fi
För att komma åt en Microsoft. FileShares-fildelning från ett subnät som har en tjänsteendpoint-policy, skapa en privat endpoint för fildelningen. Tjänsteendpoint-policyer gäller inte för trafik som går genom en privat endpoint.
Routingpreferenser styr hur trafik från klienter utanför Azure når den publika ändpunkten. Den finns endast för klassiska HDD-fildelningar som använder pay-as-you-go-faktureringsmodellen i lagringskonton av typen StorageV2. För begrepp, se Nätverksroutning för offentlig slutpunkt.
Important
Använd inte internetrouting för Azure Files. Internetrouting stöder inte služba Active Directory (AD) domänanslutningsscenarier eller Azure File Sync. Behåll standardinställningen, Microsoft-routing.
För att kontrollera routningspreferensen och ställa in den till Microsoft routing, följ dessa steg.
- Gå till lagringskontot.
- Från servicemenyn, under Security + networking, välj Networking.
- Välj fliken Nätverksdirigering.
- Under Routningspreferens ser du till att Microsoft nätverksrouting är vald.
- Om du ändrade inställningen, välj Spara.
För att ställa in routningspreferensen till Microsoft routing, kör följande kommando. Ersätt platshållarvärdena med dina egna värden.
$params = @{
ResourceGroupName = "<resource-group>"
Name = "<storage-account-name>"
RoutingChoice = "MicrosoftRouting"
}
Set-AzStorageAccount @params
För att ställa in routningspreferensen till Microsoft routing, kör följande kommando. Ersätt platshållarvärdena med dina egna värden.
az storage account update \
--resource-group <resource-group> \
--name <storage-account-name> \
--routing-choice MicrosoftRouting
Microsoft.FileShares stöder inte routningspreferens.
Relaterat innehåll