DEV Community

Cover image for Azure: Providing storage for a new company app
John Ogbonna
John Ogbonna

Posted on

Azure: Providing storage for a new company app

What is Microsoft Azure?
Azure is a platform and service for cloud computing. Through Microsoft's extensive global network of data centres, it offers a broad range of cloud services, such as computing, analytics, storage, and networking, enabling developers and companies to create, implement, and oversee applications. In this exercise, we will be using Azure to provide storage ideal for a company app. This article will provide a visual demonstration the process outlined in this exercise provided by Microsoft: https://microsoftlearning.github.io/Secure-storage-for-Azure-Files-and-Azure-Blob-Storage/Instructions/Labs/LAB_04_storage_web_app.html

Create the storage account and managed identity

1. Provide a storage account for the web app

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

  • Click Create
    Click create new

  • For Resource group select Create new. Give your resource group a name and select OK to save your changes.

  • Provide a Storage account name. Ensure the name is unique and meets the naming requirements.

  • Move to the Encryption tab.
    Storage account configuration

  • Check the box for Enable infrastructure encryption.

  • Notice the warning, This option cannot be changed after this

  • storage account is created.

  • Select Review + Create
    Select Review + Create

  • Wait for the resource to deploy.

2. Provide a managed identity for the web app to use

  • Search for and select Managed identities
    select Managed identities

  • Select Create
    Select Create

  • Select your resource group.

  • Give your managed identity a name.

  • Select Review and create, and then Create.
    create managed identity

  • Select Create
    Select create

3. Assign the correct permissions to the managed identity. The identity only needs to read and list containers and blobs

  • Search for and select your storage account
    select your storage account

  • Select the Access Control (IAM) blade.

  • Select Add role assignment (center of the page).
    Add role assignment

  • On the Job functions roles page, search for and select the Storage Blob Data Reader role.
    Storage Blob Data Reader role

  • On the Members page, select Managed identity.
    ![select Managed identity]

managed identity

  • Select Select members, in the Managed identity drop-down select User-assigned managed identity.
  • Select the managed identity you created in the previous step.
    Select the managed identity

  • Click Select and then Review + assign the role
    select
    review + assign

  • Select Review + assign a second time to add the role assignment.

  • Your storage account can now be accessed by a managed identity with the Storage Data Blob Reader permissions.

Secure access to the storage account with a key vault and key

1. To create the key vault and key needed for this part of the lab, your user account must have Key Vault Administrator permissions

  • In the portal, search for and select Resource groups.
    search for and select Resource groups

  • Select your resource group, and then the Access Control (IAM) blade.
    Select Resource group

  • Select Add role assignment (center of the page).
    Select Add role assignment

  • On the Job functions roles page, search for and select the Key Vault Administrator role.
    select the Key Vault Administrator role

  • On the Members page, select User, group, or service principal.
    On the Members page

  • Select Select members.

  • Search for and select your user account. Your user account is shown in the top right of the portal.

  • Click Select and then Review + assign.
    select your user account

  • Select Review + assign two times to add the role assignment.
    Image description

2. Create a key vault to store the access keys.

  • In the portal, search for and select Key vaults.
    key vaults

  • Select create
    Select create

  • Select your resource group.

  • Provide the name for the key vault. The name must be unique.
    name for the key vault

  • Ensure on the Access configuration tab that Azure role-based access control (recommended) is selected.
    select review + create

  • Wait for the validation checks to complete and then select Create.
    select Create.

  • After the deployment, select Go to resource.
    select Go to resource.

  • On the Overview blade ensure both Soft-delete and Purge protection are enabled.
    ensure both Soft-delete and Purge protection are enabled

  • Select Enable purge protection (enforce a mandatory retention period for deleted vaults and vault objects) after selecting Purge protection (if it is disabled). Click save
    Select Enable purge protection

3. Create a customer-managed key in the key vault.

  • In your key vault, in the Objects section, select the Keys blade.
  • Select Generate/Import.
    Image description

  • Name the key

  • Take the defaults for the rest of the parameters, and Create the key.
    Name the key

Configure the storage account to use the customer managed key in the key vault

1. Before you can complete the next steps, you must assign the Key Vault Crypto Service Encryption User role to the managed identity

  • In the portal, search for and select Resource groups.
    search for and select Resource groups

  • Select your resource group, and then the Access Control (IAM) blade.

  • Select Add role assignment (center of the page).
    Select Add role assignment

  • On the Job functions roles page, search for and select the Key Vault Crypto Service Encryption User role.
    select the Key Vault Crypto Service Encryption User role

  • On the Members page, select Managed identity.

  • Select Select members, in the Managed identity drop-down select

  • User-assigned managed identity.

  • Select your managed identity.
    Select your managed identity

  • Click Select and then Review + assign.
    Click Select and then Review + assign

  • Select Review + assign two times to add the role assignment.
    Select Review + assign

2. Configure the storage account to use the customer managed key in your key vault.

  • Return to your the storage account.
  • In the Security + networking section, select the Encryption blade. select the Encryption blade
  • Select Customer-managed keys.
  • Select a key vault and key. Select your key vault and key.
  • Select to confirm your choices.
  • Ensure the Identity type is User-assigned.
  • Select an identity.
  • Select your managed identity then select Add.
  • Save your changes.
  • If you receive an error that your identity does not have the correct permissions, wait a minute and try again. configure managed identities

Configure an time-based retention policy and an encryption scope.

1. The developers require a storage container where files can’t be modified, even by the administrator.

  • Navigate to your storage account.
  • In the Data storage section, select the Containers blade.
    Containers Blade

  • Create a container called hold. Take the defaults. Be sure to Create the container.
    Create the container

  • Select the container
    Select the container

  • Upload a file to the container
    Upload a file to the container

  • In the Settings section, select the Access policy blade.

  • In the Immutable blob storage section, select + Add policy.

  • For the Policy type, select time-based retention.

  • Set the Retention period to 5 days.

  • Be sure to Save your changes.
    Set the Retention period to 5 days

  • Try to delete the file in the container.

  • Verify you are notified failed to delete blobs due to policy.
    cant delete file

2. The developers require an encryption scope that enables infrastructure encryption.

  • Navigate back to your storage account.
  • In the Security + networking blade, select Encryption.
    select Encryption

  • In the Encryption scopes tab, select Add.

  • Give your encryption scope a name.

  • The Encryption type is Microsoft-managed key.

  • Set Infrastructure encryption to Enable.

  • Create the encryption scope.

Create the encryption scope

  • Return to your storage account and create a new container.
  • Notice in the Advanced section you can select the Encryption scope you created and apply it to all blobs in the container. new options

Cleanup your resources

  • Select your resource group
    select resource group

  • Click delete resource group, enter the resource group name, click delete
    click delete

Top comments (0)