<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel Banjo</title>
    <description>The latest articles on DEV Community by Emmanuel Banjo (@emmanuel_banjo_df6d8074c7).</description>
    <link>https://dev.to/emmanuel_banjo_df6d8074c7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3875155%2F49f2edf5-52b6-4d65-b458-5a18a92d9246.jpg</url>
      <title>DEV Community: Emmanuel Banjo</title>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emmanuel_banjo_df6d8074c7"/>
    <language>en</language>
    <item>
      <title>How to secure Azure storage with Managed identities for a web app</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Sat, 13 Jun 2026 08:14:37 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-secure-azure-storage-with-managed-identities-for-a-web-app-2i08</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-secure-azure-storage-with-managed-identities-for-a-web-app-2i08</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Building a new app is exciting but shipping an app with poorly secured storage is a headline waiting to happen.&lt;br&gt;
When developers build apps that read and write data to the cloud, the question isn't just where data lives, it's who can access it, how that access is controlled, and what happens if someone tries to tamper with critical files.&lt;br&gt;
Passwords get leaked, Keys get exposed in code repositories, Shared credentials get passed around Slack until nobody knows who has access to what. These aren't hypothetical risks, they're the most common causes of data breaches in cloud applications.&lt;br&gt;
This guide shows you (developers) how to do it the right way with no passwords embedded in code, no shared keys floating around, no way for even an admin to delete protected data. Just clean, auditable, role-based access backed by industry-standard encryption.&lt;br&gt;
Azure Blob Storage paired with Managed Identities, Key Vault, and RBAC gives your app exactly that and it's less complicated than it sounds.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Are We Actually Building?
&lt;/h3&gt;

&lt;p&gt;A secure storage setup where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your app accesses storage using an identity, not a password&lt;/li&gt;
&lt;li&gt;Encryption keys are stored in a dedicated vault, not in your app's config&lt;/li&gt;
&lt;li&gt;Access is controlled by roles, not by sharing credentials&lt;/li&gt;
&lt;li&gt;Test files are immutable i.e nobody can modify or delete them, not even admins&lt;/li&gt;
&lt;li&gt;Infrastructure is double-encrypted from the moment the account is created&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's define some terms&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Managed Identity&lt;/strong&gt;: An automatically managed account in Azure that your app uses to prove who it is without needing a username or password stored in your code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RBAC (Role-Based Access Control)&lt;/strong&gt;: A permission system where you assign roles (like "Reader" or "Contributor") instead of handing out keys. The right people get the right access, nothing more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Vault&lt;/strong&gt;: A dedicated Azure service for storing secrets, keys, and certificates. Instead of your app holding its own encryption keys, Key Vault holds them and only hands them out to authorised identities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer-Managed Key (CMK)&lt;/strong&gt;: An encryption key that you control, stored in Key Vault, used to encrypt your storage. More control than the default Microsoft-managed key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure Encryption&lt;/strong&gt;: A second layer of encryption applied at the hardware level. Your data is encrypted twice; once at the service level, once at the infrastructure level.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Create an Encrypted Storage Account
&lt;/h3&gt;

&lt;p&gt;This account has infrastructure encryption enabled i.e a second layer of encryption that cannot be turned off or changed after creation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Microsoft azure portal, search for &lt;strong&gt;Storage accounts&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fie6qatfyprmu54r706mn.png" alt="storahe" width="800" height="409"&gt; &lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwhkc2461ypyaeqdh99m.png" alt="create" width="800" height="413"&gt;
&lt;/li&gt;
&lt;li&gt;Create a new resource group (name it &lt;code&gt;app-storage-rg&lt;/code&gt;)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bwjepi2z4pn09vrjqjj.png" alt="app-storage" width="800" height="530"&gt;
&lt;/li&gt;
&lt;li&gt;Give the storage account a unique name (like &lt;code&gt;appstorage2026&lt;/code&gt;)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faew1y5uwnub747luqpsc.png" alt="sppstorage" width="800" height="690"&gt;
&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Encryption&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;Enable infrastructure encryption&lt;/code&gt;
Notice the warning: "This option cannot be changed after this storage account is created"&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review + Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kzdltn0m52pc38o0qao.png" alt="review" width="800" height="638"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfqyl93w2yqbghyfdxzo.png" alt="create" width="800" height="693"&gt;
&lt;/li&gt;
&lt;li&gt;Wait for deployment and click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5widrimvlt0vppueeq5e.png" alt="goto" width="800" height="415"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Create a Managed Identity
&lt;/h3&gt;

&lt;p&gt;Instead of your app using a key or password, it uses a managed identity which is an automatically managed account that Azure handles for you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In azure portal, search for &lt;code&gt;Managed identities&lt;/code&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45whhpt5u5iwtedrmv5x.png" alt="MI" width="800" height="342"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkfet6ng59hhmenk0v10v.png" alt="create" width="799" height="432"&gt;
&lt;/li&gt;
&lt;li&gt;Select your resource group&lt;/li&gt;
&lt;li&gt;Give it a clear name (like app-storage-identity)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review + create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0ri8fzwr6nkbysnvbi4.png" alt="create" width="800" height="733"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0z50j2il85eda2tyyzc5.png" alt="created" width="800" height="927"&gt;
Your app now has an identity in Azure without password, no key, no expiry to manage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Assign Storage Access to the Identity (RBAC)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to your storage account&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Access Control (IAM)&lt;/strong&gt; from the left menu&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add role assignment&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrnmmyeubdqkl80fpu2g.png" alt="role" width="800" height="611"&gt;
&lt;/li&gt;
&lt;li&gt;Search for and select &lt;code&gt;Storage Blob Data Reader&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpud5p0g0mrohmfsx86w4.png" alt="next" width="800" height="565"&gt;
&lt;/li&gt;
&lt;li&gt;On Members, select &lt;strong&gt;Managed identity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select members&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In the dropdown, select &lt;code&gt;User-assigned managed identity&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Select the identity you created in Step 2&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwq3m7ilg88ndvvrvc3p.png" alt="select" width="800" height="411"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Review + assign&lt;/strong&gt; (twice to confirm)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fggd18c8zfbncqrqts50f.png" alt="review" width="800" height="670"&gt;
Your managed identity can now read blobs and only read blobs. It cannot delete, modify, or list account keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Assign Key Vault Administrator to Your Account
&lt;/h3&gt;

&lt;p&gt;Before creating a Key Vault, you need to give yourself administrator permissions on the resource group.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Resource groups and select your resource group
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn63qwxf1xbzhnl9hp63t.png" alt="resource" width="800" height="425"&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Access Control (IAM)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add role assignment&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjy53l8izc0dag7ghe09z.png" alt="role" width="800" height="391"&gt;
&lt;/li&gt;
&lt;li&gt;Search for and select &lt;code&gt;Key Vault Administrator&lt;/code&gt;, then &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkqw9xt9k14c2njf6ynl.png" alt="admin" width="800" height="888"&gt;
&lt;/li&gt;
&lt;li&gt;On Members, select &lt;strong&gt;User, group, or service principal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select members&lt;/strong&gt; and search for your own user account&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fho8vuqy58nhwsycys1bo.png" alt="select" width="800" height="455"&gt;
&lt;/li&gt;
&lt;li&gt;Then Review + assign (twice)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5498b7ilnt2zl9dc0lp.png" alt="reviewn" width="800" height="692"&gt;
You're now authorised to create and manage keys in Key Vault.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Create a Key Vault
&lt;/h3&gt;

&lt;p&gt;Key Vault is where your encryption keys live and it is separate from your app, storage, locked down with its own access control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for Key vaults
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvbhy0nvltfn8mjn4aoc.png" alt="key" width="800" height="334"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpd3o5buhj094iq4m2cb.png" alt="create" width="799" height="695"&gt;
&lt;/li&gt;
&lt;li&gt;Select your resource group&lt;/li&gt;
&lt;li&gt;Give it a unique name (like &lt;code&gt;app-keyvault-2026&lt;/code&gt;)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5j5sfp9djkw4ypbo2q68.png" alt="appn" width="800" height="709"&gt;
&lt;/li&gt;
&lt;li&gt;On the Access configuration tab, ensure Azure role-based access control (recommended) is selected&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review + create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkckxlv4p811v1fobgl25.png" alt="create" width="800" height="773"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flaja0bwg793cg3pwb9nc.png" alt="create" width="800" height="930"&gt;
&lt;/li&gt;
&lt;li&gt;After deployment, click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonq9btb4jnw0j9h4pbgj.png" alt="go to n" width="799" height="382"&gt;
&lt;/li&gt;
&lt;li&gt;On the Overview blade, confirm both &lt;strong&gt;Soft-delete and Purge protection&lt;/strong&gt; are enabled
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucpyvc542f1hcuwnsh3l.png" alt="enabled" width="800" height="268"&gt;
Why Soft-delete and Purge protection matter: These prevent accidental or malicious deletion of keys. If a key is deleted, soft-delete holds it for 90 days. Purge protection means nobody (not even you) can permanently delete it during that window. Your encrypted data stays recoverable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Create a Customer-Managed Encryption Key
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In your Key Vault, go to &lt;strong&gt;Objects&lt;/strong&gt; → &lt;strong&gt;Keys&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click Generate/Import
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7skn817xr9uyqch8a4rr.png" alt="keys" width="800" height="599"&gt;
&lt;/li&gt;
&lt;li&gt;Give your key a name (like &lt;code&gt;storage-encryption-key&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Keep all other settings as default&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6h12znr0cg7owsxufkig.png" alt="create" width="800" height="723"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwxqveja5eid81rq5eqc.png" alt="created" width="800" height="463"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7: Give the Identity Permission to Use the Key
&lt;/h3&gt;

&lt;p&gt;Before linking the key to your storage, the managed identity needs permission to use it for encryption operations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Resource groups → your resource group → Access Control (IAM)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add role assignment&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9d16301f01jldfcet0ju.png" alt="role" width="800" height="343"&gt;
&lt;/li&gt;
&lt;li&gt;Search for and select &lt;strong&gt;Key Vault Crypto Service Encryption User&lt;/strong&gt; then &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27yec1psvdhiyc71ka4c.png" alt="next" width="800" height="899"&gt;
&lt;/li&gt;
&lt;li&gt;On Members, select &lt;strong&gt;Managed identity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select members&lt;/strong&gt; → choose &lt;strong&gt;User-assigned managed identity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select your managed identity&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdxd6mydsaxye0euhazqt.png" alt="select" width="799" height="427"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Review + assign&lt;/strong&gt; (twice)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fktns99xsft42mulw02xz.png" alt="review" width="800" height="753"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 8: Configure Storage to Use Your Key Vault Key
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go back to your storage account&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Security + networking&lt;/strong&gt; → &lt;strong&gt;Encryption&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Customer-managed keys&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select a key vault and key&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fia32tnlz4lmvzcdxo10c.png" alt="keyvault" width="800" height="610"&gt;
&lt;/li&gt;
&lt;li&gt;Choose your Key Vault and the key you created&lt;/li&gt;
&lt;li&gt;Confirm your selection
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmq8dccj4b61ljjvvz4ab.png" alt="key" width="800" height="834"&gt;
&lt;/li&gt;
&lt;li&gt;Ensure Identity type is set to &lt;code&gt;User-assigned&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Select an identity&lt;/strong&gt; and choose your managed identity&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add&lt;/strong&gt;, Then &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizdjlntcvj6o5eo3m7ee.png" alt="save" width="800" height="405"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 9: Create an Immutable Container for Testing
&lt;/h3&gt;

&lt;p&gt;Developers need a container where files can't be changed or deleted not even by an admin. This is critical for testing environments where file integrity must be guaranteed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, go to &lt;strong&gt;Data storage&lt;/strong&gt; → &lt;strong&gt;Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;hold&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep the defaults and click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5sx4s0vc4otp768ttotp.png" alt="create" width="800" height="435"&gt;
&lt;/li&gt;
&lt;li&gt;Upload any test file to the container
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxeg7j9e09irop24shcm8.png" alt="upload" width="799" height="261"&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Access policy&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In the Immutable blob storage section, click &lt;strong&gt;+ Add policy&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set Policy type to &lt;code&gt;Time-based retention&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set the Retention period to &lt;code&gt;5&lt;/code&gt; days&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7mtx630iumpd0fbhyqn.png" alt="save" width="800" height="422"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test if it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to delete the file you uploaded
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsvx88dctauoygo7wgbx.png" alt="try" width="800" height="502"&gt;
&lt;/li&gt;
&lt;li&gt;You should get "Failed to delete blobs due to policy"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzijeyxq316tfnq1iehrf.png" alt="cannot delete" width="798" height="245"&gt;
That error is the right result. The file is protected for 5 days&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 10: Create an Encryption Scope
&lt;/h3&gt;

&lt;p&gt;The developers require an encryption scope that enables infrastructure encryption.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, go to &lt;strong&gt;Security + networking&lt;/strong&gt; → &lt;strong&gt;Encryption&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Encryption scopes&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Give it a name (like secure-scope)&lt;/li&gt;
&lt;li&gt;Keep Encryption type as &lt;code&gt;Microsoft-managed key&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set Infrastructure encryption to &lt;code&gt;Enable&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foexpn59p7agq4e9fuupx.png" alt="scope" width="800" height="390"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apply it to a new container:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Data storag&lt;/strong&gt;e → &lt;strong&gt;Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Give it a name (&lt;code&gt;securencrypt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;In the Advanced section, select your encryption scope&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbfnhregs0rgbgh0gb80.png" alt="create" width="799" height="396"&gt;
Every blob in this container now gets its own dedicated encryption layer on top of the account-level encryption.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Common issues&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity does not have the correct permissions" when saving encryption&lt;/strong&gt;: Role assignments take 1-2 minutes to propagate across Azure. Wait, then try again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Failed to delete blobs due to policy&lt;/strong&gt;: This is correct behaviour. The immutable policy is working as intended. Wait for the retention period to expire, or test with a shorter period.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed identity not appearing in dropdown&lt;/strong&gt;: Make sure you created a User-assigned managed identity, not a system-assigned one. They appear in different drop-downs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Vault key not visible when selecting for storage encryption&lt;/strong&gt;: Confirm you assigned the Key Vault Crypto Service Encryption User role to the managed identity, not just the administrator role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What part of this took longest to configure in your environment? The RBAC roles, the Key Vault setup, or the immutable policy? Share in the comments. It helps other developers know where to slow down.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>How I setup Azure File Shares for Secure Enterprise File Storage</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Sat, 13 Jun 2026 08:14:20 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-i-setup-azure-file-shares-for-secure-enterprise-file-storage-11kb</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-i-setup-azure-file-shares-for-secure-enterprise-file-storage-11kb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Picture this: a company with offices scattered across cities, countries, even continents. London needs a file, New York has the file, Tokyo edited it and Dubai is waiting on it.&lt;br&gt;
That's the reality for thousands of growing companies and it's a logistical nightmare without the right tools.&lt;br&gt;
Teams need a central place to store, share, and access files instantly without any email chains, no waiting, no "which version is the right one?" This is especially critical for departments like Finance, where documents carry legal and compliance weight. Auditors don't accept "I couldn't find the file."&lt;br&gt;
The answer to this is Azure File Share which is a fully managed, cloud-based file sharing solution that works across every office, every device, and every timezone. And the best part? Some content can be locked down so only people on your trusted corporate network can ever touch it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What You're About to Build
&lt;/h3&gt;

&lt;p&gt;A shared file system where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Everyone sees the same files (no version confusion)&lt;/li&gt;
&lt;li&gt;Deleted files can be recovered (accidents happen!)&lt;/li&gt;
&lt;li&gt;Only trusted people can access it (security matters)&lt;/li&gt;
&lt;li&gt;Files are backed up automatically &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Definition of Terms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File Share&lt;/strong&gt;: A cloud folder that multiple people can access at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snapshot&lt;/strong&gt;: A freeze-frame of your files at a specific moment. Like a save point in a video game. If something goes wrong, you reload from the snapshot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virtual Network&lt;/strong&gt;: Your company's private internet. Only people connected to it can reach your files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Endpoint&lt;/strong&gt;: A connection point that lets your virtual network talk to Azure storage securely.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Premium Storage Account
&lt;/h3&gt;

&lt;p&gt;This is your vault. Premium means fast and reliable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for &lt;code&gt;Storage accounts&lt;/code&gt; in Azure Portal
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Furv6jj91ajy90wnbw228.png" alt="storage" width="799" height="405"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbi4bgy0u9m8y7ohtcjrb.png" alt="crrare" width="800" height="420"&gt;
&lt;/li&gt;
&lt;li&gt;Create a new resource group (name it &lt;code&gt;shared-files-team&lt;/code&gt;)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5d3n3u3mbl8yt6f08q8p.png" alt="resg" width="800" height="548"&gt;
&lt;/li&gt;
&lt;li&gt;Name your storage account (like teamfiles2026)&lt;/li&gt;
&lt;li&gt;Set Performance to &lt;code&gt;Premium&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set Premium account type to &lt;code&gt;File shares&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set Redundancy to &lt;code&gt;Zone-redundant storage&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review&lt;/strong&gt; 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0toe72fjxaotboa28g55.png" alt="rev" width="800" height="589"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7a2etzxv2pjw10ufdqlz.png" alt="create" width="800" height="577"&gt;
&lt;/li&gt;
&lt;li&gt;Wait for deployment and click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1o76hcdulbwrsf7prcm.png" alt="go" width="800" height="356"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Create Your Shared File Share
&lt;/h3&gt;

&lt;p&gt;Your actual shared folder lives here.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Data storage&lt;/strong&gt; → &lt;strong&gt;File shares&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ File share&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fth503o1lie9rd299luxq.png" alt="fileshare" width="800" height="513"&gt;
&lt;/li&gt;
&lt;li&gt;Give it a name (like &lt;code&gt;team-docs&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Take the defaults and click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6w8fb65dnenajeovr4l.png" alt="create" width="800" height="660"&gt;
Boom! You have a shared folder in the cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Organize with Folders
&lt;/h3&gt;

&lt;p&gt;Real life has departments and projects. Your file share should too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on your file share&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add directory&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqf8gt55fcxtdhn1h2683.png" alt="add" width="800" height="459"&gt;
&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;finance&lt;/code&gt; (or whatever makes sense for your team)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdghg45w8zt28cwkx3fr0.png" alt="ok" width="799" height="251"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Upload a Test File
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click into the finance folder
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0dn0s7umcz38s3ho07x.png" alt="finance" width="799" height="335"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose any file from your computer&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10ch25icr3c15gcn1igr.png" alt="upload" width="799" height="300"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvp0lwiejhm2hgy4st3bm.png" alt="what" width="800" height="346"&gt;
Your first shared file is now live. Your team can see it immediately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Create a Snapshot
&lt;/h3&gt;

&lt;p&gt;A snapshot is like taking a photo of everything right now. If disaster strikes tomorrow, you'll have this backup.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go back to your file share&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Snapshots&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add snapshot&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxpubfqu652o0ag854xz.png" alt="snap" width="799" height="373"&gt;
&lt;/li&gt;
&lt;li&gt;Add a comment if you want (optional: like "&lt;code&gt;Before Q4 cleanup&lt;/code&gt;")&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzquemkjxuym7j9o7kpt.png" alt="ok" width="800" height="411"&gt;
You just created an insurance policy for your files!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Test Restoring a Deleted File
&lt;/h3&gt;

&lt;p&gt;Let's practice losing something so you're not panicked when it actually happens.&lt;br&gt;
&lt;strong&gt;Delete the file&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go back to your file share&lt;/li&gt;
&lt;li&gt;Navigate to the finance folder&lt;/li&gt;
&lt;li&gt;Find your uploaded file&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Delete&lt;/strong&gt; and &lt;strong&gt;confirm&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffd7c4f0rcr60gx7zddj0.png" alt="deletn" width="800" height="317"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d6oo8mhy111rm7fuqr4.png" alt="gone" width="799" height="339"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Restore the file&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Snapshots&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select your snapshot
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxqgzw3x3vmbxowtw59v.png" alt="snapshot" width="800" height="448"&gt;
&lt;/li&gt;
&lt;li&gt;Navigate to the finance folder&lt;/li&gt;
&lt;li&gt;Find your file and click &lt;strong&gt;Restore&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8d166vu0l8w4v3vkvbdx.png" alt="restore" width="800" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Give it a new name&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ni79hx668jo9148xlv2.png" alt="ok" width="799" height="273"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz8yy3b5nkjmkqg92axv0.png" alt="newqsn" width="799" height="418"&gt;
Your file reappears from thin air. You're a hero. 🎉&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7: Create a Virtual Network
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Create the network&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for &lt;strong&gt;Virtual networks&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffccnpg5z8clwcorx5305.png" alt="vnet" width="799" height="370"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxiwnoatv033jadfpjo3.png" alt="create" width="800" height="574"&gt;
&lt;/li&gt;
&lt;li&gt;Select your resource group&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;team-network&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review + create&lt;/strong&gt; 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl9zbbta73twqblb5vjh1.png" alt="review" width="800" height="667"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fflve4y0cyx2f2r0tijmd.png" alt="create" width="800" height="847"&gt;
&lt;/li&gt;
&lt;li&gt;Wait and click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qc2lbjirkygz39x38ei.png" alt="go" width="799" height="480"&gt;
&lt;strong&gt;Connect storage to this network&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Subnets&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click the default subnet
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F994pjv7yeb5wyg3y9g4e.png" alt="subnets" width="799" height="535"&gt;
&lt;/li&gt;
&lt;li&gt;Find Service endpoints&lt;/li&gt;
&lt;li&gt;In Services dropdown, select Microsoft.Storage&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbw0rhj73kxv9dnhdwzi.png" alt="subnet" width="800" height="504"&gt;
You just created a private connection between your network and storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 8: Lock Down the Storage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go back to your file storage account&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Security + networking&lt;/strong&gt; → &lt;strong&gt;Networking&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Under Public network, Click &lt;strong&gt;Manage&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgpxswmtjw2tatw2x72t.png" alt="pnn" width="800" height="598"&gt;
&lt;/li&gt;
&lt;li&gt;Change Public network access to &lt;code&gt;Enabled from selected virtual networks and IP addresses&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add existing virtual network&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftpnpeaq47tjq7ffezqvz.png" alt="add" width="800" height="578"&gt;
&lt;/li&gt;
&lt;li&gt;Select your &lt;code&gt;team-network&lt;/code&gt; and the &lt;code&gt;default subnet&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7k6jwyp7ewmhbo9vm00.png" alt="save" width="800" height="401"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 9: Test the Lock (Verify It Actually Works)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Try to access your file share from the portal
You'll see: "not authorized to perform this operation"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuaec0tcv9taxddbwv51.png" alt="error" width="800" height="471"&gt;
Perfect! &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;what it means:&lt;/strong&gt;&lt;br&gt;
You (trying from the public internet) can't access it ✅&lt;br&gt;
People on the company network CAN access it ✅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And its a wrap!&lt;/strong&gt;&lt;br&gt;
You just built the same file infrastructure that top companies use. &lt;br&gt;
Your team will go from email chaos to organized collaboration. all because you spent 30 minutes following this guide.&lt;/p&gt;

&lt;p&gt;Not bad for a day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What would you store in Azure Files first? Company handbook? Project files? Financial records? Tell me in the comments, I want to know how people actually use this!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>security</category>
      <category>networking</category>
    </item>
    <item>
      <title>How to create highly available private storage account for company documents</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Tue, 09 Jun 2026 12:13:52 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-create-highly-available-private-storage-account-for-company-documents-37l0</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-create-highly-available-private-storage-account-for-company-documents-37l0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every company has data it simply cannot afford to lose or expose such as internal documents, financial records, HR files, department reports which live at the heart of how a business operates. But when your company spans multiple offices across different regions, keeping that data private, protected, and always available becomes a real challenge.&lt;br&gt;
The Finance team in one city needs to confirm cost data for an audit. The Operations team in another needs last quarter's reports. An external partner needs temporary access to a single file. Meanwhile, your public website is quietly generating data that needs backing up every single day.&lt;br&gt;
One missing file, one regional outage, one accidental leak and the consequences ripple across departments, auditors, and clients.&lt;/p&gt;

&lt;p&gt;This guide fixes all three problems which are private storage, high availability, and automated backup all step by step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You're Building&lt;/strong&gt;&lt;br&gt;
By the end of this guide you'll have:&lt;/p&gt;

&lt;p&gt;✅ A private storage account nobody can access without permission&lt;br&gt;
✅ Geo-redundant backup across two Azure regions&lt;br&gt;
✅ A locked-down container for company documents&lt;br&gt;
✅ Temporary partner access via expiring links (no shared passwords)&lt;br&gt;
✅ Automatic file tiering to cut costs after 30 days&lt;br&gt;
✅ Automated backup replication from your public website storage&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create the Private Storage Account
&lt;/h3&gt;

&lt;p&gt;This is your company's secure vault in the cloud.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Azure Portal, search for &lt;strong&gt;Storage accounts&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92joax22zr3g6w88og9q.png" alt="search" width="800" height="349"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgbrplfx6q0iohe2tovk.png" alt="create" width="799" height="444"&gt;
&lt;/li&gt;
&lt;li&gt;Select your existing resource group&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;private&lt;/code&gt; plus a unique identifier (like &lt;code&gt;private2026&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Choose Azure blob storage for primary service&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2p5qk1egjbd4tjekqq5.png" alt="review" width="800" height="669"&gt;
&lt;/li&gt;
&lt;li&gt;Then &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8e13getcqditl28g10f.png" alt="create" width="800" height="664"&gt;
&lt;/li&gt;
&lt;li&gt;Wait for deployment, then click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5dmzuinwj879v4ccjw56.png" alt="go" width="800" height="396"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Set Up Geo-Redundant Storage (GRS)
&lt;/h3&gt;

&lt;p&gt;One copy of your data is not enough. GRS keeps a second copy in a completely separate Azure region so that a regional outage doesn't take your data with it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, go to &lt;strong&gt;Data management&lt;/strong&gt; → &lt;strong&gt;Redundancy&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Geo-redundant storage (GRS)&lt;/strong&gt; from the dropdown&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Refresh page
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyjihmfiz1qhy3cbcfi7o.png" alt="GRS" width="800" height="417"&gt;
You'll now see two locations listed; your primary region and a secondary region. Your data lives in both. If one disappears, the other keeps your business running.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Create a Private Container
&lt;/h3&gt;

&lt;p&gt;Containers are how you organise files within your storage account. This one is strictly private.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Data storage&lt;/strong&gt; → &lt;strong&gt;Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set the name to &lt;code&gt;private&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep Public access level as &lt;strong&gt;Private&lt;/strong&gt; (no anonymous access)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1r9zdykjpwmfgibq6vb.png" alt="Containers" width="800" height="403"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Upload a File and Confirm It's Private
&lt;/h3&gt;

&lt;p&gt;Let's test that privacy actually works.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on your &lt;strong&gt;private container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt; and choose any file from your computer&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zdpy6a06r07kj23oacc.png" alt="upload" width="800" height="346"&gt;
&lt;/li&gt;
&lt;li&gt;Click on the uploaded file&lt;/li&gt;
&lt;li&gt;Copy the URL from the Overview tab
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7sa8u9sfaqa7up7lcnd.png" alt="test" width="800" height="620"&gt;
&lt;/li&gt;
&lt;li&gt;Open a new browser tab and paste the URL
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2dxp06tely5zxwbkn41.png" alt="error" width="800" height="199"&gt;
You should see an error like "ResourceNotFound" or "Public access is not permitted."
That error is the correct result. Your file is private. 🔒&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Grant Temporary Partner Access via SAS
&lt;/h3&gt;

&lt;p&gt;Your external partner needs to view one file for 24 hours. You don't want to give them an account, a password, or permanent access. SAS tokens are the answer. A self-expiring link that works once, for a set time, then stops.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on your uploaded file&lt;/li&gt;
&lt;li&gt;Go to the Generate SAS tab&lt;/li&gt;
&lt;li&gt;Set Permissions to Read only&lt;/li&gt;
&lt;li&gt;Check that the expiry is set to 24 hours from now&lt;/li&gt;
&lt;li&gt;Click Generate SAS token and URL
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fynbrkijx47vky6jhto9p.png" alt="sas" width="800" height="596"&gt;
&lt;/li&gt;
&lt;li&gt;Copy the Blob SAS URL
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd04tmesjdhmymnvf8oa.png" alt="copy" width="800" height="564"&gt;
&lt;/li&gt;
&lt;li&gt;Paste it in a new browser tab
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8lewglmvsr3etfjw6tc.png" alt="paste" width="799" height="211"&gt;
The file loads! But exactly 24 hours later, the same link will not work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 6: Auto-Move Old Files to Cool Storage
&lt;/h3&gt;

&lt;p&gt;Files you haven't touched in 30 days cost the same as files you use every day. That's wasteful and this rule fixes it automatically.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, go to &lt;strong&gt;Data management&lt;/strong&gt; → &lt;strong&gt;Lifecycle management&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add rule&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrhx3hkk9xrnanks0j8y.png" alt="move" width="800" height="670"&gt;
&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;movetocool&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set the scope to &lt;code&gt;Apply rule to all blobs in the storage account&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2s7stiq8fhtebm4s9h8r.png" alt="next" width="800" height="1037"&gt;
&lt;/li&gt;
&lt;li&gt;Keep &lt;strong&gt;Last modified&lt;/strong&gt; selected&lt;/li&gt;
&lt;li&gt;Set **More than (days ago) **to &lt;code&gt;30&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Then&lt;/strong&gt; dropdown, select &lt;code&gt;Move to cool storage&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6e0n2irma7odfa1x1yl.png" alt="add" width="800" height="860"&gt;
Files sit in hot storage while active, then quietly move themselves to the cheaper cool tier after a month.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 7: Create a Backup Container
&lt;/h3&gt;

&lt;p&gt;Before setting up automatic replication, you need somewhere to receive the backup files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your private storage account, go to &lt;strong&gt;Data storage&lt;/strong&gt; → &lt;strong&gt;Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name it &lt;code&gt;backup&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Keep the defaults and click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bme03pdq7jbdsmw92u8.png" alt="container" width="800" height="456"&gt;
This container will receive automatic copies of your public website files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 8: Set Up Automatic Website Backup (Object Replication)
&lt;/h3&gt;

&lt;p&gt;Your public website storage has files that need backing up. Instead of doing it manually, set up a replication rule that copies files automatically in the background.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to your public website storage account (from your previous setup, check my older articles if you need guide)&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Data management&lt;/strong&gt; → &lt;strong&gt;Object replication&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create replication rules&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fko68u9w7sc9kakq7hn6s.png" alt="rep" width="800" height="757"&gt;
&lt;/li&gt;
&lt;li&gt;Set Destination storage account to your &lt;code&gt;private storage account&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set Source container to &lt;code&gt;public&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set Destination container to &lt;code&gt;backup&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k26sq7svqktc8bz10d1.png" alt="create" width="800" height="666"&gt;
From now on, any file uploaded to your public website container will automatically appear in your private backup container within a few minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Test the Replication (Optional)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to your public website storage account&lt;/li&gt;
&lt;li&gt;Upload any file to the public container
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4yu8n0v66egtk1cful9.png" alt="upload" width="800" height="399"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sw2rt43gs0ne3lqxc3f.png" alt="doc" width="800" height="500"&gt;
&lt;/li&gt;
&lt;li&gt;Wait 3-5 minutes&lt;/li&gt;
&lt;li&gt;Go back to your private storage account&lt;/li&gt;
&lt;li&gt;Open the backup container
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxjr3bktk2r3vqfjt1pw.png" alt="backup" width="800" height="342"&gt;
Your file appears there automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You've got a live backup running in the background. ✅&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Issues&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Seeing "Public access not permitted" error when testing&lt;/strong&gt;: That's correct, it means your privacy settings are working. Only your SAS URL should load the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SAS URL not working&lt;/strong&gt;: Check the expiry time, it may have already passed. Generate a new one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replication not showing up in backup container&lt;/strong&gt;: Give it 5-10 minutes. Object replication isn't instant. If it still doesn't appear after 15 minutes, verify both containers exist and the rule is enabled.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Which department in your company would benefit most from this setup first? Finance, HR, or IT? Drop it in the comments, I'd love to know what you're protecting.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>privacy</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>How to setup a Linux Virtual machine on Azure Portal</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Fri, 15 May 2026 19:43:21 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-a-linux-virtual-machine-on-azure-portal-5484</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-a-linux-virtual-machine-on-azure-portal-5484</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I always thought Linux servers were complicated and only for experts. Turns out, setting one up in Azure is pretty straightforward.&lt;br&gt;
This guide shows you exactly how to create a Linux VM in Azure, connect to it from your computer, and run your first commands. No prior Linux experience needed, I also learned as I went!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Resource Group
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In azure portal, search Resource group and hit ENTER!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uaga8pglg20i4warmkp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4uaga8pglg20i4warmkp.png" alt="createrg" width="799" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;create&lt;/strong&gt; button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcek22nka0effa98t1xk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcek22nka0effa98t1xk.png" alt="create" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name your resource group&lt;/li&gt;
&lt;li&gt;Choose your preferred region (choose one closest to you)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frde8ddxbfyj039pfonjo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frde8ddxbfyj039pfonjo.png" alt="review" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj45kdum4mtx4m8o1icw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkj45kdum4mtx4m8o1icw.png" alt="createn" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Start Creating Your Linux VM
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to Azure Portal and search for Virtual machines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6y13xnfebbk2rp25lh47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6y13xnfebbk2rp25lh47.png" alt="search" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt; → Azure virtual machine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut9gnwu8ooml4qysbh1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut9gnwu8ooml4qysbh1p.png" alt="createn" width="799" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under project details, Select your resource group &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8vab1ttklog74ejef4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8vab1ttklog74ejef4b.png" alt="rg" width="799" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Configure basic instance details
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Virtual machine name: Type something like mylinuxvm&lt;/li&gt;
&lt;li&gt;Region: Pick one close to you &lt;/li&gt;
&lt;li&gt;Availability options: Choose &lt;em&gt;No infrastructure redundancy required&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Security type: Standard
Image: Choose your Linux flavor: Ubuntu Server 24.04 LTS ← I recommend this for beginners&lt;/li&gt;
&lt;li&gt;Size: I chose D2s version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fulqv00fk5vlsiemcgikq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fulqv00fk5vlsiemcgikq.png" alt="instance details" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Set Up Your Login Method and configure Network Access
&lt;/h3&gt;

&lt;p&gt;Here's where it gets interesting. You have two options:&lt;br&gt;
     - SSH Key (More Secure)&lt;br&gt;
     - Password (Simpler for first timers)&lt;br&gt;
I went with Password because it's less complicated&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a username (like adminuser)&lt;/li&gt;
&lt;li&gt;Create a strong password (write it down!)&lt;/li&gt;
&lt;li&gt;Public inbound ports: Select Allow selected ports&lt;/li&gt;
&lt;li&gt;Select inbound ports: Choose HTTP (80) and SSH (22)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlupc7ipk7ngvcmif0lb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlupc7ipk7ngvcmif0lb.png" alt="admin" width="799" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Configure Monitoring, Validate and create
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Scroll back to the top and choose the Monitoring tab&lt;/li&gt;
&lt;li&gt;Disable boot diagnostics&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92kzqfd8k7a7hlp6ckxh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92kzqfd8k7a7hlp6ckxh.png" alt="Monitoring" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your configurations are now Validated and your Virtual machine is ready to come alive, click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2izizab7mfrpghmng4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2izizab7mfrpghmng4d.png" alt="create" width="800" height="564"&gt;&lt;/a&gt;&lt;br&gt;
Wait 2-3 minutes for deployment, then click &lt;strong&gt;Go to resource&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e2h2do8h02mu3taca3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8e2h2do8h02mu3taca3r.png" alt="created" width="799" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Verify your VM created and Connect
&lt;/h3&gt;

&lt;p&gt;In your Linux VM resource, you would notice the public IP in the overview tab, This is what you would need to connect. Before connecting, we would need to increase the idle time of our virtual machine&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the Public IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy6655jv9tzjd7vkcub2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy6655jv9tzjd7vkcub2.png" alt="linux" width="799" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase the Idle time to 30 (max), then &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c2ptlkthqn6eiirajpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6c2ptlkthqn6eiirajpz.png" alt="idle" width="800" height="492"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back to the overview page, click &lt;strong&gt;Connect&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3a4u5e0yth6j4bkaevhl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3a4u5e0yth6j4bkaevhl.png" alt="connect" width="799" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check network access, click &lt;strong&gt;check access&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4j23nyg2yyhk8j3qokd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4j23nyg2yyhk8j3qokd.png" alt="access" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once we verify the connection, then we need to connect to our Linux virtual machine. Copy the SSH command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54iq40uvxsal9tiedgkb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F54iq40uvxsal9tiedgkb.png" alt="SSH" width="799" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your terminal (for macs) or Powershell (windows), paste this SSH command and run. When it runs successfullly, it requests confirmation  and ask for your password (remember the password we set in step 4). &lt;/li&gt;
&lt;li&gt;Enter your password (usually this doesn't show up, so accuracy is important)
Your linux VM connection is successful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqtuzhqd3sjwvg63qgih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqtuzhqd3sjwvg63qgih.png" alt="ubuntu" width="800" height="754"&gt;&lt;/a&gt;&lt;br&gt;
When operating linux, we need to run commands as a root user or add "sudo" to every command. In order to make commands work smoothly, we can change the user to a root user and update our linux server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run the command "sudo su"&lt;/li&gt;
&lt;li&gt;run the command "apt update" 
&lt;em&gt;apt&lt;/em&gt; (Advanced Package Tool) is a powerful, interactive command-line utility for managing software on Debian-based Linux distributions, such as Ubuntu and Linux Mint. It handles installation, removal, upgrading, and dependency management of .deb packages by automating retrieval from online repositories.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5db1auprj1qr7lfrrogw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5db1auprj1qr7lfrrogw.png" alt="update" width="785" height="1125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Install applications on your server
&lt;/h3&gt;

&lt;p&gt;Now that our linux server is up-to-date, we would proceed with installing some applications. In this exercise, I would be installing Vim and Nginx&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vim&lt;/strong&gt; is a highly configurable text editor built to make creating and changing any kind of text very efficient.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NGINX&lt;/strong&gt; is open-source web server software used for reverse proxy, load balancing, and caching

&lt;ul&gt;
&lt;li&gt;Install vim with the command "apt install vim&lt;/li&gt;
&lt;li&gt;when prompted, confirm with a Y&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu60epzzlq469tc5us2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuu60epzzlq469tc5us2q.png" alt="vim" width="800" height="689"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lastly, install nginx with the command "apt install nginx"&lt;/li&gt;
&lt;li&gt;When prompted, confirm with Y&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns80hjspxwh3x87xwzzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fns80hjspxwh3x87xwzzx.png" alt="nginx" width="800" height="594"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our linux Virtual machine now has a software installed on it. Let's check it out. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the Public IP in Step 6&lt;/li&gt;
&lt;li&gt;Paste in your browser tab and hit ENTER!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firhce5b3vfw9raql9fud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firhce5b3vfw9raql9fud.png" alt="welcome" width="800" height="316"&gt;&lt;/a&gt;&lt;br&gt;
If everything else is correct, you should be presented with this nice screen here!&lt;/p&gt;

&lt;p&gt;You just created and connected to a real Linux server running in Microsoft's datacenter. The same technology that powers Netflix, Spotify, and thousands of companies.&lt;br&gt;
The best part? You can destroy it and create a new one anytime. &lt;br&gt;
Remember: Stop your VM when you're done playing. Future you will appreciate the lower bill!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did you install on your Linux VM? Share in the comments! And if you got stuck anywhere, let me know; I probably hit the same issue when I started.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>linux</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>How to setup Virtual Machine on Azure Portal</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Fri, 15 May 2026 08:55:02 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-virtual-machine-on-azure-portal-6l0</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-virtual-machine-on-azure-portal-6l0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I needed a computer in the cloud, something I could access from anywhere, spin up for testing, and shut down when I'm done. That's exactly what an Azure Virtual Machine (VM) is.&lt;br&gt;
This guide walks you through creating your first VM, connecting to it, and understanding what you just built. No complex terminology, just the steps that worked for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Resource Group
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In azure portal, search &lt;strong&gt;Resource group&lt;/strong&gt; and hit ENTER!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk589mpq42b01n9pswh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk589mpq42b01n9pswh8.png" alt="rg" width="799" height="537"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;create&lt;/strong&gt; button&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyo6v2fd7t7w5j5lnn7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyo6v2fd7t7w5j5lnn7b.png" alt="create" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name your resource group &lt;/li&gt;
&lt;li&gt;Choose your preferred region based on location&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feylfmhozp7p7c2y80xhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feylfmhozp7p7c2y80xhd.png" alt="name" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgd84dmpgj1wrsaw3yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgd84dmpgj1wrsaw3yr.png" alt="create2" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have a Resource group to place your Virtual machine, let's take one step further to create the Virtual machine resource. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create a Virtual Machine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search for Virtual machines in Azure Portal and hit ENTER!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042vhspxo2577tjjotp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042vhspxo2577tjjotp.png" alt="searchVM" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create → Azure virtual machine&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyzxv1uns234baw3igf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyzxv1uns234baw3igf.png" alt="createVM" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Project details&lt;/strong&gt; tab, Select your resource group&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q6d4oqlla5ubt7hhh1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q6d4oqlla5ubt7hhh1.png" alt="project details" width="799" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Instance details&lt;/strong&gt; tab, name your VM something simple like &lt;em&gt;myFirstVM&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Choose a Region (pick one close to you)&lt;/li&gt;
&lt;li&gt;Being a test, we don't want redundancy so we would choose &lt;em&gt;No infrastructure redundancy required&lt;/em&gt; under &lt;strong&gt;Availability options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select an Image (I chose Windows 11 pro)&lt;/li&gt;
&lt;li&gt;Pick a Size ( I chose a standard D2s type)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4t4sdkhz4mrtqjz8mg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4t4sdkhz4mrtqjz8mg1.png" alt="instance details" width="799" height="538"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Administrator account&lt;/strong&gt; tab, Create a username and password (write these down!)&lt;/li&gt;
&lt;li&gt;For Windows: Check Allow selected ports → Select RDP (3389) and HTTP port (80) to connect over the internet&lt;/li&gt;
&lt;li&gt;Check the box for &lt;em&gt;Licensing&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc5du4ou5uny7okqzh25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc5du4ou5uny7okqzh25.png" alt="admin account" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scroll back to the top and choose the &lt;strong&gt;Monitoring&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Disable boot diagnostics &lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js256t0afw67w1t7ayz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js256t0afw67w1t7ayz.png" alt="Review" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your configurations are now Validated and your Virtual machine is ready to come alive, click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofs8srzw27hszamkha4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofs8srzw27hszamkha4f.png" alt="create" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait 2-3 minutes for deployment, then click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50ysc8n4sqi3hroymuiq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50ysc8n4sqi3hroymuiq.png" alt="complete" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Connect to Your VM
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the Resource overview, click &lt;strong&gt;Connect&lt;/strong&gt; (Note that your VM has an associated public IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk1e5awhvs6t3vjdukwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk1e5awhvs6t3vjdukwl.png" alt="connect" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the connect tab and using Native RDP connection, click &lt;strong&gt;Check access&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hed50y48eg5ioxkd0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hed50y48eg5ioxkd0v.png" alt="check" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once the connection has been confirmed, click &lt;strong&gt;Download RDP file&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0llz6x7pd6uh8c5noao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0llz6x7pd6uh8c5noao.png" alt="download" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open the downloaded file, Enter your username and password &lt;br&gt;
Note: If you are using another computer other than Windows, you need to download/Install the Windows app for your RDP file to work. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After successful connection, you should have a Windows screen just like this!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F136gimp25kbi0oi7tdgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F136gimp25kbi0oi7tdgs.png" alt="VM" width="800" height="511"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding what was built
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A complete computer with CPU, RAM, and storage&lt;/li&gt;
&lt;li&gt;It has its own IP address&lt;/li&gt;
&lt;li&gt;It's running 24/7 (until you stop it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important: Running VMs cost money per hour. Stop them when not in use!&lt;/p&gt;

&lt;p&gt;Congratulations! You just created a computer in the cloud. You can access it from your laptop, your phone, anywhere with internet.&lt;br&gt;
This is the same technology companies use to run their applications, websites, and services. &lt;br&gt;
Remember: stop it when you're done playing around. Your wallet will thank you!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Got stuck on any step? Drop a comment and let me know.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>microsoft</category>
      <category>virtualmachine</category>
      <category>learning</category>
    </item>
    <item>
      <title>How to setup Virtual Machine on Azure Portal</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Fri, 15 May 2026 08:55:02 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-virtual-machine-on-azure-portal-1d03</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-to-setup-virtual-machine-on-azure-portal-1d03</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I needed a computer in the cloud, something I could access from anywhere, spin up for testing, and shut down when I'm done. That's exactly what an Azure Virtual Machine (VM) is.&lt;br&gt;
This guide walks you through creating your first VM, connecting to it, and understanding what you just built. No complex terminology, just the steps that worked for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Resource Group
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In azure portal, search &lt;strong&gt;Resource group&lt;/strong&gt; and hit ENTER!&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk589mpq42b01n9pswh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk589mpq42b01n9pswh8.png" alt="rg" width="799" height="537"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;create&lt;/strong&gt; button&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyo6v2fd7t7w5j5lnn7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feyo6v2fd7t7w5j5lnn7b.png" alt="create" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name your resource group &lt;/li&gt;
&lt;li&gt;Choose your preferred region based on location&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feylfmhozp7p7c2y80xhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feylfmhozp7p7c2y80xhd.png" alt="name" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgd84dmpgj1wrsaw3yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhgd84dmpgj1wrsaw3yr.png" alt="create2" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have a Resource group to place your Virtual machine, let's take one step further to create the Virtual machine resource. &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create a Virtual Machine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search for Virtual machines in Azure Portal and hit ENTER!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042vhspxo2577tjjotp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl042vhspxo2577tjjotp.png" alt="searchVM" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create → Azure virtual machine&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyzxv1uns234baw3igf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fudyzxv1uns234baw3igf.png" alt="createVM" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Project details&lt;/strong&gt; tab, Select your resource group&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q6d4oqlla5ubt7hhh1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q6d4oqlla5ubt7hhh1.png" alt="project details" width="799" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Instance details&lt;/strong&gt; tab, name your VM something simple like &lt;em&gt;myFirstVM&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Choose a Region (pick one close to you)&lt;/li&gt;
&lt;li&gt;Being a test, we don't want redundancy so we would choose &lt;em&gt;No infrastructure redundancy required&lt;/em&gt; under &lt;strong&gt;Availability options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select an Image (I chose Windows 11 pro)&lt;/li&gt;
&lt;li&gt;Pick a Size ( I chose a standard D2s type)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4t4sdkhz4mrtqjz8mg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4t4sdkhz4mrtqjz8mg1.png" alt="instance details" width="799" height="538"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the &lt;strong&gt;Administrator account&lt;/strong&gt; tab, Create a username and password (write these down!)&lt;/li&gt;
&lt;li&gt;For Windows: Check Allow selected ports → Select RDP (3389) and HTTP port (80) to connect over the internet&lt;/li&gt;
&lt;li&gt;Check the box for &lt;em&gt;Licensing&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc5du4ou5uny7okqzh25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc5du4ou5uny7okqzh25.png" alt="admin account" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scroll back to the top and choose the &lt;strong&gt;Monitoring&lt;/strong&gt; tab&lt;/li&gt;
&lt;li&gt;Disable boot diagnostics &lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review and create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js256t0afw67w1t7ayz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js256t0afw67w1t7ayz.png" alt="Review" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your configurations are now Validated and your Virtual machine is ready to come alive, click &lt;strong&gt;create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofs8srzw27hszamkha4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofs8srzw27hszamkha4f.png" alt="create" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait 2-3 minutes for deployment, then click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50ysc8n4sqi3hroymuiq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F50ysc8n4sqi3hroymuiq.png" alt="complete" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Connect to Your VM
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the Resource overview, click &lt;strong&gt;Connect&lt;/strong&gt; (Note that your VM has an associated public IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk1e5awhvs6t3vjdukwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgk1e5awhvs6t3vjdukwl.png" alt="connect" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the connect tab and using Native RDP connection, click &lt;strong&gt;Check access&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hed50y48eg5ioxkd0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx3hed50y48eg5ioxkd0v.png" alt="check" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once the connection has been confirmed, click &lt;strong&gt;Download RDP file&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0llz6x7pd6uh8c5noao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0llz6x7pd6uh8c5noao.png" alt="download" width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open the downloaded file, Enter your username and password &lt;br&gt;
Note: If you are using another computer other than Windows, you need to download/Install the Windows app for your RDP file to work. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After successful connection, you should have a Windows screen just like this!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F136gimp25kbi0oi7tdgs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F136gimp25kbi0oi7tdgs.png" alt="VM" width="800" height="511"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding what was built
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A complete computer with CPU, RAM, and storage&lt;/li&gt;
&lt;li&gt;It has its own IP address&lt;/li&gt;
&lt;li&gt;It's running 24/7 (until you stop it)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Important: Running VMs cost money per hour. Stop them when not in use!&lt;/p&gt;

&lt;p&gt;Congratulations! You just created a computer in the cloud. You can access it from your laptop, your phone, anywhere with internet.&lt;br&gt;
This is the same technology companies use to run their applications, websites, and services. &lt;br&gt;
Remember: stop it when you're done playing around. Your wallet will thank you!&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Got stuck on any step? Drop a comment and let me know. *&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>microsoft</category>
      <category>virtualmachine</category>
      <category>learning</category>
    </item>
    <item>
      <title>How I Set Up Azure Storage for My First Public Website</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Sat, 02 May 2026 09:19:33 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/how-i-set-up-azure-storage-for-my-first-public-website-2l8i</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/how-i-set-up-azure-storage-for-my-first-public-website-2l8i</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I needed a place to store images and files for a website project. Azure Blob Storage turned out to be perfect. it's basically a file system in the cloud that anyone can access via a URL.&lt;br&gt;
This guide shows you exactly how to set it up, make files publicly accessible, and add some safety features so you don't lose your work if something gets deleted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create the Storage Account
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search for Storage accounts in Azure Portal
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttqpaijmigc5uqsxml5y.png" alt="search storage" width="800" height="210"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6p2weechymqskf8fl84f.png" alt="create" width="799" height="255"&gt;
&lt;/li&gt;
&lt;li&gt;Create a new resource group (name it something like website-storage)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwax5rvmo8j6ur7av4wg.png" alt="new rg" width="799" height="519"&gt;
&lt;/li&gt;
&lt;li&gt;Name your storage account publicwebsite plus some numbers (like publicwebsite2024)&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Review then Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kudbfb07hleoffz9mis.png" alt="create sg" width="800" height="553"&gt;
&lt;/li&gt;
&lt;li&gt;Wait for deployment, then click &lt;strong&gt;Go to resource&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmiame4yc4tul8owbu4sc.png" alt="deployment complete" width="800" height="497"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Set Up High Availability
&lt;/h3&gt;

&lt;p&gt;This makes sure your files are backed up in multiple locations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Data management → Redundancy&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy98bruwcxdctm82w0rgq.png" alt="redundancy" width="800" height="501"&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Read-access geo-redundant storage&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc27wzpf8jn8pjobvq71.png" alt="read-access" width="800" height="394"&gt;
You'll see two locations: primary and secondary
Now if one region goes down, your files are still available. Cool, right?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Allow Public Access
&lt;/h3&gt;

&lt;p&gt;By default, storage is locked down. We need to open it up for public website files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings → Configuration&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xe9pctd6in9m1rk1iao.png" alt="settings" width="799" height="526"&gt;
&lt;/li&gt;
&lt;li&gt;Turn on &lt;strong&gt;Allow Blob anonymous access&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpjybiv3mbqk6s7w5esp.png" alt="blob" width="800" height="488"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Create Your Container
&lt;/h3&gt;

&lt;p&gt;Containers are like folders that hold your files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Data storage → Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Container&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fur9z6c4feat6t68lewzx.png" alt="container" width="799" height="426"&gt;
&lt;/li&gt;
&lt;li&gt;Name it &lt;strong&gt;public&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneggpqibx3oymgkru5pn.png" alt="public" width="800" height="429"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Make Files Publicly Accessible
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click on your &lt;strong&gt;public container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Change access level&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstscjuazg726jx9c5stj.png" alt="change access" width="800" height="362"&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Blob (anonymous read access for blobs only)&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80u2z2ja5uvik5j1vpki.png" alt="error" width="799" height="289"&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxv2727brtvks93s3khol.png" alt="correct" width="799" height="230"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now anyone with the URL can view your files!&lt;/p&gt;

&lt;h3&gt;
  
  
  Upload and Test a File
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In your container, &lt;strong&gt;click Upload&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose any &lt;strong&gt;image or text file&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d1iqdyd444mgmcsf8xb.png" alt="upload" width="800" height="262"&gt;
&lt;/li&gt;
&lt;li&gt;After upload, &lt;strong&gt;click on your file&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3in5x8lq08ql5ci3eesx.png" alt="image" width="800" height="372"&gt;
&lt;/li&gt;
&lt;li&gt;Copy the &lt;strong&gt;URL from the Overview tab&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0wnsbct8vl8475kjdff.png" alt="url" width="800" height="423"&gt;
&lt;/li&gt;
&lt;li&gt;Paste it in a &lt;strong&gt;new browser tab&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjb4pjjqkxncy9mc56643.png" alt="Image" width="800" height="635"&gt;
If you see your file, it worked! 🎉&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Set Up Soft Delete (The Undo Button)
&lt;/h3&gt;

&lt;p&gt;This is like having a recycle bin. If you accidentally delete something, you can get it back for 21 days.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go back to your &lt;strong&gt;storage account overview&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;Properties → Blob service section&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Blob soft delete&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check &lt;strong&gt;Enable soft delete for blobs&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo22ym72b1oq12b2aznf7.png" alt="soft delete" width="800" height="420"&gt;
&lt;/li&gt;
&lt;li&gt;Set it to &lt;strong&gt;21 days&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fun705ns5g19t3immri5h.png" alt="save" width="799" height="465"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing Soft Delete&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to your &lt;strong&gt;container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;a file and click Delete&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5l5b4tcg4l22hmg8en0a.png" alt="delete" width="800" height="280"&gt;
&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;Show deleted blobs (top right)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;the deleted file&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfr0usnc7ui8i63ja4cp.png" alt="undelete" width="800" height="297"&gt;
&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;three dots and choose Undelete&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvmdd5fbkkg2ph4jrd6u.png" alt="image back" width="800" height="469"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your file is back!&lt;/p&gt;

&lt;h3&gt;
  
  
  Enable Versioning
&lt;/h3&gt;

&lt;p&gt;This keeps a history of your file changes, like version control for your files.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Back in &lt;strong&gt;storage account Properties&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;Blob service → Versioning&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40d96hi7ctaxdy01rxr7.png" alt="versioning" width="800" height="411"&gt;
&lt;/li&gt;
&lt;li&gt;Check &lt;strong&gt;Enable versioning for blobs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felhko2zgw0kyrk0sri3t.png" alt="save" width="800" height="535"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now when you upload a new version of a file, the old one is saved automatically.&lt;/p&gt;

&lt;p&gt;You just set up cloud storage that's accessible from anywhere on the internet. This is the same technology that powers file hosting for major websites and apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Important Warning&lt;/strong&gt;&lt;br&gt;
Since you made this publicly accessible, never upload sensitive information. Anything you put here can be accessed by anyone with the URL. No passwords, no private data, no confidential documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Got stuck anywhere? Drop a comment and I'll help you out. We're all figuring this stuff out together!&lt;/strong&gt; &lt;em&gt;Please like and share!!!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>microsoft</category>
      <category>cloud</category>
      <category>website</category>
    </item>
    <item>
      <title>Setting Up Your First Azure Storage Account</title>
      <dc:creator>Emmanuel Banjo</dc:creator>
      <pubDate>Sat, 25 Apr 2026 08:44:49 +0000</pubDate>
      <link>https://dev.to/emmanuel_banjo_df6d8074c7/setting-up-your-first-azure-storage-account-3j64</link>
      <guid>https://dev.to/emmanuel_banjo_df6d8074c7/setting-up-your-first-azure-storage-account-3j64</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Starting with Azure can feel overwhelming. There are so many options, settings, and configurations that it's hard to know where to begin. But here's the good news: setting up a storage account doesn't have to be complicated.&lt;br&gt;
I recently went through the process of creating my first Azure Storage Account for a learning project, and I want to share what I learned. This guide will walk you through each step in plain language.&lt;br&gt;
We'll create a storage account that's perfect for learning and testing i.e one that's secure, won't rack up unexpected charges, and follows good practices from the start. No prior Azure experience needed!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Creating a Resource Group
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What's a Resource Group?&lt;/strong&gt;&lt;br&gt;
Think of a resource group like a folder on your computer. Just like you'd put all your vacation photos in one folder, you put all your related Azure resources in one resource group. It makes everything easier to organize and manage.&lt;br&gt;
The cool part? When you delete the resource group later, everything inside gets deleted too. No hunting down individual items. Perfect for learning projects!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's Create One quickly&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open the Azure Portal and type &lt;strong&gt;Resource groups&lt;/strong&gt; in the search bar&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjprloz0za61jpzp4061k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjprloz0za61jpzp4061k.png" alt="An image showing where to locate the search button in Azure portal" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click the &lt;strong&gt;+ Create&lt;/strong&gt; button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5evw7matw5k0zrurkxh6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5evw7matw5k0zrurkxh6.png" alt="An image showing where to locate the create button in Azure portal" width="799" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give it a simple name like my-storage-project or learning-storage&lt;/li&gt;
&lt;li&gt;Pick a region (like East US or West Europe)just choose one close to you&lt;/li&gt;
&lt;li&gt;Click Review and create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnfuyp93w0bzuea4mdycp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnfuyp93w0bzuea4mdycp.png" alt="Review and create" width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;then Create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63u8d4jxjswdiqtnd10k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63u8d4jxjswdiqtnd10k.png" alt="Create" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating Your Storage Account&lt;/strong&gt;&lt;br&gt;
Now let's create the actual storage account&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for Storage accounts in the Azure Portal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femn4fx257jpx5ke3fiyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femn4fx257jpx5ke3fiyf.png" alt="storage account" width="799" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click + Create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fq70jthnuzj1b9mzni8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fq70jthnuzj1b9mzni8.png" alt="create" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the resource group you just created&lt;/li&gt;
&lt;li&gt;Give your storage account a name (it needs to be unique across all of Azure, so try something like mystoragelearn123)&lt;/li&gt;
&lt;li&gt;Keep Performance set to Standard (this is the cheaper option and perfect for learning)&lt;/li&gt;
&lt;li&gt;Click Review + Create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpud1qdo1ousahk177ewu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpud1qdo1ousahk177ewu.png" alt="Review + Create" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then Create&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssnam9dyc8dviok8un2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssnam9dyc8dviok8un2s.png" alt="Create" width="800" height="821"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait a minute for it to deploy, then click Go to resource&lt;/p&gt;

&lt;p&gt;Done! You now have your own storage account in the cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Choosing How Your Data is Stored
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What's Redundancy?&lt;/strong&gt;&lt;br&gt;
When you store data in Azure, it automatically makes copies in case something goes wrong. The question is: how many copies do you need?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LRS **(Locally Redundant Storage): Makes 3 copies in one location - cheapest option&lt;br&gt;
**ZRS, GRS, GZRS&lt;/strong&gt;: More copies in more places - costs more money&lt;/p&gt;

&lt;p&gt;For learning and testing, LRS is perfect. You save money and still have backup copies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting it to LRS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, find Data management on the left menu, then click Redundancy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsfo77x8ywnlyc3lzmpn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsfo77x8ywnlyc3lzmpn.png" alt="Storage account" width="799" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the dropdown to Locally-redundant storage (LRS)&lt;/li&gt;
&lt;li&gt;Click Save&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dzfn1f9ke4ejk15rusk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dzfn1f9ke4ejk15rusk.png" alt="save" width="799" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! You just cut your storage costs significantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Making It Secure
&lt;/h3&gt;

&lt;p&gt;Now let's make sure your storage is secure. Don't worry, it's just a few simple settings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use HTTPS (Keep Your Data Safe in Transit)&lt;br&gt;
You want all your data to travel securely over the internet, like using HTTPS on a website.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings → Configuration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Make sure Secure transfer required says &lt;strong&gt;Enabled&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg08gmjzpcttwntdzony.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqg08gmjzpcttwntdzony.png" alt="secure transfer" width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it. Now all your data travels encrypted.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use Modern Security (TLS 1.2)&lt;br&gt;
This is like saying "only let in people with new security badges,&lt;br&gt;&lt;br&gt;
not old ones that can be faked."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Still in &lt;strong&gt;Settings → Configuration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check that &lt;strong&gt;Minimum TLS version&lt;/strong&gt; is set to &lt;strong&gt;Version 1.2&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19yko63na5h0dth0sbzn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19yko63na5h0dth0sbzn.png" alt="TLS version" width="799" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Control Who Can Access It&lt;br&gt;
If you're not using the storage right now, you can turn off access:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;Settings → Configuration&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;Allow storage account key access&lt;/strong&gt; and set it to &lt;strong&gt;Disabled&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblkda1e0fnru1a9x3n5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblkda1e0fnru1a9x3n5p.png" alt="Disable access" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can always turn this back on when you need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Allow Network Access
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Security + networking → Networking&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Make sure Public network access is set to Enabled from all networks&lt;/li&gt;
&lt;li&gt;Click Save&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcc1xym0a71ut45k3o15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgcc1xym0a71ut45k3o15.png" alt="security" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuho14m2195y58pjj7wed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuho14m2195y58pjj7wed.png" alt="public access" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You just set up your first Azure Storage Account. I know it might have seemed like a lot of steps, but you did it!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did this guide help you? Drop a comment and let me know how your setup went! And if you got stuck anywhere, ask away. we're all learning together.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Helpful Links
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/storage/common/storage-account-overview" rel="noopener noreferrer"&gt;What is Azure Storage?&lt;/a&gt; - Official Microsoft docs&lt;br&gt;
&lt;a href="https://azure.microsoft.com/free/" rel="noopener noreferrer"&gt;Azure Free Account&lt;/a&gt; - Get free credits to practice with&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloudcomputing</category>
      <category>tutorial</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
