Azure Blob Storage
What is Azure Blob Storage¶
Azure Blob Storage is Microsoft's object storage solution for the cloud. Blob storage is optimized for storing massive amounts of unstructured data, such as text or binary data. Azure Blob Storage is ideal for serving images or documents, storing files for distributed access, streaming video and audio, storing data for backup and restore, disaster recovery, and archiving. Read more at Azure Blob Storage documentation
When selecting Azure Blob Storage as a remote option there are several fields that need to be configured.
Remote Backup Retention¶
The amount of days that backup files will be kept in the remote storage provider location. After this amount of days the files that are older will be removed.
Base Remote Path¶
This is the name of the container, you can also add subfolders if using shared containers or saving multiple clusters to the same container. By default AxonOps will save the backups to /container/folder/org/clustertype/clustername/host-id/
The org/clustertype/clustername/host-id/ will match the top breadcrumb navigation in your AxonOps Dashboard.
Note: Azure container names must be lowercase and follow specific naming rules. See Azure naming conventions
Storage Account Name¶
The name of your Azure Storage account. This is a globally unique name that identifies your storage account. It must be between 3 and 24 characters, containing only lowercase letters and numbers.
Authentication Method¶
AxonOps supports multiple authentication methods for Azure Blob Storage:
Managed Identity (Recommended)
The recommended approach is to use Azure Managed Identities for your Azure VMs. This method is more secure as it doesn't require storing credentials:
- Enable system-assigned or user-assigned managed identity on your Azure VMs
- Grant the managed identity appropriate permissions on the storage account (see RBAC section below)
- Leave all authentication fields empty in AxonOps
- AxonOps will automatically use the VM's managed identity
This approach provides: * No credential management or rotation needed * More secure - no keys or secrets to protect * Automatic token refresh * Follows Azure security best practices * Works with both system and user-assigned identities
Storage Account Key (Alternative) * Uses the primary or secondary key from your storage account * Only use when managed identities are not available (e.g., on-premises) * Found in Azure Portal > Storage Account > Access Keys * Full access to the storage account
Shared Access Signature (SAS) * Provides limited access with specific permissions * Time-bound access tokens * Good for temporary or restricted access
Azure Active Directory (OAuth) * Uses Azure AD service principals * Suitable when managed identities cannot be used * Requires app registration and secret management
Required Permissions (RBAC)¶
When using Managed Identity, assign one of these roles to the identity:
* Storage Blob Data Contributor - Recommended for backup operations
* Storage Blob Data Owner - If you need full control
* Or create a custom role with these permissions:
- Microsoft.Storage/storageAccounts/blobServices/containers/read
- Microsoft.Storage/storageAccounts/blobServices/containers/write
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
To assign the role: 1. Go to your Storage Account in Azure Portal 2. Select "Access Control (IAM)" 3. Click "Add role assignment" 4. Select the appropriate role 5. Assign to your VM's managed identity
Storage Account Key¶
When using key authentication (not recommended), provide either the primary or secondary key from your storage account. These keys provide full access to your storage account and should be protected accordingly.
To find your keys: 1. Navigate to your storage account in the Azure Portal 2. Select "Access keys" under Security + networking 3. Copy either key1 or key2
SAS Token¶
When using SAS authentication, provide a SAS token with appropriate permissions. The token should have at least: * Read permission * Write permission * Delete permission * List permission
Example SAS token format:
?sv=2020-08-04&ss=b&srt=sco&sp=rwdlacx&se=2024-12-31T23:59:59Z&st=2023-01-01T00:00:00Z&spr=https&sig=...
Access Tier¶
Azure Blob Storage offers different access tiers optimized for different data access patterns:
- Hot: For frequently accessed data
- Highest storage costs, lowest access costs
-
Best for active backups
-
Cool: For infrequently accessed data (30+ days)
- Lower storage costs, higher access costs
-
Good for recent backups
-
Archive: For rarely accessed data (180+ days)
- Lowest storage costs, highest access costs
- Requires rehydration before access
- Best for compliance/long-term storage
For backup scenarios: * Use Hot tier for the most recent backups * Use Cool tier for backups older than 30 days * Use Archive tier for long-term retention
Blob Type¶
Azure supports different blob types: * Block Blobs: Optimized for upload of large amounts of data (recommended for backups) * Page Blobs: Optimized for random read/write operations * Append Blobs: Optimized for append operations
For Cassandra backups, Block Blobs are recommended.
Redundancy Options¶
While not directly configured in AxonOps, your storage account's redundancy affects availability: * LRS (Locally Redundant Storage): 3 copies in one region * ZRS (Zone Redundant Storage): 3 copies across availability zones * GRS (Geo-Redundant Storage): 6 copies across two regions * GZRS (Geo-Zone Redundant Storage): Combines ZRS and GRS
Encryption¶
Azure provides several encryption options: * Microsoft-managed keys: Default encryption (automatic) * Customer-managed keys: Use your own keys via Azure Key Vault * Infrastructure encryption: Double encryption at rest
Network Configuration¶
Ensure your Azure Storage account allows connections from AxonOps: * Public endpoint: Accessible from anywhere (check firewall rules) * Private endpoint: Requires VNet connectivity * Service endpoints: Restricts access to specific VNets
Disable Checksum¶
Normally AxonOps Backups will check that the checksums of transferred files match, and give an error "corrupted on transfer" if they don't. If you disable this then the checksum will be ignored if there are differences. This is not advised.
Best Practices¶
- Use SAS Tokens: Prefer SAS tokens over account keys for better security
- Enable Soft Delete: Protect against accidental deletion
- Set Lifecycle Policies: Automatically move old backups to cooler tiers
- Monitor Costs: Use Azure Cost Management to track storage expenses
- Enable Logging: Use Azure Storage Analytics for audit trails
Performance Optimization¶
- Use Premium Storage: For performance-critical restore operations
- Enable Large File Shares: For better throughput
- Optimize Block Size: Larger blocks for large files
- Parallel Uploads: Configure appropriate parallelism
- CDN Integration: For geo-distributed restore needs
Cost Management¶
- Reserved Capacity: Purchase reserved storage for predictable workloads
- Lifecycle Management: Auto-transition to cheaper tiers
- Regional Selection: Choose regions with lower costs
- Monitor Transactions: Each operation incurs a small cost
- Cleanup Old Backups: Remove unnecessary backups
Troubleshooting¶
- Authentication Failed: Verify account name and key/SAS token
- Container Not Found: Check container name (must be lowercase)
- Access Denied: Verify SAS permissions or firewall rules
- Throttling: Check storage account limits and scale if needed
- Network Errors: Verify connectivity and firewall settings
