DEV Community

Cover image for Providing private storage for internal company documents using Azure cloud
Werneline Nashilongo
Werneline Nashilongo

Posted on

Providing private storage for internal company documents using Azure cloud

In this article, we will be providing private storage to different departments of an online content hosting company. The content is private to the company and shouldn’t be shared without consent. The storage will also be used as a backup to the public website. Thus, the storage requires high availability in case of a disaster occurrence.

Create a storage account and configure high availability.

1. Create a storage account for the internal private company documents.

  • In the portal, search for and select Storage accounts.
  • Select + Create.

Create Storage

  • Set the Storage account name to private. Add an identifier to the name to ensure the name is unique.
  • Select Review, and then Create the storage account.
  • Wait for the storage account to deploy, and then select Go to resource.

Storage Account

Storage account created

2. This storage requires high availability if there’s a regional outage. Read access in the secondary region is not required. Configure the appropriate level of redundancy.

  • In the storage account, in the Data management section, select the Redundancy blade.
  • Ensure Geo-redundant storage (GRS) is selected.
  • Refresh the page.
  • Review the primary and secondary location information.
  • Save your changes.

GRS replicates data to a secondary region without read access.

Redundancy

Create a storage container, upload a file, and restrict access to the file.

1. Create a private storage container for the corporate data.

  • In the storage account, in the Data storage section, select the Containers blade.
  • Select + Container.
  • Ensure the Name of the container is private.
  • Ensure the Public access level is Private (no anonymous access).
  • As you have time, review the Advanced settings, but take the defaults.
  • Select Create.

Private storage container

2. Upload a file to the private container to test that the file isn’t publicly accessible.

  • Select the container.
  • Select Upload.
  • Browse to files and select a file.
  • Upload the file.
  • Select the uploaded file.

Uploading a blob into a container

  • On the Overview tab, copy the URL.
  • Paste the URL into a new browser tab.

Blob URL

  • Verify the file doesn’t display, and you receive an error.

Image error message

The error message displays that "Public access is not permitted on this storage account." This means that the storage is only accessible to employees' devices/ IP addresses.

3. An external partner requires read access to the file for at least the next 24 hours. Configure and test a shared access signature (SAS).

SAS (Shared Access Signature) enables secure, delegated access to storage account resources with detailed control over permissions and access duration. Thus, enhancing data security while allowing clients to interact with storage without needing full account permissions.

There are three types of SAS:
User delegation SAS - Secured with Microsoft Entra credentials.
Service SAS - Secured with the storage account key, limited to one service.
Account SAS - Secured with the storage account key, allows access across multiple services.

  • Select your uploaded blob file and move to the Generate SAS tab.
  • In the Permissions drop-down, ensure the partner has only Read permissions.
  • Verify the Start and expiry date/time is for the next 24 hours.
  • Select Generate SAS token and URL.

SAS Config
In the image above Allowed IP address allows you to control which external devices can have access to the company's private content.

  • Verify you can access the file. If you have uploaded an image file it will display in the browser. Other file types will be downloaded.

view private content

Configure storage access tiers and content replication.

1. To save on costs, after 30 days, move blobs from the hot tier to the cool tier.

Implementing lifecycle management policies optimizes storage costs by automating the management of blob data according to its lifecycle, enhancing efficiency and reducing expenses

  • Return to the storage account.
  • In the Overview section, notice the Default access tier is set to Hot.

Hot Access Tier

  • In the Data management section, select the Lifecycle management blade.
  • Select Add rule.

Create new rule

  • Set the Rule name to movetocool.
  • Set the Rule scope to Apply rule to all blobs in the storage account.
  • Select Next.

movetocool rule

  • Ensure Last modified is selected.
  • Set More than (days ago) to 30.
  • In the Then drop-down select Move to cool storage.
  • Add the rule.

The rule is added as an IF THEN condition.

Rule

created rule

2. The public website files need to be backed up to another storage account.

In your storage account, create a new container called backup. Use the default values.

backup container

Navigate to your publicwebsite storage account. This storage account was created in the previous post, "Providing storage for a public website".

publicwebsite

  • In the Data management section, select the Object replication blade.
  • Select Create replication rules.

replicaation rules

  • Set the Destination storage account to the private storage account.
  • Set the Source container to public and the Destination container to backup.
  • Create the replication rule.

replicated

show list

Whenever a blob is uploaded on the public storage account, it will be replicated in the private backup storage account. This is how data can be backed up in Azure Cloud.

In this walkthrough, you configured a private Azure storage solution covering geo redundancy, access restriction, SAS tokens for external partners, lifecycle cost management, and cross account replication for backup. These foundational Azure Blob Storage features work together to keep company data secure, available, and cost efficient, even at scale.

Feel free to leave a reaction, drop a comment with any questions, or share it with someone who's just getting started with Azure storage!

Top comments (0)