Cet article explique comment créer des points de terminaison privés et restreindre l’accès au point de terminaison public pour les partages de fichiers Azure. Pour les partages de fichiers classiques (Microsoft.Storage), vous configurez le compte de stockage. Pour les partages de fichiers créés avec Microsoft.FileShares, vous configurez chaque partage de fichiers. Les étapes classiques du partage de fichiers s’appliquent également aux comptes de stockage utilisés par Azure File Sync. Pour les besoins en réseau Azure File Sync, voir Configurer les paramètres du proxy et du pare-feu Azure File Sync.
Pour choisir entre les points de terminaison privés et les règles réseau, consultez considérations relatives à la mise en réseau Azure Files.
Prérequis
Créer un Private Endpoint
Lorsque vous créez un point de terminaison privé pour vos partages de fichiers, vous déployez les ressources Azure suivantes :
-
Point de terminaison privé : ressource Azure qui représente le point de terminaison privé. Vous pouvez considérer cette ressource comme un connecteur entre une ressource cible et une interface réseau.
-
Interface réseau (NIC) : interface réseau qui gère une adresse IP privée au sein du réseau virtuel et du sous-réseau spécifiés. Cette ressource est la même que celle que vous déployez lorsque vous déployez une machine virtuelle. Toutefois, au lieu de l’affecter à une machine virtuelle, le point de terminaison privé le possède.
-
Une zone privée du Système de Noms de Domaine (DNS) : Ces étapes créent ou réutilisent une zone DNS privée Azure liée au réseau virtuel et ajoutent un enregistrement A pour le point d’accès privé. Vous pouvez utiliser votre propre infrastructure DNS à la place, à condition que les clients résolvent le nom d’hôte du partage de fichiers dans l’adresse IP du point de terminaison privé.
Remarque
Dans Azure public cloud, les deux fournisseurs de ressources utilisent la zone privatelink.file.core.windows.netDNS privée . Leurs noms d’hôtes clients diffèrent ; voir Vérifier la connectivité pour des exemples. Pour les partages de fichiers classiques dans d’autres clouds Azure, utilisez le suffixe point de terminaison de stockage pour ce cloud.
Le processus de création d'un point de terminaison privé diffère légèrement selon que vous utilisez des partages de fichiers classiques ou Microsoft.FileShares. Pour les partages de fichiers classiques, vous créez un point de terminaison privé pour le compte de stockage contenant les partages de fichiers. Pour les partages de fichiers créés avec Microsoft.FileShares, vous créez un point de terminaison privé pour le partage de fichiers lui-même.
Beaucoup d’étapes sont identiques pour les deux fournisseurs de ressources. Seules la référence de la ressource, l’identifiant du groupe et le nom de l’enregistrement DNS diffèrent, comme indiqué dans le tableau suivant.
|
Partages de fichiers classiques (Microsoft.Storage) |
Partages de fichiers (Microsoft.FileShares) |
|
Cible de point de terminaison privé |
Compte de stockage |
Partage de fichiers |
|
Cmdlet de ressource |
Get-AzStorageAccount |
Get-AzFileShare |
|
ID de groupe (sous-ressource) |
file |
FileShare |
|
Nom d’enregistrement DNS A |
Nom du compte de stockage |
Préfixe du nom d’hôte (par exemple, fs-xxxxxxxxxxxxxxxxx) |
Accédez au groupe de ressources dans lequel vous souhaitez créer un point de terminaison privé. Sélectionnez + Créer et rechercher un point de terminaison privé. Sélectionnez la ressource de point de terminaison privé, puis sélectionnez Créer.
L’Assistant comprend plusieurs pages dont vous devez suivre les instructions.
Sur la page Basiques , sélectionnez l’abonnement, le groupe de ressources, le nom, le nom de l’interface réseau et la région pour votre point de terminaison privé. Le point de terminaison privé doit se trouver dans la même région que son réseau virtuel. Sélectionnez ensuite Suivant : Ressource .
Sur la page Ressources, sélectionnez Microsoft. Storage/storageAccounts depuis le menu déroulant pour Type de ressource.
Pour Ressource, sélectionnez le compte de stockage spécifique auquel vous souhaitez vous connecter. Pour la sous-ressource cible, sélectionnez file. Sélectionnez ensuite Suivant : réseau virtuel.
Sur la page Ressources, sélectionnez Microsoft. FileShares/fileShares depuis le menu déroulant pour le type de ressource.
Pour Ressource, sélectionnez le partage de fichiers spécifique auquel vous souhaitez vous connecter. La sous-ressource cible se remplit automatiquement avec FileShare. Sélectionnez ensuite Suivant : réseau virtuel.
La page Réseau virtuel vous permet de sélectionner le virtual network et le sous-réseau spécifiques auquel vous souhaitez ajouter votre point de terminaison privé. Sélectionnez l’allocation d’adresse IP dynamique ou statique pour le nouveau point de terminaison privé. Si vous sélectionnez statique, vous devez également fournir un nom et une adresse IP privée. Si vous le souhaitez, vous pouvez également spécifier un groupe de sécurité d’application. Quand vous avez terminé, cliquez sur Suivant : DNS.
La page DNS contient les informations permettant d’intégrer votre point de terminaison privé à une zone DNS privée. Vérifiez que l’abonnement et le groupe de ressources sont corrects, puis sélectionnez Suivant : Balises.
Vous pouvez éventuellement appliquer des étiquettes pour classer vos ressources, telles que l’application du nom Environnement et de la valeur Test à toutes les ressources de test. Saisissez n’importe quelle paire nom/valeur, puis sélectionnez Suivant : Réviser + créer.
Sélectionnez Créer pour créer le point de terminaison privé.
Pour créer un point de terminaison privé, commencez par obtenir une référence à votre compte de stockage ou à votre partage de fichiers et au sous-réseau de réseau virtuel dans lequel vous souhaitez ajouter le point de terminaison privé. Remplacez les valeurs d’espace réservé dans le code suivant par vos propres valeurs.
Obtenez une référence au compte de stockage :
$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
Obtenez une référence au partage de fichiers :
$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
Obtenez des références au réseau virtuel et au sous-réseau :
$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
}
Pour créer un point de terminaison privé, vous devez créer une connexion de service de liaison privée. La connexion au service sous forme de liaison privée est une entrée pour la création du point de terminaison privé.
# 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
Reliez une zone DNS privée Azure au réseau virtuel afin que les clients résolvent le nom d’hôte d’origine du partage de fichiers dans l’adresse IP du point de terminaison privé. Les commandes suivantes utilisent une zone déjà liée au réseau virtuel. Si aucune n’est liée, la zone du groupe de ressources du réseau virtuel est utilisée, ou une zone est créée et liée. Ces étapes s’appliquent aux deux fournisseurs de ressources.
# 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
}
Maintenant que vous avez une référence à la zone DNS privée, créez un enregistrement A.
$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
Pour créer un point de terminaison privé, commencez par obtenir une référence à votre compte de stockage ou partage de fichiers, ainsi que le sous-réseau de réseau virtuel dans lequel vous souhaitez ajouter le point de terminaison privé. Remplacez les valeurs d’espace réservé dans les étapes suivantes par vos propres valeurs.
Obtenez une référence au compte de stockage :
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
Obtenez une référence au partage de fichiers :
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
Après avoir défini les variables communes, les étapes restantes sont les mêmes pour les deux fournisseurs de ressources. Obtenez des références au réseau virtuel et au sous-réseau :
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)
Pour créer un point de terminaison privé, assurez-vous que la politique réseau du point de terminaison privé du sous-réseau est désactivée, puis créez le point de terminaison privé avec 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)
Reliez une zone DNS privée Azure au réseau virtuel afin que les clients résolvent le nom d’hôte d’origine du partage de fichiers dans l’adresse IP du point de terminaison privé. Les commandes suivantes utilisent une zone déjà liée au réseau virtuel. Si aucune n’est liée, ils utilisent la zone dans le groupe de ressources du réseau virtuel, ou en créent une, et la lient. Ces étapes s’appliquent aux deux fournisseurs de ressources.
# 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
Maintenant que vous avez une référence à la zone DNS privée, créez un enregistrement A.
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
Vérifier la connectivité
Effectuez les vérifications depuis un client dans le réseau virtuel, ou depuis un réseau connecté avec le DNS configuré pour résoudre le point de terminaison privé. Pour les différences entre les fournisseurs de ressources, voir résolution DNS. Utilisez le nom d’hôte d’origine pour monter le partage, et non le nom privatelink.
Effectuez la recherche DNS suivante depuis PowerShell, la ligne de commande ou un terminal sous Windows, Linux ou macOS.
Remplacez <storage-account-name> par le nom approprié du compte de stockage :
nslookup <storage-account-name>.file.core.windows.net
Si elle réussit, vous voyez la sortie similaire à la suivante, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel (sortie indiquée pour 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
Utilisez le nom d’hôte du partage de fichiers. Sur la page d’aperçu du partage de fichiers, sélectionnez Vue JSON. Sous properties, copiez la valeur de hostName. Le format ressemble à fs-xxxxxxxxxxxxxxxxx.xx.file.storage.azure.net.
nslookup <file-share-host-name>
Si elle réussit, vous voyez la sortie similaire à la suivante, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel (sortie indiquée pour 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
Pour vérifier la résolution DNS, obtenez le nom d’hôte avec Azure PowerShell, puis recherchez-le depuis un client du réseau virtuel.
$storageAccountHostName = [System.Uri]::new($storageAccount.PrimaryEndpoints.File) |
Select-Object -ExpandProperty Host
$storageAccountHostName
Sur un client dans le réseau virtuel, exécutez la commande suivante. Remplacez <host-name> par le nom d’hôte de l’étape précédente.
Resolve-DnsName -Name "<host-name>"
Si elle réussit, vous voyez la sortie similaire à ce qui suit, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel.
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
Sur un client dans le réseau virtuel, exécutez la commande suivante. Remplacez <host-name> par le nom d’hôte de l’étape précédente.
Resolve-DnsName -Name "<host-name>"
Si elle réussit, vous voyez la sortie similaire à ce qui suit, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel.
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
Pour vérifier la résolution DNS, obtenez le nom de l’hôte avec la interface Azure CLI, puis cherchez-le auprès d’un client dans le réseau virtuel.
httpEndpoint=$(az storage account show \
--resource-group $storageAccountResourceGroupName \
--name $storageAccountName \
--query "primaryEndpoints.file" --output tsv)
hostName=${httpEndpoint#https://}
hostName=${hostName%/}
echo $hostName
Sur un client dans le réseau virtuel, exécutez la commande suivante. Remplacez <host-name> par le nom d’hôte de l’étape précédente.
nslookup <host-name>
Si elle réussit, vous voyez la sortie similaire à ce qui suit, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel.
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
Sur un client dans le réseau virtuel, exécutez la commande suivante. Remplacez <host-name> par le nom d’hôte de l’étape précédente.
nslookup <host-name>
Si elle réussit, vous voyez la sortie similaire à ce qui suit, où 192.168.0.5 est l’adresse IP privée du point de terminaison privé dans votre réseau virtuel.
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
Restreindre l’accès au point de terminaison public
Vous pouvez désactiver l’accès au réseau public ou le garder activé pour certains réseaux. Ces configurations sont distinctes. Les points de terminaison privés continuent de fonctionner dans les deux configurations.
Pour les partages de fichiers classiques, configurez l’accès public sur le compte de stockage. Pour Microsoft.FileShares, configurez-le sur le partage de fichiers individuel.
Les partages de fichiers classiques peuvent également utiliser un périmètre de sécurité réseau, sous réserve de ses limitations de protocole. En mode forcé, un périmètre bloque le trafic via les points de terminaison de service qui n’ont pas d’adresse IP assignée. Les clients doivent utiliser un point de terminaison privé ou un point de terminaison de service standard.
Désactiver l’accès au réseau public
Lorsque vous désactivez l’accès au réseau public, les clients ne peuvent pas se connecter via le point de terminaison public, y compris via les points de terminaison de service. Les clients peuvent toujours se connecter via des points de terminaison privés. Ce paramètre ne limite pas le trafic sortant des clients.
Remarque
Pour les partages de fichiers classiques, les exceptions existantes pour les services de confiance et les instances de ressources restent en vigueur après avoir désactivé l’accès au réseau public. Examinez ces exceptions si vous avez besoin d’un accès uniquement via des points de terminaison privés. Voir Exceptions pour les services Azure.
Pour désactiver l’accès public au réseau pour les partages de fichiers classiques, suivez ces étapes :
- Allez au compte de stockage où vous souhaitez restreindre tout accès entrant au point de terminaison public.
- Dans le menu du service, sous Sécurité + réseau, sélectionnez Mise en réseau.
- Sous Accès au réseau public, sélectionnez Gérer.
- Sélectionnez Désactiver, puis sélectionnez Continuer.
- Cliquez sur Enregistrer.
Accédez au partage de fichiers dans lequel vous souhaitez désactiver l’accès public. Dans le menu du service, sous Paramètres, sélectionnez Mise en réseau. Pour l’accès aux points de terminaison publics, sélectionnez Désactivé, puis sélectionnez Enregistrer.
Pour les partages de fichiers classiques, définissez -PublicNetworkAccess sur le compte de stockage Disabled.
# 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
Définissez -PublicNetworkAccess sur Disabled sur le partage de fichiers.
$fileShareResourceGroupName = "<resource-group-name>"
$fileShareName = "<file-share-name>"
$publicNetworkAccessParams = @{
ResourceGroupName = $fileShareResourceGroupName
ResourceName = $fileShareName
PublicNetworkAccess = "Disabled"
}
Update-AzFileShare @publicNetworkAccessParams
Pour les partages de fichiers classiques, définissez --public-network-access sur le compte de stockage Disabled.
# 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
Définissez --public-network-access sur Disabled sur le partage de fichiers.
fileShareResourceGroupName="<resource-group-name>"
fileShareName="<file-share-name>"
az fileshare update \
--name $fileShareName \
--resource-group $fileShareResourceGroupName \
--public-network-access Disabled
Restreindre l’accès au point de terminaison public à des réseaux spécifiques
Pour permettre aux clients de sous-réseaux sélectionnés, gardez l’accès public au réseau activé, activez les points de terminaison de service sur ces sous-réseaux, et ajoutez les sous-réseaux aux règles réseau de la ressource. Vous pouvez utiliser des terminaux de service avec ou sans points privés. Les sous-réseaux peuvent être dans d’autres régions, des abonnements et des locataires Entra Microsoft. Pour ajouter un sous-réseau d’un autre locataire, utilisez PowerShell ou l’interface Azure CLI. Pour des considérations, voir Règles du réseau virtuel.
Pour l’accès SMB et FileREST, vous pouvez également ajouter des règles d’adresse IP. Les règles d’adresse IP n’accordent pas l’accès NFS. Pour l’accès NFS, utilisez une règle de réseau virtuel. Si le compte de stockage est dans un périmètre de sécurité réseau, vous pouvez utiliser un point de terminaison de service standard à la place.
Les exemples de PowerShell et de CLI supposent que l’accès public au réseau est déjà activé. Les exemples de Microsoft. FileShares supposent également que le sous-réseau client possède déjà le Microsoft.Storage point de terminaison du service. Pour configurer ce point de terminaison, voir Activer les points de terminaison de service sur un sous-réseau.
Pour les partages de fichiers classiques, suivez ces étapes pour restreindre le point public à des réseaux spécifiques.
- Allez sur le compte de stockage où vous souhaitez restreindre le point public à des réseaux spécifiques.
- Dans le menu du service, sous Sécurité + réseau, sélectionnez Mise en réseau.
- Sous Accès au réseau public, sélectionnez Gérer.
- Sous Étendue de l’accès au réseau public, sélectionnez Activé à partir des réseaux sélectionnés, puis sélectionnez Enregistrer.
-
Sous Paramètres des ressources : Réseaux virtuels, adresses IP et exceptions, sélectionnez Gérer.
- Dans la section Réseaux virtuels, sélectionnez Ajouter un réseau virtuel> ou Ajouter un réseau virtuel existant. Sélectionnez le réseau virtuel et les sous-réseaux. Si un sous-réseau n'a pas le
Microsoft.Storage point de terminaison du service, sélectionnez Activer et attendez la fin de l'opération. Ensuite, cliquez sur Ajouter.
- Pour l’accès SMB ou FileREST, sous Adresses IPv4, saisissez les adresses IP publiques ou les plages que vous souhaitez autoriser. Les règles d’adresse IP n’accordent pas l’accès NFS.
- Si une intégration de service nécessite un accès approuvé aux services, sous Exceptions, sélectionnez Autoriser les services Microsoft approuvés à accéder à cette ressource.
- Cliquez sur Enregistrer.
Pour Microsoft.FileShares, suivez ces étapes pour restreindre le point de terminaison public à des réseaux spécifiques.
- Accédez au partage de fichiers dans lequel vous souhaitez restreindre l’accès public.
- Dans le menu du service, sous Paramètres, sélectionnez Mise en réseau.
- Assurez-vous que l’accès aux points de terminaison publics est réglé sur Activé.
- Dans la section Restrictions du point de terminaison public, sélectionnez Ajouter un réseau virtuel. Sélectionnez le réseau virtuel et les sous-réseaux. Si un sous-réseau n'a pas le
Microsoft.Storage point de terminaison du service, sélectionnez Activer et attendez la fin de l'opération. Ensuite, cliquez sur Ajouter.
- Cliquez sur Enregistrer.
Pour les partages de fichiers classiques, limitez l’accès au point de terminaison public du compte de stockage à des réseaux virtuels spécifiques à l’aide de points de terminaison de service. Tout d’abord, collectez des informations sur le compte de stockage et le réseau virtuel. Remplacez les valeurs d’espace réservé dans les étapes suivantes par vos propres valeurs.
$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
}
Pour autoriser le trafic à partir du réseau virtuel, l'infrastructure réseau Azure doit exposer le Microsoft.Storage point de terminaison de service au sous-réseau du réseau virtuel. Les commandes PowerShell suivantes ajoutent le point de terminaison de service Microsoft.Storage au sous-réseau s'il n'y est pas déjà.
$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
}
La dernière étape pour restreindre le trafic vers le compte de stockage consiste à créer une règle de réseau virtuel et à l’ajouter à l’ensemble de règles réseau du compte de stockage.
$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
Ces commandes préservent les paramètres de contournement existants. Si une intégration nécessite un accès à un service de confiance, ajoutez -Bypass AzureServices à la commande update. Le paramètre remplace le paramètre de contournement, donc incluez toutes les autres options de contournement dont votre charge de travail a encore besoin.
Pour l’accès SMB ou FileREST depuis Internet, vous pouvez également autoriser des adresses IP publiques ou des plages. Les règles d'adresse IP ne s'appliquent pas aux clients dans la même région Azure que le compte de stockage. Pour d’autres restrictions, voir les règles d’adresse IP.
$ipAddressOrRange = "<public-ip-address-or-cidr-range>"
$ipRuleParams = @{
ResourceGroupName = $storageAccountResourceGroupName
Name = $storageAccountName
IPAddressOrRange = $ipAddressOrRange
ErrorAction = "Stop"
}
Add-AzStorageAccountNetworkRule @ipRuleParams | Out-Null
Passez les identifiants de ressources de sous-réseau autorisés à Update-AzFileShare en utilisant -AllowedSubnet. Les règles réseau s’appliquent directement au partage de fichiers, donc il n’y a pas de compte de stockage à configurer. Le sous-réseau client doit déjà avoir le Microsoft.Storage point de terminaison du service.
$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
Pour les partages de fichiers classiques, limitez l’accès au point de terminaison public du compte de stockage à des réseaux virtuels spécifiques à l’aide de points de terminaison de service. Tout d’abord, collectez des informations sur le compte de stockage et le réseau virtuel. Remplacez les valeurs d’espace réservé dans les étapes suivantes par vos propres valeurs.
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)
Pour autoriser le trafic à partir du réseau virtuel, l'infrastructure réseau Azure doit exposer le Microsoft.Storage point de terminaison de service au sous-réseau du réseau virtuel. Les commandes CLI suivantes ajoutent le point de terminaison de service Microsoft.Storage au sous-réseau s'il n'y est pas déjà.
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
La dernière étape pour restreindre le trafic vers le compte de stockage consiste à créer une règle réseau virtuelle et à l’ajouter à l’ensemble de règles réseau du compte de stockage.
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
Ces commandes préservent les paramètres de contournement existants. Si une intégration nécessite un accès à un service de confiance, ajoutez --bypass AzureServices à la commande update. L'option remplace le paramètre de contournement, donc incluez toutes les autres options de contournement dont votre charge de travail a encore besoin.
Pour l’accès SMB ou FileREST depuis Internet, vous pouvez également autoriser des adresses IP publiques ou des plages. Les règles d'adresse IP ne s'appliquent pas aux clients dans la même région Azure que le compte de stockage. Pour d’autres restrictions, voir les règles d’adresse IP.
ipAddressOrRange="<public-ip-address-or-cidr-range>"
az storage account network-rule add \
--resource-group $storageAccountResourceGroupName \
--account-name $storageAccountName \
--ip-address $ipAddressOrRange \
--output none
Passez les identifiants de ressources de sous-réseau autorisés à az fileshare update en utilisant --allowed-subnets. Les règles réseau s’appliquent directement au partage de fichiers, donc il n’y a pas de compte de stockage à configurer. Le sous-réseau client doit déjà avoir le Microsoft.Storage point de terminaison du service.
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
Autoriser l’accès depuis un point de terminaison de service standard
En utilisant un point de terminaison de service standard, les clients dans un sous-réseau peuvent accéder à un compte de stockage dans un périmètre de sécurité réseau via un point de terminaison de service. Une règle d’accès entrant dans le profil périmétrique permet à chaque sous-réseau utilisant l’adresse IP du point de terminaison du service d’y accéder. La règle s’applique aux SMB, NFS et FileREST.
Les étapes suivantes créent une adresse IP publique, l'assignent au point de terminaison du service du sous-réseau Microsoft.Storage, et ajoutent une règle d'accès entrante pour l'adresse au profil périmétrique.
Gardez à l’esprit les points suivants :
- Le compte de stockage doit être associé à un périmètre de sécurité réseau. Pour créer un périmètre et associer le compte de stockage, voir Quickstart : Créer un périmètre de sécurité réseau - portail Azure.
- Le sous-réseau doit déjà avoir le
Microsoft.Storage point de terminaison du service. Pour l’ajouter, voir Restreindre l’accès au point de terminaison public à des réseaux spécifiques.
- L’adresse IP publique doit utiliser le SKU standard, l’allocation statique et IPv4. Il doit se trouver dans la même région que le réseau virtuel.
- Vous pouvez attribuer la même adresse IP à d’autres sous-réseaux et réseaux virtuels dans la même région, y compris des réseaux virtuels dans d’autres abonnements dans le même locataire Microsoft Entra.
- Tous les points de terminaison de service sur un sous-réseau doivent utiliser la même adresse IP.
- Attribuer ou modifier l’adresse IP réinitialise les connexions actives provenant du sous-réseau. Planifiez la modification pour une fenêtre de maintenance.
- Pour attribuer une adresse IP publique à un point de terminaison de service, il vous faut la
Microsoft.Network/publicIPAddresses/joinServiceEndpointNetworkIdentifier/action permission. Le rôle de Contributeur Réseau inclut cette autorisation.
- Les règles du réseau virtuel qui autorisent le sous-réseau continuent de s’appliquer jusqu’à ce que l’association du périmètre soit en mode Forcé.
- Vous pouvez aussi ajouter l’adresse IP aux règles d’adresse IP du compte de stockage au lieu d’une règle périmétrique. Sans périmètre, un point de terminaison de service de base avec une règle réseau virtuel offre le même accès sans frais supplémentaires.
Pour permettre l’accès depuis un point de terminaison de service standard, suivez ces étapes. Pour plus d’informations, voir Configurer un point de terminaison de service standard via le portail Azure.
- Dans la barre de recherche en haut du portail Azure, saisissez Adresses IP publiques. Sélectionnez Adresses IP publique dans les résultats de la recherche.
- Sélectionnez + Créer.
- Dans l’onglet Notions de base, sélectionnez l’abonnement, le groupe de ressources et la région de votre réseau virtuel. Entrez un nom. Pour la version IP, sélectionnez IPv4. Pour le SKU, sélectionnez Standard.
- Sélectionnez Vérifier + créer, puis sélectionnez Créer.
- Après le déploiement, allez vers la nouvelle adresse IP publique. Copiez la valeur de l’adresse IP.
- Allez sur le réseau virtuel qui contient le sous-réseau client. Dans le menu service, dans Paramètres, sélectionnez Sous-réseaux. Sélectionnez le sous-réseau.
-
Sous Points de terminaison de service, pour l’abonnement de l’identifiant réseau, sélectionnez l’abonnement de l’adresse IP publique. Pour l’identifiant réseau, sélectionnez l’adresse IP publique que vous avez créée.
- Dans la liste des Services, pour Microsoft.Storage, sélectionnez Activer l’identifiant réseau. Cliquez sur Enregistrer.
- Rendez-vous sur le périmètre de sécurité réseau auquel le compte de stockage est associé. Depuis le menu service, dans Paramètres, sélectionnez Profils. Sélectionnez le profil auquel le compte de stockage est associé.
- Depuis le menu service, dans Paramètres, sélectionnez Règles d’accès entrantes. Cliquez sur Ajouter.
- Pour « Nom de la règle », saisissez un nom. Pour le type de source, sélectionnez les plages d’adresses IP.
Pour les sources autorisées, saisissez l’adresse IP que vous avez copiée, suivie de
/32. Cliquez sur Ajouter.
Les commandes PowerShell suivantes créent une adresse IP publique, l'assignent au point de terminaison du service du sous-réseau Microsoft.Storage, et ajoutent une règle d'accès entrante pour l'adresse au profil périmétrique. Remplacez les valeurs des espaces réservés par vos propres valeurs.
$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
Les commandes CLI suivantes créent une adresse IP publique, l'assignent au point de terminaison du service du sous-réseau Microsoft.Storage, et ajoutent une règle d'accès entrante pour l'adresse au profil périmétrique. Remplacez les valeurs des espaces réservés par vos propres valeurs. Les az network perimeter commandes nécessitent l’extension nsp pour Azure CLI. Pour l’installer, exécutez 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
Microsoft. FileShares ne prend pas en charge les périmètres de sécurité réseau. Les clients dans un sous-réseau disposant d'un point de terminaison de service standard peuvent toujours accéder à un partage de fichiers Microsoft.FileShares si le sous-réseau est dans les sous-réseaux autorisés du partage de fichiers. Pour les étapes, voir Restreindre l’accès au point de terminaison public aux réseaux spécifiques.
Restreindre l’accès sortant à des comptes de stockage spécifiques
Les règles réseau pour un partage de fichiers contrôlent l’accès entrant. Elles ne limitent pas les ressources de stockage auxquelles les clients peuvent accéder. Pour les partages de fichiers classiques, vous pouvez utiliser une stratégie de point de terminaison de service pour limiter les comptes de stockage auxquels les clients d’un sous-réseau peuvent accéder via les points de terminaison de service. La politique filtre les destinations pour le trafic qui contourne Pare-feu Azure et les appliances virtuelles réseau. Il ne restreint pas d’autres chemins sortants ni ne remplace les règles réseau et exigences d’autorisation de la destination. Pour plus d’informations, voir Restreindre l’accès sortant avec les stratégies de point de terminaison de service.
Important
Les stratégies de point de terminaison de service ne prennent pas en charge les partages de fichiers Microsoft.FileShares. Une politique sur le sous-réseau client bloque l’accès à ces partages de fichiers via les points de terminaison de service, même si elle autorise leur abonnement ou leur groupe de ressources. Cette restriction s’applique également aux sous-réseaux qui accèdent à la fois aux partages de fichiers classic et Microsoft.FileShares. Les clients de ce sous-réseau-là doivent utiliser un point de terminaison privé pour accéder aux partages de fichiers Microsoft.FileShares.
Une stratégie de point de terminaison de service définit les destinations de stockage autorisées pour les clients dans le sous-réseau associé. Cela empêche ces clients d’accéder à d’autres comptes de stockage via les points de terminaison de service. Gardez à l’esprit les points suivants :
- Ajoutez tous les comptes de stockage utilisés par les clients du sous-réseau avant d’associer la politique au sous-réseau. Cette liste inclut les comptes de stockage utilisés par d’autres charges de travail du sous-réseau.
- La stratégie de point de terminaison de service doit être déployée dans la même région et dans le même abonnement que le réseau virtuel.
- Une politique ne peut contenir qu’une seule définition de politique pour le
Microsoft.Storage service. Pour permettre plus de comptes de stockage, ajoutez leurs identifiants de ressources à la même définition de politique. Vous pouvez aussi autoriser tous les comptes de stockage dans un groupe de ressources ou un abonnement.
- Après avoir associé une politique à un sous-réseau, la politique s’applique au trafic vers les comptes de stockage dans toutes les régions.
- Ces étapes supposent que le sous-réseau ne possède aucune politique de point de terminaison de service. Si les stratégies sont déjà associées, relisez et mettez à jour ces stratégies au lieu de remplacer leurs associations. Les exemples de PowerShell et de CLI s’arrêtent s’ils trouvent des associations existantes.
Pour créer une politique de terminaison de service et l’associer à un sous-réseau, suivez ces étapes. Pour des étapes détaillées, voir Créer et associer des stratégies de point de terminaison de service.
- Dans la barre de recherche en haut du portail Azure, saisissez Stratégie de point de terminaison de service. Sélectionnez Stratégies de point de terminaison de service dans les résultats de la recherche.
- Sélectionnez + Créer.
- Dans l’onglet De base, sélectionnez l’abonnement et la région de votre réseau virtuel. Sélectionnez un groupe de ressources et entrez un nom pour la politique.
- Sélectionnez Suivant : Définitions de stratégie.
- Sélectionner + Ajouter une ressource. Pour Service, sélectionnez Microsoft.Storage. Pour Étendue, sélectionnez Compte unique, puis sélectionnez le compte de stockage contenant vos partages de fichiers. Cliquez sur Ajouter. Répétez cette étape pour chaque compte de stockage utilisé par les clients du sous-réseau.
- Sélectionnez Réviser + Créer, puis sélectionnez Créer.
- Accédez à la nouvelle stratégie de point de terminaison du service. Depuis le menu service, dans Paramètres, sélectionnez Sous-réseaux associés.
-
Sélectionnez Modifier l’association du sous-réseau, sélectionnez le réseau virtuel et le sous-réseau, puis sélectionnez Appliquer.
Les commandes PowerShell suivantes créent une stratégie de point de terminaison de service et l’associent à un sous-réseau. La politique limite l’accès client depuis ce sous-réseau à un seul compte de stockage via le point de terminaison du service. Le sous-réseau doit déjà avoir le Microsoft.Storage point de terminaison du service. Remplacez les valeurs des espaces réservés par vos propres valeurs.
$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
Les commandes CLI suivantes créent une politique de terminaison de service et l’associent à un sous-réseau. La politique limite l’accès client depuis ce sous-réseau à un seul compte de stockage via le point de terminaison du service. Le sous-réseau doit déjà avoir le Microsoft.Storage point de terminaison du service. Remplacez les valeurs des espaces réservés par vos propres valeurs.
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
Pour accéder à un partage de fichiers Microsoft. FileShares depuis un sous-réseau qui possède une politique de point de terminaison de service, créez un point de terminaison privé pour le partage de fichiers. Les politiques des points de terminaison de service ne s’appliquent pas au trafic passant par un point de terminaison privé.
La préférence de routage contrôle la façon dont le trafic provenant de clients externes à Azure atteint le point de terminaison public. Cette fonctionnalité est disponible uniquement pour les partages de fichiers HDD classiques utilisant le modèle de facturation à l’utilisation dans les comptes de stockage StorageV2. Pour les concepts, voir Routage réseau du point de terminaison public.
Important
N'utilisez pas le routage internet pour Azure Files. Le routage Internet ne prend pas en charge les scénarios de jointure de domaine Active Directory (AD) ni Azure File Sync. Gardez le routage Microsoft par défaut.
Pour vérifier la préférence de routage et la définir sur le routage Microsoft, suivez ces étapes.
- Accédez au compte de stockage.
- Dans le menu du service, sous Sécurité + réseau, sélectionnez Mise en réseau.
- Sélectionnez l’onglet Routage réseau.
- Sous Préférence de routage, assurez-vous que le routage du réseau Microsoft est sélectionné.
- Si vous avez changé le paramètre, sélectionnez Sauvegarder.
Pour définir la préférence de routage sur le routage Microsoft, exécutez la commande suivante. Remplacez les valeurs des espaces réservés par vos propres valeurs.
$params = @{
ResourceGroupName = "<resource-group>"
Name = "<storage-account-name>"
RoutingChoice = "MicrosoftRouting"
}
Set-AzStorageAccount @params
Pour définir la préférence de routage sur le routage Microsoft, exécutez la commande suivante. Remplacez les valeurs des espaces réservés par vos propres valeurs.
az storage account update \
--resource-group <resource-group> \
--name <storage-account-name> \
--routing-choice MicrosoftRouting
Microsoft. FileShares ne prend pas en charge la préférence de routage.
Contenu connexe