Azure Storage Documentation

Accessing Azure Storage Files (File Shares)

This document outlines various methods and best practices for accessing files stored in Azure File Shares, a fully managed cloud file share service that is accessible via the industry-standard Server Message Block (SMB) protocol.

Understanding File Share Access

Azure File Shares can be accessed from cloud or on-premises deployments of Windows, macOS, and Linux. To access your file shares, you'll typically need:

Methods of Access

1. Mounting File Shares

Mounting allows you to treat the Azure File Share as a local drive or directory on your client machine.

Mounting on Windows

You can use PowerShell or the net use command. Replace YOUR_STORAGE_ACCOUNT_NAME, YOUR_FILE_SHARE_NAME, and YOUR_STORAGE_ACCOUNT_KEY with your actual values.

net use Z: \\YOUR_STORAGE_ACCOUNT_NAME.file.core.windows.net\YOUR_FILE_SHARE_NAME /user:Azure\YOUR_STORAGE_ACCOUNT_NAME YOUR_STORAGE_ACCOUNT_KEY

Alternatively, using PowerShell:

$connectTestResult = Test-NetConnection -ComputerName YOUR_STORAGE_ACCOUNT_NAME.file.core.windows.net -Port 445
if ($connectTestResult.TcpTestSucceeded) {
    cmd /c 'mklink /d C:\mount\MyShare TARGET_DIRECTORY'
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\YOUR_STORAGE_ACCOUNT_NAME.file.core.windows.net\YOUR_FILE_SHARE_NAME" -Persist -Credential (New-Object System.Management.Automation.PSCredential("Azure\YOUR_STORAGE_ACCOUNT_NAME", (ConvertTo-SecureString "YOUR_STORAGE_ACCOUNT_KEY" -AsPlainText -Force)))
} else {
    Write-Error -Message "Unable to reach the Azure storage account via port 445."
}
Mounting on Linux

Ensure you have the cifs-utils package installed. Replace placeholders as needed.

sudo apt-get update && sudo apt-get install cifs-utils # For Debian/Ubuntu
sudo yum install cifs-utils # For RHEL/CentOS

sudo mkdir /mnt/mymount
sudo mount -t cifs //YOUR_STORAGE_ACCOUNT_NAME.file.core.windows.net/YOUR_FILE_SHARE_NAME /mnt/mymount -o vers=3.0,username=YOUR_STORAGE_ACCOUNT_NAME,password=YOUR_STORAGE_ACCOUNT_KEY,dir_mode=0777,file_mode=0777,serverino
Mounting on macOS

macOS supports SMB mounting via Finder or the command line.

open smb://YOUR_STORAGE_ACCOUNT_NAME:YOUR_STORAGE_ACCOUNT_KEY@YOUR_STORAGE_ACCOUNT_NAME.file.core.windows.net/YOUR_FILE_SHARE_NAME

Security Note

Storing storage account keys directly in scripts is not recommended for production environments. Consider using Azure AD authentication, Managed Identities, or Azure Key Vault for more secure credential management.

2. Using Azure Storage SDKs

The Azure Storage SDKs provide programmatic access to Azure File Shares from various programming languages.

Here's a simplified example using Python:

from azure.storage.file.shares import ShareServiceClient

        connection_string = "DefaultEndpointsProtocol=https;AccountName=YOUR_STORAGE_ACCOUNT_NAME;AccountKey=YOUR_STORAGE_ACCOUNT_KEY;EndpointSuffix=core.windows.net"
        share_name = "YOUR_FILE_SHARE_NAME"

        try:
            share_service_client = ShareServiceClient.from_connection_string(connection_string)
            share_client = share_service_client.get_share_client(share_name)

            # Example: List directories in the root
            print("Directories in root:")
            for item in share_client.list_directories_and_files():
                print(item.name)

            # Example: Upload a file
            file_client = share_client.get_file_client("my-upload-test.txt")
            with open("local_file_to_upload.txt", "rb") as data:
                file_client.upload_file(data)
            print("File uploaded successfully.")

        except Exception as e:
            print(f"An error occurred: {e}")

Best Practice: Use SAS Tokens

For temporary or delegated access, consider generating Shared Access Signature (SAS) tokens. These tokens provide fine-grained control over access permissions, expiry times, and IP restrictions.

3. Azure CLI

The Azure Command-Line Interface (CLI) offers commands to interact with Azure File Shares.

# List shares in a storage account
        az storage share list --account-name YOUR_STORAGE_ACCOUNT_NAME --account-key YOUR_STORAGE_ACCOUNT_KEY

        # Upload a file
        az storage file upload --share-name YOUR_FILE_SHARE_NAME --account-name YOUR_STORAGE_ACCOUNT_NAME --account-key YOUR_STORAGE_ACCOUNT_KEY --source "local_file.txt" --path "remote_directory/remote_file.txt"

        # Download a file
        az storage file download --share-name YOUR_FILE_SHARE_NAME --account-name YOUR_STORAGE_ACCOUNT_NAME --account-key YOUR_STORAGE_ACCOUNT_KEY --name "remote_directory/remote_file.txt" --file-name "downloaded_file.txt"

Authentication and Authorization

Azure File Shares support multiple authentication methods:

Troubleshooting Common Issues

For more in-depth information and advanced scenarios, please refer to the official Azure Files documentation.