Edit

Configure network endpoints for accessing Azure file shares

Azure Files provides two main types of endpoints for accessing Azure file shares:

  • Public endpoints, which have a public IP address. Access depends on the protocol and network rules. NFS clients use service endpoints from allowed subnets.
  • Private endpoints, which exist within a virtual network and have a private IP address from within the address space of that virtual network.

For classic file shares (created with the Microsoft.Storage resource provider), the Azure storage account has public and private endpoints. For file shares created with the Microsoft.FileShares resource provider, you create public and private endpoints at the file share level rather than the storage account level.

This article explains how to configure private endpoints and restrict public endpoint access for both resource providers. The classic file share guidance also applies to storage accounts used with Azure File Sync, which supports classic SMB file shares. For File Sync networking requirements, see Configure Azure File Sync proxy and firewall settings.

Before reading this guide, review Azure Files networking considerations.

Prerequisites

Create and configure endpoints

You can restrict network access to your file shares by configuring the storage account for classic shares or the individual Microsoft.FileShares resource. To restrict access to a virtual network, use one of the following approaches:

Create a private endpoint

When you create a private endpoint for your file shares, you deploy the following Azure resources:

  • A private endpoint: An Azure resource that represents the private endpoint. You can think of this resource as a connector between a target resource and a network interface.
  • A network interface (NIC): The network interface that maintains a private IP address within the specified virtual network and subnet. This resource is the same as the one you deploy when you deploy a virtual machine (VM). However, instead of assigning it to a VM, the private endpoint owns it.
  • A private Domain Name System (DNS) zone: These steps create or reuse an Azure private DNS zone linked to the virtual network and add an A record for the private endpoint. You can use your own DNS infrastructure instead, provided clients resolve the file share's host name to the private endpoint's IP address.

Note

In Azure public cloud, both resource providers use the private DNS zone privatelink.file.core.windows.net. Their client host names differ; see Verify connectivity for examples. For classic file shares in other Azure clouds, use the storage endpoint suffix for that cloud. Check regional availability before deploying Microsoft.FileShares.

Classic versus Microsoft.FileShares

The private endpoint creation process differs slightly depending on whether you're using classic file shares or the new file share model. For classic file shares, you create a private endpoint for the storage account that contains the file shares. For file shares created with Microsoft.FileShares, you create a private endpoint for the file share itself.

Many of the steps are identical for both experiences. Only the resource reference, group ID, and DNS record name differ, as shown in the following table.

Classic file shares (Microsoft.Storage) File shares (Microsoft.FileShares)
Private endpoint target Storage account File share
Resource cmdlet Get-AzStorageAccount Get-AzFileShare
Group ID (sub-resource) file FileShare
DNS A record name Storage account name Host name prefix (for example, fs-xxxxxxxxxxxxxxxxx)

Go to the resource group where you want to create a private endpoint. Select + Create and search for Private Endpoint. Select the private endpoint resource, and then select Create.

The wizard has multiple pages to complete.

In the Basics page, select the subscription, resource group, name, network interface name, and region for your private endpoint. You must create the private endpoint in the same region as the virtual network you want to create the private endpoint in. Then select Next: Resource.

Screenshot showing how to provide the project and instance details for a new private endpoint.

On the Resource page, select Microsoft.Storage/storageAccounts from the drop-down menu for Resource type. For Resource, select the specific storage account you want to connect to. For Target sub-resource, select file. Then select Next: Virtual Network.

Screenshot showing how to select the resource type, resource, and target sub-resource for the new private endpoint.

On the Resource page, select Microsoft.FileShares/fileShares from the drop-down menu for Resource type. For Resource, select the specific file share you want to connect to. The target sub-resource auto-populates with FileShare. Then select Next: Virtual Network.

The Virtual Network page allows you to select the specific virtual network and subnet you want to add your private endpoint to. Select dynamic or static IP address allocation for the new private endpoint. If you select static, you also need to provide a name and a private IP address. You can also optionally specify an application security group. When you're finished, select Next: DNS.

Screenshot showing how to provide virtual network, subnet, and IP address details for the new private endpoint.

The DNS page contains the information for integrating your private endpoint with a private DNS zone. Make sure the subscription and resource group are correct, and then select Next: Tags.

Screenshot showing how to integrate your private endpoint with a private DNS zone.

You can optionally apply tags to categorize your resources, such as applying the name Environment and the value Test to all testing resources. Enter name/value pairs if desired, and then select Next: Review + create.

Screenshot showing how to optionally tag your private endpoint with name/value pairs for easy categorization.

Select Create to create the private endpoint.

Verify connectivity

Run the checks from a client in the virtual network, or from a connected network with DNS configured to resolve the private endpoint. For the differences between resource providers, see DNS resolution. Use the original host name to mount the share, not the privatelink name.

Run the following DNS lookup from PowerShell, the command line, or a terminal on Windows, Linux, or macOS.

Replace <storage-account-name> with the appropriate storage account name:

nslookup <storage-account-name>.file.core.windows.net

If successful, you see output similar to the following, where 192.168.0.5 is the private IP address of the private endpoint in your virtual network (output shown for 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

Use the file share's host name. In the overview tab of the file share, select JSON view from the upper right. In the JSON view, under properties, copy the value for hostName. The format looks like fs-xxxxxxxxxxxxxxxxx.xx.file.storage.azure.net.

nslookup <file-share-host-name>

If successful, you see output similar to the following, where 192.168.0.5 is the private IP address of the private endpoint in your virtual network (output shown for 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

Restrict public endpoint access

You can disable public network access or keep it enabled for selected networks. These are separate configurations. Private endpoints continue to work in either configuration.

For classic file shares, configure public access on the storage account. For Microsoft.FileShares, configure it on the individual file share. Classic file shares can also use a network security perimeter, subject to its protocol limitations. In Enforced mode, a perimeter blocks NFS traffic through service endpoints.

Disable access to the public endpoint

When you disable public network access, clients can't connect through the public endpoint, including through service endpoints. Clients can still connect through private endpoints. This setting doesn't restrict outbound traffic from the clients.

Note

For classic file shares, existing trusted service and resource instance exceptions can remain in effect after you disable public network access. Review these exceptions if you require access only through private endpoints. See Azure Storage network security limitations.

To disable public network access for classic file shares, follow these steps:

  1. Go to the storage account where you want to restrict all inbound access to the public endpoint.
  2. From the service menu, under Security + networking, select Networking.
  3. Under Public network access, select Manage.
  4. Select Disable, and then select Proceed.
  5. Select Save.

Screenshot showing how to disable public network access on a storage account.

Go to the file share where you want to disable public access. In the service menu, under Settings, select Configuration. Set Public network access to Disabled, and then select Save.

Restrict access to the public endpoint to specific networks

To allow clients from selected subnets, keep public network access enabled, enable service endpoints on those subnets, and add the subnets to the resource's network rules. You can use service endpoints with or without private endpoints. Classic SMB and FileREST access can also use IP address rules; NFS access requires allowed subnets.

The PowerShell and CLI examples assume public network access is already enabled. The Microsoft.FileShares examples also assume the client subnet already has the Microsoft.Storage service endpoint. To configure that endpoint, see Enable service endpoints on a subnet.

For classic file shares, follow these steps to restrict the public endpoint to specific networks.

  1. Go to the storage account where you want to restrict the public endpoint to specific networks.
  2. From the service menu, under Security + networking, select Networking.
  3. Under Public network access scope, select Enable from selected networks. This selection reveals a number of settings for controlling the restriction of the public endpoint.
  4. Under Virtual networks, select Add a virtual network > Add existing virtual network to select the virtual network that should be allowed to access the storage account through the public endpoint. Select a virtual network and a subnet for that virtual network, and then select Enable. If you want to create a new virtual network for this purpose, select Add a virtual network > Add new virtual network, provide the details, and then select Create.
  5. For SMB or FileREST access, use IPv4 Addresses to specify any public internet IP addresses that you want to allow. IP address rules don't grant NFS access.
  6. If a service integration requires trusted service access, select the Allow trusted Microsoft services to access this resource checkbox.
  7. Select Save.

Screenshot showing how to restrict a storage account's public endpoint to selected networks.

Go to the file share where you want to restrict public access. From the service menu, under Settings, select Configuration. Under Public network access, select Enabled from selected virtual networks, add the virtual networks and subnets allowed to access the share, and select Save.

Restrict outbound access to specific storage accounts

Network rules for a file share control inbound access. They don't limit which other storage resources clients can access. For classic file shares, you can optionally use a service endpoint policy to limit which storage accounts clients in a subnet can access through service endpoints. The policy filters destinations for traffic that bypasses Azure Firewall and network virtual appliances. It doesn't restrict other outbound paths or replace the destination's network rules and authorization requirements. For more information, see Restrict outbound access with service endpoint policies.

Important

Service endpoint policies aren't currently supported for Microsoft.FileShares file shares. A policy on the client subnet blocks access to those file shares through service endpoints, even if it allows their subscription or resource group. This restriction also applies to subnets that access both classic and Microsoft.FileShares file shares. Clients in that subnet must use a private endpoint to access Microsoft.FileShares file shares.

A service endpoint policy defines the allowed storage destinations for clients in the associated subnet. It blocks those clients from accessing other storage accounts through service endpoints. Keep these points in mind:

  • Add every storage account that clients in the subnet use before you associate the policy with the subnet. This list includes storage accounts that other workloads in the subnet use.
  • The service endpoint policy must be in the same region and subscription as the virtual network.
  • A policy can contain only one policy definition for the Microsoft.Storage service. To allow more storage accounts, add their resource IDs to the same policy definition. You can also allow all storage accounts in a resource group or subscription.
  • After you associate a policy with a subnet, the policy applies to traffic to storage accounts in all regions.
  • These steps assume that the subnet has no service endpoint policies. If policies are already associated, review and update those policies instead of replacing their associations. The PowerShell and CLI examples stop if they find existing associations.

To create a service endpoint policy and associate it with a subnet, follow these steps. For detailed steps, see Create and associate service endpoint policies.

  1. In the search box at the top of the Azure portal, enter Service endpoint policy. Select Service endpoint policies in the search results.
  2. Select + Create.
  3. On the Basics tab, select the subscription and region of your virtual network. Select a resource group, and enter a name for the policy.
  4. Select Next: Policy definitions.
  5. Select + Add a resource. For Service, select Microsoft.Storage. For Scope, select Single account, and then select the storage account that contains your file shares. Select Add. Repeat this step for each storage account that clients in the subnet use.
  6. Select Review + Create, and then select Create.
  7. Go to the new service endpoint policy. From the service menu, under Settings, select Associated subnets.
  8. Select + Edit subnet association, select the virtual network and subnet, and then select Apply.

To access a Microsoft.FileShares file share from a subnet that has a service endpoint policy, create a private endpoint for the file share. Service endpoint policies don't apply to traffic that goes through a private endpoint.

See also