<?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>Forem: Precious Uchechukwu Nwafor</title>
    <description>The latest articles on Forem by Precious Uchechukwu Nwafor (@precious_nwafor).</description>
    <link>https://forem.com/precious_nwafor</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3745007%2Fe0786dff-c695-4371-a411-81d0110029a3.jpg</url>
      <title>Forem: Precious Uchechukwu Nwafor</title>
      <link>https://forem.com/precious_nwafor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/precious_nwafor"/>
    <language>en</language>
    <item>
      <title>Project: Update and Maintain Azure Resources</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Tue, 24 Mar 2026 01:51:20 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/project-update-and-maintain-azure-resources-5clj</link>
      <guid>https://forem.com/precious_nwafor/project-update-and-maintain-azure-resources-5clj</guid>
      <description>&lt;p&gt;This project gives us the chance to practice &lt;strong&gt;managing Azure resources&lt;/strong&gt;, including &lt;strong&gt;networks, virtual machines, and storage blobs&lt;/strong&gt;. We will also have the chance to work with &lt;strong&gt;tags and resource locks&lt;/strong&gt;. In this &lt;strong&gt;article&lt;/strong&gt; we will learn how to &lt;strong&gt;update a virtual network and subnet, manage virtual machines, control storage access, and manage resource tags and locks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; : This &lt;strong&gt;guided project&lt;/strong&gt; requires us to provide an &lt;strong&gt;Azure subscription&lt;/strong&gt;. &lt;strong&gt;Leaving&lt;/strong&gt; resources &lt;strong&gt;provisioned and running&lt;/strong&gt; after completion of the exercise may result in &lt;strong&gt;unexpected costs&lt;/strong&gt;. It is important to keep &lt;strong&gt;track&lt;/strong&gt; of &lt;strong&gt;resources&lt;/strong&gt; you create to ensure you &lt;strong&gt;remove&lt;/strong&gt; them during the &lt;strong&gt;clean-up task&lt;/strong&gt;. Where possible, follow recommended &lt;strong&gt;naming conventions&lt;/strong&gt; to make it &lt;strong&gt;easier to clean up&lt;/strong&gt; the resource for this &lt;strong&gt;project&lt;/strong&gt; at the end. Creating and using Azure resources for this project may &lt;strong&gt;increase your Azure costs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let's get to  it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1: The first phase is to &lt;strong&gt;prepare our environment&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: From the &lt;strong&gt;Azure portal&lt;/strong&gt; home page, in the &lt;strong&gt;search box&lt;/strong&gt;, enter &lt;strong&gt;resource groups&lt;/strong&gt;. Select &lt;strong&gt;Resource groups&lt;/strong&gt; under &lt;strong&gt;services&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%2Fgu9hrm1d1gwkbsqsao4e.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%2Fgu9hrm1d1gwkbsqsao4e.png" alt="searching for resource group" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: &lt;em&gt;Take note of other resource groups that are already created. During clean up, you want to avoid deleting resource groups that were already here. Pay special attention for a resource group called NetworkWatcherRG. If it doesn’t already exist, the NetworkWatcherRG will be created during this guided project and should be deleted at the end. However, if the NetworkWatcherRG already exists prior to starting this project, you should NOT delete it at the end. It may be helpful to take a screenshot of resource groups that exist before you create the group for the guided project.&lt;/em&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%2Fks765n3w7a1f8oc7swcb.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%2Fks765n3w7a1f8oc7swcb.png" alt="Network watcher rg" width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Select &lt;strong&gt;Create&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%2Fyjfel53lw8e3rit50dxg.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%2Fyjfel53lw8e3rit50dxg.png" alt="Selecting create" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;em&gt;Your subscription should already be selected. If you have multiple Azure subscriptions associated with this login, select the one you’d like to use for the guided project.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Enter &lt;strong&gt;guided-project-rg&lt;/strong&gt; in the Resource group &lt;strong&gt;name&lt;/strong&gt; field. The Region field will automatically populate. Leave the default value. Select Review + create.&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%2F5wows6uo5lsdz1iqoxee.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%2F5wows6uo5lsdz1iqoxee.png" alt="Rg name" width="800" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Select &lt;strong&gt;Create&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%2Fgf12zqxyygjvhdqjxbmp.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%2Fgf12zqxyygjvhdqjxbmp.png" alt="Creating" width="800" height="854"&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%2F0rhzwqqeqg5ot4hiw6oy.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%2F0rhzwqqeqg5ot4hiw6oy.png" alt="Resource created" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Return to the home page of the Azure portal by selecting &lt;strong&gt;Home&lt;/strong&gt;. If Home is &lt;strong&gt;not visible&lt;/strong&gt;, select &lt;strong&gt;Microsoft Azure&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%2Fhggoosnkuy44lh27ikhb.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%2Fhggoosnkuy44lh27ikhb.png" alt="Home page" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;: Create a &lt;strong&gt;virtual network&lt;/strong&gt; with one &lt;strong&gt;subnet&lt;/strong&gt;&lt;br&gt;
From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual networks&lt;/strong&gt;. Select &lt;strong&gt;virtual networks&lt;/strong&gt; under services.&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%2Futake10naw31kx2n2f47.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%2Futake10naw31kx2n2f47.png" alt="Searching the GUI for VN" width="800" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;:Select &lt;strong&gt;Create&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%2Fd3srau7k010ah6rkgxmw.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%2Fd3srau7k010ah6rkgxmw.png" alt="Select create VN" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt;: Click Resource group &lt;strong&gt;drop-down menu&lt;/strong&gt; and select the Resource group we created earlier, &lt;strong&gt;guided-project-rg&lt;/strong&gt; Scroll down to the &lt;strong&gt;Instance details&lt;/strong&gt; section and enter &lt;strong&gt;guided-project-vnet&lt;/strong&gt; for the &lt;strong&gt;Virtual network name&lt;/strong&gt;. Select &lt;strong&gt;Review + create&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%2Ferwplm720bwgltjcvsif.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%2Ferwplm720bwgltjcvsif.png" alt="VN name" width="800" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9&lt;/strong&gt;: Select &lt;strong&gt;Create&lt;/strong&gt;. Wait for the screen to refresh and show Your deployment is complete.&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%2Fu8age30bhms3q2htt9eu.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%2Fu8age30bhms3q2htt9eu.png" alt="Selecting create" width="800" height="788"&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%2Fxddf4apbh2k8wqq63ykw.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%2Fxddf4apbh2k8wqq63ykw.png" alt="Deployment complete" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10&lt;/strong&gt;: Select &lt;strong&gt;Home&lt;/strong&gt; to return to the &lt;strong&gt;Azure portal home page&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%2Fwsnm0tl6yf8ug2cg9xfa.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%2Fwsnm0tl6yf8ug2cg9xfa.png" alt="Homepage" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 11&lt;/strong&gt;: Create a virtual machine. From the &lt;strong&gt;Azure portal home page&lt;/strong&gt;, in the &lt;strong&gt;search box&lt;/strong&gt;, enter &lt;strong&gt;virtual machines&lt;/strong&gt;. Select &lt;strong&gt;virtual machines&lt;/strong&gt; under services.&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%2Fy2ud1vkq4qu9cqlpfavk.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%2Fy2ud1vkq4qu9cqlpfavk.png" alt="Virtual machine" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 12&lt;/strong&gt;: Select &lt;strong&gt;Create&lt;/strong&gt; and then select &lt;strong&gt;Virtual machine&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%2Fsgm6lkqexm8k9wrc394d.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%2Fsgm6lkqexm8k9wrc394d.png" alt="Creating VN" width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 13&lt;/strong&gt;: Select &lt;strong&gt;guided-project-rg&lt;/strong&gt; for the &lt;strong&gt;Resource group&lt;/strong&gt;.&lt;br&gt;
Enter &lt;strong&gt;guided-project-vm&lt;/strong&gt; for the &lt;strong&gt;Virtual machine name&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%2F77q11i954jrrjs9z8jvv.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%2F77q11i954jrrjs9z8jvv.png" alt=" " width="800" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt; : Notice the &lt;strong&gt;error&lt;/strong&gt; when you scroll down. This size is currently unavailable in &lt;strong&gt;East US&lt;/strong&gt;for the current subscription: NotAvailableForSubscription.&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%2Fjlpv9w3eummktyx2b4zg.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%2Fjlpv9w3eummktyx2b4zg.png" alt="Error" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Azure: Regional Quota &amp;amp; Resource Constraints
&lt;/h2&gt;

&lt;p&gt;When deploying a Virtual Machine (VM) in Azure, you might hit a &lt;strong&gt;Subscription Quota&lt;/strong&gt; or &lt;strong&gt;SKU Availability error&lt;/strong&gt;. This usually means your chosen &lt;strong&gt;VM size isn't available&lt;/strong&gt; in your &lt;strong&gt;current region&lt;/strong&gt; (e.g., US East). &lt;/p&gt;

&lt;p&gt;The quick fix? Deploy the VM to a region like &lt;strong&gt;Korea Central&lt;/strong&gt; where the size is supported. But what happens to your &lt;strong&gt;existing infrastructure&lt;/strong&gt;? Here is the breakdown:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Resource Group (RG)
&lt;/h3&gt;

&lt;p&gt;You do not need to &lt;strong&gt;delete your Resource Group in US East&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Logic&lt;/strong&gt;: An &lt;strong&gt;RG&lt;/strong&gt; is a &lt;strong&gt;logical container used for management and metadata&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Benefit&lt;/strong&gt;: While the RG itself is &lt;strong&gt;located&lt;/strong&gt; in &lt;strong&gt;US East&lt;/strong&gt; to store its metadata, the &lt;strong&gt;actual resources inside&lt;/strong&gt; it (&lt;strong&gt;VMs, Networks, Storage&lt;/strong&gt;) can be &lt;strong&gt;located in any region supported&lt;/strong&gt; by your &lt;strong&gt;subscription&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. The &lt;strong&gt;Virtual Network (VNet) Dependency&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;Unlike the &lt;strong&gt;Resource Group&lt;/strong&gt;, a &lt;strong&gt;Virtual Machine&lt;/strong&gt; must &lt;strong&gt;reside in the same region as its Virtual Network&lt;/strong&gt;. Because we are &lt;strong&gt;moving&lt;/strong&gt; the &lt;strong&gt;VM to Korea Central&lt;/strong&gt;, the &lt;strong&gt;initial VNet in US East&lt;/strong&gt; becomes &lt;strong&gt;incompatible&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Fix&lt;/strong&gt;: We must &lt;strong&gt;deploy a new Virtual Network&lt;/strong&gt; in &lt;strong&gt;Korea Central&lt;/strong&gt; to &lt;strong&gt;support the new VM&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. The Implementation Strategy
&lt;/h3&gt;

&lt;p&gt;If the project requires a &lt;strong&gt;specific, unique naming convention&lt;/strong&gt; for the VNet:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Delete&lt;/strong&gt; the &lt;strong&gt;initial Virtual Network in US East&lt;/strong&gt; (to free up the name).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Deploy&lt;/strong&gt; the &lt;strong&gt;new Virtual Machine to Korea Central&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Create&lt;/strong&gt; the &lt;strong&gt;new Virtual Network in Korea Central&lt;/strong&gt; during the deployment process, using the &lt;strong&gt;required name&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h3&gt;
  
  
  Key Takeaway
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Resource Groups are globally flexible logical containers, but Networking and Compute resources are "region-locked" to each other. Always ensure your VNet and VM share the same regional home!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 14&lt;/strong&gt; : Now lets get back to creating our VM. Due to the Size constraint we will change the region to &lt;strong&gt;Korea Central&lt;/strong&gt;. Once you notice the error is gone, proceed to the next step. For the &lt;strong&gt;Image&lt;/strong&gt;, select one of the &lt;strong&gt;Ubuntu Server options&lt;/strong&gt;. (For example, Ubuntu Server 24.04 LTS - x64 Gen2). Select an &lt;strong&gt;available size&lt;/strong&gt; for your VM in your selected region. Continue further on the &lt;strong&gt;Basics page&lt;/strong&gt; to the &lt;strong&gt;Administrator account section&lt;/strong&gt;. Select &lt;strong&gt;Password&lt;/strong&gt; for &lt;strong&gt;authentication type&lt;/strong&gt;. Enter &lt;strong&gt;guided-project-admin&lt;/strong&gt; for the &lt;strong&gt;admin Username&lt;/strong&gt;. Enter a &lt;strong&gt;password&lt;/strong&gt; for the &lt;strong&gt;admin account&lt;/strong&gt;. Confirm the &lt;strong&gt;password&lt;/strong&gt; for the &lt;strong&gt;admin account&lt;/strong&gt;. Leave the &lt;strong&gt;rest of the settings&lt;/strong&gt; as &lt;strong&gt;default settings&lt;/strong&gt;. You can &lt;strong&gt;review the settings&lt;/strong&gt; if you like, but shouldn’t change any. Select &lt;strong&gt;Review + create&lt;/strong&gt;. Select &lt;strong&gt;create&lt;/strong&gt;. Go to &lt;strong&gt;Home page&lt;/strong&gt; after deployment confirmation.&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%2F8qi2c1101peuwjdgokl1.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%2F8qi2c1101peuwjdgokl1.png" alt="Changing region" width="800" height="576"&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%2Ffn6uc0i3pc915ctcoc1s.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%2Ffn6uc0i3pc915ctcoc1s.png" alt="Size and server" width="800" height="480"&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%2Fduo1oic8o5q7smzxhs0u.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%2Fduo1oic8o5q7smzxhs0u.png" alt="Administrative account" width="800" height="505"&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%2Fxhnve3y1bgwdpncl6uty.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%2Fxhnve3y1bgwdpncl6uty.png" alt="Create" width="800" height="1051"&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%2F6az4yfh6esxi1yv8l2c5.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%2F6az4yfh6esxi1yv8l2c5.png" alt="Deployment complete" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 15&lt;/strong&gt;: We will proceed create a &lt;strong&gt;Storage account&lt;/strong&gt;. From the &lt;strong&gt;Azure portal home page&lt;/strong&gt;, in the &lt;strong&gt;search box&lt;/strong&gt;, &lt;strong&gt;enter storage accounts&lt;/strong&gt;. &lt;strong&gt;Select Storage&lt;/strong&gt; accounts under services. Select &lt;strong&gt;create&lt;/strong&gt;.&lt;br&gt;
Scroll down to the &lt;strong&gt;Instance details&lt;/strong&gt; section and enter a name for the storage account. Storage accounts must be globally unique, so you may have to try a few different times to get a storage account name.&lt;br&gt;
Select &lt;strong&gt;Review + create&lt;/strong&gt;. Select &lt;strong&gt;Create&lt;/strong&gt;. Wait for the screen to refresh and show &lt;strong&gt;Your deployment is complete&lt;/strong&gt;. Select &lt;strong&gt;Home&lt;/strong&gt; to return to the Azure portal home page. We have completed the Prepare exercise. Return to Microsoft Learn to continue to &lt;strong&gt;Phase 2&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%2Fe6be9s1h77prts31evn3.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%2Fe6be9s1h77prts31evn3.png" alt="Searching for storage" width="800" height="264"&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%2Fdhbb2tnr11zgst2lolvm.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%2Fdhbb2tnr11zgst2lolvm.png" alt="Setting storage variables" width="800" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2: Update the virtual network. We are helping an Azure Admin maintain resources. While we won’t be responsible for maintaining the entire infrastructure, the Admin will ask us to help out by completing certain tasks.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Currently, there’s a Linux virtual machine (VM) that’s underutilized, and a need for a new Linux machine to serve as an FTP server. However, the Azure admin wants to be able to track network flow and resource utilization for the needed FTP server, so has asked us to start out by provisioning a new subnet. The current subnet should be left alone, as there are future plans for using it for additional VMs.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a new subnet on an existing virtual network (vNet).&lt;br&gt;
From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual networks&lt;/strong&gt;. &lt;strong&gt;Select&lt;/strong&gt; virtual networks under services. Select the guided-project-vnet virtual network. From the &lt;strong&gt;guided-project-vnet blade&lt;/strong&gt;, under settings, select &lt;strong&gt;Subnets&lt;/strong&gt;. To add a &lt;strong&gt;subnet&lt;/strong&gt;, select &lt;strong&gt;+ Subnet&lt;/strong&gt;. For Subnet purpose leave it as &lt;strong&gt;Default&lt;/strong&gt;. For &lt;em&gt;Name&lt;/em&gt;* enter: &lt;strong&gt;ftpSubnet&lt;/strong&gt;. Leave the rest of the settings alone and select &lt;strong&gt;Add&lt;/strong&gt;. To &lt;strong&gt;increase security&lt;/strong&gt;, you need to configure a &lt;strong&gt;Network security group&lt;/strong&gt; to restrict which &lt;strong&gt;ports are allowed on the subnet&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%2Fo0uqoiedlne1g85fcco7.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%2Fo0uqoiedlne1g85fcco7.png" alt="Search for VN" width="800" height="214"&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%2Fzmg8rtrgmfz420xk2rwz.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%2Fzmg8rtrgmfz420xk2rwz.png" alt="select the vnet created" width="800" height="292"&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%2Ffqbhg872vh8y4ys4kt9u.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%2Ffqbhg872vh8y4ys4kt9u.png" alt="settings" width="800" height="358"&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%2Ftclpxgmriqe9cwi3v6i0.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%2Ftclpxgmriqe9cwi3v6i0.png" alt="Creating subnet" width="800" height="442"&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%2F2htrsd4ktgxycp8fnc6h.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%2F2htrsd4ktgxycp8fnc6h.png" alt="Subnet created" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Create a &lt;strong&gt;network security group&lt;/strong&gt; . From the &lt;strong&gt;Azure portal home page&lt;/strong&gt;, in the &lt;strong&gt;search box&lt;/strong&gt;, enter &lt;strong&gt;virtual networks&lt;/strong&gt;. Select &lt;strong&gt;virtual networks under services&lt;/strong&gt;. Select &lt;strong&gt;Network security groups&lt;/strong&gt;. Select &lt;strong&gt;+ Create&lt;/strong&gt;. Verify the &lt;strong&gt;subscription is correct*. Select the **guided-project-rg resource group&lt;/strong&gt;. Enter &lt;strong&gt;ftpNSG&lt;/strong&gt; for the &lt;strong&gt;network security group name&lt;/strong&gt;. Select &lt;strong&gt;Review + create&lt;/strong&gt;. Once the validation is complete, select &lt;strong&gt;Create&lt;/strong&gt;. Wait for the screen to refresh and display Your deployment is complete. Select &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%2Fngt1zlyn0nzkhyctxg6c.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%2Fngt1zlyn0nzkhyctxg6c.png" alt="Searching for virtual network" width="800" height="222"&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%2F4inr61yozlqf4jaxkjs7.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%2F4inr61yozlqf4jaxkjs7.png" alt="NSG - Create" width="800" height="430"&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%2Fgsvom85we0kociim1u0e.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%2Fgsvom85we0kociim1u0e.png" alt="Setting variables" width="800" height="789"&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%2Fsm9qdq2qi3d00ai3xj9u.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%2Fsm9qdq2qi3d00ai3xj9u.png" alt="create" width="800" height="864"&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%2F8pl2c0im4aurb72vi8ur.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%2F8pl2c0im4aurb72vi8ur.png" alt="Go to resource" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : Create an &lt;strong&gt;inbound security rule&lt;/strong&gt;. Under &lt;strong&gt;settings&lt;/strong&gt;, select &lt;strong&gt;Inbound security rules&lt;/strong&gt;. Select &lt;strong&gt;+ Add&lt;/strong&gt;. Change the &lt;strong&gt;Destination port ranges from 8080 to 22&lt;/strong&gt;. Select &lt;strong&gt;TCP for the protocol&lt;/strong&gt;. Set the &lt;strong&gt;name&lt;/strong&gt; to &lt;strong&gt;ftpInbound&lt;/strong&gt;. Select &lt;strong&gt;Add&lt;/strong&gt;.&lt;br&gt;
Select Home to return to the Azure portal home page. We created a &lt;strong&gt;new Network security group&lt;/strong&gt; and &lt;strong&gt;configured rules to allow inbound FTP traffic&lt;/strong&gt;. Now, we will need to associate the &lt;strong&gt;new network security group with the ftpSubnet&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%2F8b06nc2et3ko7i95dazp.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%2F8b06nc2et3ko7i95dazp.png" alt="Inbound security rule" width="800" height="352"&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%2F76sluaf54kl1o5uen8qa.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%2F76sluaf54kl1o5uen8qa.png" alt="Adding" width="800" height="134"&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%2Fnkam24mzerlbx9zo585m.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%2Fnkam24mzerlbx9zo585m.png" alt="completed" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Associate a network security group to a subnet.&lt;br&gt;
From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual networks&lt;/strong&gt;. Select &lt;strong&gt;virtual networks under services&lt;/strong&gt;. Select the &lt;strong&gt;guided-project-vnet virtual network&lt;/strong&gt;. Under settings, select &lt;strong&gt;Subnets&lt;/strong&gt;. Select the &lt;strong&gt;ftpSubnet&lt;/strong&gt; we created. On the &lt;strong&gt;Edit subnet page&lt;/strong&gt;, under the &lt;strong&gt;Security section heading&lt;/strong&gt;, update the &lt;strong&gt;Network security group field&lt;/strong&gt; to &lt;strong&gt;ftpNSG&lt;/strong&gt;. Select &lt;strong&gt;Save&lt;/strong&gt;. We have completed the work needed to prepare the &lt;strong&gt;network for shifting the current Linux VM&lt;/strong&gt; to a &lt;strong&gt;new subnet&lt;/strong&gt; that’s designed to handle &lt;strong&gt;incoming FTP traffic&lt;/strong&gt;. We will move to &lt;strong&gt;Phase 3&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%2Fxi8levveqnjj7dxwt8vz.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%2Fxi8levveqnjj7dxwt8vz.png" alt="Searching forvVirtual network" width="800" height="225"&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%2Fm8nixy0yd0670igk0nuq.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%2Fm8nixy0yd0670igk0nuq.png" alt="Selecting vn" width="800" height="324"&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%2F55u3xl2vh3ymb2nkgc26.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%2F55u3xl2vh3ymb2nkgc26.png" alt="adding NSG to subnet" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3:Manage virtual machines. With the network settings updated to support segmenting the Linux virtual machine, you are ready to manage the virtual machine itself. The first thing the Azure admin asks us to complete is moving the virtual machine to the new subnet you created in the previous exercise.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: &lt;strong&gt;Move&lt;/strong&gt; the &lt;strong&gt;virtual machine network to the new subnet&lt;/strong&gt;&lt;br&gt;
From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual machines&lt;/strong&gt;. &lt;strong&gt;Select&lt;/strong&gt; virtual machines under services. Select the &lt;strong&gt;guided-project-vm virtual machine&lt;/strong&gt;. If the virtual machine is running, select &lt;strong&gt;Stop&lt;/strong&gt;. Wait for the Status field to update and show &lt;strong&gt;Stopped (deallocated)&lt;/strong&gt;. Within the &lt;strong&gt;Networking subsection&lt;/strong&gt; of the menu, select &lt;strong&gt;Network settings&lt;/strong&gt;. Select the &lt;strong&gt;Network interface / IP configuration hyperlink&lt;/strong&gt; for the VM. On the &lt;strong&gt;IP Configurations page&lt;/strong&gt;, update the &lt;strong&gt;Subnet to ftpSubnet&lt;/strong&gt;. Select &lt;strong&gt;Apply&lt;/strong&gt;. Good job! we have migrated the VM from one subnet to another. Remember, the new subnet had specific network security rules applied to help it function as an FTP server. &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%2F70a18z1tnwu5qqfqdj95.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%2F70a18z1tnwu5qqfqdj95.png" alt="Searching for virtual machine" width="800" height="160"&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%2F8nj8mh4gwz80enlen9ja.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%2F8nj8mh4gwz80enlen9ja.png" alt="Stopped VM" width="800" height="301"&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%2Fretg5zg1h3i3hgbbbn2j.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%2Fretg5zg1h3i3hgbbbn2j.png" alt="Networking" width="800" height="308"&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%2F9p86v5lbbin6g2viljc8.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%2F9p86v5lbbin6g2viljc8.png" alt="ftp subnet" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;:The next task from the Azure admin relates to the computing power of the VM. The admin would like us to &lt;strong&gt;vertically scale&lt;/strong&gt; the machine to &lt;strong&gt;increase the computing power&lt;/strong&gt; . From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual machines&lt;/strong&gt; . Select &lt;strong&gt;virtual machines&lt;/strong&gt;  under services. Select the &lt;strong&gt;guided-project-vm virtual machine&lt;/strong&gt; . Locate the &lt;strong&gt;Availability + scale submenu&lt;/strong&gt;  and select &lt;strong&gt;Size&lt;/strong&gt; . Select a new &lt;strong&gt;VM size D2s_v5 for example&lt;/strong&gt; . (Note: If you don’t see the same size as shown in this exercise, select something similar.) Select &lt;strong&gt;Resize&lt;/strong&gt; . Note: The VM size may not update in the Azure UI until the VM is restarted. Select &lt;strong&gt;Home&lt;/strong&gt;  to return to the Azure portal home page. &lt;br&gt;
&lt;em&gt;With the VM scaled up to a more robust processor, it can handle the new role it’s being assigned. However, now the Azure admin realizes that if the VM is going to server as an FTP server, it needs more storage. The Azure admin asked us to attach a new data disk to the VM.&lt;/em&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%2Fcfzjx8uvg0z3d6f3sccx.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%2Fcfzjx8uvg0z3d6f3sccx.png" alt="Searching for virtual machines" width="800" height="155"&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%2F9qf8rdr0fsh1vdyabwnf.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%2F9qf8rdr0fsh1vdyabwnf.png" alt="Selecting new size" width="800" height="359"&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%2Ff0l3k7gdkttrcef47vgm.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%2Ff0l3k7gdkttrcef47vgm.png" alt="Successful resize" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: &lt;strong&gt;Attach data disks&lt;/strong&gt; to a virtual machine. From the &lt;strong&gt;Azure portal home page&lt;/strong&gt;, in the search box, enter &lt;strong&gt;virtual machines&lt;/strong&gt;. Select &lt;strong&gt;virtual machines under services. Select the **guided-project-vm virtual machine&lt;/strong&gt;. Locate the &lt;strong&gt;settings submenu and select Disks&lt;/strong&gt;. Select &lt;strong&gt;Create&lt;/strong&gt; and &lt;strong&gt;attach a new disk&lt;/strong&gt;.Leave &lt;strong&gt;LUN as default&lt;/strong&gt;.Enter &lt;strong&gt;ftp-data-disk&lt;/strong&gt; for the &lt;strong&gt;Disk name&lt;/strong&gt;.Leave the &lt;strong&gt;Storage type&lt;/strong&gt; as &lt;strong&gt;default&lt;/strong&gt;.Enter &lt;strong&gt;20&lt;/strong&gt; for the &lt;strong&gt;Size&lt;/strong&gt;.Select &lt;strong&gt;Apply&lt;/strong&gt; to create the &lt;strong&gt;new storage disk&lt;/strong&gt; and &lt;strong&gt;attach the disk to the machine&lt;/strong&gt;. Select &lt;strong&gt;Home&lt;/strong&gt; to return to the &lt;strong&gt;Azure portal home page&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%2Fwr410a4tozq5beyf7b5r.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%2Fwr410a4tozq5beyf7b5r.png" alt="Searching for vm" width="800" height="145"&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%2Fj6rgpjyxxycbey6mfj9o.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%2Fj6rgpjyxxycbey6mfj9o.png" alt="setting disk resize variables" width="800" height="366"&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%2Frh55ljqg13bx29614qz1.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%2Frh55ljqg13bx29614qz1.png" alt="Successful" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Awesome! Now the VM has enough storage to handle some uploads. The final thing the Azure admin is concerned about is the cost of running the computer 24 hours a day. The first thing they will do every morning is start up the FTP server. However, they’d like you to configure it to automatically shutdown every day at 7 PM Coordinated Universal Time (UTC).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : &lt;strong&gt;Configure automatic shutdown&lt;/strong&gt; on the &lt;strong&gt;virtual machine&lt;/strong&gt;.&lt;br&gt;
From the Azure portal &lt;strong&gt;home page&lt;/strong&gt;, in the search box, enter &lt;strong&gt;virtual machines&lt;/strong&gt;. &lt;strong&gt;Select&lt;/strong&gt; virtual machines under services. Select the &lt;strong&gt;guided-project-vm virtual machine&lt;/strong&gt;. Under the &lt;strong&gt;Operations submenu&lt;/strong&gt;, select &lt;strong&gt;Auto-shutdown&lt;/strong&gt;. In order to let &lt;strong&gt;late uploads finish&lt;/strong&gt;, set the &lt;strong&gt;Scheduled shutdown to 7:15:00 PM&lt;/strong&gt;. Select &lt;strong&gt;Save&lt;/strong&gt;. Select Home to return to the Azure portal home page. Congratulations! We have successfully completed all of the &lt;strong&gt;management tasks&lt;/strong&gt; the Azure admin needed a hand with for the virtual machine.&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%2Fdsirtyratgdq3zcnrfwt.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%2Fdsirtyratgdq3zcnrfwt.png" alt="Searching for VM" width="800" height="147"&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%2Fei2k1e0bhow24irdxuv8.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%2Fei2k1e0bhow24irdxuv8.png" alt="selecting VM" width="800" height="265"&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%2Fll2bk1vn2hm1dhtlvxww.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%2Fll2bk1vn2hm1dhtlvxww.png" alt="Successful auto off schedule" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4: Control storage access. The Azure admin wants us to get more familiar with storage accounts, containers, and file shares. They anticipate needing to share an increasing number of files and need someone who is skilled using these services. They have given us a task of creating a storage container and a file share and uploading files to both locations.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Create a &lt;strong&gt;storage container&lt;/strong&gt; . From the Azure portal home page, in the search box, enter &lt;strong&gt;storage accounts&lt;/strong&gt;. &lt;strong&gt;Select&lt;/strong&gt; storage accounts under services. Select the &lt;strong&gt;storage account you created in the Prepare environmental variables&lt;/strong&gt;. The &lt;strong&gt;storage account name&lt;/strong&gt; is the &lt;strong&gt;hyperlink to the storage account&lt;/strong&gt;. (Note: it should be associated with the resource group guided-project-rg.). On the storage account blade, under the &lt;strong&gt;Data storage submenu&lt;/strong&gt;, select &lt;strong&gt;Containers&lt;/strong&gt;. Select &lt;strong&gt;+ Add container&lt;/strong&gt;. In the &lt;strong&gt;Name field&lt;/strong&gt;, enter &lt;strong&gt;storage-container&lt;/strong&gt;.Select &lt;strong&gt;Create&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%2Fl5bg76d40wt9xnkzq1i6.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%2Fl5bg76d40wt9xnkzq1i6.png" alt="Searching for storage account" width="800" height="160"&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%2Ffawk4k91h2ik0gojkphp.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%2Ffawk4k91h2ik0gojkphp.png" alt="Selecting storage account" width="800" height="171"&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%2Fmk6fcw3w7nwhbj7wdx0s.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%2Fmk6fcw3w7nwhbj7wdx0s.png" alt="Creating storage account" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Upload a file to the storage container. With a storage &lt;strong&gt;container created&lt;/strong&gt;, we can now upload &lt;strong&gt;a blob to the container&lt;/strong&gt;. Now, Locate a picture that you can upload, either on your computer or from the internet, and save it locally to make uploading easier. Select the &lt;strong&gt;storage container&lt;/strong&gt; you just created. Select &lt;strong&gt;Upload and upload the file&lt;/strong&gt; you prepared. Once the file is ready for upload, select &lt;strong&gt;Upload&lt;/strong&gt;.&lt;br&gt;
With the file &lt;strong&gt;uploaded&lt;/strong&gt;, notice that the &lt;strong&gt;Access tier&lt;/strong&gt; is displayed. For something we uploaded just for testing, it doesn’t need to be &lt;strong&gt;assigned to the Hot access tier&lt;/strong&gt;. In the next few steps, we will change the access tier for the file.&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%2F81s5gl4jacajkee0qyc9.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%2F81s5gl4jacajkee0qyc9.png" alt="Selecting storage container" width="800" height="164"&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%2Ffhwo6vbxk6znplmtu7db.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%2Ffhwo6vbxk6znplmtu7db.png" alt="Uploading to file to container" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : &lt;strong&gt;Change&lt;/strong&gt; the &lt;strong&gt;access tier&lt;/strong&gt;. Select the file you just &lt;strong&gt;uploaded&lt;/strong&gt; (the file name is a hyperlink). Select &lt;strong&gt;Change tier&lt;/strong&gt;. Select &lt;strong&gt;Cold&lt;/strong&gt;. Select &lt;strong&gt;Sav&lt;/strong&gt;e. Select Home to return to the Azure portal home page. Good job! We have &lt;strong&gt;successfully&lt;/strong&gt; uploaded a storage blob and changed the access tier from Hot to Cold. Next, we work with &lt;strong&gt;file shares&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%2F9w4vcoaz8o9otz138g0b.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%2F9w4vcoaz8o9otz138g0b.png" alt="Selecting file" width="800" height="301"&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%2Fjoafthiwnae1zvaysel4.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%2Fjoafthiwnae1zvaysel4.png" alt="changing tier" width="800" height="240"&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%2F7aq9gm22wogyc8y45e7i.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%2F7aq9gm22wogyc8y45e7i.png" alt="Tier changed" width="800" height="187"&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%2F4ual7bsy8nl883yv3bba.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%2F4ual7bsy8nl883yv3bba.png" alt="Deployment successful" width="800" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Create a &lt;strong&gt;file share&lt;/strong&gt; . From the Azure portal home page, in the search box, enter &lt;strong&gt;storage accounts&lt;/strong&gt; . Select storage accounts under services. &lt;strong&gt;Select&lt;/strong&gt;  the storage account. The &lt;strong&gt;storage account name&lt;/strong&gt;  is the hyperlink to the storage account. (Note: it should be associated with the resource group guided-project-rg.). On the &lt;strong&gt;storage account blade&lt;/strong&gt; , under the Data storage submenu, select &lt;strong&gt;File shares&lt;/strong&gt; . Select &lt;strong&gt;+ File share&lt;/strong&gt; . On the &lt;strong&gt;Basics tab&lt;/strong&gt; , in the &lt;strong&gt;name field&lt;/strong&gt;  enter ** file-share** . On the Backup tab, &lt;strong&gt;uncheck Enable backup&lt;/strong&gt; . Select &lt;strong&gt;Review + create&lt;/strong&gt; . Select ** Create** . Once the file share is &lt;strong&gt;created&lt;/strong&gt; , select &lt;strong&gt;Upload&lt;/strong&gt; . Upload ** the same file you uploaded to the blob storage or a &lt;strong&gt;different file&lt;/strong&gt;, it’s up to you.Select Home to return to the Azure portal home page.&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%2F250tggwbdplo38duartb.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%2F250tggwbdplo38duartb.png" alt="Searching for storage account" width="800" height="153"&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%2F007nnd187qx92grb47uc.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%2F007nnd187qx92grb47uc.png" alt="Selecting storage account" width="800" height="255"&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%2Fsc9mbnli29gxaeur5spp.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%2Fsc9mbnli29gxaeur5spp.png" alt="Creating fileshare" width="800" height="371"&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%2Fa5qc0liaov22ecsdxztq.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%2Fa5qc0liaov22ecsdxztq.png" alt="file share name" width="800" height="745"&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%2Fkdn5fxsfxsj2xosix8dd.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%2Fkdn5fxsfxsj2xosix8dd.png" alt="Uncheck enable" width="800" height="701"&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%2Ff1ezfg1chh0tfplcwpfu.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%2Ff1ezfg1chh0tfplcwpfu.png" alt="create" width="800" height="555"&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%2Fmrrlgrw02mclr1purp3q.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%2Fmrrlgrw02mclr1purp3q.png" alt="File uploaded" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The next piece of the puzzle is figuring one way to control access to the files that have been uploaded. Azure has many ways to control files, including things like role-based access control. In this scenario, the Azure admin wants us to use shared access tokens or keys.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; : Create a &lt;strong&gt;shared access signature token&lt;/strong&gt;. From the Azure portal home page, in the search box, enter &lt;strong&gt;storage accounts&lt;/strong&gt;. Select storage accounts under &lt;strong&gt;services&lt;/strong&gt;. Select the storage account we created in the Prepare exercise. On the &lt;strong&gt;storage account blade&lt;/strong&gt;, select &lt;strong&gt;Storage browser&lt;/strong&gt;. Expand &lt;strong&gt;Blob containers&lt;/strong&gt;. Note: Blob container is another name for the storage containers. Items uploaded to a storage container are called &lt;strong&gt;blobs&lt;/strong&gt;. Select the &lt;strong&gt;storage container&lt;/strong&gt; we created earlier, &lt;strong&gt;storage-container&lt;/strong&gt;. Select the &lt;strong&gt;ellipses (three dots)&lt;/strong&gt; on the end of the line for the &lt;strong&gt;image&lt;/strong&gt; you uploaded. Select &lt;strong&gt;Generate SAS&lt;/strong&gt;. Note: When you generate a shared access signature, you set the duration. Once the duration is over, the link stops working. The &lt;strong&gt;Start&lt;/strong&gt; automatically populates with the current date and time. Set the &lt;strong&gt;signing&lt;/strong&gt; method to &lt;strong&gt;Account key&lt;/strong&gt;. Set &lt;strong&gt;Signing key to Key 1&lt;/strong&gt;. Set &lt;strong&gt;Stored access policy to None&lt;/strong&gt;. Set &lt;strong&gt;Permissions to Read&lt;/strong&gt;. Enter a &lt;strong&gt;custom start and expiry time&lt;/strong&gt; or leave &lt;strong&gt;the defaults&lt;/strong&gt;. Set &lt;strong&gt;Allowed protocols to HTTPS only&lt;/strong&gt;. Select &lt;strong&gt;Generate SAS token and URI&lt;/strong&gt;. Copy the &lt;strong&gt;Blob SAS URL and paste&lt;/strong&gt; it in &lt;strong&gt;another window or tab of your browser&lt;/strong&gt;. It should &lt;strong&gt;display&lt;/strong&gt; the &lt;strong&gt;image&lt;/strong&gt; you uploaded. Keep this &lt;strong&gt;tab or window open&lt;/strong&gt;. Select Home to return to the Azure portal home page. With the &lt;strong&gt;SAS token&lt;/strong&gt; created, anyone with that link can &lt;strong&gt;access&lt;/strong&gt; the file for the duration that was set when you created the SAS token. However, &lt;strong&gt;controlling access&lt;/strong&gt; to a &lt;strong&gt;resource or file&lt;/strong&gt; is about more than just &lt;strong&gt;granting access&lt;/strong&gt;. It’s also about being able to &lt;strong&gt;revoke access&lt;/strong&gt;. To &lt;strong&gt;revoke access&lt;/strong&gt; with a &lt;strong&gt;SAS token&lt;/strong&gt;, you need to &lt;strong&gt;invalidate the token&lt;/strong&gt;. You &lt;strong&gt;invalidate&lt;/strong&gt; the token by &lt;strong&gt;rotating&lt;/strong&gt; the key that was used.&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%2Fqjsplkkkepfakoqcx4u7.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%2Fqjsplkkkepfakoqcx4u7.png" alt="Searching for storage" width="800" height="128"&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%2Fqfki0gcvwrpw90tb9bdt.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%2Fqfki0gcvwrpw90tb9bdt.png" alt="Selecting storage" width="800" height="244"&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%2Fte0pipqi74xk5fzgqpyz.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%2Fte0pipqi74xk5fzgqpyz.png" alt="Selecting storage browser and blob" width="800" height="291"&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%2F84e0lrvsxdvdaoxm7tjw.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%2F84e0lrvsxdvdaoxm7tjw.png" alt="Selecting blob upload" width="800" height="237"&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%2Fro3ul2tsao1z3kcp7i0v.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%2Fro3ul2tsao1z3kcp7i0v.png" alt="Blob drop down" width="800" height="264"&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%2F8ir98jabiypglz7suh1r.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%2F8ir98jabiypglz7suh1r.png" alt="SaS generation" width="800" height="354"&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%2Fjrt13q6vfpg4zvk23r8d.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%2Fjrt13q6vfpg4zvk23r8d.png" alt="Upload" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt; : &lt;strong&gt;Expand&lt;/strong&gt; the &lt;strong&gt;Security + networking submenu&lt;/strong&gt;. Select &lt;strong&gt;Access keys&lt;/strong&gt;. For &lt;strong&gt;Key 1&lt;/strong&gt;, select &lt;strong&gt;Rotate key&lt;/strong&gt;. &lt;strong&gt;Read and then acknowledge&lt;/strong&gt; the warning about &lt;strong&gt;regenerating the access key&lt;/strong&gt; by selecting &lt;strong&gt;Yes&lt;/strong&gt;. Once you see the &lt;strong&gt;success message&lt;/strong&gt; for &lt;strong&gt;rotating the access key&lt;/strong&gt;, go back to the &lt;strong&gt;window&lt;/strong&gt; or tab you used to check the &lt;strong&gt;SAS token&lt;/strong&gt; and &lt;strong&gt;refresh&lt;/strong&gt; the page. You should receive &lt;strong&gt;an authentication failed error&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%2Fimul5pwene5s2zul50gz.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%2Fimul5pwene5s2zul50gz.png" alt="Access key" width="800" height="469"&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%2Fkcps7jtvh1guewllt4q7.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%2Fkcps7jtvh1guewllt4q7.png" alt=" " width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 5: Pleased with &lt;strong&gt;our&lt;/strong&gt; progress so far, the Azure admin hopes that we can wrap a few things up to help with monitoring and protecting resources. They want to know that someone can’t accidentally get rid of the virtual machine that’s running as an FTP server, and they want a quick way to see what department is using resources and the resource’s purpose.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: &lt;strong&gt;Adding tags&lt;/strong&gt; to resources is a quick way to be able to &lt;strong&gt;group and organize resources&lt;/strong&gt;. &lt;strong&gt;Tags&lt;/strong&gt; can be added at &lt;strong&gt;different levels&lt;/strong&gt;, giving us the ability to &lt;strong&gt;organize and group resources at a level&lt;/strong&gt; that makes &lt;strong&gt;sense&lt;/strong&gt;. Add &lt;strong&gt;tags&lt;/strong&gt; to a &lt;strong&gt;virtual machine&lt;/strong&gt; . We will start by adding a &lt;strong&gt;pair of tags&lt;/strong&gt; to the virtual machine. One tag will be to identify the &lt;strong&gt;purpose&lt;/strong&gt; of the virtual machine and the other will be to indicate the &lt;strong&gt;department&lt;/strong&gt; the machine supports.  From the Azure portal &lt;strong&gt;home page&lt;/strong&gt;, in the search box, enter &lt;strong&gt;virtual machines&lt;/strong&gt;. Select virtual machines under services. Select the &lt;strong&gt;guided-project-vm virtual machine&lt;/strong&gt;. From the &lt;strong&gt;menu pane, select Tags&lt;/strong&gt;. On one line for Name enter &lt;strong&gt;Department&lt;/strong&gt; and for Value enter &lt;strong&gt;Customer Service&lt;/strong&gt;. On the next line, for &lt;strong&gt;Name&lt;/strong&gt; enter &lt;strong&gt;Purpose and for Value enter FTP Server&lt;/strong&gt;. Select &lt;strong&gt;Apply&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%2F4c887uynbwoivh88qanp.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%2F4c887uynbwoivh88qanp.png" alt="searching for VM" width="800" height="123"&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%2Fag8wxn02h60kbr4z1xrc.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%2Fag8wxn02h60kbr4z1xrc.png" alt="Setting tag variable" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;:  Add a resource lock to a VM. If necessary, expand the &lt;strong&gt;Settings submenu&lt;/strong&gt;. Select &lt;strong&gt;Locks&lt;/strong&gt;. Select &lt;strong&gt;+ Add&lt;/strong&gt;. For the name, enter &lt;strong&gt;VM-delete-lock&lt;/strong&gt;. For the &lt;strong&gt;Lock type&lt;/strong&gt;, select &lt;strong&gt;Delete&lt;/strong&gt;.You may enter a &lt;strong&gt;note&lt;/strong&gt; to help remind you why you created the lock. Select OK. That’s it. Now the VM is protected from &lt;strong&gt;deletion and has tags assigned to help track use&lt;/strong&gt;. Time to move onto the network. Select Home to return to the Azure portal home page.&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%2Fxy1896i0jpqyxsl0hqm0.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%2Fxy1896i0jpqyxsl0hqm0.png" alt=" " width="800" height="399"&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%2Fdpk0ip21bjvzbvfciyaf.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%2Fdpk0ip21bjvzbvfciyaf.png" alt="lock created" width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : Add &lt;strong&gt;tags&lt;/strong&gt; to &lt;strong&gt;network resources&lt;/strong&gt;. From the Azure portal home page, in the search box, enter &lt;strong&gt;virtual networks&lt;/strong&gt;. Select virtual networks under services. Select the &lt;strong&gt;guided-project-vnet network&lt;/strong&gt;. From the &lt;strong&gt;menu pane&lt;/strong&gt;, select &lt;strong&gt;Tags&lt;/strong&gt;. For the &lt;strong&gt;Name select Department&lt;/strong&gt;. For the &lt;strong&gt;Value enter IT&lt;/strong&gt;. Select &lt;strong&gt;Apply&lt;/strong&gt;. Now both the &lt;strong&gt;VNet&lt;/strong&gt; and &lt;strong&gt;VM&lt;/strong&gt; have are organized.&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%2Fhqk6k6ypx3oud9xcnjxr.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%2Fhqk6k6ypx3oud9xcnjxr.png" alt="Virtual network" width="800" height="149"&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%2Fsqv0x0b7uk1m3du654w2.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%2Fsqv0x0b7uk1m3du654w2.png" alt="guided project vnet" width="800" height="192"&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%2Ftodenexamjedwlwgnuxt.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%2Ftodenexamjedwlwgnuxt.png" alt="tag added" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 6: Remove delete locks. If you attempt to delete a resource with a delete lock, you’ll receive a warning that the operation failed due to a delete lock being in place. To avoid that, it’s important to clear delete locks from resources you intend to delete before issuing the delete command.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; : From the Azure portal home page, in the search box, enter &lt;br&gt;
&lt;strong&gt;virtual machines&lt;/strong&gt; . Select virtual machines under services. Select the &lt;strong&gt;guided-project-vm virtual machine&lt;/strong&gt; . If necessary, expand the &lt;strong&gt;Settings submenu&lt;/strong&gt; . Select &lt;strong&gt;Locks&lt;/strong&gt; . Select &lt;strong&gt;Delete&lt;/strong&gt;  on the line for the &lt;strong&gt;VM-delete-lock&lt;/strong&gt; . On the &lt;strong&gt;pop-up window&lt;/strong&gt; , select &lt;strong&gt;Delete&lt;/strong&gt;  to confirm deletion of the lock. Once the delete lock is removed, we will be able to &lt;strong&gt;delete the VM&lt;/strong&gt; . While this is the only &lt;strong&gt;delete lock required&lt;/strong&gt;  by the exercise, if you applied other delete locks during the exercise, &lt;strong&gt;remove&lt;/strong&gt;  them now. When you’re done, select Home to return to the Azure portal home page.&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%2F6jby98ol68psmkfj57or.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%2F6jby98ol68psmkfj57or.png" alt="Searching for VM" width="800" height="123"&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%2Fkv49n4vb04szdi63zxv4.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%2Fkv49n4vb04szdi63zxv4.png" alt="Deleting lock" width="800" height="295"&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%2Fumpbq9a8uu4p93w4e9tu.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%2Fumpbq9a8uu4p93w4e9tu.png" alt="lock deletion successful" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Delete the &lt;strong&gt;project resource group&lt;/strong&gt; . A &lt;strong&gt;key benefit&lt;/strong&gt; of using resource groups is the ability to &lt;strong&gt;rapidly delete all of the resources&lt;/strong&gt; assigned to a resource group at once. From the Azure portal home page, in the search box, enter &lt;strong&gt;Resource groups&lt;/strong&gt; . &lt;strong&gt;Select&lt;/strong&gt;  resource groups under services. Select the &lt;strong&gt;guided-project-rg resource group&lt;/strong&gt; . Select Delete resource group. Select Apply ** force delete** . Enter ** guided-project-rg**  in the &lt;strong&gt;confirmation box&lt;/strong&gt; . Select &lt;strong&gt;Delete&lt;/strong&gt; . On the &lt;strong&gt;Delete confirmation pop-up&lt;/strong&gt; , select Delete. It will approximately &lt;strong&gt;5 minutes&lt;/strong&gt;  before the resource group is &lt;strong&gt;fully deleted&lt;/strong&gt; . We will need to refresh the resource group page every few minutes until the &lt;strong&gt;guided-project-rg&lt;/strong&gt;  is gone to confirm complete deletion. Important: Recall at the beginning of the Project we checked for a &lt;strong&gt;NetworkWatcherRG&lt;/strong&gt;  resource group. If there WAS a NetworkWatcherRG when you &lt;strong&gt;started&lt;/strong&gt; , then you’re &lt;strong&gt;finished&lt;/strong&gt; . However, if the NetworkWatcherRG was created for the guided project, we will need to delete the NetworkWatcherRG as well following a nearly identical process.&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%2Funjeca8km3m0oc9l6h5t.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%2Funjeca8km3m0oc9l6h5t.png" alt="Searching for resource group" width="800" height="201"&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%2Fks7yg6whw7zlk5ole40t.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%2Fks7yg6whw7zlk5ole40t.png" alt="Deleting resource group" width="800" height="342"&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%2F9cyh2hcj8gc0i59pp5t2.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%2F9cyh2hcj8gc0i59pp5t2.png" alt="confirming delete" width="800" height="548"&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%2Fmfrfhcb52boonf91anxd.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%2Fmfrfhcb52boonf91anxd.png" alt="Delete successful" width="800" height="244"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Congratulations – We have finished the Project and the clean up task is completed&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mission Accomplished&lt;/strong&gt; !&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>networking</category>
      <category>compute</category>
      <category>azure</category>
    </item>
    <item>
      <title>Server/VM/Instance: Connecting to Azure from your local environment</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Sat, 14 Mar 2026 08:05:09 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/servervminstance-connecting-to-azure-from-your-local-environment-244</link>
      <guid>https://forem.com/precious_nwafor/servervminstance-connecting-to-azure-from-your-local-environment-244</guid>
      <description>&lt;p&gt;Building in the cloud often feels like magic, until you hit your first &lt;strong&gt;Deployment Failed&lt;/strong&gt; error. Whether it’s a regional quota limit or a firewall blocking your path, the journey from your local terminal to a live web server is rarely a straight line.&lt;/p&gt;

&lt;p&gt;​In this &lt;strong&gt;article&lt;/strong&gt;, I am taking you behind the scenes of my latest lab. We will move past the common hurdles, like regional capacity limits: by pivoting our deployment strategy, mastering the Azure CLI to build a fresh infrastructure, and using SSH one-liners to transform a blank Ubuntu instance into a live Nginx web server.&lt;/p&gt;

&lt;p&gt;​If you have ever wondered how to bridge the gap between your laptop and a powerful Azure VM while navigating real-world troubleshooting, this guide is for you. &lt;/p&gt;

&lt;p&gt;Let's get to it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1: Install Azure CLI &amp;amp; Login. We will install the Azure CLI on your machine and authenticate to your Azure subscription.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1&lt;/strong&gt;: When you start a project the first thing to do is create a new &lt;strong&gt;directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open &lt;strong&gt;Linux Server Visual Studio Code&lt;/strong&gt;, go to &lt;strong&gt;File&lt;/strong&gt; and navigate dropdown. Click on &lt;strong&gt;open folder&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%2F67y4fh3rnx8wvqt15n9c.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%2F67y4fh3rnx8wvqt15n9c.png" alt="Creating a new directory" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2&lt;/strong&gt;: Click on &lt;strong&gt;New folder&lt;/strong&gt; to &lt;strong&gt;create a folder&lt;/strong&gt;. &lt;strong&gt;Rename&lt;/strong&gt; folder &lt;strong&gt;Linux server&lt;/strong&gt;, select the linux folder and  &lt;strong&gt;save&lt;/strong&gt;. Everything Linux we are handling will be saved in the folder.&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%2F2ce2p1s32e3ztv33vsmf.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%2F2ce2p1s32e3ztv33vsmf.png" alt="Open folder" width="800" height="450"&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%2Foo0aho5pkrv5700lbowh.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%2Foo0aho5pkrv5700lbowh.png" alt="Linux folder" width="800" height="238"&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%2Fbiv7x7jp7q4xb3r0pxd3.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%2Fbiv7x7jp7q4xb3r0pxd3.png" alt="linux server in the vs portal" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3&lt;/strong&gt;: We will be using &lt;strong&gt;terminal&lt;/strong&gt; most of the time. To get to terminal click on &lt;strong&gt;view&lt;/strong&gt; and process to click on the &lt;strong&gt;terminal icon&lt;/strong&gt; in the dropdown&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%2Fxke3y7815g4t5x1asqkq.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%2Fxke3y7815g4t5x1asqkq.png" alt="Opening terminal" width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4&lt;/strong&gt;: We are going to install &lt;strong&gt;Azure Cli&lt;/strong&gt; in our &lt;strong&gt;terminal window&lt;/strong&gt;. Go to your &lt;strong&gt;Google browser&lt;/strong&gt; and open a new &lt;strong&gt;tab&lt;/strong&gt;. &lt;strong&gt;Type&lt;/strong&gt; and &lt;strong&gt;search&lt;/strong&gt; for &lt;strong&gt;Azure cli&lt;/strong&gt;. Proceed to &lt;strong&gt;install&lt;/strong&gt; application&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%2Fhmgxn7zsh6jfmcpx5xrm.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%2Fhmgxn7zsh6jfmcpx5xrm.png" alt="Installing Azure CLI" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5&lt;/strong&gt;: Select &lt;strong&gt;Microsoft installer (MSI) with powershell&lt;/strong&gt; and locate &lt;strong&gt;PowerShell&lt;/strong&gt; (winget install --exact --id Microsoft.AzureCLI), &lt;strong&gt;Copy&lt;/strong&gt; the &lt;strong&gt;command&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%2Fw438yo4uxvpgjvqsw4a0.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%2Fw438yo4uxvpgjvqsw4a0.png" alt="Msi installer" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6&lt;/strong&gt;: Scroll down and  &lt;strong&gt;copy&lt;/strong&gt; the &lt;strong&gt;installation&lt;/strong&gt; command. &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%2Fgdx0h90jx6yp5ywp1jn5.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%2Fgdx0h90jx6yp5ywp1jn5.png" alt="Installation command" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7&lt;/strong&gt;: Proceed to paste command in &lt;strong&gt;Terminal&lt;/strong&gt; and click &lt;strong&gt;enter&lt;/strong&gt; to &lt;strong&gt;run&lt;/strong&gt; command. Verify version installed by typing &lt;strong&gt;az -- version&lt;/strong&gt; and click &lt;strong&gt;enter&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%2Fdn3nj5rjxzballap19hb.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%2Fdn3nj5rjxzballap19hb.png" alt="running commands" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 8&lt;/strong&gt;: Once confirmation report is retrieved, proceed to login. Type       &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;az&lt;/strong&gt; &lt;strong&gt;login&lt;/strong&gt; and click &lt;strong&gt;enter&lt;/strong&gt;. &lt;strong&gt;Select account&lt;/strong&gt; you want to &lt;strong&gt;login&lt;/strong&gt; with.&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%2Fid3trisdc6nui3idrhrd.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%2Fid3trisdc6nui3idrhrd.png" alt="logging into portal" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 9&lt;/strong&gt;: Confirm your &lt;strong&gt;Azure subscription&lt;/strong&gt;. I have just one active subsrcription, so I will write &lt;strong&gt;1&lt;/strong&gt; and click &lt;strong&gt;enter&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%2F5w2wyn1h10imm5k87woy.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%2F5w2wyn1h10imm5k87woy.png" alt="Subscription" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2: Create a Resource Group. This resource group is to act as the logical container for your entire lab environment.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1&lt;/strong&gt;: We will proceed to set &lt;strong&gt;Environment variables&lt;/strong&gt;. This environment variable is like a labeled box that holds a specific piece of information. Instead of your code needing to know exactly what is inside the box, it simply calls out the label on the box (the variable name). The system then &lt;strong&gt;opens&lt;/strong&gt; the box and provides whatever value is currently kept inside. We will &lt;strong&gt;proceed&lt;/strong&gt; to run the commands below in the terminal to condition our &lt;strong&gt;environment variable&lt;/strong&gt; . &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RG="azurecli-lab-rg   : This sets the shell variable RG so later commands can reference it with $RG.&lt;/li&gt;
&lt;li&gt;LOCATION="eastus" : Sets the shell variable LOCATION so later commands can reference it with $LOCATION.&lt;/li&gt;
&lt;li&gt;az group create --name $RG --location $LOCATION  : Creates a resource group called "$RG" — a logical container for all the Azure resources in this lab.&lt;/li&gt;
&lt;li&gt;az group show --name $RG  : Runs the Azure CLI command "az group show" — see "az group show --help" for details.&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%2Fwr4zdbe5r0yzcq2xyjrx.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%2Fwr4zdbe5r0yzcq2xyjrx.png" alt="Environment variables" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3: We will build a Virtual Network (VNet) &amp;amp; Subnet. Creating a secure private network for your Azure resources to communicate on.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; :  Run this command in the terminal:  &lt;strong&gt;az network vnet create --address-prefix 10.0.0.0/16 --resource-group $RG --name lab-vnet --location $LOCATION&lt;/strong&gt; . This creates a Virtual Network (VNet) — the private network your Azure resources communicate on. &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%2Fms5lpp9umi7ivjy5fsqq.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%2Fms5lpp9umi7ivjy5fsqq.png" alt="network" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Create a &lt;strong&gt;Subnet&lt;/strong&gt;. This carves out a smaller 10.0.1.0/24 piece (subnet) of the VNet specifically for your VMs. &lt;strong&gt;Segmenting networks&lt;/strong&gt; allows you to apply different routing and firewall rules to different types of resources. We will proceed to run this command in the terminal: &lt;strong&gt;az network vnet subnet create  --resource-group $RG --vnet-name lab-vnet  --name lab-subnet --address-prefix 10.0.1.0/24&lt;/strong&gt;. Check your Microsoft Azure portal to confirm creation of the &lt;strong&gt;lab-vnet&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%2Fshr6a8lnppuwrhs38r5d.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%2Fshr6a8lnppuwrhs38r5d.png" alt="Subnet" width="800" height="417"&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%2F8z6wtblg5uhwjujiqfzi.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%2F8z6wtblg5uhwjujiqfzi.png" alt="Azure portal" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : Create a &lt;strong&gt;Network Security Group (NSG)&lt;/strong&gt;, which acts as a virtual firewall. Without an NSG attached, &lt;strong&gt;Microsoft allows no inbound traffic but allows all outbound traffic&lt;/strong&gt;. We need an NSG to poke specific holes in the firewall. We will proceed to run this command in the terminal: &lt;strong&gt;az network nsg create --resource-group $RG --name lab-nsg&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%2Fg5vfmgrextd80u3z3slu.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%2Fg5vfmgrextd80u3z3slu.png" alt="NSG" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Open port 22 (SSH) &amp;amp; 80 (HTTP). This adds &lt;strong&gt;inbound rules&lt;/strong&gt; prioritizing SSH (port 22) and HTTP (port 80) &lt;strong&gt;access&lt;/strong&gt; from the internet. We will need SSH to log in and configure the server, and HTTP so users can view the web page. Let us proceed to run this command in the terminal: &lt;strong&gt;az network nsg rule create --resource-group $RG --nsg-name lab-nsg --name AllowHTTP --priority 1010 --destination-port-ranges 80 --access Allow --protocol Tcp --direction Inbound&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%2Fy7mopxid0lpfu59hhcgd.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%2Fy7mopxid0lpfu59hhcgd.png" alt="SSH" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Attach &lt;strong&gt;NSG to Subnet&lt;/strong&gt;. Enforces the firewall rules (NSG) at the subnet boundary. Applying the NSG to the subnet ensures that &lt;em&gt;any&lt;/em&gt; VM created in that subnet automatically &lt;strong&gt;inherits&lt;/strong&gt; those exact &lt;strong&gt;firewall rules&lt;/strong&gt; — protecting the entire subnet. Let us proceed to run this command in the terminal: az network vnet subnet update --resource-group $RG --vnet-name lab-vnet --name lab-subnet --network-security-group lab-nsg. You can run your code in a straight line or use the backtick (located under the Esc key) at the end of every line except the last one. Like this **az network vnet subnet update &lt;br&gt;
--resource-group $RG &lt;br&gt;
--vnet-name lab-vnet &lt;br&gt;
--name lab-subnet &lt;br&gt;
--network-security-group lab-nsg &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you encounter errors, run the command again and ensure it is entered correctly.&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%2F4t52oxqqix0jnlqe51df.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%2F4t52oxqqix0jnlqe51df.png" alt="NSG to subset" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4: We will provision a Linux Virtual Machine. Creating an Ubuntu VM with a public IP inside our VNet.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt; : &lt;strong&gt;Allocate&lt;/strong&gt; a &lt;strong&gt;Public IP&lt;/strong&gt;. This allocates a &lt;strong&gt;static public IP&lt;/strong&gt; address in &lt;strong&gt;Azure&lt;/strong&gt;. &lt;strong&gt;Without&lt;/strong&gt; a &lt;strong&gt;public IP&lt;/strong&gt;, the VM can only be accessed &lt;strong&gt;internally&lt;/strong&gt; through the &lt;strong&gt;VNet or a VPN&lt;/strong&gt;. You need this to reach your web server from your browser. Run this command in the terminal: &lt;strong&gt;az network public-ip create --resource-group $RG --name lab-public-ip --allocation-method Static --sku Basic&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%2Fcwma3omwv15wfbwx8ss2.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%2Fcwma3omwv15wfbwx8ss2.png" alt="Error" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the error above, essentially, Azure is telling us that for our &lt;strong&gt;specific subscription and region&lt;/strong&gt;, the limit for Basic SKU Public IPs is currently set to &lt;strong&gt;zero&lt;/strong&gt;. Additionally, Microsoft is &lt;strong&gt;phasing out&lt;/strong&gt; the &lt;strong&gt;Basic SKU&lt;/strong&gt; in favor of the &lt;strong&gt;Standard SKU&lt;/strong&gt; for better security and performance.&lt;br&gt;
​&lt;strong&gt;The Fix&lt;/strong&gt;&lt;br&gt;
​To bypass this error, we will need to change the &lt;strong&gt;--sku to Standard&lt;/strong&gt;. In Azure, a Standard SKU Public IP must also use the Static allocation method (it does not support Dynamic).&lt;br&gt;
​Run this command instead: az network public-ip create --resource-group $RG --name lab-public-ip --allocation-method Static --sku Standard&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;or&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;az network public-ip create &lt;br&gt;
  --resource-group $RG &lt;br&gt;
  --name lab-public-ip &lt;br&gt;
  --allocation-method Static &lt;br&gt;
  --sku Standard&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%2F3kz1nq1hfkupct96zhgd.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%2F3kz1nq1hfkupct96zhgd.png" alt="Public IP" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; :Create the &lt;strong&gt;VM&lt;/strong&gt;. This creates a &lt;strong&gt;B1s Ubuntu VM with auto-generated SSH keys&lt;/strong&gt; and &lt;strong&gt;connects&lt;/strong&gt; it to the existing &lt;strong&gt;subnet and firewall&lt;/strong&gt;. This is the actual &lt;strong&gt;cloud compute instance&lt;/strong&gt; that will &lt;strong&gt;run our web application code&lt;/strong&gt;. Run this command: &lt;strong&gt;az vm create --resource-group azurecli-lab-rg --name lab-vm --image Ubuntu2204 --size Standard_B2s_v2 --location koreacentral --admin-username azureuser --generate-ssh-keys --vnet-name lab-vnet --subnet lab-subnet --public-ip-address lab-public-ip --nsg lab-nsg&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%2Fob5hslb4r16xr6f8uge5.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%2Fob5hslb4r16xr6f8uge5.png" alt="error" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: When I first tried to deploy my VM in East US, I received a red wall of text:&lt;br&gt;
​&lt;strong&gt;The requested VM size 'Standard_B1s' is currently not available in location 'East US' for this subscription.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;​&lt;strong&gt;What happened?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud regions are essentially giant parking lots. Sometimes, the &lt;strong&gt;compact car&lt;/strong&gt; spots (like the B1s or B2s sizes) are completely full in a specific region.&lt;/p&gt;

&lt;p&gt;​&lt;strong&gt;The Fix&lt;/strong&gt;: We will pivot to &lt;strong&gt;Korea Central (koreacentral)&lt;/strong&gt;, a region that has plenty of space for my VM size.&lt;/p&gt;

&lt;p&gt;Run this command in the terminal: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$RG="azurecli-lab-rg"  - Set the Variable&lt;/li&gt;
&lt;li&gt;az network nsg create --resource-group $RG --name lab1-nsg --location koreacentral - To create the Security Group&lt;/li&gt;
&lt;li&gt;az network vnet create --resource-group $RG --name lab1-vnet --location koreacentral --subnet-name lab1-subnet- Create the Virtual Network.&lt;/li&gt;
&lt;li&gt; az vm create --resource-group $RG --name lab1-vm --image Ubuntu2204 --size Standard_B2s_v2 --location koreacentral --admin-username azureuser --generate-ssh-keys --vnet-name lab1-vnet --subnet lab1-subnet --public-ip-address lab1-public-ip --nsg lab1-nsg - The Final Deployment.&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%2Fjhtq7i0waecrblc7dne2.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%2Fjhtq7i0waecrblc7dne2.png" alt="Set variable" width="800" height="427"&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%2F0bfuuskxyfn6uiilcyvr.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%2F0bfuuskxyfn6uiilcyvr.png" alt="vnet" width="800" height="427"&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%2F8a7vduudm5zh2ocm5tcj.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%2F8a7vduudm5zh2ocm5tcj.png" alt="Success" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : &lt;strong&gt;Retrieve&lt;/strong&gt; the &lt;strong&gt;public IP&lt;/strong&gt;. Filters the &lt;strong&gt;Azure API&lt;/strong&gt; response to return just the &lt;strong&gt;IP address string&lt;/strong&gt;. We will need this IP to SSH into the machine and to test the web application. Run this command in the terminal: &lt;strong&gt;az network public-ip show --resource-group $RG --name lab1-public-ip --query ipAddress --output tsv&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%2Fmsyx7rwv1bk5qt6u9eab.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%2Fmsyx7rwv1bk5qt6u9eab.png" alt="IP address" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Verify the VM is running. This queries the VM status and displays it in a clean table format. Always verify provisioning success before attempting connections. Run this command in the terminal: &lt;strong&gt;az vm show --resource-group $RG --name lab1-vm --show-details --query '{Name:name, State:powerState, IP:publicIps}' --output table&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%2F5lf0vufwyjwphp9gy8gn.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%2F5lf0vufwyjwphp9gy8gn.png" alt="Running" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt; : &lt;strong&gt;SSH into your VM&lt;/strong&gt; &amp;amp; &lt;strong&gt;install Nginx&lt;/strong&gt;. Logs into the VM over the internet via SSH, installs the Nginx package using APT, and starts the service. A fresh VM is blank. Nginx serves as the web server to test our HTTP port 80 firewall rule. Run this command in the terminal:&lt;br&gt;
&lt;strong&gt;ssh -i ~/.ssh/id_rsa azureuser@&lt;br&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt install nginx -y&lt;br&gt;
sudo systemctl enable nginx &amp;amp;&amp;amp; sudo systemctl start nginx&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%2Fgqycdjlalwjs06l0jyq4.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%2Fgqycdjlalwjs06l0jyq4.png" alt="Error" width="800" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Connection timed out error in our latest screenshot indicates that while our VM is running, our terminal cannot reach it over port 22. This is almost certainly because the Network Security Group (NSG) for our new lab1 infrastructure does not yet have a rule allowing SSH traffic.&lt;br&gt;
​Think of the NSG as a locked door; even if the server is "home," you can't get in unless you specifically authorize the port.&lt;/p&gt;

&lt;p&gt;​&lt;strong&gt;The Fix&lt;/strong&gt;: Open Port 22&lt;br&gt;
​Run this command to tell Azure to allow SSH connections into our lab1-nsg; &lt;strong&gt;az network nsg rule create --resource-group $RG --nsg-name lab1-nsg --name AllowSSH --priority 1000 --destination-port-ranges 22 --access Allow --protocol Tcp --direction Inbound&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%2Fcijx8n5gy5l4unnks9xf.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%2Fcijx8n5gy5l4unnks9xf.png" alt="Permissions" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will now &lt;strong&gt;SSH into our VM&lt;/strong&gt; to remotely &lt;strong&gt;install&lt;/strong&gt; and &lt;strong&gt;configure&lt;/strong&gt; &lt;strong&gt;Nginx&lt;/strong&gt;. ​Run this command: &lt;strong&gt;ssh -i ~/.ssh/id_rsa &lt;a href="mailto:azureuser@20.214.200.240"&gt;azureuser@20.214.200.240&lt;/a&gt; "sudo apt update &amp;amp;&amp;amp; sudo apt install nginx -y &amp;amp;&amp;amp; sudo systemctl start nginx"&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%2F0mbuq51qo295brjpdqe3.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%2F0mbuq51qo295brjpdqe3.png" alt="running" width="800" height="438"&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%2F60i5t7612vax57r3grmo.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%2F60i5t7612vax57r3grmo.png" alt="installed" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: Since our terminal shows the installation is done, let's head over to Chrome to do a final verification. First we have to allow access &lt;br&gt;
by running this final command in the terminal: &lt;strong&gt;az network nsg rule create --resource-group $RG --nsg-name lab1-nsg --name AllowHTTP --priority 1010 --destination-port-ranges 80 --access Allow --protocol Tcp --direction Inbound&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%2F174xjnizb0gwb7ajss3d.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%2F174xjnizb0gwb7ajss3d.png" alt="Access." width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Proceed to &lt;strong&gt;Open Chrome&lt;/strong&gt;. &lt;strong&gt;Paste&lt;/strong&gt; the &lt;strong&gt;IP address&lt;/strong&gt;: &lt;a href="http://20.214.200.240" rel="noopener noreferrer"&gt;http://20.214.200.240&lt;/a&gt;. &lt;strong&gt;The Result&lt;/strong&gt;: You should see a white page with bold text saying "Welcome to nginx!".&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%2Fev2eofti1ufua6qajbcn.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%2Fev2eofti1ufua6qajbcn.png" alt="Successfull" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MISSION ACCOMPLISHED!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>linux</category>
      <category>cli</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Provide Storage for a New Company App</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Fri, 27 Feb 2026 08:27:39 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/provide-storage-for-a-new-company-app-gm7</link>
      <guid>https://forem.com/precious_nwafor/provide-storage-for-a-new-company-app-gm7</guid>
      <description>&lt;p&gt;A company is designing and developing a new app and the developers need to ensure the storage is only accessed using keys and managed identities. The developers should use role-based access control. To help with testing, protected immutable storage is also needed.&lt;/p&gt;

&lt;p&gt;To &lt;strong&gt;power&lt;/strong&gt; the &lt;strong&gt;new application&lt;/strong&gt;, we aren't just going to build a &lt;strong&gt;storage&lt;/strong&gt;, we are building a &lt;strong&gt;fortress&lt;/strong&gt;. This configuration ensures our developers can &lt;strong&gt;build&lt;/strong&gt; and &lt;strong&gt;test&lt;/strong&gt; with total &lt;strong&gt;confidence&lt;/strong&gt; by &lt;strong&gt;leveraging&lt;/strong&gt; &lt;strong&gt;three pillars&lt;/strong&gt; of &lt;strong&gt;cloud security&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;​Identity over Passwords&lt;/strong&gt;: We will use Managed Identities and Access Keys to eliminate hard-coded credentials, ensuring the app authenticates directly and securely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Precision Control&lt;/strong&gt;: We are going to use Role-Based Access Control (RBAC), and grant granular permissions to team members, ensuring everyone has exactly the access they need for testing; no more, no less.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Permanence&lt;/strong&gt;: We will implement Immutable Storage, locking critical data in a 'write-once, read-many' state that protects against accidental deletion or modification during the development lifecycle. This isn't just a storage account; it’s a compliant, hacker-resistant environment designed for high-stakes application development.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Let's get to it&lt;/em&gt; !.&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 1: Create a &lt;strong&gt;storage account&lt;/strong&gt; for the &lt;strong&gt;managed identity&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;. Provide a storage account for the web app. In the  Azure &lt;strong&gt;portal&lt;/strong&gt;, search for and select &lt;strong&gt;Storage accounts&lt;/strong&gt;. Select &lt;strong&gt;+ Create&lt;/strong&gt;. For &lt;strong&gt;Resource group&lt;/strong&gt; select &lt;strong&gt;Create new&lt;/strong&gt;. Give your  &lt;strong&gt;resource group&lt;/strong&gt; a &lt;strong&gt;name&lt;/strong&gt; and select &lt;strong&gt;OK&lt;/strong&gt; to save your changes. Provide a &lt;strong&gt;Storage account name&lt;/strong&gt;. Ensure the &lt;strong&gt;name&lt;/strong&gt; is &lt;strong&gt;unique&lt;/strong&gt; and meets the naming requirements. Move to the &lt;strong&gt;Encryption tab&lt;/strong&gt;. Check the box for &lt;strong&gt;Enable infrastructure encryption&lt;/strong&gt;. Notice the &lt;strong&gt;warning&lt;/strong&gt;, this option &lt;strong&gt;cannot be changed&lt;/strong&gt; after this &lt;strong&gt;storage account&lt;/strong&gt; is &lt;strong&gt;created&lt;/strong&gt;. Select &lt;strong&gt;Review + Create&lt;/strong&gt;. Wait for the &lt;strong&gt;resource to deploy&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%2Fg2wl7rz1n728pyea1ipx.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%2Fg2wl7rz1n728pyea1ipx.png" alt="Initializing storage creation" width="800" height="119"&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%2Ftk014g325komehta9c2c.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%2Ftk014g325komehta9c2c.png" alt="Select +create" width="800" height="197"&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%2F4o3pdv75gy1l2xt5wjjh.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%2F4o3pdv75gy1l2xt5wjjh.png" alt="unique identifiers" width="800" height="371"&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%2Fn0kjqui2kj4lsrwglvug.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%2Fn0kjqui2kj4lsrwglvug.png" alt="Setting encryption and reviewing" width="800" height="817"&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%2Femf1jr1466ltu1umv9i9.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%2Femf1jr1466ltu1umv9i9.png" alt="Validation in progress" width="800" height="252"&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%2F8dp01zl0cl9ys6m2wwfe.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%2F8dp01zl0cl9ys6m2wwfe.png" alt="create" width="800" height="798"&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%2Fz8j7ptm6zpa1fww9ak2d.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%2Fz8j7ptm6zpa1fww9ak2d.png" alt="Deployment complete" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 2 : Provide a &lt;strong&gt;managed identity&lt;/strong&gt; for the &lt;strong&gt;web app&lt;/strong&gt; to use.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; . Search for and &lt;strong&gt;select Managed identities&lt;/strong&gt;. Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;br&gt;
Select your &lt;strong&gt;resource group&lt;/strong&gt;. Give your &lt;strong&gt;managed identity&lt;/strong&gt; a &lt;strong&gt;name&lt;/strong&gt;.&lt;br&gt;
Select &lt;strong&gt;Review and create&lt;/strong&gt;, and then &lt;strong&gt;Create&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%2F807avpewnc6ngipd81do.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%2F807avpewnc6ngipd81do.png" alt="Search managed identities" width="800" height="121"&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%2Ffaemt1diwm3tcsppnznc.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%2Ffaemt1diwm3tcsppnznc.png" alt="Initializing Creation of managed identities" width="800" height="214"&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%2Ff8dzme6iwla2ebkee2s5.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%2Ff8dzme6iwla2ebkee2s5.png" alt="managedidentityidentifier" width="800" height="833"&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%2Fyf5ycd2rh70gqxloz26d.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%2Fyf5ycd2rh70gqxloz26d.png" alt="validating" width="800" height="525"&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%2Fg1eofbhjcpa6mm202vaf.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%2Fg1eofbhjcpa6mm202vaf.png" alt="creating MI" width="800" height="1015"&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%2Fqiuy7l0fmxe7b3ynqxg8.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%2Fqiuy7l0fmxe7b3ynqxg8.png" alt="Process in progress" width="800" height="51"&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%2Fc0j0lvjse31rfcqd7zyy.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%2Fc0j0lvjse31rfcqd7zyy.png" alt="Deployment complete" width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 3 : Assign the correct permissions to the managed identity. The identity only needs to read and list containers and blobs.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; . Search for and select your &lt;strong&gt;storage account&lt;/strong&gt;.Select the &lt;strong&gt;Access Control (IAM) blade&lt;/strong&gt;.Select &lt;strong&gt;Add role assignment&lt;/strong&gt;. On the &lt;strong&gt;Job functions roles page&lt;/strong&gt;, search for and select the &lt;strong&gt;Storage Blob Data Reader role&lt;/strong&gt;. On the &lt;strong&gt;Members page&lt;/strong&gt;, select &lt;strong&gt;Managed identity&lt;/strong&gt;. Select &lt;strong&gt;Select members&lt;/strong&gt;, in the &lt;strong&gt;Managed identity&lt;/strong&gt; drop-down select &lt;strong&gt;User-assigned managed identity&lt;/strong&gt;. Select the &lt;strong&gt;managed identity&lt;/strong&gt; you created in the previous step. Click Select and then &lt;strong&gt;Review + assign the role&lt;/strong&gt;. Select &lt;strong&gt;Review + assign&lt;/strong&gt; a second time to add the &lt;strong&gt;role assignment&lt;/strong&gt;. Once this is configured, our &lt;strong&gt;storage account&lt;/strong&gt; can now be &lt;strong&gt;accessed&lt;/strong&gt; by a &lt;strong&gt;managed identity&lt;/strong&gt; with the &lt;strong&gt;Storage Data Blob Reader permissions&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%2Fuazktjkl7cqr6cnhq0ol.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%2Fuazktjkl7cqr6cnhq0ol.png" alt="Accessing storage account" width="800" height="173"&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%2F59w4n93owt2omzh4p57e.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%2F59w4n93owt2omzh4p57e.png" alt=" " width="800" height="415"&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%2Fr0is9kvwmic71zgyhqqr.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%2Fr0is9kvwmic71zgyhqqr.png" alt="Add role assignment" width="800" height="918"&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%2F9hno08mu893hzaob9pch.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%2F9hno08mu893hzaob9pch.png" alt="Adding roles &amp;amp; members. Review and assign" width="800" height="360"&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%2Fnpa4mepb56tpe68r3104.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%2Fnpa4mepb56tpe68r3104.png" alt="Review and assign" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 4 : Secure access to the &lt;strong&gt;storage account&lt;/strong&gt; with a &lt;strong&gt;key vault and key&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : In the  &lt;strong&gt;portal&lt;/strong&gt;, search for and select  &lt;strong&gt;Resource groups&lt;/strong&gt;. Select your  &lt;strong&gt;resource group&lt;/strong&gt;, and then the  &lt;strong&gt;Access Control (IAM) blade&lt;/strong&gt;. Select  &lt;strong&gt;Add role assignment&lt;/strong&gt;. On the  &lt;strong&gt;Job functions roles&lt;/strong&gt; page, search for and select the &lt;strong&gt;Key Vault Administrator&lt;/strong&gt; role. On the &lt;strong&gt;Members page&lt;/strong&gt;, select &lt;strong&gt;User group&lt;/strong&gt;, or  &lt;strong&gt;service principal&lt;/strong&gt;. Select &lt;strong&gt;Select members&lt;/strong&gt;. Search for and select your  &lt;strong&gt;user account&lt;/strong&gt;. Your user account is shown in the  &lt;strong&gt;top right&lt;/strong&gt; of the portal. Click Select and then  &lt;strong&gt;Review + assign&lt;/strong&gt;. Select  &lt;strong&gt;Review + assign&lt;/strong&gt; a second time to add the  &lt;strong&gt;role assignment&lt;/strong&gt;. You are now ready to continue with the &lt;strong&gt;lab&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%2Fkd6qknaj7zj8m7kg7kc4.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%2Fkd6qknaj7zj8m7kg7kc4.png" alt="Search portal for resource group" width="800" height="122"&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%2Fawve553e8wcuois79b6e.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%2Fawve553e8wcuois79b6e.png" alt="Select resource group" width="800" height="176"&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%2Fqxvwc4zlp6xovs7zbdno.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%2Fqxvwc4zlp6xovs7zbdno.png" alt="Adding role assignment" width="800" height="207"&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%2F9xclwe0fvk8t5txtp58k.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%2F9xclwe0fvk8t5txtp58k.png" alt="Job function role, key vault admin" width="800" height="359"&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%2Fazb2e6vvivdml649qmwp.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%2Fazb2e6vvivdml649qmwp.png" alt="Assigning user to self" width="800" height="360"&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%2Fsacuswgi6egtiq4d5j4e.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%2Fsacuswgi6egtiq4d5j4e.png" alt="Members review and assign" width="800" height="649"&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%2Fx4jas2do222bbhva5e1i.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%2Fx4jas2do222bbhva5e1i.png" alt="Review and assign tab" width="800" height="645"&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%2Flw0y3869gdaqft8diwx1.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%2Flw0y3869gdaqft8diwx1.png" alt="Precious Nwafor being assigned role" width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 5 : Create a &lt;strong&gt;key vault&lt;/strong&gt; to &lt;strong&gt;store&lt;/strong&gt; the &lt;strong&gt;access keys&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : In the Azure portal, search for and select &lt;strong&gt;Key vaults&lt;/strong&gt;. Select &lt;strong&gt;Create&lt;/strong&gt;. Select your &lt;strong&gt;resource group&lt;/strong&gt;. Provide the &lt;strong&gt;name&lt;/strong&gt; for the &lt;strong&gt;key vault&lt;/strong&gt;. The name must be &lt;strong&gt;unique&lt;/strong&gt;. Ensure on the &lt;strong&gt;Access configuration tab&lt;/strong&gt; that Azure &lt;strong&gt;role-based access control&lt;/strong&gt; (recommended) is &lt;strong&gt;selected&lt;/strong&gt;. Select &lt;strong&gt;Review + create&lt;/strong&gt;. Wait for the &lt;strong&gt;validation checks&lt;/strong&gt; to complete and then select &lt;strong&gt;Create&lt;/strong&gt;. After the &lt;strong&gt;deployment&lt;/strong&gt;, select &lt;strong&gt;Go to resource&lt;/strong&gt;. On the &lt;strong&gt;Overview blade&lt;/strong&gt; ensure both &lt;strong&gt;Soft-delete&lt;/strong&gt; and &lt;strong&gt;Purge protection&lt;/strong&gt; are &lt;strong&gt;enabled&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%2Fcdho0xz0zh8i2jezp2vi.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%2Fcdho0xz0zh8i2jezp2vi.png" alt="searching for key vaults" width="800" height="124"&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%2F83rwnf5livrflbi58h2c.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%2F83rwnf5livrflbi58h2c.png" alt="Selecting +create" width="800" height="246"&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%2F8rnm2loroo2jo48oleu6.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%2F8rnm2loroo2jo48oleu6.png" alt="Rg and key vault name" width="800" height="631"&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%2F3pntfaozhczb5lowwe0t.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%2F3pntfaozhczb5lowwe0t.png" alt="Enabling purge" width="800" height="746"&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%2F3qd0ta371ks631uldbsz.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%2F3qd0ta371ks631uldbsz.png" alt="Access configuration + review and create" width="800" height="878"&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%2F2f8bgt934byhilgakd34.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%2F2f8bgt934byhilgakd34.png" alt="Selecting create" width="800" height="1075"&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%2Fmaltpgtxdysj4usqleuq.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%2Fmaltpgtxdysj4usqleuq.png" alt="Go to resource" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;. Create a &lt;strong&gt;customer-managed&lt;/strong&gt; key in the &lt;strong&gt;key vault&lt;/strong&gt;. In your &lt;strong&gt;key vault&lt;/strong&gt;, in the &lt;strong&gt;Objects section&lt;/strong&gt;, select the &lt;strong&gt;Keys blade&lt;/strong&gt;. Select &lt;strong&gt;Generate/Import&lt;/strong&gt; and &lt;strong&gt;Name&lt;/strong&gt; the &lt;strong&gt;key&lt;/strong&gt;. Take the &lt;strong&gt;defaults&lt;/strong&gt; for the rest of the &lt;strong&gt;parameters&lt;/strong&gt;, and &lt;strong&gt;Create&lt;/strong&gt; the &lt;strong&gt;key&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%2Fly4fmw7vmpi8k3hxef0f.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%2Fly4fmw7vmpi8k3hxef0f.png" alt="Selecting key via object blade and initiating create" width="800" height="400"&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%2F4yr45kl8yaoow6zeff9g.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%2F4yr45kl8yaoow6zeff9g.png" alt="Naming key" width="800" height="1038"&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%2F6cs3w3mwbwno6mxf305u.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%2F6cs3w3mwbwno6mxf305u.png" alt="Key created and enabled" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 6 : &lt;strong&gt;Configure&lt;/strong&gt; the &lt;strong&gt;storage account&lt;/strong&gt; to use the &lt;strong&gt;customer managed key&lt;/strong&gt; in the &lt;strong&gt;key vault&lt;/strong&gt;  .
&lt;/h2&gt;

&lt;p&gt;Before you can complete the next steps, you must assign the Key Vault Crypto Service Encryption User role to the managed identity.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : In the portal, search for and select &lt;strong&gt;Resource groups&lt;/strong&gt;. Select your &lt;strong&gt;resource group&lt;/strong&gt;, and then the &lt;strong&gt;Access Control (IAM) blade&lt;/strong&gt;. Select &lt;strong&gt;Add role assignment&lt;/strong&gt; (center of the page). On the &lt;strong&gt;Job functions roles page&lt;/strong&gt;, search for and select the &lt;strong&gt;Key Vault Crypto Service Encryption User role&lt;/strong&gt;. On the &lt;strong&gt;Members page&lt;/strong&gt;, select &lt;strong&gt;Managed identity&lt;/strong&gt;. Select &lt;strong&gt;Select members&lt;/strong&gt;, in the &lt;strong&gt;Managed identity&lt;/strong&gt; drop-down select &lt;strong&gt;User-assigned managed identity&lt;/strong&gt;. Select your &lt;strong&gt;managed identity&lt;/strong&gt;. Click &lt;strong&gt;Select&lt;/strong&gt; and then &lt;strong&gt;Review + assign&lt;/strong&gt;. Select &lt;strong&gt;Review + assign&lt;/strong&gt; a &lt;strong&gt;second time&lt;/strong&gt; to &lt;strong&gt;add the role assignment&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%2F52oollyb8i3jruqliw44.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%2F52oollyb8i3jruqliw44.png" alt="Selecting resource group" width="800" height="218"&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%2F6ugnmgmmo5jbqevsvz1q.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%2F6ugnmgmmo5jbqevsvz1q.png" alt="Access control (IAM) and Add role" width="800" height="316"&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%2Fdhtzmrrg55sgkfq7d9tg.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%2Fdhtzmrrg55sgkfq7d9tg.png" alt="Key vault crypto service encryption user" width="800" height="374"&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%2F4srbue9ub2s6xnff60o6.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%2F4srbue9ub2s6xnff60o6.png" alt="Selecting managed identity members" width="800" height="365"&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%2Fhelnu315i9174xvqyw5d.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%2Fhelnu315i9174xvqyw5d.png" alt="Review and assign" width="800" height="699"&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%2F8cs3o85frdclkv8qi6ff.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%2F8cs3o85frdclkv8qi6ff.png" alt="Review and assign tab" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 7 : &lt;strong&gt;Configure&lt;/strong&gt; the &lt;strong&gt;storage account&lt;/strong&gt; to use the &lt;strong&gt;customer managed key&lt;/strong&gt; in your &lt;strong&gt;key vault&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : Return to your the &lt;strong&gt;storage account&lt;/strong&gt;. In the &lt;strong&gt;Security + networking section&lt;/strong&gt;, select the &lt;strong&gt;Encryption blade&lt;/strong&gt;.&lt;br&gt;
Select &lt;strong&gt;Customer-managed keys&lt;/strong&gt;. Select a &lt;strong&gt;key vault and key&lt;/strong&gt;. Select your &lt;strong&gt;key vault and key&lt;/strong&gt;. Select to &lt;strong&gt;confirm your choices&lt;/strong&gt;. Ensure the &lt;strong&gt;Identity type&lt;/strong&gt; is &lt;strong&gt;User-assigned&lt;/strong&gt;. Select an &lt;strong&gt;identity&lt;/strong&gt;. Select your &lt;strong&gt;managed identity&lt;/strong&gt; then select &lt;strong&gt;Add&lt;/strong&gt;. &lt;strong&gt;Save&lt;/strong&gt; your changes. If you receive &lt;strong&gt;an error&lt;/strong&gt; that your &lt;strong&gt;identity&lt;/strong&gt; does not have &lt;strong&gt;the correct permissions&lt;/strong&gt;, &lt;strong&gt;wait a minute&lt;/strong&gt;, and &lt;strong&gt;try again&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%2Fbtla8qlvdadaiwz56iop.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%2Fbtla8qlvdadaiwz56iop.png" alt="Storage account" width="800" height="326"&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%2Fdy30wy96i5bn0hq17ys9.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%2Fdy30wy96i5bn0hq17ys9.png" alt="Network and security blade configuration" width="800" height="311"&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%2Fo13imkm4bapp4bormp3k.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%2Fo13imkm4bapp4bormp3k.png" alt="Key vault detailing" width="800" height="839"&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%2Fl5cmwtvywmictc8s2apt.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%2Fl5cmwtvywmictc8s2apt.png" alt="Select user assign" width="800" height="353"&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%2Fozcf8np8zz6nezw9h2x4.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%2Fozcf8np8zz6nezw9h2x4.png" alt="User assigned details" width="800" height="361"&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%2Feb8dvdgmseec8hebcp96.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%2Feb8dvdgmseec8hebcp96.png" alt="Update successfull" width="800" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 8 : Configure a time-based retention policy and an encryption scope
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : The developers require a storage container where files can’t be modified, even by the administrator. So we will &lt;strong&gt;navigate&lt;/strong&gt; to our &lt;strong&gt;storage account&lt;/strong&gt;. In the &lt;strong&gt;Data storage section&lt;/strong&gt;, select the &lt;strong&gt;Containers blade&lt;/strong&gt;. Create a &lt;strong&gt;container&lt;/strong&gt; called &lt;strong&gt;hold&lt;/strong&gt;. &lt;strong&gt;Take&lt;/strong&gt; the &lt;strong&gt;defaults&lt;/strong&gt;. Be sure to &lt;strong&gt;Create&lt;/strong&gt; the &lt;strong&gt;container&lt;/strong&gt;. &lt;strong&gt;Upload&lt;/strong&gt; a &lt;strong&gt;file&lt;/strong&gt; to the &lt;strong&gt;container&lt;/strong&gt;. In the &lt;strong&gt;Settings&lt;/strong&gt; section, select the &lt;strong&gt;Access policy blade&lt;/strong&gt;. In the &lt;strong&gt;Immutable blob storage&lt;/strong&gt; section, select &lt;strong&gt;+ Add policy&lt;/strong&gt;. For the &lt;strong&gt;Policy type&lt;/strong&gt;, select &lt;strong&gt;time-based retention&lt;/strong&gt;. Set the &lt;strong&gt;Retention period&lt;/strong&gt; to &lt;strong&gt;5 days&lt;/strong&gt;. Be sure to &lt;strong&gt;Save&lt;/strong&gt; your changes. Try to &lt;strong&gt;delete&lt;/strong&gt; the &lt;strong&gt;file&lt;/strong&gt; in the &lt;strong&gt;container&lt;/strong&gt;. &lt;strong&gt;Verify&lt;/strong&gt; you are &lt;strong&gt;notified&lt;/strong&gt; &lt;strong&gt;failed to delete blobs due to policy&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%2Fmkf2yp2fpefiagal2dxb.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%2Fmkf2yp2fpefiagal2dxb.png" alt="Selecting container and giving it a name" width="800" height="363"&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%2Flvyt2em9kh3vbaera0jc.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%2Flvyt2em9kh3vbaera0jc.png" alt="Selecting container named hold" width="800" height="162"&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%2Fuksc1bnua2n1zws7tnep.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%2Fuksc1bnua2n1zws7tnep.png" alt="Uploading a file container" width="800" height="264"&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%2F7f70rzbiw83d8i82mp1f.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%2F7f70rzbiw83d8i82mp1f.png" alt="Uploading in progress" width="800" height="252"&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%2F9m1f816su0p04mj6uuu0.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%2F9m1f816su0p04mj6uuu0.png" alt="Upload successful" width="800" height="239"&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%2Fvt0iof8od3endo2n155u.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%2Fvt0iof8od3endo2n155u.png" alt="Time based immutable access policy" width="800" height="392"&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%2F1640701yk0qg2pyj9lqx.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%2F1640701yk0qg2pyj9lqx.png" alt="Selecting container and delete drop down" width="800" height="204"&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%2F2y5jkajxu39g0g1woncr.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%2F2y5jkajxu39g0g1woncr.png" alt="Confirming delete" width="800" height="418"&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%2F7zpsfg3cad840zh6wi9l.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%2F7zpsfg3cad840zh6wi9l.png" alt="Failed to delete" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 9 : The &lt;strong&gt;developers&lt;/strong&gt; require an &lt;strong&gt;encryption scope&lt;/strong&gt; that &lt;strong&gt;enables infrastructure encryption&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : Navigate back to your &lt;strong&gt;storage account&lt;/strong&gt;. In the &lt;strong&gt;Security + networking blade&lt;/strong&gt;, select &lt;strong&gt;Encryption&lt;/strong&gt;. In the &lt;strong&gt;Encryption scopes tab&lt;/strong&gt;, select &lt;strong&gt;Add&lt;/strong&gt;. Give your &lt;strong&gt;encryption scope&lt;/strong&gt; a &lt;strong&gt;name&lt;/strong&gt;.The &lt;strong&gt;Encryption type&lt;/strong&gt; is &lt;strong&gt;Microsoft-managed key&lt;/strong&gt;. Set &lt;strong&gt;Infrastructure encryption&lt;/strong&gt; to &lt;strong&gt;Enable&lt;/strong&gt;. Create the &lt;strong&gt;encryption scope&lt;/strong&gt;. Return to your &lt;strong&gt;storage account&lt;/strong&gt; and create a &lt;strong&gt;new container&lt;/strong&gt;. &lt;strong&gt;Notice&lt;/strong&gt; on the &lt;strong&gt;New container page&lt;/strong&gt;, there is the &lt;strong&gt;Name&lt;/strong&gt; and &lt;strong&gt;Public access level&lt;/strong&gt;. &lt;strong&gt;Notice&lt;/strong&gt; in the &lt;strong&gt;Advanced section&lt;/strong&gt; you can select the &lt;strong&gt;Encryption scope&lt;/strong&gt; you &lt;strong&gt;created&lt;/strong&gt; and &lt;strong&gt;apply&lt;/strong&gt; it to &lt;strong&gt;all blobs in the container&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%2F86mu99cvsfaldibxm5re.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%2F86mu99cvsfaldibxm5re.png" alt="Storage account" width="800" height="161"&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%2F99zh9x87t2oi565oy127.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%2F99zh9x87t2oi565oy127.png" alt="Creating encryption" width="800" height="257"&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%2Fae29554kar0ij25r20sk.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%2Fae29554kar0ij25r20sk.png" alt="Creation successful" width="800" height="385"&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%2Ftjblrpsjjo3u0860nkob.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%2Ftjblrpsjjo3u0860nkob.png" alt="New container with encryption scope" width="800" height="355"&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%2F6s6fc3i3z7ayfxtwfz88.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%2F6s6fc3i3z7ayfxtwfz88.png" alt="Container 4" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; : &lt;strong&gt;Hooray&lt;/strong&gt;, the mission is a &lt;strong&gt;success&lt;/strong&gt;!. Our storage fortress is ready for the new app. By enforcing access via &lt;strong&gt;keys and managed identities&lt;/strong&gt;, implementing &lt;strong&gt;RBAC&lt;/strong&gt; for precise testing, and locking down &lt;strong&gt;protected immutable storage&lt;/strong&gt;, we have built a &lt;strong&gt;resilient&lt;/strong&gt; environment where &lt;strong&gt;data&lt;/strong&gt; is both &lt;strong&gt;accessible&lt;/strong&gt; to developers and &lt;strong&gt;safe&lt;/strong&gt; from &lt;strong&gt;deletion&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>azure</category>
      <category>developer</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Provide shared file storage for the company offices</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Wed, 25 Feb 2026 22:09:11 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/provide-shared-file-storage-for-the-company-offices-1mlc</link>
      <guid>https://forem.com/precious_nwafor/provide-shared-file-storage-for-the-company-offices-1mlc</guid>
      <description>&lt;p&gt;​In a world where teams are geographically dispersed but need to stay perfectly in sync, local hardware just doesn't cut it anymore. Welcome to your roadmap for building a rock-solid Azure Files infrastructure; designed for high-speed collaboration, protected by instant snapshots, and locked down behind a private virtual network.&lt;/p&gt;

&lt;p&gt;Today, we will be working with a company that is geographically dispersed with offices in different locations. The offices need a way to share files and disseminate information. For example, the Finance department needs to confirm cost information for auditing and compliance. These files should be easy to access and load without delay. Some content should only be accessed from selected corporate virtual networks.&lt;/p&gt;

&lt;p&gt;Let's get to it!&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 1: Create a &lt;strong&gt;storage account&lt;/strong&gt; for the &lt;strong&gt;finance department’s shared files&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : In the  Azure &lt;strong&gt;portal&lt;/strong&gt;, search for and select &lt;strong&gt;Storage accounts&lt;/strong&gt;.&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%2F49vjxp5cen1w83id9ns6.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%2F49vjxp5cen1w83id9ns6.png" alt=" Searching for storage account" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt; : Select &lt;strong&gt;+ Create&lt;/strong&gt;.&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%2F6hcqammoeu538jualfeu.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%2F6hcqammoeu538jualfeu.png" alt="Initializing creation of storage accout" width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt; : For  &lt;strong&gt;Resource group&lt;/strong&gt;, select Create  &lt;strong&gt;new&lt;/strong&gt;. Give your resource group a  &lt;strong&gt;name&lt;/strong&gt; and select  &lt;strong&gt;OK&lt;/strong&gt; to  &lt;strong&gt;save&lt;/strong&gt; your  &lt;strong&gt;changes&lt;/strong&gt;. Proceed to provide a  &lt;strong&gt;Storage&lt;/strong&gt; account  &lt;strong&gt;name&lt;/strong&gt;. Set the  &lt;strong&gt;Performance&lt;/strong&gt; to &lt;strong&gt;Premium&lt;/strong&gt;.  Set the  &lt;strong&gt;Premium account type&lt;/strong&gt; to  &lt;strong&gt;File shares&lt;/strong&gt;.  Set the  &lt;strong&gt;Redundancy&lt;/strong&gt; to  &lt;strong&gt;Zone-redundant storage&lt;/strong&gt;. Select  &lt;strong&gt;Review + Create&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%2Fsvllu3zf0su6kjl7slel.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%2Fsvllu3zf0su6kjl7slel.png" alt="unique identifiers" width="800" height="534"&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%2F78u4lmpb8rs21ta28svp.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%2F78u4lmpb8rs21ta28svp.png" alt="Validation in progress" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt; : Select  &lt;strong&gt;Create&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%2F51mpm1ziilq59poc9b4r.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%2F51mpm1ziilq59poc9b4r.png" alt="Creating storage" width="800" height="942"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5&lt;/strong&gt; : Wait for the  &lt;strong&gt;resource to deploy&lt;/strong&gt;. Select  &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%2F644ub3t8hqvtrizbxnze.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%2F644ub3t8hqvtrizbxnze.png" alt="Initializing deployment" width="800" height="188"&gt;&lt;/a&gt;&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%2Fp0j1q99grfhn7zrqozvx.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%2Fp0j1q99grfhn7zrqozvx.png" alt="Deployment in progress" width="800" height="268"&gt;&lt;/a&gt;&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%2Ffn0v4x40wvy8ass38drb.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%2Ffn0v4x40wvy8ass38drb.png" alt="Go to resoursce" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 2: Create and configure a file share with directory.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : Create a file share for the corporate office. &lt;strong&gt;In&lt;/strong&gt; the &lt;strong&gt;storage account&lt;/strong&gt;, in the &lt;strong&gt;Data storage section&lt;/strong&gt;, select the &lt;strong&gt;File shares blade&lt;/strong&gt;.Select &lt;strong&gt;+ File share&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%2Fioc55jxwx45t8h0bm44y.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%2Fioc55jxwx45t8h0bm44y.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt; : Proceed to provide a &lt;strong&gt;Name&lt;/strong&gt;. &lt;strong&gt;Review&lt;/strong&gt; the other &lt;strong&gt;options&lt;/strong&gt;, but &lt;strong&gt;take the defaults&lt;/strong&gt;. Select &lt;strong&gt;Review + Create&lt;/strong&gt;. Select &lt;strong&gt;Create&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%2Fms5iq9e7do973n29p325.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%2Fms5iq9e7do973n29p325.png" alt="Review + Create" width="800" height="557"&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%2Fzxhipxkpli7msuhua7av.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%2Fzxhipxkpli7msuhua7av.png" alt="Create" width="800" height="919"&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%2Fn0wq8svv5re7i7nmueod.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%2Fn0wq8svv5re7i7nmueod.png" alt=" " width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt; : We will add a directory to the file share for the finance department. Select your &lt;strong&gt;file share&lt;/strong&gt; and select &lt;strong&gt;+Add directory&lt;/strong&gt;.&lt;br&gt;
Name the new directory &lt;strong&gt;finance&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%2Fjzqlvd44vozssl5goneg.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%2Fjzqlvd44vozssl5goneg.png" alt="Directory name" width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt; : Select &lt;strong&gt;Browse&lt;/strong&gt; and then select the &lt;strong&gt;finance&lt;/strong&gt; directory. Notice you can &lt;strong&gt;Add directory&lt;/strong&gt; to further organize your file share. &lt;strong&gt;Upload&lt;/strong&gt; a file of your choosing.&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%2F32ui4y8ekg6acp9vr6ou.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%2F32ui4y8ekg6acp9vr6ou.png" alt="Browse" width="800" height="291"&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%2Fqn26p7of6ijult4ja4gr.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%2Fqn26p7of6ijult4ja4gr.png" alt="Upload to finance" width="800" height="206"&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%2Fi540dn41ityhvn3h1e8u.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%2Fi540dn41ityhvn3h1e8u.png" alt=" " width="800" height="194"&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%2Fmloofeohfnzg87agjfvx.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%2Fmloofeohfnzg87agjfvx.png" alt="Uploading file" width="800" height="218"&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%2Fn9w2llj171wch4k4oxd8.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%2Fn9w2llj171wch4k4oxd8.png" alt="Uploaded doc" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 3: &lt;strong&gt;Configure&lt;/strong&gt; and &lt;strong&gt;test snapshots&lt;/strong&gt;. This is similar to blob storage, you need to protect against accidental deletion of files. We decide to use snapshots.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : Select your &lt;strong&gt;file share&lt;/strong&gt;. In the &lt;strong&gt;Operations section&lt;/strong&gt;, select the &lt;strong&gt;Snapshots blade&lt;/strong&gt;. Select &lt;strong&gt;+ Add snapshot&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%2Frvqrb7lidivntwplw4w6.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%2Frvqrb7lidivntwplw4w6.png" alt="Add snapshot" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;: The &lt;strong&gt;comment&lt;/strong&gt; is &lt;strong&gt;optional&lt;/strong&gt;. Select &lt;strong&gt;OK&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%2Ft7urtq3vqv16v6cabyad.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%2Ft7urtq3vqv16v6cabyad.png" alt="deploying the snapshot" width="800" height="364"&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%2Fmyeccv6huptuc9sfzpyf.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%2Fmyeccv6huptuc9sfzpyf.png" alt="Successfull" width="800" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt; : Select your &lt;strong&gt;snapshot&lt;/strong&gt; and &lt;strong&gt;verify&lt;/strong&gt; your &lt;strong&gt;file directory&lt;/strong&gt; and &lt;strong&gt;uploaded file&lt;/strong&gt; are &lt;strong&gt;included&lt;/strong&gt;. In the &lt;strong&gt;Properties pane&lt;/strong&gt; select &lt;strong&gt;Delete&lt;/strong&gt;. Select &lt;strong&gt;Yes&lt;/strong&gt; to confirm the &lt;strong&gt;deletion&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%2Fqci5sy8rdsnofv8rdjhi.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%2Fqci5sy8rdsnofv8rdjhi.png" alt=" " width="800" height="230"&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%2Fqpnjplo54ook52n3e5bg.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%2Fqpnjplo54ook52n3e5bg.png" alt=" " width="800" height="301"&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%2Fpvdw34gyve236mnp59ei.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%2Fpvdw34gyve236mnp59ei.png" alt=" " width="800" height="264"&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%2Ffgbwyhwip4va45om8rup.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%2Ffgbwyhwip4va45om8rup.png" alt="locating fileshare" width="800" height="255"&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%2Fzbyvydanqh76s62epk80.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%2Fzbyvydanqh76s62epk80.png" alt="Deleting snapshot" width="800" height="245"&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%2Fsm7gh2ftyqabrzyqtdbw.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%2Fsm7gh2ftyqabrzyqtdbw.png" alt="Delete confirmation" width="800" height="175"&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%2Fbd29h2gg4mc8vo136vqr.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%2Fbd29h2gg4mc8vo136vqr.png" alt="Delete successful" width="800" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt; : Practice using snapshots to restore a file. Return to your &lt;strong&gt;file share&lt;/strong&gt;. Browse to your &lt;strong&gt;file directory&lt;/strong&gt;. Locate your &lt;strong&gt;uploaded file&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%2F2wiclnh2f88c15lxzthi.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%2F2wiclnh2f88c15lxzthi.png" alt="Locating directory" width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5&lt;/strong&gt; : Select the Snapshots &lt;strong&gt;blade&lt;/strong&gt; and then select your &lt;strong&gt;snapshot&lt;/strong&gt;. Navigate to the &lt;strong&gt;file&lt;/strong&gt; you want to &lt;strong&gt;restore&lt;/strong&gt;. Select the &lt;strong&gt;file&lt;/strong&gt; and then select &lt;strong&gt;Restore&lt;/strong&gt;. Provide a &lt;strong&gt;Restored&lt;/strong&gt; file &lt;strong&gt;name&lt;/strong&gt;. Verify your &lt;strong&gt;file directory&lt;/strong&gt; has the &lt;strong&gt;restored file&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%2Fr54da89sd8rd0gqdv20i.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%2Fr54da89sd8rd0gqdv20i.png" alt="locating directory" width="800" height="243"&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%2Fcc6rbt9m3luj1wjjuqu4.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%2Fcc6rbt9m3luj1wjjuqu4.png" alt="restoring deleted file" width="800" height="225"&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%2Fhvjixd6q4ztdwnsu1ze9.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%2Fhvjixd6q4ztdwnsu1ze9.png" alt="Selecting ok" width="800" height="398"&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%2F33v6jumpuywz86d10sy0.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%2F33v6jumpuywz86d10sy0.png" alt="Successfully restored" width="800" height="46"&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%2F2x8oiifwi4nu69f1exwy.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%2F2x8oiifwi4nu69f1exwy.png" alt="Verifying restored file" width="800" height="332"&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%2Fj1hwndx9ikzehks9hyww.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%2Fj1hwndx9ikzehks9hyww.png" alt="Verified" width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PHASE 4: Configure &lt;strong&gt;restricting storage access&lt;/strong&gt; to &lt;strong&gt;selected virtual networks&lt;/strong&gt;. This task in this section require a &lt;strong&gt;virtual network&lt;/strong&gt; with &lt;strong&gt;subnet&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; : &lt;strong&gt;Search for&lt;/strong&gt; and &lt;strong&gt;select Virtual networks&lt;/strong&gt;. Select &lt;strong&gt;Create&lt;/strong&gt;. Select your &lt;strong&gt;resource group&lt;/strong&gt; and give the &lt;strong&gt;virtual network&lt;/strong&gt; a &lt;strong&gt;name&lt;/strong&gt;. Take the defaults for other parameters, select &lt;strong&gt;Review + create&lt;/strong&gt;, and then &lt;strong&gt;Create&lt;/strong&gt;. Wait for the &lt;strong&gt;resource&lt;/strong&gt; to &lt;strong&gt;deploy&lt;/strong&gt;.&lt;br&gt;
Select &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%2Fv0ivcvenfol2mg5t40vt.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%2Fv0ivcvenfol2mg5t40vt.png" alt="Search for virtual network" width="800" height="175"&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%2Fwa04s6gwlql8x5j3rsgc.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%2Fwa04s6gwlql8x5j3rsgc.png" alt="Select +create" width="800" height="172"&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%2Fxhpr4dbjyzi8vmfrk2hy.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%2Fxhpr4dbjyzi8vmfrk2hy.png" alt="Virtual network name" width="800" height="612"&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%2Fsangfkjre088dsvipgu1.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%2Fsangfkjre088dsvipgu1.png" alt="create and review" width="800" height="1140"&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%2F413t3jx8k2jqe4wdx5wg.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%2F413t3jx8k2jqe4wdx5wg.png" alt="validating" width="800" height="83"&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%2Fepd65amojrer38cbsar4.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%2Fepd65amojrer38cbsar4.png" alt="Go to resource" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt; : The &lt;strong&gt;storage account&lt;/strong&gt; should only be &lt;strong&gt;accessed&lt;/strong&gt; from the &lt;strong&gt;virtual network&lt;/strong&gt; we just created. &lt;strong&gt;Return&lt;/strong&gt; to your &lt;strong&gt;files storage account&lt;/strong&gt;. In the &lt;strong&gt;Security + networking&lt;/strong&gt; section, select the &lt;strong&gt;Networking blade&lt;/strong&gt;. &lt;strong&gt;Change&lt;/strong&gt; the &lt;strong&gt;Public network access&lt;/strong&gt; to &lt;strong&gt;Enabled&lt;/strong&gt; from &lt;strong&gt;selected virtual networks&lt;/strong&gt; and &lt;strong&gt;IP addresses&lt;/strong&gt;. In the &lt;strong&gt;Virtual networks section&lt;/strong&gt;, select &lt;strong&gt;Add existing virtual network&lt;/strong&gt;. Select your &lt;strong&gt;virtual network and subnet&lt;/strong&gt;, select &lt;strong&gt;Add&lt;/strong&gt;. Be sure to &lt;strong&gt;Save&lt;/strong&gt; your &lt;strong&gt;changes&lt;/strong&gt;. Select the &lt;strong&gt;Storage browser&lt;/strong&gt; and navigate to your &lt;strong&gt;file share&lt;/strong&gt;. &lt;strong&gt;Verify&lt;/strong&gt; the message &lt;strong&gt;not authorized&lt;/strong&gt; to &lt;strong&gt;perform&lt;/strong&gt; this &lt;strong&gt;operation&lt;/strong&gt;. You are &lt;strong&gt;not&lt;/strong&gt; &lt;strong&gt;connecting&lt;/strong&gt; from the &lt;strong&gt;virtual network&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%2Fwn5mfcc530vy6l9rrmt2.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%2Fwn5mfcc530vy6l9rrmt2.png" alt="Network + security" width="800" height="541"&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%2F59gm8ir1dlyepzfdzf62.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%2F59gm8ir1dlyepzfdzf62.png" alt="Adding virtual network" width="800" height="450"&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%2Fw3m5txp41545fey9kf3m.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%2Fw3m5txp41545fey9kf3m.png" alt="Deploying private storage endpoints" width="800" height="348"&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%2F7smiumd9h3rb5t0gfumv.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%2F7smiumd9h3rb5t0gfumv.png" alt="validating private storage endpoints" width="800" height="250"&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%2F5c4c9mip48dmsu491nm3.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%2F5c4c9mip48dmsu491nm3.png" alt="Error message validated" width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt; : ​By completing this &lt;strong&gt;tutorial&lt;/strong&gt;, we have successfully established a high-performance, enterprise-grade storage environment specifically engineered for secure corporate data sharing. We began by deploying a premium, zone-redundant storage account and organizing it with dedicated file shares and directories to ensure the finance department's auditing data remains easily accessible yet highly structured. To safeguard against data loss, we implemented a snapshot strategy and verified that files can be restored instantly, providing a vital safety net against accidental deletions. &lt;strong&gt;Finally&lt;/strong&gt;, we hardened the entire infrastructure by restricting access exclusively to our authorized virtual network, ensuring the company's information is protected from unauthorized external connections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MISSION ACCOMPLISHED&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>sharedstorage</category>
      <category>webdev</category>
      <category>cloudcomputing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Steps to Launch an EC2 Instance in AWS</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Sat, 21 Feb 2026 08:45:34 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/steps-to-launch-an-ec2-instance-in-aws-18op</link>
      <guid>https://forem.com/precious_nwafor/steps-to-launch-an-ec2-instance-in-aws-18op</guid>
      <description>&lt;p&gt;Cloud infrastructure can feel abstract until you launch your first server.&lt;/p&gt;

&lt;p&gt;In the world of cloud computing, servers aren’t racks of hardware sitting in a data center. They are on-demand, scalable, and provisioned in minutes. &lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;Amazon Web Services (AWS)&lt;/strong&gt;, this compute capability is delivered through &lt;strong&gt;Amazon Elastic Compute Cloud (EC2)&lt;/strong&gt;. Which is a service that lets you spin up &lt;strong&gt;virtual servers&lt;/strong&gt; whenever you need them. If you are coming from Microsoft Azure, you will recognize this concept as a Virtual Machine. Different name, same fundamental idea: rentable compute power in the cloud.&lt;/p&gt;

&lt;p&gt;In this guide, we will walk step-by-step through creating your own EC2 instance from configuration to launch.&lt;/p&gt;

&lt;p&gt;Let’s build our &lt;em&gt;EC2 instance&lt;/em&gt;. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1&lt;/strong&gt; : &lt;strong&gt;Create&lt;/strong&gt; or &lt;strong&gt;login&lt;/strong&gt;  AWS Management Console account.&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%2Ft2b1wjdlcghkvl7wyee3.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%2Ft2b1wjdlcghkvl7wyee3.png" alt="Access console" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2&lt;/strong&gt; : Proceed to navigate to the Search bar icon above. &lt;strong&gt;Type&lt;/strong&gt; EC2 and click &lt;strong&gt;enter&lt;/strong&gt;. This opens the EC2 dashboard.&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%2F0iu6gs0pyeujsqe9pb33.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%2F0iu6gs0pyeujsqe9pb33.png" alt="Search bar" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3&lt;/strong&gt; : Select &lt;strong&gt;Launch Instance&lt;/strong&gt; on the dashboard&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%2Fucyntpsv1wpok8q1we81.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%2Fucyntpsv1wpok8q1we81.png" alt="Select launch instance" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4&lt;/strong&gt; : Add a &lt;strong&gt;name tag&lt;/strong&gt; and choose your &lt;strong&gt;operating system&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%2Fncahu7xrgm91aqipcmfy.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%2Fncahu7xrgm91aqipcmfy.png" alt="Adding Identifier" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 5&lt;/strong&gt; : Proceed to create a new key pair &lt;strong&gt;(optional)&lt;/strong&gt;. Give a unique name and create new key. This automatically downloads as a file&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%2F65n8l8gkbtkemasipzpb.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%2F65n8l8gkbtkemasipzpb.png" alt="new key pair" width="800" height="316"&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%2Fqo4ysyn1fe0uumxzz0oi.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%2Fqo4ysyn1fe0uumxzz0oi.png" alt="unique identifier" width="800" height="752"&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%2Fd1km8iob1scbjhwyhhp1.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%2Fd1km8iob1scbjhwyhhp1.png" alt="Key pair file" width="651" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 6&lt;/strong&gt; : Proceed to &lt;strong&gt;Launch instance&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%2F154ebes9jrvc3kmb01l3.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%2F154ebes9jrvc3kmb01l3.png" alt=" " width="800" height="171"&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%2F5gzsty9aby8knbd01hih.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%2F5gzsty9aby8knbd01hih.png" alt="Launch in progress" width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 7&lt;/strong&gt; : We have created the EC2. Proceed to &lt;strong&gt;connect to your instance&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%2F8vmh5mxga9o9eej81n60.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%2F8vmh5mxga9o9eej81n60.png" alt="connecting to instance" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 8&lt;/strong&gt; : We will use the cloud share that Amazon is providing and connect directly. Click &lt;strong&gt;connect&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%2Ff4fuzf78lakyrhdv7tcq.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%2Ff4fuzf78lakyrhdv7tcq.png" alt="Cloud share" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 9&lt;/strong&gt;: Wait for &lt;strong&gt;connection&lt;/strong&gt; to be established. Congratulations, we have created our Ubuntu 24.04.3 LTS (GNU/Linux 6.14.0-1018-aws x86_64)&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%2Feb5bcqdd9tgsxkos54f6.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%2Feb5bcqdd9tgsxkos54f6.png" alt="Establishing connection" width="800" height="346"&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%2Fjygkgwhsu0lcajrssp15.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%2Fjygkgwhsu0lcajrssp15.png" alt="Welcome" width="800" height="684"&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%2Fo3jlmi467xivbz7vpwpb.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%2Fo3jlmi467xivbz7vpwpb.png" alt="Deployment" width="800" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 10&lt;/strong&gt;: The EC2 &lt;strong&gt;connected&lt;/strong&gt; and &lt;strong&gt;ready for use&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;We can go further by entering the command &lt;strong&gt;sudo su&lt;/strong&gt; at the prompt and press Enter to gain administrative access. Next, type &lt;strong&gt;sudo apt&lt;/strong&gt; update and press Enter again. This will refresh your package lists and display the current status of your applications on the EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If the terminal becomes unresponsive, first click directly inside the black window to ensure it has "focus." If it still won't record your commands, refresh your browser to reset the session. This can be due to &lt;strong&gt;lost focus or connection time out&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%2Fku2s81k7gu9i36w8sxbd.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%2Fku2s81k7gu9i36w8sxbd.png" alt="Update command description" width="800" height="676"&gt;&lt;/a&gt;&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%2Fuxhgdm5tosp9bzoa1rib.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%2Fuxhgdm5tosp9bzoa1rib.png" alt="command" width="800" height="511"&gt;&lt;/a&gt;&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%2Fseq5pv53oaq4u3nkccbh.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%2Fseq5pv53oaq4u3nkccbh.png" alt="command" width="800" height="547"&gt;&lt;/a&gt;&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%2Fw0fopmf2ma37guub77ou.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%2Fw0fopmf2ma37guub77ou.png" alt="running" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MISSION SUCCESSFUL&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ec2</category>
      <category>webdev</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Creating a Windows Virtual Machine (VM) in Azure</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Sat, 21 Feb 2026 02:33:12 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/creating-a-windows-virtual-machine-vm-in-azure-3ip</link>
      <guid>https://forem.com/precious_nwafor/creating-a-windows-virtual-machine-vm-in-azure-3ip</guid>
      <description>&lt;p&gt;Have you ever wished for a &lt;strong&gt;Undo&lt;/strong&gt; button for your entire computer?&lt;/p&gt;

&lt;p&gt;Imagine a high-stakes flight simulator. You have all the controls, all the power, and all the thrill of the sky, but if you crash, you don't fall. You just hit &lt;strong&gt;Restart&lt;/strong&gt; and &lt;strong&gt;try again&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is the magic of a &lt;strong&gt;Virtual Machine (VM)&lt;/strong&gt;. In the world of Cloud Engineering, we don’t let physical hardware limit our imagination. We turn &lt;strong&gt;heavy metal&lt;/strong&gt; servers into &lt;strong&gt;fluid and digital sandboxes&lt;/strong&gt; . Whether you want to test a dangerous virus, learn a new OS, or build the next big app, the VM is your playground.&lt;/p&gt;

&lt;p&gt;Grab your digital hard hat and let's build a computer out of thin air.&lt;/p&gt;

&lt;p&gt;STEP 1 : In the Azure portal, &lt;strong&gt;search&lt;/strong&gt; for and &lt;strong&gt;select Virtual Machines&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%2Frcu69ansmzufgjx1m09n.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%2Frcu69ansmzufgjx1m09n.png" alt="Searching the global search for virtual machines" width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 2 : Select  &lt;strong&gt;Virtual Machines&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%2F6uh80550hu1e4e8mz5if.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%2F6uh80550hu1e4e8mz5if.png" alt="Select virtual machines" width="800" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 3 : Go to &lt;strong&gt;Basic tab&lt;/strong&gt;. Under Subscription &amp;amp; Resource Group: Select your &lt;strong&gt;subscription&lt;/strong&gt; and create or choose a &lt;strong&gt;resource group&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM Name: Enter a name for your VM. &lt;/li&gt;
&lt;li&gt;Region: Pick an Azure region of your choice.&lt;/li&gt;
&lt;li&gt;Availability Options: No infrastructure redundancy required for high availability and to lower cost.&lt;/li&gt;
&lt;li&gt;Security: Select standard&lt;/li&gt;
&lt;li&gt;Image: Confirm the Windows OS image.&lt;/li&gt;
&lt;li&gt;Size: Select the VM size (CPU, RAM) based on your workload. This determines your VMs pricing on an hourly bases.&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%2Fpyd6bgmirelimy8gnqlq.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%2Fpyd6bgmirelimy8gnqlq.png" alt="Labelling our machine" width="800" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 4 : Set an &lt;strong&gt;Administrator Account&lt;/strong&gt;&lt;br&gt;
Create a username and password for logging into the VM. Configure virtual network, subnet, and public IP. Use Http (80), RDP (Port 3389) to connect remotely. Confirm licensing option&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%2Fwf915g3rpuz16b24khyg.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%2Fwf915g3rpuz16b24khyg.png" alt="Labelling VM" width="800" height="582"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 5 : Configure  &lt;strong&gt;Monitoring tab&lt;/strong&gt;. Disable - Boot diagnostics to ensure privacy. &lt;strong&gt;Review&lt;/strong&gt; and &lt;strong&gt;create&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%2Fcmlivz0v7p0gfn0fu624.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%2Fcmlivz0v7p0gfn0fu624.png" alt="Reviewing deployment" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 6 : Validation &lt;strong&gt;passed&lt;/strong&gt;. Proceed to &lt;strong&gt;Create&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%2Fzjyfxqabxs0na6le5cn7.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%2Fzjyfxqabxs0na6le5cn7.png" alt="Creating VM" width="800" height="822"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 7 : Deployment  &lt;strong&gt;Complete&lt;/strong&gt;. Go to &lt;strong&gt;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%2Fc70seqirrlxdq55tpr0b.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%2Fc70seqirrlxdq55tpr0b.png" alt="Vm deployed" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 8 :  Connect &lt;strong&gt;VM&lt;/strong&gt; and  download &lt;strong&gt;RDP file&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%2Ftp19vgim2kqpe65djg9d.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%2Ftp19vgim2kqpe65djg9d.png" alt="Connect Status" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 9 :  &lt;strong&gt;Open&lt;/strong&gt; and &lt;strong&gt;login&lt;/strong&gt; to the downloaded &lt;strong&gt;RDP folder&lt;/strong&gt; with your &lt;strong&gt;credentials&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%2F66r43po02mchsianm5gc.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%2F66r43po02mchsianm5gc.png" alt=" " width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 10 : &lt;strong&gt;Verify&lt;/strong&gt; credentials and &lt;strong&gt;connect&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%2Fquzi6gtzzamchhtihqo2.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%2Fquzi6gtzzamchhtihqo2.png" alt="Verify and connect" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 11 : &lt;strong&gt;Install&lt;/strong&gt; and &lt;strong&gt;Run&lt;/strong&gt; VM. Test application by downloading &lt;strong&gt;Screenpresso&lt;/strong&gt; using &lt;strong&gt;Microsoft Edge&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%2Fvwrmzqboj2qjehe5hzcq.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%2Fvwrmzqboj2qjehe5hzcq.png" alt="Inside VM" width="800" height="280"&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%2Fcxwk8wnybb805bhn8m01.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%2Fcxwk8wnybb805bhn8m01.png" alt="Downloading screenpresso" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;STEP 12 : &lt;strong&gt;Install&lt;/strong&gt; and &lt;strong&gt;Run&lt;/strong&gt;  Screenpresso in VM. &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%2F8rwm80wdtgr7hchavcjn.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%2F8rwm80wdtgr7hchavcjn.png" alt="Installation" width="800" height="377"&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%2F1zp6p4umolja9xfwb54d.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%2F1zp6p4umolja9xfwb54d.png" alt="Run program" width="800" height="427"&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%2Fdyf6s55p8jc9q73f4s82.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%2Fdyf6s55p8jc9q73f4s82.png" alt="VM" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MISSION ACCOMPLISHED&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>virtualmachine</category>
      <category>azure</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Provide private storage for internal company documents</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Fri, 20 Feb 2026 10:31:57 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/provide-private-storage-for-internal-company-documents-3o7a</link>
      <guid>https://forem.com/precious_nwafor/provide-private-storage-for-internal-company-documents-3o7a</guid>
      <description>&lt;p&gt;A company needs storage for their offices and departments. This content is private to the company and shouldn't be shared without consent. This storage requires high availability if there is a regional outage. The company wants to use this storage to back up the public website storage.&lt;/p&gt;

&lt;p&gt;Let's get to it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1: Create a storage account and configure high availability.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1 . In the portal, search for and select &lt;strong&gt;Storage accounts&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%2Fvyu2pe2aoawid5cs8o1i.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%2Fvyu2pe2aoawid5cs8o1i.png" alt="Navigating the global search bar to find storage accounts" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Select &lt;strong&gt;+ Create&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%2Ft012jpm06dxlj9d5kxzx.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%2Ft012jpm06dxlj9d5kxzx.png" alt="Initiating select + create setup" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . Select the &lt;strong&gt;Resource group&lt;/strong&gt; created in the previous lab - "sapublic". Set the &lt;strong&gt;Storage account name&lt;/strong&gt; to private. Add an identifier to the name to ensure the name is unique. Select &lt;strong&gt;Review&lt;/strong&gt;, and then &lt;strong&gt;Create&lt;/strong&gt; the storage account.&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%2Fzea7imybavfd91r0vuiv.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%2Fzea7imybavfd91r0vuiv.png" alt="Initiating creation" width="800" height="800"&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%2F6xlgz420cahf6b2fidxc.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%2F6xlgz420cahf6b2fidxc.png" alt="Final deployment" width="800" height="1219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . Wait for the storage account to deploy, and then select &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%2Fue4x4xr6t6je2djgkfu7.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%2Fue4x4xr6t6je2djgkfu7.png" alt="Deployment complete" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5 . This storage requires high availability if there is a regional outage. Read access in the secondary region is not required. We have to configure the appropriate level of &lt;strong&gt;redundancy&lt;/strong&gt;. To this, in the storage account, in the &lt;strong&gt;Data management&lt;/strong&gt; section, select the &lt;strong&gt;Redundancy&lt;/strong&gt; blade. Ensure &lt;strong&gt;Geo-redundant storage (GRS)&lt;/strong&gt; is selected. &lt;strong&gt;Refresh&lt;/strong&gt; the page. Review the primary and secondary location information. &lt;strong&gt;Save&lt;/strong&gt; your changes.&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%2Fzldwzaq9qw5wydmx20vs.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%2Fzldwzaq9qw5wydmx20vs.png" alt="Configuring Geo - redundancy" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2: Create a storage container, upload a file, and restrict access to the file.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan:&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a private storage container for the corporate data. In the storage account, in the &lt;strong&gt;Data storage&lt;/strong&gt; section, select the &lt;strong&gt;Containers blade&lt;/strong&gt;. Select &lt;strong&gt;+ Container&lt;/strong&gt;. Ensure the Name of the container is &lt;strong&gt;private&lt;/strong&gt;. Ensure the &lt;strong&gt;Public access level&lt;/strong&gt; is &lt;strong&gt;Private (no anonymous access)&lt;/strong&gt;. As you have time, review the &lt;strong&gt;Advanced settings&lt;/strong&gt;, but take the defaults.
Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&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%2F2atzozxrg6g5l52mt7qy.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%2F2atzozxrg6g5l52mt7qy.png" alt="Deploying a private container" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . For testing, we will upload a file to the &lt;strong&gt;private&lt;/strong&gt; container. The type of file doesn’t matter. A small image or text file is a good choice. Test to ensure the file isn’t publicly accessible. To do this, Select the container. Select &lt;strong&gt;Upload&lt;/strong&gt;. &lt;strong&gt;Browse to files&lt;/strong&gt; and select a file. &lt;strong&gt;Upload&lt;/strong&gt; the file. &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%2Fn264r8out7ez0s019tmw.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%2Fn264r8out7ez0s019tmw.png" alt="Upload test for the private container secuirity" width="800" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . Select the uploaded file. On the &lt;strong&gt;Overview&lt;/strong&gt; tab, copy the &lt;strong&gt;URL&lt;/strong&gt;. Paste the &lt;strong&gt;URL&lt;/strong&gt; into a new browser tab. Verify the file doesn’t display and you receive an error.&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%2F3sn4ku00ll03uoj147ey.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%2F3sn4ku00ll03uoj147ey.png" alt="Testing Access" width="800" height="227"&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%2Fgabjbuly3vof3t60xpr0.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%2Fgabjbuly3vof3t60xpr0.png" alt="Access Denied" width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3: An external partner requires read and write access to the file for at least the next 24 hours. Configure and test a shared access signature (SAS).
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1 . Select your uploaded blob file and move to the &lt;strong&gt;Generate SAS tab&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%2Fu3bwg0elzpoaow4h0oxu.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%2Fu3bwg0elzpoaow4h0oxu.png" alt="Configuring shared Access signature" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . In the &lt;strong&gt;Permissions&lt;/strong&gt; drop-down, ensure the partner has only &lt;strong&gt;Read&lt;/strong&gt; permissions.&lt;br&gt;
Verify the &lt;strong&gt;Start and expiry date/time&lt;/strong&gt; is for the next 24 hours. Select &lt;strong&gt;Generate SAS token and URL&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%2Frge3ywuzi8wtjcfyt64l.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%2Frge3ywuzi8wtjcfyt64l.png" alt="Generating SAS" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . Copy the &lt;strong&gt;Blob SAS URL&lt;/strong&gt; to a new browser tab. Verify you can access the file. If you have uploaded an image file it will display in the browser. Other file types will be downloaded.&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%2Fvskjoowav5taux4xwlu6.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%2Fvskjoowav5taux4xwlu6.png" alt="Testing SAS URL" width="800" height="1042"&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%2F8pal41li0h8rpex6o25z.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%2F8pal41li0h8rpex6o25z.png" alt="Access granted: Can view image" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4: Configure storage access tiers and content replication. To save on costs, after 30 days, move blobs from the hot tier to the cool tier.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1 . Return to the &lt;strong&gt;storage account **. In the **Overview&lt;/strong&gt; section, notice the &lt;strong&gt;Default access tier&lt;/strong&gt; is set to &lt;strong&gt;Hot&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%2Fg1j7j71rkcy35uee26tl.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%2Fg1j7j71rkcy35uee26tl.png" alt="Default access tier" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . In the &lt;strong&gt;Data management&lt;/strong&gt; section, select the &lt;strong&gt;Lifecycle management blade&lt;/strong&gt;. Select &lt;strong&gt;Add rule&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%2F43opdfq2qn8llub1x1ih.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%2F43opdfq2qn8llub1x1ih.png" alt="Life cycle management deployment" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . Set the &lt;strong&gt;Rule name&lt;/strong&gt; to movetocool. Set the &lt;strong&gt;Rule scope&lt;/strong&gt; to &lt;strong&gt;Apply rule to all blobs in the storage account&lt;/strong&gt;. Select &lt;strong&gt;Next&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%2Fhwtwchca51t33gyhulue.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%2Fhwtwchca51t33gyhulue.png" alt=" " width="800" height="1073"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . Ensure &lt;strong&gt;Last modified&lt;/strong&gt; is selected. Set &lt;strong&gt;More than (days ago)&lt;/strong&gt; to &lt;strong&gt;30&lt;/strong&gt;. In the Then drop-down select &lt;strong&gt;Move to cool storage&lt;/strong&gt;. As you have time, review other lifecycle options in the drop-down.&lt;strong&gt;Add&lt;/strong&gt; the rule.&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%2F02g9kskg4mouztcxwr6h.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%2F02g9kskg4mouztcxwr6h.png" alt="Automating Cost Savings" width="800" height="719"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 5: The public website files need to be backed up to another storage account.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Action plan:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1 . In your storage account, &lt;strong&gt;create&lt;/strong&gt; a new container called backup. Use the default values.&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%2Fe90omh5nzcqwf7t00jks.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%2Fe90omh5nzcqwf7t00jks.png" alt="New backup container" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Navigate to your &lt;strong&gt;publicwebsite&lt;/strong&gt; storage account. This storage account was created in the previous exercise. In the &lt;strong&gt;Data management&lt;/strong&gt; section, select the &lt;strong&gt;Object replication&lt;/strong&gt; blade. Select &lt;strong&gt;Create replication rules&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%2Fcly12xolygito1bwnz3m.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%2Fcly12xolygito1bwnz3m.png" alt="Setting up object replication" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . Set the &lt;strong&gt;Destination storage account&lt;/strong&gt; to the &lt;strong&gt;private&lt;/strong&gt; storage account.&lt;br&gt;
Set the &lt;strong&gt;Source container&lt;/strong&gt; to &lt;strong&gt;public&lt;/strong&gt; and the &lt;strong&gt;Destination&lt;/strong&gt; container to backup. &lt;strong&gt;Create&lt;/strong&gt; the replication rule. &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%2F0qo685cl9epl0o5l8rr2.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%2F0qo685cl9epl0o5l8rr2.png" alt="Replication rules" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . Optionally, as you have time, upload a file to the &lt;strong&gt;public&lt;/strong&gt; container. Return to the private storage account and refresh the &lt;strong&gt;backup&lt;/strong&gt; container. Within a few minutes your public website file will appear in the backup folder.&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%2Fvckenos6w7a12j8tlppy.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%2Fvckenos6w7a12j8tlppy.png" alt="Success verification" width="800" height="349"&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%2Fhz91a4yot6kssi01m9fv.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%2Fhz91a4yot6kssi01m9fv.png" alt="Final verification" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mission Accomplished!&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>security</category>
      <category>devops</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Storage for a public website</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Thu, 19 Feb 2026 21:12:53 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/storage-for-a-public-website-4f77</link>
      <guid>https://forem.com/precious_nwafor/storage-for-a-public-website-4f77</guid>
      <description>&lt;p&gt;Think of &lt;strong&gt;storage&lt;/strong&gt; as a digital warehouse.&lt;/p&gt;

&lt;p&gt;Just like a physical warehouse stores boxes safely so they can be retrieved later, digital storage keeps files and data safe so they can be accessed whenever needed.&lt;/p&gt;

&lt;p&gt;When you upload a photo, a document, a video, or even a database record, that information needs a place to live.&lt;/p&gt;

&lt;p&gt;That place is called &lt;strong&gt;storage&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let's get to it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1 - Create a storage account to support the public website.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;The Action Plan&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;1 . In the portal, search for and select &lt;strong&gt;Storage accounts&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%2Fal7tp3nczev3x0g8vvsh.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%2Fal7tp3nczev3x0g8vvsh.png" alt="Searching for 'storage account' in the Azure portalservices" width="800" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Select &lt;strong&gt;+ Create&lt;/strong&gt;.&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%2F88fq16inrf2wl56vaw49.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%2F88fq16inrf2wl56vaw49.png" alt="Accessing the ** + create storage account** configuration blade" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . For &lt;strong&gt;resource group&lt;/strong&gt;, select &lt;strong&gt;new&lt;/strong&gt; . Give your resource group a name and select &lt;strong&gt;OK&lt;/strong&gt;. Select &lt;strong&gt;Review and then Create&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%2Fsqjn7z0ab4iypk30p19j.jpg" 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%2Fsqjn7z0ab4iypk30p19j.jpg" alt="Assigning a Resource Group to organize and manage the storage account" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . Set the &lt;strong&gt;Storage account name&lt;/strong&gt; to publicwebsite. Make sure the storage account name is unique by adding an identifier. Take the defaults for other settings. &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%2Fgwe9418gglb6dhvrhb39.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%2Fgwe9418gglb6dhvrhb39.png" alt="Configuring a unique storage name and identifier" width="800" height="735"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5 . Select &lt;strong&gt;Create&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%2F3iuqlpjhiw17maf388sd.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%2F3iuqlpjhiw17maf388sd.png" alt="Launching the final validation and deployment" width="800" height="845"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6 . Wait for the storage account to deploy, and then select &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%2Fgca7fq1xuq9ww7c09mrh.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%2Fgca7fq1xuq9ww7c09mrh.png" alt="Navigating to the new storage account dashboard after validation" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7 . This storage requires high availability if there’s a regional outage. Additionally, we will enable read access to the secondary region. In the storage account, in the &lt;strong&gt;Data management&lt;/strong&gt; section, select the &lt;strong&gt;Redundancy&lt;/strong&gt; blade. Ensure &lt;strong&gt;Read-access Geo-redundant storage is selected&lt;/strong&gt;. Review the primary and secondary location information.&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%2Fvq3drrgrl4spc1f0lo76.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%2Fvq3drrgrl4spc1f0lo76.png" alt="Selecting RA-GRS to ensure multi-region availability" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8 . Information on the public website should be accessible without requiring customers to login. So in the &lt;strong&gt;Settings section&lt;/strong&gt;, select the &lt;strong&gt;Configuration&lt;/strong&gt; blade. Ensuring the &lt;strong&gt;Allow blob anonymous access&lt;/strong&gt; setting is &lt;strong&gt;Enabled&lt;/strong&gt; and &lt;strong&gt;Save&lt;/strong&gt; changes.&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%2F8vl0p4indskxe4vdni4y.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%2F8vl0p4indskxe4vdni4y.png" alt="Toggling the anonymous access setting 'Enabled and saving changes in the storage account dashboard" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2 - Create a blob storage container with anonymous read access.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;The Action Plan&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;1 . In your storage account, in the &lt;strong&gt;Data storage&lt;/strong&gt; section, select the &lt;strong&gt;Containers&lt;/strong&gt; blade. Select &lt;strong&gt;+ Container&lt;/strong&gt;. Ensure the &lt;strong&gt;Name&lt;/strong&gt; of the container is &lt;strong&gt;public&lt;/strong&gt;. Select &lt;strong&gt;Create&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%2Fwyzeralvio203ewpde2p.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%2Fwyzeralvio203ewpde2p.png" alt="Creating new container to host website assets" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Customers should be able to view the images without being authenticated. Configure anonymous read access for the public container blobs. Select your &lt;strong&gt;public&lt;/strong&gt; container. On the &lt;strong&gt;Overview blade&lt;/strong&gt;, select &lt;strong&gt;Change access level&lt;/strong&gt;. Ensure the &lt;strong&gt;Public access level&lt;/strong&gt; is &lt;strong&gt;Blob (anonymous read access for blobs only)&lt;/strong&gt;. Select &lt;strong&gt;OK&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%2Fcbe58xnjbps8dq8hm1mi.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%2Fcbe58xnjbps8dq8hm1mi.png" alt="Updating the container access level" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3 - For testing, upload a file to the public container. The type of file doesn’t matter. A small image or text file is a good choice.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;The Action Plan&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;1 . Ensure you are viewing your container.&lt;br&gt;
Select &lt;strong&gt;Upload&lt;/strong&gt;. &lt;strong&gt;Browse to files&lt;/strong&gt; and select a file. Browse to a file of your choice. Select &lt;strong&gt;Upload&lt;/strong&gt;. Close the upload window, &lt;strong&gt;Refresh&lt;/strong&gt; the page and ensure your file was uploaded.&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%2F0lkdnn6s0mer2ix2f9vc.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%2F0lkdnn6s0mer2ix2f9vc.png" alt="Uploading and verifying local assets" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Determine the URL for your uploaded file. Open a browser and test the URL. Select your uploaded file. On the &lt;strong&gt;Overview&lt;/strong&gt; tab, copy the &lt;strong&gt;URL&lt;/strong&gt;. Paste the URL into a new browser tab. If you have uploaded an image file it will display in the browser. Other file types should be downloaded.&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%2Flbgpamey3jbt48giod7h.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%2Flbgpamey3jbt48giod7h.png" alt="Testing public access in a new browser" width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 4 - It’s important that the website documents can be restored if they are deleted. We will proceed to Configure blob soft delete for 21 days.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;The Action Plan&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;1 . Go to the &lt;strong&gt;Overview&lt;/strong&gt; blade of the &lt;strong&gt;storage&lt;/strong&gt; account. On the &lt;strong&gt;Properties page&lt;/strong&gt;, locate &lt;strong&gt;the Blob service&lt;/strong&gt; section. Select the &lt;strong&gt;Blob soft delete setting&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%2F3lyud1vqojpyv0zkpvwq.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%2F3lyud1vqojpyv0zkpvwq.png" alt="Configuring the Blob soft delete settings" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Ensure the &lt;strong&gt;Enable soft delete for blobs&lt;/strong&gt; is checked. Change the &lt;strong&gt;Keep deleted blobs for (in days)&lt;/strong&gt; setting to 21. Notice you can also &lt;strong&gt;Enable soft delete for containers&lt;/strong&gt;. &lt;strong&gt;Save&lt;/strong&gt; your changes.&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%2F9aq8sr5hif9uldvr9jdb.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%2F9aq8sr5hif9uldvr9jdb.png" alt=" " width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . If something gets deleted, you need to practice using soft delete to restore the files. Navigate to your container where you uploaded a file. Select the file you uploaded and then select &lt;strong&gt;Delete&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%2Fdeztmq0tf1wmbdoccxh5.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%2Fdeztmq0tf1wmbdoccxh5.png" alt="Soft delete" width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . Select &lt;strong&gt;OK&lt;/strong&gt; to confirm deleting the file.&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%2F4yjxpu4gaf7evodku6gy.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%2F4yjxpu4gaf7evodku6gy.png" alt="Delete confirmation" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5 . On the container &lt;strong&gt;Overview&lt;/strong&gt; page, toggle the slider &lt;strong&gt;Show deleted blobs&lt;/strong&gt;. This toggle is to the right of the search box. Select your deleted file, and use the ellipses on the far right, to &lt;strong&gt;Undelete&lt;/strong&gt; the file. &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%2F5dhmrzxz6xefrwae2x07.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%2F5dhmrzxz6xefrwae2x07.png" alt="Delete recovery" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Refresh the container and confirm the file has been restored.
&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%2Fh3z34utpga1uyrbpn887.png" alt=" " width="800" height="244"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Phase 5 - Configure blob versioning. It’s important to keep track of the different website product document versions.
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;The Action Plan&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;1 . Go to the &lt;strong&gt;Overview&lt;/strong&gt; blade of the &lt;strong&gt;storage account&lt;/strong&gt;. In the &lt;strong&gt;Properties&lt;/strong&gt; section, locate the &lt;strong&gt;Blob service&lt;/strong&gt; section. Select the &lt;strong&gt;Versioning&lt;/strong&gt; setting. &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%2Flazu7z4zhvtge9xhewg8.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%2Flazu7z4zhvtge9xhewg8.png" alt="Selecting Versioning" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 . Ensure the &lt;strong&gt;Enable versioning for blobs&lt;/strong&gt; checkbox is checked. Notice your options to &lt;strong&gt;keep all versions&lt;/strong&gt; or &lt;strong&gt;delete versions after&lt;/strong&gt;. Don’t forget to &lt;strong&gt;Save&lt;/strong&gt; your changes.&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%2Fbs3npjqmbm10qiktobwz.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%2Fbs3npjqmbm10qiktobwz.png" alt="Enabling versioning" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3 . As you have time experiment with restoring previous blob versions. &lt;strong&gt;Upload&lt;/strong&gt; another version of your container file. This overwrites your existing file. Your previous file version is listed on Show deleted blobs page.&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%2Fncb5bjx7acsr3p12xj6j.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%2Fncb5bjx7acsr3p12xj6j.png" alt="Another container file version" width="800" height="287"&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%2F4agufcfgbwad6bk5oy16.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%2F4agufcfgbwad6bk5oy16.png" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MISSION COMPLETE!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>cloudnative</category>
      <category>devops</category>
    </item>
    <item>
      <title>Deploying a Secure Resource Group and Storage Account</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Fri, 13 Feb 2026 16:05:00 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/deploying-a-secure-resource-group-and-storage-account-2e1f</link>
      <guid>https://forem.com/precious_nwafor/deploying-a-secure-resource-group-and-storage-account-2e1f</guid>
      <description>&lt;p&gt;Let’s be honest: the first time you log into the Azure Portal, it looks like a giant wall of buttons and confusing menus. If you are a Cloud Engineer just starting out, the pressure to "get it right" is real, especially when it comes to keeping data safe.&lt;/p&gt;

&lt;p&gt;​Think of your Azure project like building a new house. Before you bring in the furniture, you need two things:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;​A Resource Group: This is like the land your house sits on. It keeps all your materials in one place so they don't get lost.
A Storage Account: This is your digital vault. It’s where you keep your most important files.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;​Though we aren't just going to click "Next" and hope for the best. We are going to "harden" our vault using the specific settings required for a secure setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;​Secure Transfer: We will make sure every request to our data is encrypted and safe.
TLS 1.2: This is the modern "secret code" that protects your data while it travels.  
Disabling Key Access: We'll turn off the "master keys" when they aren't needed to keep the vault extra tight.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No confusing jargon, just a clear, step-by-step path to building your first secure foundation in the cloud. Let’s dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;Phase 1: Setting up the "Land" (Creating Your Resource Group)&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;​Every project in Azure needs a home. As a Cloud Engineer, your first task is to create a Resource Group. Think of this as a logical container, if you delete the group, everything inside it is cleaned up, which makes managing your project a breeze.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;​The Action Plan:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1 . In the Azure portal, search for and select Resource groups.&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%2Fnvwq1cx7ur1kurs9uggd.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%2Fnvwq1cx7ur1kurs9uggd.png" alt="Search bar in Azure Portal with 'Resource groups' highlighted" width="800" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Accessing the Resource Groups Blade to initialize the provisioning process&lt;/em&gt;" &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;2 . Select + Create.&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%2F4rn1mpvqwcy90650wg0w.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%2F4rn1mpvqwcy90650wg0w.png" alt="Azure portal interface showing the Resource Groups page with the +create button highlighted" width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Opening the configuration blade and begins provisioning the resource group"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3 . Give your resource group a name example, storagerg and select a region which will be used region throughout the project. &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%2Fxb3g0xbmwsm1av2gtd5v.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%2Fxb3g0xbmwsm1av2gtd5v.png" alt="The Azure Resource Group configuration blade with 'storagerg' entered as name and 'Spain central' selected as region and selecting a Region to establish the geographical and logical foundation for our deployment" width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Defining the Resource Group name and selecting a Region to establish the geographical and logical foundation for our deployment"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;4 . Select Review and create to validate the resource group.&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%2Fgsq0x8rlu7q3uwr199x4.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%2Fgsq0x8rlu7q3uwr199x4.png" alt="The Review + Create tab in the Azure portal will show a green validation passed and the final create button " width="800" height="633"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;" &lt;em&gt;Running the final validation to ensure our configuration is sound before clicking Create to execute the deployment&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;5 . Select Create to deploy the resource group.&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%2Fthz9m7jxknm8j2ywt0mq.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%2Fthz9m7jxknm8j2ywt0mq.png" alt="Azure Portal notification showing deployment is in progress for the newly created Resource Group" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Initiating deployment process to finalize the creation of our logical container within the Azure environment&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;Phase 2: Provisioning the Secure Storage Account&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;​With our Resource Group successfully deployed, we have established the "logical house" for our project. Now, we will deploy the Storage Account—the vault where our data will live, ensuring we apply engineering best practices for performance and security from the very first click.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Action Plan :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;​1 .  In the Azure portal, search for and select Storage accounts.&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%2Fj2zkhmn0uw30woucykwk.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%2Fj2zkhmn0uw30woucykwk.png" alt="Azure Portal search interface with storage accounts entered in the global search bar to locate the storage management service" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Navigating to the storage accounts hub to begin the deployment of our core data infrastructure."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;2 . Select + Create.&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%2F0oofqgx6yikk73ynrcmg.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%2F0oofqgx6yikk73ynrcmg.png" alt="The Azure Storage accounts dashboard with the + Create button highlighted to start a new resource deployment" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;_"Selecting + Create to initialize the deployment workflow and open the storage configuration blade" _&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3 . Provide a 'Storage account name'. The storage account name must be unique in Azure. Also set performance to 'standard'. Proceed to 'Review and Create'&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%2Fgm1xxz2r2md1m90uqij7.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%2Fgm1xxz2r2md1m90uqij7.png" alt="Azure Storage account basics configuration showing the resource group selection, unique account naming, standard performance tier before proceeding to final validation " width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Defining the core parameters for our storage infrastructure, linking it to our existing resource group and selecting the standard performance tier before proceeding for final review and create&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;4 . Select Create. &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%2F9dbyd8zjxatioairuepk.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%2F9dbyd8zjxatioairuepk.png" alt="Final validation screen in the Azure Portal showing the create button for the storage account deployment" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Executing final deployment to provision of our storage infrastructure within the defined resource group&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;5 . Wait for the storage account to deploy and then Go to resource.&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%2Fxn4y6npe6cwcbfx2o9qy.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%2Fxn4y6npe6cwcbfx2o9qy.png" alt="Azure Portal notification showing deployment is complete with the go to resource button highlighted" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Deployment successful. Selecting Go to Resource for the new storage account"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;Phase 3: Configure simple settings in the storage account.&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Now that our storage account is live, we need to move beyond default settings. In a real-world scenario, "defaults" are rarely enough. In this phase, we will navigate the Management Blade to adjust redundancy and enforce security protocols, ensuring our data is stored efficiently and securely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Action Plan :&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1 . The data in this storage account doesn’t require high availability or durability. A lowest cost storage solution is desired. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your storage account, in the Data management section, select the Redundancy blade.&lt;/li&gt;
&lt;li&gt;Select Locally-redundant storage (LRS) in the Redundancy drop-down.&lt;/li&gt;
&lt;li&gt;Be sure to Save your changes.&lt;/li&gt;
&lt;li&gt;Refresh the page and notice the content only exists in the primary location.&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%2Fshw4oc51p5r8lvnqwyyy.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%2Fshw4oc51p5r8lvnqwyyy.png" alt="The Azure Storage Data Management blade showing redundancy setting switched to Locally-redundant storage (LRS) with the save and refresh buttons highlighted " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Optimizing redundancy level to LRS and committing the changes; the refresh feature ensures the management plane reflects the updated configuration immediately&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;2 . The storage account should only accept requests from secure connections. Developers would like the storage account to use at least TLS version 1.2.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Settings section, select the Configuration blade.&lt;/li&gt;
&lt;li&gt;Ensure Secure transfer required is Enabled.&lt;/li&gt;
&lt;li&gt;Ensure the Minimal TLS version is set to Version 1.2.&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%2F6340ysag62yoodw16n9s.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%2F6340ysag62yoodw16n9s.png" alt="The Azure Storage account configuration blade with secure transfer required enabled and minimum TLS version set to 1.2 " width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Enforcing data in transit security by requiring encrypted connections and setting TLS 1.2 protocol as the minimum standard for all incoming request&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3 . Until the storage is needed again, disable requests to the storage account. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Settings section, select the Configuration blade.&lt;/li&gt;
&lt;li&gt;Ensure Allow storage account key access is Disabled.&lt;/li&gt;
&lt;li&gt;Be sure to Save your changes.&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%2Fok258h4ifrtg6y0yvu1c.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%2Fok258h4ifrtg6y0yvu1c.png" alt="The Azure storage configuration blade showing the Allow Storage account key access disabled toggle switched to Disabled to enforce identity based authentication" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"&lt;em&gt;Disabling shared key access to shift toward a more secured, identity driven authentication model (RBAC), effectively mitigating the risk of leaked account keys&lt;/em&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;4 . Ensure the storage account allows public access from all networks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the Security + networking section, select the Networking blade.&lt;/li&gt;
&lt;li&gt;Ensure Public network access is set to Enabled from all networks.&lt;/li&gt;
&lt;li&gt;Be sure to Save your changes.&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%2Frullym2by00j9fsllz37.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%2Frullym2by00j9fsllz37.png" alt="The Azure storage networking blade with Public network access set to Enabled from all networks" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Configuring the Networking firewall to allow public access, ensuring the storage account is reachable from all external networks as required for this deployment's connectivity requirements."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;Mission Accomplished&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Deploying a storage account in Azure is a fundamental skill, but hardening it is what separates a beginner from a professional. Through this lab, we successfully established a secure foundation by first creating a dedicated Resource Group, then provisioning a Standard Storage Account with optimized LRS redundancy. By moving beyond default settings to enforce TLS 1.2, disabling Shared Key access, and configuring the Networking firewall, we have transformed a basic resource into a hardened, production-ready environment built with a security-first mindset.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloudcomputing</category>
      <category>security</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Demystifying the Cloud: A Guide to the Core Pillars of Modern Infrastructure</title>
      <dc:creator>Precious Uchechukwu Nwafor</dc:creator>
      <pubDate>Sat, 07 Feb 2026 09:06:08 +0000</pubDate>
      <link>https://forem.com/precious_nwafor/demystifying-the-cloud-a-guide-to-the-core-pillars-of-modern-infrastructure-ec1</link>
      <guid>https://forem.com/precious_nwafor/demystifying-the-cloud-a-guide-to-the-core-pillars-of-modern-infrastructure-ec1</guid>
      <description>&lt;p&gt;Most people think of "The Cloud" as just someone else's computer, but it is actually a &lt;strong&gt;brilliant system&lt;/strong&gt; designed to keep the world's apps running smoothly. To understand how modern software stays fast, safe, and available to everyone, we just need to look at a few core building blocks that work together:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It begins with &lt;strong&gt;Virtualization&lt;/strong&gt;, the foundational magic that treats hardware like flexible software.&lt;/li&gt;
&lt;li&gt;This flexibility gives developers the &lt;strong&gt;Agility&lt;/strong&gt; to innovate at lightning speed and the &lt;strong&gt;Scalability&lt;/strong&gt; to handle millions of users.&lt;/li&gt;
&lt;li&gt;To ensure the app never goes down, we design for &lt;strong&gt;High Availability&lt;/strong&gt; and &lt;strong&gt;Fault Tolerance&lt;/strong&gt;, creating a "safety net" that survives hardware failures.&lt;/li&gt;
&lt;li&gt;Finally, we push these apps to a &lt;strong&gt;Global Reach&lt;/strong&gt;, while using &lt;strong&gt;Elasticity&lt;/strong&gt; to ensure we only pay for exactly what we use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Individually, these are just concepts; together, they are the blueprint for modern engineering. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s dive deep into each pillar to see how they work under the hood&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;1 . &lt;strong&gt;Virtualization&lt;/strong&gt; 🖥️ ➡️ [ 💻 💻 💻 ]: &lt;code&gt;The Foundation&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Virtualization is the process of creating a software-based (virtual) representation of something, such as virtual applications, servers, storage, and networks. The &lt;strong&gt;"So What?"&lt;/strong&gt;: It allows one physical server to act like many, which reduces costs and waste.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link&lt;/em&gt;: &lt;em&gt;Once we have virtualized our resources, we gain the ability to grow them. This leads us to our next pillar: &lt;strong&gt;Scalability&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;2 . &lt;strong&gt;Scalability&lt;/strong&gt; 🧱 ➡️ 🧱🧱🧱: &lt;code&gt;Thinking Big&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Scalability is the ability of a system to handle increased load by adding resources.&lt;br&gt;
&lt;strong&gt;Vertical Scaling&lt;/strong&gt;: Adding more power (CPU/RAM) to an existing server.&lt;br&gt;
&lt;strong&gt;Horizontal Scaling&lt;/strong&gt;: Adding more servers to your pool.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link&lt;/em&gt;: &lt;em&gt;While scaling handles size, our next concept —&lt;strong&gt;Agility&lt;/strong&gt;— is all about speed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;3 . &lt;strong&gt;Agility&lt;/strong&gt; 🐌 ➡️ 🚀: &lt;code&gt;The Need for Speed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the cloud, Agility refers to the ability to rapidly develop, test, and launch software applications. The "So What?": Because you don't have to wait weeks for physical hardware to arrive, you can experiment and pivot your business in minutes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link&lt;/em&gt;: &lt;em&gt;Moving fast is great, but your app is useless if it crashes. That’s where &lt;strong&gt;High Availability&lt;/strong&gt; comes in.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;4 . &lt;strong&gt;High Availability (HA)&lt;/strong&gt; 🚦 ➡️ 🟢: &lt;code&gt;Always On&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;HA is a system design that ensures a pre-arranged level of operational performance (usually uptime) for a long period. The "So What?": It ensures that if one part of your system fails, another part is ready to take over immediately so the user never notices.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link&lt;/em&gt;: &lt;em&gt;While High Availability focuses on minimizing downtime—meaning your app might go "blink" for a few seconds during a switch—our next concept, &lt;strong&gt;Fault Tolerance&lt;/strong&gt;, takes this a step further by ensuring the user never feels a "blink" at all.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;5 . &lt;strong&gt;Fault Tolerance&lt;/strong&gt; ✈️ ➡️ ✈️: &lt;code&gt;The Safety Net&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is the ability of a system to continue operating without interruption, even if one or more components fail completely. The Difference: While HA aims for "uptime," Fault Tolerance aims for "zero downtime and zero data loss" by having identical systems running in sync.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link _ : _To ensure this level of safety for everyone, we must expand our footprint &lt;strong&gt;globally&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;6 . &lt;strong&gt;Global Reach&lt;/strong&gt; 📍 ➡️ 🌎: &lt;code&gt;No Borders&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The ability to deploy your app in data centers located all over the world. The "So What?": This reduces latency (lag) for users. A user in Tokyo shouldn't have to wait for a server in New York to respond.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Link&lt;/em&gt;: &lt;em&gt;Expanding globally requires more than just servers; it requires a system that can grow and shrink automatically to handle the world's traffic. This brings us to our final and most important distinction: &lt;strong&gt;the difference between Scalability and Elasticity&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;7 . &lt;strong&gt;The Great Debate&lt;/strong&gt; 🎈: &lt;code&gt;Scalability vs. Elasticity&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;While these two terms are often used interchangeably, they solve two different problems. Here is the easiest way to remember the difference:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Scalability (The Capacity)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/em&gt;: The ability of your system to handle a growing amount of work.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;The Action&lt;/strong&gt;&lt;/em&gt;: You manually or strategically add resources (like adding more floors to a building) to handle long-term growth.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/em&gt;: Planned events, like a permanent increase in users or a scheduled holiday sale.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Elasticity (The Automation)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/em&gt;: The ability of your system to automatically grow and shrink based on real-time demand.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;The Action&lt;/strong&gt;&lt;/em&gt;: Like a rubber band, the system stretches when traffic spikes and snaps back when the crowd leaves to save you money.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/em&gt;: Unpredictable traffic, like a tweet going viral or a sudden flash flood of users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Golden Rule 💡:  You can have a &lt;strong&gt;Scalable&lt;/strong&gt; system that isn't &lt;strong&gt;Elastic&lt;/strong&gt; (meaning you can grow, but you have to do it manually), but you cannot have a truly &lt;strong&gt;Elastic&lt;/strong&gt; system that isn't already &lt;strong&gt;Scalable&lt;/strong&gt;. &lt;br&gt;
&lt;strong&gt;Think of it this way&lt;/strong&gt; : Scalability is the capability to grow; Elasticity is the automation that makes that growth happen exactly when needed.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;conclusion&lt;/strong&gt;, mastering these seven concepts is about more than just passing an exam or memorizing definitions; it’s about learning to think like a Cloud Engineer.&lt;/p&gt;

&lt;p&gt;In the real world, you won’t always need every one of these pillars at the same time. Some projects will prioritize &lt;strong&gt;Agility&lt;/strong&gt; to get a product to market fast, while others like banking or healthcare apps will focus almost entirely on &lt;strong&gt;Fault Tolerance and High Availability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The "magic" of the cloud isn't just that these &lt;strong&gt;tools&lt;/strong&gt; exist, but that you now have the &lt;strong&gt;power to choose the right ones&lt;/strong&gt; for the job.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>devops</category>
      <category>architecture</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
