<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Emmanuel A. Anene</title>
    <description>The latest articles on DEV Community by Emmanuel A. Anene (@aneneemmanuel_1).</description>
    <link>https://dev.to/aneneemmanuel_1</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%2F2732976%2F52ceeb30-a191-4199-b7d6-171172250437.jpg</url>
      <title>DEV Community: Emmanuel A. Anene</title>
      <link>https://dev.to/aneneemmanuel_1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aneneemmanuel_1"/>
    <language>en</language>
    <item>
      <title>Implement security through a pipeline using Azure DevOps. Part2</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Wed, 13 Aug 2025 13:23:38 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/implement-security-through-a-pipeline-using-azure-devops-part2-33em</link>
      <guid>https://dev.to/aneneemmanuel_1/implement-security-through-a-pipeline-using-azure-devops-part2-33em</guid>
      <description>&lt;p&gt;In Part 1 of this lab, we laid the foundation for building secure Azure DevOps pipelines by setting up protected repositories, managing identities, and enforcing least privilege access. Now, in Part 2, we take security to the next level focusing on safeguarding pipeline resources, securing access to Azure Repos, protecting sensitive variables, and introducing reusable templates for consistency and compliance.&lt;/p&gt;

&lt;p&gt;By the end of this section, your pipelines won’t just deliver code they will enforce security at every stage, ensuring that deployments are both efficient and compliant with best practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Use Secure Variable Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secure variable management involves storing sensitive information (like passwords, tokens, or API keys) in Azure DevOps as secret variables or through Azure Key Vault. These secrets are encrypted, hidden from logs, and only accessible during pipeline runtime to protect against unauthorized access or exposure.&lt;/p&gt;

&lt;p&gt;i. Go to ** Pipelines &amp;gt; Library &amp;gt;** and click &lt;strong&gt;+ Variable Group&lt;/strong&gt; to create a Variable 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%2F1l3qbvucafmorf9uwg8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l3qbvucafmorf9uwg8e.png" alt=" " width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Add variables like &lt;code&gt;dbPassword, apiKey&lt;/code&gt; and &lt;strong&gt;mark them as secrets.&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%2F6z8t8ktdtrpblmap9r7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z8t8ktdtrpblmap9r7l.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iii. Reference the Variable Group in Your Pipeline YAML. Open your pipeline YAML file and click on Edit. &lt;/p&gt;

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

&lt;p&gt;iv.  Reference the variable group by adding👇🏻:&lt;br&gt;
  trigger:&lt;br&gt;
  main&lt;/p&gt;

&lt;p&gt;variables:&lt;br&gt;
  group: SecureSecrets   This is your variable group&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;trigger:
  - main

variables:
  - group: SecureSecrets  # 👈 This is your variable group

stages:
  - stage: Build
    jobs:
      - job: BuildJob
        steps:
          - script: |
              echo "This is your API key: $(apiKey)"
            displayName: Print API Key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;vii. When the pipeline runs, it will automatically pull values from the linked variable group—ensuring secrets are securely injected without hardcoding them in 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%2F8qjy5vnbu19jaoeuisy3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8qjy5vnbu19jaoeuisy3.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Secure Pipeline Access to Azure Repos Using Personal Access Token (PAT) Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, We will configure the pipeline to use a Personal Access Token (PAT) stored securely as a secret variable, enabling secure authentication to Azure Repos without exposing credentials in the code. This ensures that only authorized builds and scripts can interact with your repository.&lt;/p&gt;

&lt;p&gt;i. Click your user profile picture (top right). Click on &lt;strong&gt;User Settings&lt;/strong&gt; and select &lt;strong&gt;Personal access tokens&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%2Fd3k22pfno53a568255qf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3k22pfno53a568255qf.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Click + New Token.&lt;/p&gt;

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

&lt;p&gt;iii.  Fill out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Name → something descriptive, e.g., Pipeline-GitAccess&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Organization → select your Azure DevOps org&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Expiration → e.g., 30 or 90 days (shorter is safer)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scopes → pick only what’s needed: For Git repo access → Code: Read &amp;amp; Write. For REST API calls → add Build or Release scopes as needed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;SAVE&lt;/strong&gt;&lt;/p&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%2Fu3qv5jdk5p06q1nopzlk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu3qv5jdk5p06q1nopzlk.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note: Copy the token right away and save it on your note, you won’t be able to see it again&lt;/p&gt;

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

&lt;p&gt;iii. &lt;strong&gt;Store PAT in Azure DevOps Securely:&lt;/strong&gt; Go to Pipelines → Library → + Variable 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%2F4z3btlk6yhkr01zopz11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4z3btlk6yhkr01zopz11.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. Fill Out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Name it → e.g., &lt;code&gt;AuthTokens&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a variable → &lt;code&gt;PAT_SECRET&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paste your PAT in the value field.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mark it as Keep this value secret.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&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%2Fabfp0xx80chp0sbfc75d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabfp0xx80chp0sbfc75d.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. &lt;strong&gt;Use the PAT in Your Pipeline:&lt;/strong&gt; Example: Using PAT to access Azure Repos inside a pipeline job. Validate the below YAML and SAVE&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;variables:
- group: AuthTokens

steps:
- checkout: none
- script: |
    git config --global user.email "pipeline@devops"
    git config --global user.name "Azure DevOps Pipeline"
    git clone https://$(PAT_SECRET)@dev.azure.com/&amp;lt;org&amp;gt;/&amp;lt;project&amp;gt;/_git/&amp;lt;repo&amp;gt;
  displayName: "Clone repo using PAT"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5al3gga7lrrabp5hsbxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5al3gga7lrrabp5hsbxn.png" alt=" " 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%2Ffcpingbfq5psx0uz0dob.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcpingbfq5psx0uz0dob.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ Security Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep PAT scopes minimal (e.g., Code:&lt;code&gt;Read&lt;/code&gt; if you only need to read code).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use short expiry and regenerate PATs periodically.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Never commit PATs to your repo always store as secret variables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove unused PATs from &lt;strong&gt;User settings → Personal access tokens.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;v. &lt;strong&gt;Audit Repository Permissions in Azure DevOps&lt;/strong&gt; Go to Project 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%2F4iavthz2h0f4tr9usf9u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4iavthz2h0f4tr9usf9u.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the left-hand menu, under &lt;strong&gt;Repos&lt;/strong&gt;, click &lt;strong&gt;Repositories&lt;/strong&gt;. This will show a list of all repositories in the project. Click the repository you want to audit &lt;code&gt;SecurePipelineRepo&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Inside the repository settings page, select &lt;strong&gt;Security&lt;/strong&gt;. This will display a list of users and groups with access to the repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Review Permissions&lt;/strong&gt;&lt;br&gt;
For each user or group, you can see permissions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read&lt;/li&gt;
&lt;li&gt;Contribute&lt;/li&gt;
&lt;li&gt;Force Push&lt;/li&gt;
&lt;li&gt;Manage Permissions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Check whether permissions are &lt;code&gt;Allowed, Denied,&lt;/code&gt; or &lt;code&gt;Not set&lt;/code&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%2Fzvmyr1ejjr8quloeukqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvmyr1ejjr8quloeukqj.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vi. &lt;strong&gt;Identify Over-Privileged Accounts&lt;/strong&gt;&lt;br&gt;
Look for accounts with unnecessary &lt;code&gt;Contribute&lt;/code&gt; or &lt;code&gt;Manage&lt;/code&gt; &lt;code&gt;Permissions&lt;/code&gt; rights. Pay attention to &lt;code&gt;Project Collection Administrators&lt;/code&gt; or &lt;code&gt;Build Service accounts&lt;/code&gt;. They often have high-level permissions by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome&lt;/strong&gt;: You now have a clear picture of who can read, modify, or manage your repository, ensuring you can enforce &lt;strong&gt;least privilege&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Modularize Your Pipeline Using Templates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Breaking your pipeline into reusable YAML templates allows you to centralize common tasks, reduce duplication, and maintain consistency across projects, while securing access to shared logic.&lt;/p&gt;

&lt;p&gt;i. Create a new repo (e.g.,&lt;code&gt;pipeline-templates&lt;/code&gt;). Go to Project Settings. under &lt;strong&gt;Repos&lt;/strong&gt;, click &lt;strong&gt;Repositories&lt;/strong&gt;. And click on &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%2Foz0xvvo1sp79t7vpasy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foz0xvvo1sp79t7vpasy0.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Give the repo a name e.g. &lt;code&gt;pipeline-templates&lt;/code&gt;. Keep Add a &lt;strong&gt;README&lt;/strong&gt; checked (optional but recommended). Keep Default branch as &lt;code&gt;main&lt;/code&gt; and click on &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%2F0soaotidehdkjzjj1131.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0soaotidehdkjzjj1131.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iii.  Write a Reusable &lt;code&gt;build.yml&lt;/code&gt; Template: Open your new &lt;code&gt;pipeline-templates&lt;/code&gt; repository. Click on the three dots(...) in the front of the repo and select &lt;strong&gt;Browse.&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%2Fsa2pz4smen9f808qpm49.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsa2pz4smen9f808qpm49.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. On the New Repository page:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the three dots(...) in the front of the Repo&lt;/li&gt;
&lt;li&gt;On the drop-down select &lt;strong&gt;NEW&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;And click on &lt;strong&gt;FILE&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%2Fcezlb604r8c6iyu4xo8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcezlb604r8c6iyu4xo8e.png" alt=" " width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;v. Give the File a name &lt;code&gt;build.yml&lt;/code&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%2Fwp236afr67u8g1rrfa67.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwp236afr67u8g1rrfa67.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vi. Paste the below example reusable build template and Commit the file to the &lt;strong&gt;main&lt;/strong&gt; branch.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;parameters:
  - name: buildConfiguration
    type: string
    default: 'Release'
  - name: vmImage
    type: string
    default: 'ubuntu-latest'

jobs:
  - job: Build
    displayName: 'Build Application'
    pool:
      vmImage: ${{ parameters.vmImage }}
    steps:
      - checkout: self

      - task: NodeTool@0
        inputs:
          versionSpec: '16.x'
        displayName: 'Install Node.js'

      - script: |
          npm install
          npm run build -- --configuration ${{ parameters.buildConfiguration }}
        displayName: 'Run build'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;&lt;strong&gt;What this template does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Accepts parameters for build configuration (Release, Debug) and VM image type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Checks out code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installs Node.js (can be changed to .NET, Python, etc.).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Runs the build script.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;vii. Secure Access to the Templates Repo: Select your &lt;code&gt;pipeline-templates repo&lt;/code&gt;:&lt;br&gt;
Select your pipeline-templates repository.&lt;/p&gt;

&lt;p&gt;Open Security tab.&lt;/p&gt;

&lt;p&gt;Remove “Contribute” permissions for groups/users who do not need to edit templates.&lt;/p&gt;

&lt;p&gt;Grant:&lt;/p&gt;

&lt;p&gt;Read access to teams that only need to use templates.&lt;/p&gt;

&lt;p&gt;Contribute access only to DevOps engineers responsible for maintaining templates.&lt;/p&gt;

&lt;p&gt;Deny Force Push and Bypass Policies for everyone except admins.&lt;/p&gt;

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

&lt;p&gt;And that’s a wrap for &lt;strong&gt;Part 2!&lt;/strong&gt; &lt;br&gt;
We’ve gone beyond just writing YAML and pushing code, we have built a pipeline that guards your resources, keeps secrets locked away, controls who can access what, and uses reusable templates to keep things both consistent and secure.&lt;/p&gt;

&lt;p&gt;Security is not something you add at the end, it’s something you bake in from the start. With what you have set up here, every run of your pipeline is not just a deployment, it is a statement that you value stability, compliance, and trust.&lt;/p&gt;

&lt;p&gt;This completes our lab on &lt;strong&gt;Implementing Security Through a Pipeline in Azure DevOps&lt;/strong&gt;, giving you the skills and mindset to build pipelines that are as safe as they are efficient&lt;/p&gt;

&lt;p&gt;If you have any question, insight, or your own tips on securing pipelines? Drop them in the comments, I’d love to hear from you.&lt;br&gt;
Follow me for more hands-on DevOps, Azure, and Cloud Security labs and guides.&lt;/p&gt;

&lt;h1&gt;
  
  
  AzureDevOps #DevOps #Azure #Security #CloudSecurity #PipelineSecurity #AzurePipelines #CICD #CloudEngineering #AzureKeyVault #YAML #InfrastructureAsCode #MicrosoftAzure
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Implement security through a pipeline using Azure DevOps. Part1</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Wed, 06 Aug 2025 22:12:10 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/implement-security-through-a-pipeline-using-azure-devops-part1-50ad</link>
      <guid>https://dev.to/aneneemmanuel_1/implement-security-through-a-pipeline-using-azure-devops-part1-50ad</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In today’s DevOps-driven software lifecycle, security must be integrated into every phase of the development process—not just at the end. This approach is often referred to as &lt;strong&gt;"shift-left security.”&lt;/strong&gt; One of the most critical places to enforce security is within the &lt;strong&gt;CI/CD pipeline&lt;/strong&gt;, where code is built, tested, and deployed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure DevOps Pipelines&lt;/strong&gt; offer powerful automation tools for building and deploying applications, but without proper safeguards, they can become a target for unauthorized access, secret leaks, and misconfigurations. Securing your pipelines ensures the integrity of your deployments, protects sensitive resources, and minimizes the risk of supply chain attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setup Requirements.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Azure DevOps Organization and Project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Subscription&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure CLI or Azure Portal access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Basic knowledge of YAML pipelines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Azure Key Vault and Azure Repos enabled&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Set Up a Secure Project and Repo Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This step involves organizing your Azure DevOps project and source code repositories in a way that promotes security, scalability, and isolation. By applying strategies like branching policies, access control, and environment separation, you reduce the risk of unauthorized changes, enforce code quality, and ensure that sensitive resources are protected throughout the development lifecycle.&lt;/p&gt;

&lt;p&gt;i. Create Azure DevOps Organization &lt;br&gt;
 a. On your Microsoft Azure Portal, search for &lt;strong&gt;Azure DevOps Organizations&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%2F8vximif8t0wpj99ye76w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8vximif8t0wpj99ye76w.png" alt=" " width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b. On the Azure DevOps Organization page, click on &lt;strong&gt;My Azure DevOps Organizations&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%2Fkp18ed861gl1cmkjmasw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp18ed861gl1cmkjmasw.png" alt=" " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;c. Create a &lt;strong&gt;New Organization&lt;/strong&gt; Click on your organization name.&lt;/p&gt;

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

&lt;p&gt;d. Give your Organization a name (&lt;strong&gt;DevOpsOrgsDemo1&lt;/strong&gt;) and set you the location where your organization will be hosted. &lt;/p&gt;

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

&lt;p&gt;ii. Create a New Project. After you have created Azure DevOps Organization, on the next page you can now create your Project, steps to create a project.&lt;/p&gt;

&lt;p&gt;a. Give your project a name &lt;strong&gt;(Secure Pipeline Project Demo)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;b. Write the &lt;strong&gt;Description&lt;/strong&gt; that suits this project&lt;/p&gt;

&lt;p&gt;c. For the &lt;strong&gt;Visibility&lt;/strong&gt;, Private (recommended for internal or secure projects)&lt;/p&gt;

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

&lt;p&gt;Click on the &lt;strong&gt;Advanced&lt;/strong&gt; tab&lt;/p&gt;

&lt;p&gt;d. For the &lt;strong&gt;Version Control&lt;/strong&gt; select &lt;strong&gt;GIT&lt;/strong&gt; as recommended,Git is distributed, widely adopted, supports branching/merging, and integrates easily with modern DevOps tools and CI/CD pipelines.&lt;/p&gt;

&lt;p&gt;e. For the &lt;strong&gt;Work item process&lt;/strong&gt; select &lt;strong&gt;Basic&lt;/strong&gt;. Basic is simple, lightweight, and ideal for small teams or new projects focused on code and deployment without complex tracking needs.&lt;br&gt;
 f. Then click on 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%2F5d1eip32vlb5938z3dma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5d1eip32vlb5938z3dma.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;g. After your Project is created successfully, You should now see tabs like: &lt;strong&gt;Repos, Pipelines, Boards, Test, Plans and Artifacts&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%2Fjxtnq7on0x2qzw1g22jr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxtnq7on0x2qzw1g22jr.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Create a new Git repository and define branching strategy (e.g., main, dev). &lt;/p&gt;

&lt;p&gt;a. On the created tab, click on &lt;strong&gt;Repos&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%2Fx4g37puqsxpatuhg1ba7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4g37puqsxpatuhg1ba7.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b. At the top-right corner, click the dropdown arrow beside the current repo name, &lt;strong&gt;Click + New repository&lt;/strong&gt; what the list of items shows.&lt;/p&gt;

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

&lt;p&gt;c. On the Create a repository tab, give your Repo a name &lt;strong&gt;(secure-pipeline-repo)&lt;/strong&gt;. Leave default settings unless needed and the click on &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%2Frmfg7o34p88ofllqb1rt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmfg7o34p88ofllqb1rt.png" alt=" " width="788" height="858"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. Create the &lt;code&gt;main&lt;/code&gt; and &lt;code&gt;dev&lt;/code&gt; Branches. They are two ways you can do this, through the &lt;strong&gt;Azure DevOps web Ui&lt;/strong&gt; or &lt;strong&gt;Git CLI&lt;/strong&gt;. but in this case we will be working with the &lt;strong&gt;Azure DevOps web UI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;a. Go to &lt;strong&gt;Repos &amp;gt; Files,&lt;/strong&gt; Click the dropdown that shows the current branch &lt;strong&gt;(main)&lt;/strong&gt;. Click &lt;strong&gt;+ New Branch&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%2F779497ir50kg2u1030es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F779497ir50kg2u1030es.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;b. On the Create a branch tab: Enter branch name &lt;strong&gt;dev&lt;/strong&gt;, Choose &lt;code&gt;main&lt;/code&gt; as the source branch. And the click on 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%2Fx6e3pbeesvf09p51hg8n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6e3pbeesvf09p51hg8n.png" alt=" " width="800" height="594"&gt;&lt;/a&gt;&lt;br&gt;
Repeat this for any additional branches you want (e.g., feature/login, release, etc.).&lt;/p&gt;

&lt;p&gt;v. Enable branch protection on main:&lt;br&gt;
 a. Go to your Azure DevOps project &lt;strong&gt;(Secure Pipeline Project Demo)&lt;/strong&gt;, In the left-hand menu, select Repos &amp;gt; Branches.&lt;/p&gt;

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

&lt;p&gt;b. Find the &lt;code&gt;main&lt;/code&gt; branch, click on the 3 dots (⋯) next to the main branch → choose Branch Policies&lt;/p&gt;

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

&lt;p&gt;c. Toggle on the &lt;strong&gt;Require a minimum number of reviewers&lt;/strong&gt; and Set Minimum number of reviewers to 1 (or more, depending on your team).&lt;/p&gt;

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

&lt;p&gt;d. Enable Build Validation. Scroll down to Build Validation section. Click + Add build policy.&lt;/p&gt;

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

&lt;p&gt;c. Select the pipeline that should be triggered when a pull request is created or updated.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Choose the pipeline from the list (secure-pipeline-repo). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set &lt;strong&gt;Trigger&lt;/strong&gt; to:  Automatic (recommended)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enable Optionally:&lt;/strong&gt;Path filter (if you want to restrict the build to specific folders/files)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Save&lt;/strong&gt;&lt;/p&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%2Fit7pxkiarlgullbmojq0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fit7pxkiarlgullbmojq0.png" alt=" " width="661" height="831"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Manage Identities and Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This step involves assigning the right access levels to users, service accounts, and agents in Azure DevOps by applying the principle of least privilege. It ensures that only authorized entities can access or modify pipelines, environments, and resources.&lt;br&gt;
 i. Navigate to Project Settings &amp;gt; Permissions.&lt;/p&gt;

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

&lt;p&gt;ii.On the Project Settings Permissions page. Create a custom security group: Click &lt;strong&gt;New group&lt;/strong&gt; at the top.&lt;/p&gt;

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

&lt;p&gt;iii. Fill in the form:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Group name: &lt;strong&gt;PipelineAdmins&lt;/strong&gt; (or any name). &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Members, add users or groups from Azure AD or your DevOps organization&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Description: e.g., "&lt;strong&gt;Group for managing pipeline permissions&lt;/strong&gt;"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Create.&lt;/p&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%2F67fyug37v2eafuqdw1o1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67fyug37v2eafuqdw1o1.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iv. Assign Permissions to the Group:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After creating the group, select it from the list.&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%2Fgno16k79zgc7o08mlgme.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgno16k79zgc7o08mlgme.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Review and set permissions such as: &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;View project-level information: Allow&lt;/p&gt;

&lt;p&gt;Edit project-level information: Deny&lt;/p&gt;

&lt;p&gt;Create repositories: Deny&lt;/p&gt;

&lt;p&gt;Manage build pipelines: Allow (if needed)&lt;/p&gt;

&lt;p&gt;Queue builds: Allow&lt;/p&gt;

&lt;p&gt;v. Assign Pipeline Permissions: Go to Pipelines &amp;gt; Pipelines. Click on the three dot (...) next to a pipeline → choose &lt;strong&gt;Manage Security&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%2Ffnkjt8wl7db2m5i00qj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnkjt8wl7db2m5i00qj4.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Find the &lt;strong&gt;PipelineAdmins&lt;/strong&gt; group and click on it.&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%2Fxz05f3uhy2qru27qjaqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz05f3uhy2qru27qjaqu.png" alt=" " width="800" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Assign pipeline-specific permissions:&lt;/p&gt;

&lt;p&gt;Edit build pipeline: Allow&lt;/p&gt;

&lt;p&gt;Queue builds: Allow&lt;/p&gt;

&lt;p&gt;Delete builds: Deny or Allow (based on need)&lt;/p&gt;

&lt;p&gt;View builds: Allow&lt;/p&gt;

&lt;p&gt;Manage builds: Deny (optional)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Secure Pipeline Resources and Environments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, you will control who can access or deploy to environments and secure the resources your pipeline uses. By adding approval checks, limiting service connection permissions, and organizing environments with access controls, you ensure that deployments are safe and only authorized actions are performed.&lt;/p&gt;

&lt;p&gt;i. Create an environment in Azure DevOps (e.g., staging-env) and assign reviewers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From the left-hand menu, select Pipelines &amp;gt; Environments.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;New environment&lt;/strong&gt; button.&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%2Fvklpqyf5e66efhcd4jq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvklpqyf5e66efhcd4jq6.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Enter the Name (e.g., &lt;code&gt;staging-env&lt;/code&gt;) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Resource Type:&lt;br&gt;
Choose based on your scenario (e.g., Virtual machines,  Kubernetes, etc.). If none is needed, select None to just use the environment for approvals and audit. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And click on &lt;strong&gt;Create.&lt;/strong&gt;&lt;/p&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%2F4b3ydbux8hl2qflvdt5i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4b3ydbux8hl2qflvdt5i.png" alt=" " width="800" height="847"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. &lt;strong&gt;Assign Security and Reviewers:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Once the environment is created, click on the "three dots (⋮)" next to the environment. Select &lt;strong&gt;Security.&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%2Fp7w7z1b5cruu0jea6owq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7w7z1b5cruu0jea6owq.png" alt=" " width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Here, configure who has access:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add users or groups (e.g., your DevOps team).&lt;/p&gt;

&lt;p&gt;Assign roles such as Reader, User, or Administrator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Only trusted users should have Admin rights.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Save&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%2Fqsnm1bi963i8lnow9k6k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsnm1bi963i8lnow9k6k.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;iii. &lt;strong&gt;Add Approvals and Checks&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Environment name (&lt;code&gt;staging-env&lt;/code&gt;)&amp;gt;&amp;gt; Click  &lt;strong&gt;Approvals and checks&lt;/strong&gt; tab.&amp;gt;&amp;gt; Click on the &lt;strong&gt;plus icon(+)&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%2F9irjur6dug7gqd3mpbzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9irjur6dug7gqd3mpbzx.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Approvals&lt;/strong&gt; and click on &lt;strong&gt;Next&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%2Ffkk2wqmigk6ws9sh31k5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkk2wqmigk6ws9sh31k5.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add reviewers (users or groups) who must manually approve deployments to this environment&lt;/li&gt;
&lt;li&gt;Allow approvers to approve their own runs&lt;/li&gt;
&lt;li&gt;Timeout (how long to wait for approval)&lt;/li&gt;
&lt;li&gt;Click on &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%2F8gw7u39med0m8fun41oz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gw7u39med0m8fun41oz.png" alt=" " width="786" height="862"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use the Environment in a YAML Pipeline&lt;/strong&gt;&lt;br&gt;
Ensure your pipeline references the environment with the approval check:&lt;br&gt;
`jobs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deployment: DeployToStaging
displayName: 'Deploy to Staging'
environment: 
name: 'staging-env'
resourceName: 'staging-env'
strategy:
runOnce:
  deploy:
    steps:
      - script: echo Deploying to staging...`&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;iv. Setting up an Azure Service Connection with RBAC Permissions Scoped to a Resource Group&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an Azure AD App Registration (Service Principal). Navigate to your Azure Portal and search &lt;strong&gt;Microsoft Entra ID&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%2Fww2cfgjkct83xau17u5b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww2cfgjkct83xau17u5b.png" alt=" " width="800" height="838"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add&lt;/strong&gt; and select &lt;strong&gt;App registrations&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%2F61mf7h9dwxfubrwymztx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F61mf7h9dwxfubrwymztx.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give your App registrations (DevOps-SP-RG-Scoped)&lt;/li&gt;
&lt;li&gt;Supported account types: Single tenant.&lt;/li&gt;
&lt;li&gt;Click on Register.&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%2F8x8rlzsezxqaxm1kfg0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8x8rlzsezxqaxm1kfg0v.png" alt=" " width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;v. Generate a Client Secret&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your newly created App Registration, click on &lt;strong&gt;Manage&lt;/strong&gt; and select &lt;strong&gt;Certificates &amp;amp; secrets&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ New client Secret&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%2Frbj0uch76dtbdnx5e67p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbj0uch76dtbdnx5e67p.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a description (DevOpsPipelineSecret)&lt;/li&gt;
&lt;li&gt;Choose expiration (6 months, 12 months, etc.)&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Add&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%2Ftm0hq9b3uk7r49btmt9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftm0hq9b3uk7r49btmt9h.png" alt=" " width="722" height="819"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note&lt;/strong&gt; Copy and securely store the value of the secret (you won’t see it again). You will need the App ID and Client Secret for Azure DevOps.&lt;/p&gt;

&lt;p&gt;vi. Assign RBAC to the Resource Group&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the Azure Portal, go to &lt;strong&gt;Resource Groups&lt;/strong&gt; and select the specific RG (dev-resources).&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%2Fsg5ywydm1v389m892njb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsg5ywydm1v389m892njb.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In your resource group, select &lt;strong&gt;Access control (IAM).&lt;/strong&gt; and click on &lt;strong&gt;+ Add &amp;gt; Add role assignment.&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%2Fpayrt9f70m30fuetze1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpayrt9f70m30fuetze1o.png" alt=" " width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under Privileged administrator roles, Search for &lt;strong&gt;Contributor&lt;/strong&gt; and select it.&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%2Fu1p5bv4m5yr3gnorhbbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1p5bv4m5yr3gnorhbbg.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under the Members tab, select &lt;strong&gt;User, group, or service principal&lt;/strong&gt; and click &lt;strong&gt;+ Select Members&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%2Frt738wyu6v959un4m21x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frt738wyu6v959un4m21x.png" alt=" " width="800" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On side pane, In the search box at the top of that pane, type the name of the App Registration (DevOps-SP-RG-Scoped). Wait for it to load and select it. Click on &lt;strong&gt;Select&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%2Fmgnn5nuwy307yd8rgc47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgnn5nuwy307yd8rgc47.png" alt=" " width="747" height="829"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Review + Assign&lt;/strong&gt; tab and again click &lt;strong&gt;Review + Assign&lt;/strong&gt; to assign your App Registration to Assign RBAC to the Resource Group.&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%2Fg8w4et3pt6ckb59usftf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8w4et3pt6ckb59usftf.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vii. Create the Azure Service Connection in Azure DevOps&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to Project Settings &amp;gt; Service connections. In the service connection page click on &lt;strong&gt;New service Connection&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%2Fsli3bqclp3fqh9x2n36a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsli3bqclp3fqh9x2n36a.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Azure Resource Manager&lt;/strong&gt; and click on &lt;strong&gt;Next&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%2Fglj1cwswup2yg1krn12r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglj1cwswup2yg1krn12r.png" alt=" " width="773" height="850"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose Identity type (manual) and Fill in the following:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Subscription ID and name (from Azure)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tenant ID (from Azure AD)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service principal ID = App ID (Step 1)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service principal key = Client Secret (Step 2)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scope level = Resource Group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource Group name = dev-resources&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After filling the above details, check the box: Grant access permission to all pipelines (or leave unchecked for stricter control)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Click Verify and Save.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;vii. Configure Secure Pipeline Folders and Lock Access to YAML Files.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Organize Pipelines Using Folders. Go to your Azure DevOps project, navigate to Pipelines &amp;gt; Pipelines. Click on the &lt;strong&gt;New folder&lt;/strong&gt; button (icon next to the pipeline list) &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%2Fry3q50ocgqxe0aqai7lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fry3q50ocgqxe0aqai7lh.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create folders to categorize pipelines:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DevPipelines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ProdPipelines&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SharedTemplates&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;Move Pipelines into Folders: In the Pipelines list, click the three dots (•••) beside a pipeline.Click &lt;strong&gt;Move/Rename&lt;/strong&gt;. Select the appropriate folder (e.g., move production pipelines to &lt;code&gt;ProdPipelines&lt;/code&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%2Fu61eftlthiln5kn87ube.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu61eftlthiln5kn87ube.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Use Secure Variable Management&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Secure variable management involves storing sensitive information (like passwords, tokens, or API keys) in Azure DevOps as secret variables or through Azure Key Vault. These secrets are encrypted, hidden from logs, and only accessible during pipeline runtime to protect against unauthorized access or exposure.&lt;/p&gt;

&lt;p&gt;i. Go to ** Pipelines &amp;gt; Library &amp;gt;** and click &lt;strong&gt;+ Variable Group&lt;/strong&gt; to create a Variable 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%2F1l3qbvucafmorf9uwg8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1l3qbvucafmorf9uwg8e.png" alt=" " width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ii. Add variables like &lt;code&gt;dbPassword, apiKey&lt;/code&gt; and &lt;strong&gt;mark them as secrets.&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%2F6z8t8ktdtrpblmap9r7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z8t8ktdtrpblmap9r7l.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion – Part 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this first part of the series, we have laid the groundwork for building a secure Azure DevOps pipeline by focusing on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Structuring projects and repositories for better isolation and governance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implementing role-based identity and access management across projects, pipelines, and agents&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Securing pipeline resources and environments to enforce deployment controls and approval workflows&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These foundational steps are critical to reducing risks and aligning your DevOps processes with security best practices from the start.&lt;/p&gt;

&lt;p&gt;Stay tuned for &lt;strong&gt;Part 2&lt;/strong&gt;, where I will dive deeper into securing variable management, repository access, and modularizing pipelines with reusable templates!&lt;/p&gt;

&lt;h1&gt;
  
  
  AzureDevOps #DevSecOps #CloudSecurity #PipelineSecurity #MicrosoftLearn
&lt;/h1&gt;

</description>
      <category>devops</category>
      <category>cloudcomputing</category>
      <category>azure</category>
      <category>developer</category>
    </item>
    <item>
      <title>Protect Your Azure Storage with Enterprise-Grade Access Control Using Azure Active Directory (Azure AD).</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Sat, 02 Aug 2025 21:43:23 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/use-azure-active-directory-azure-ad-to-secure-your-storage-account-1k3f</link>
      <guid>https://dev.to/aneneemmanuel_1/use-azure-active-directory-azure-ad-to-secure-your-storage-account-1k3f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction.&lt;/strong&gt;&lt;br&gt;
When you are working in the cloud, storing files is just half the job the real power (and responsibility) comes with deciding who gets to access your data and how.&lt;/p&gt;

&lt;p&gt;A lot of people start with storage account keys or SAS tokens to share files in Azure, but those methods can be tricky to manage securely, especially as your team or workload grows. What if you could tie storage access directly to your Azure AD user account, just like you do with other Microsoft services? Well, you can and that’s exactly what this mini lab is about.&lt;/p&gt;

&lt;p&gt;First, you will have to Sign in to your &lt;strong&gt;Active Microsoft Azure Account&lt;/strong&gt; on: &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;https://portal.azure.com/&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%2Fuphqa8cwgp933f7haerw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuphqa8cwgp933f7haerw.png" alt=" " width="800" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Assign Yourself a Role&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To get started, follow these steps Assign Yourself a Role&lt;/p&gt;

&lt;p&gt;A. On your Azure Portal home page, on the search bar, search for Storage Accounts and click on it.&lt;/p&gt;

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

&lt;p&gt;B. Select the storage account (storageacct1demo1) you created previously while setting up your environment for this exercise. You can click the storage account name it’s a clickable link to open it. (Tip: Make sure it’s associated with the resource group RG1.)&lt;/p&gt;

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

&lt;p&gt;C. In the Storage account, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Access control (IAM).&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add role assignment&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%2Fiyjnztvt87lie5oy99h4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiyjnztvt87lie5oy99h4.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. On the Basics tab,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under &lt;strong&gt;Job Function Roles&lt;/strong&gt; 
2.Search for &lt;strong&gt;Storage Blob Data Contributor&lt;/strong&gt; and click on the result.&lt;/li&gt;
&lt;li&gt;And then click on &lt;strong&gt;Next&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%2F87bnzgzy7pfuxnovzji1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87bnzgzy7pfuxnovzji1.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. Under Members tab, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;User, group, or service principal&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Select Members&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;And then find and select your Azure AD user.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Select&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%2F6m6kd2eg19i6600q05nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6m6kd2eg19i6600q05nk.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. Click on the &lt;strong&gt;Review + Assign&lt;/strong&gt; tab, and select &lt;strong&gt;Review + Assign&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%2F7u38uwiptvhe6h0te8im.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7u38uwiptvhe6h0te8im.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Verify Access Using Azure CLI&lt;/strong&gt;&lt;br&gt;
Now that you’ve assigned your Azure AD user the Storage Blob Data Contributor role, it’s time to check that it actually works and the easiest way is with the Azure CLI.&lt;/p&gt;

&lt;p&gt;First thing, you need to Install &lt;strong&gt;Azure CLI&lt;/strong&gt; if is not installed in your computer yet (&lt;a href="https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;A. Open your terminal or Azure Cloud Shell, run the commend &lt;br&gt;
&lt;code&gt;az login&lt;/code&gt; and and select you Azure 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%2Fkvck99ryc9c6nu8zxp0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkvck99ryc9c6nu8zxp0x.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. Select your subscription and tent. &lt;/p&gt;

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

&lt;p&gt;C. Run the command &lt;code&gt;az storage blob list --account-name &amp;lt;your-storage-account-name&amp;gt; --container-name &amp;lt;your-container-name&amp;gt; --auth-mode login&lt;/code&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%2Ft7pc12qfmcqmv155tvrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7pc12qfmcqmv155tvrb.png" alt=" " 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%2Fr4hrl2re8dogkarc6fsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr4hrl2re8dogkarc6fsp.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 This lists blobs in the container using your Azure AD identity, not an account key.&lt;/p&gt;

&lt;p&gt;If you get a list back success! 🎉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Test Revoking Access&lt;/strong&gt;&lt;br&gt;
Finally, test what happens when you remove your Azure AD role. By taking away your permission, you will see how access is instantly blocked proving that RBAC makes it easy to grant and revoke storage access securely.&lt;/p&gt;

&lt;p&gt;A. Back in the Azure portal, in your &lt;strong&gt;Storage Account (storageacct2demo1)&lt;/strong&gt; go to &lt;strong&gt;Access control (IAM)&lt;/strong&gt; again. &lt;/p&gt;

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

&lt;p&gt;B. Click on Role assignments tab.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Search for &lt;strong&gt;Storage Blob Data Contributor&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You should see your own account listed under &lt;strong&gt;Members&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%2Fy5nzevgaj55gunx1i0te.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5nzevgaj55gunx1i0te.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. Select your account, then click Remove or delete assignment at the top. Confirm the removal when prompted.&lt;/p&gt;

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

&lt;p&gt;D. Wait a minute, then try listing blobs again with the same CLI command: &lt;code&gt;az storage blob list --account-name &amp;lt;your-storage-account-name&amp;gt; --container-name &amp;lt;your-container-name&amp;gt; --auth-mode login&lt;br&gt;
&lt;/code&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%2Fujay5r61he66xfxo8u6a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fujay5r61he66xfxo8u6a.png" alt=" " width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. You can see that we got an authorization error proving that Azure AD RBAC now blocks you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This shows just how powerful Azure AD can be for securing your storage accounts. Instead of relying only on account keys and SAS tokens, you can use identity-based access control to decide exactly who gets in and shut off access just as easily.&lt;/p&gt;

&lt;p&gt;With Azure AD, you get stronger security, easier management, and better compliance all while following best practices for modern cloud environments.&lt;/p&gt;

&lt;p&gt;Keep exploring! Try combining RBAC with conditional access, MFA, or even user delegation SAS for an extra layer of security. The more you practice, the more confident you’ll get at building secure, well-managed storage solutions in Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this was helpful, feel free to like, comment, or share your thoughts and follow along for more step-by-step Azure guides!&lt;/strong&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Implementing Storage Access Controls.</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Tue, 29 Jul 2025 17:50:51 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/implementing-storage-access-controls-pp9</link>
      <guid>https://dev.to/aneneemmanuel_1/implementing-storage-access-controls-pp9</guid>
      <description>&lt;p&gt;&lt;strong&gt;An Azure Storage Account&lt;/strong&gt;: Is a core service in Microsoft Azure that offers secure, cloud-based storage for different types of data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure Storage Access&lt;/strong&gt;: This refers to the methods used to access data stored in an Azure Storage account. How you access Azure Storage depends on the type of data you’re working with such as blobs, files, or queues and the level of security and flexibility you require for that access.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll learn how to complete a few essential tasks for managing an Azure Storage account and its key components.&lt;/p&gt;

&lt;p&gt;Let’s say your Azure admin wants you to get hands-on with storage accounts, containers, and file shares. As their organization plans to share more files, they need someone who’s confident using these services. Your goal is to set up a storage container and a file share, then upload files to both.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, you will have to Sign in to your &lt;strong&gt;Active Microsoft Azure Account&lt;/strong&gt; on:  &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;https://portal.azure.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Step 1: Create a Storage Container&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To get started, follow these steps to create your first storage container:&lt;/p&gt;

&lt;p&gt;A. Navigate to your Azure Portal home page, on the search bar,  search for &lt;strong&gt;Storage Accounts&lt;/strong&gt; and click on it.&lt;/p&gt;

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

&lt;p&gt;B. Select the storage account (&lt;strong&gt;storageacct1demo1&lt;/strong&gt;) you created earlier while setting up your environment for this exercise. You can click the storage account name it’s a clickable link to open it. (Tip: Make sure it’s associated with the resource group &lt;strong&gt;RG1&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%2Fl0hh6f5cvy71pjfggtxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl0hh6f5cvy71pjfggtxn.png" alt=" " width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. In the storage account blade, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Data storage&lt;/strong&gt; section &lt;/li&gt;
&lt;li&gt;And select &lt;strong&gt;Containers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on + Add Container&lt;/li&gt;
&lt;li&gt;On the drop down, give your Container a name (&lt;strong&gt;new-container-demo&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Click on &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%2Fh7maasdc3axcrxam4emk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh7maasdc3axcrxam4emk.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Upload a Blob to the Storage Container&lt;/strong&gt;&lt;br&gt;
Now that you’ve created a storage container, you can upload a blob to it. Find an image file on your computer or download one from the internet and save it locally so it’s ready to upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To upload a file to the storage container:&lt;/strong&gt;&lt;br&gt;
A. Click on the Container &lt;strong&gt;(new-container-demo)&lt;/strong&gt; you just created.&lt;/p&gt;

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

&lt;p&gt;B. On the Created Container page, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Upload&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Upload blob page&lt;/strong&gt;, click &lt;strong&gt;Browse Files&lt;/strong&gt; to add image file on your computer.&lt;/li&gt;
&lt;li&gt;When the file is ready for upload, click on &lt;strong&gt;Upload&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%2F9l3x8kzbo19wi6yhkqkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9l3x8kzbo19wi6yhkqkr.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BLOB SUCCESSFULLY UPLOADED&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%2F93c102g9hve9ehqs56k6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93c102g9hve9ehqs56k6.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Change the Access Tier&lt;/strong&gt;&lt;br&gt;
Once the file is uploaded, you will see its current access tier displayed. Since this file is just for testing, it doesn’t need to stay in the &lt;strong&gt;Hot&lt;/strong&gt; access tier. In the next steps, you’ll update the file’s access tier to a more appropriate setting.&lt;/p&gt;

&lt;p&gt;A. Click on the file you just 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%2F3m2t3pnwlt2jbb2x89l3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m2t3pnwlt2jbb2x89l3.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. On Uploaded File page, click on &lt;strong&gt;Change Tier&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%2Fn30f7c2u15tdm8l1gixy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn30f7c2u15tdm8l1gixy.png" alt=" " width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On the Change Tier page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Change the Access Tier to Cold.&lt;/li&gt;
&lt;li&gt;Click on Save to save your change tire.&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%2F257fnjmfaes46w37p3qi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F257fnjmfaes46w37p3qi.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Create a File Share&lt;/strong&gt;&lt;br&gt;
Now that you’ve uploaded a blob and changed its access tier from &lt;strong&gt;Hot&lt;/strong&gt; to &lt;strong&gt;Cool&lt;/strong&gt;, it’s time to move on to file shares. File shares make it easy to store and manage files that can be accessed by multiple users or services.&lt;/p&gt;

&lt;p&gt;In this step, you’ll create a new file share within your storage account, which you can then use to upload and organize files.&lt;/p&gt;

&lt;p&gt;A. Navigate to your Azure Portal home page, on the search bar,  search for &lt;strong&gt;Storage Accounts&lt;/strong&gt; and click on it.&lt;/p&gt;

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

&lt;p&gt;B. Select the storage account (&lt;strong&gt;storageacct1demo1&lt;/strong&gt;) you created earlier while setting up your environment for this exercise. You can click the storage account name it’s a clickable link to open it. (Tip: Make sure it’s associated with the resource group &lt;strong&gt;RG1&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%2Fk3fggiatei4gfarvi0mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3fggiatei4gfarvi0mq.png" alt=" " width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. In the &lt;strong&gt;Storage account&lt;/strong&gt; page, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Data storage&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;File shares&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%2Fsyp82cth6ppp3l8ucasl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsyp82cth6ppp3l8ucasl.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Click on &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%2Fwajqxf73bmqnxdhwalbs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwajqxf73bmqnxdhwalbs.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. On the Basics tab, give your File Share a name (&lt;strong&gt;file-share-demo&lt;/strong&gt;) and then click on &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%2F7gmmp90rxonw2bf5yhes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7gmmp90rxonw2bf5yhes.png" alt=" " width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. On the uncheck Enable Backup because this just for a demo and learning exercise, you usually don’t need backup protection because you’re not storing important production data.&lt;/p&gt;

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

&lt;p&gt;G. Click on the &lt;strong&gt;Review + Create&lt;/strong&gt; and Click on &lt;strong&gt;Create&lt;/strong&gt; after &lt;strong&gt;Validation passed&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%2Fh4tlw1u9dgu7bxd4jexn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4tlw1u9dgu7bxd4jexn.png" alt=" " width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;H. After you File Share successfully, click on &lt;strong&gt;Upload&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%2Fi31ud02oimr1jgdihyly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi31ud02oimr1jgdihyly.png" alt=" " width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I. On &lt;strong&gt;File Share&lt;/strong&gt; page, click &lt;strong&gt;Browse Files&lt;/strong&gt; to add image or file from your computer.&lt;br&gt;
When the file is ready for upload, click on &lt;strong&gt;Upload&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%2Ffcva7h0l44ynew7ji8qv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffcva7h0l44ynew7ji8qv.png" alt=" " width="800" height="803"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UPLOADED SUCCESSFULLY INTO YOUR 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%2Ft7oe11l91qsrty01tbz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7oe11l91qsrty01tbz4.png" alt=" " width="800" height="791"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 5:** Control Access with a Shared Access Signature (SAS) Token.**&lt;br&gt;
The next step is to look at how to control access to the files you have uploaded. Azure provides several methods for managing file access, such as &lt;strong&gt;Role-Based Access Control (RBAC)&lt;/strong&gt;. In this scenario, the Azure administrator wants you to use a &lt;strong&gt;Shared Access Signature (SAS)&lt;/strong&gt; token or storage keys to grant limited access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a Shared Access Signature (SAS) Token&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A. Navigate to the search bar on your Azure Portal home page, and search for &lt;strong&gt;Storage Accounts&lt;/strong&gt; and click on it&lt;/p&gt;

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

&lt;p&gt;B. Select the storage account (&lt;strong&gt;storageacct1demo1&lt;/strong&gt;) you created earlier while setting up your environment for this exercise. You can click the storage account name it’s a clickable link to open it. (Tip: Make sure it’s associated with the resource group &lt;strong&gt;RG1&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%2Fk3fggiatei4gfarvi0mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3fggiatei4gfarvi0mq.png" alt=" " width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On Storage Account page, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Storage Browser.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Expend the &lt;strong&gt;Blob Containers.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the storage account you created earlier &lt;strong&gt;(new-container-demo)&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%2Fpq3vqson6biplnaai2zm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq3vqson6biplnaai2zm.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Select the More options (...) menu at the end of the line for the uploaded image.&lt;/p&gt;

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

&lt;p&gt;E. Select &lt;strong&gt;Generate SAS.&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%2Fozajx5g96hlbe657x20h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozajx5g96hlbe657x20h.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. On the &lt;strong&gt;Generate SAS.&lt;/strong&gt; blade,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Signing method&lt;/strong&gt;, chose &lt;strong&gt;Account key&lt;/strong&gt;: Simple and quick for demos; no extra setup needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Signing key&lt;/strong&gt;, select &lt;strong&gt;Key 1&lt;/strong&gt;: Default option; easy to rotate later if needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stored access policy&lt;/strong&gt;, select &lt;strong&gt;None&lt;/strong&gt;: Fine for testing; settings are defined directly in the SAS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;Permissions&lt;/strong&gt;, select &lt;strong&gt;Read only&lt;/strong&gt;: Safer; users can only view or download, not change or delete.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter your preferred custom start and expiry time or leave the defaults.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For the &lt;strong&gt;Allowed IP addresses&lt;/strong&gt;, if it's for Testing (demo) Leave it blank. But if it's for Production, Restrict to trusted IPs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Allowed protocols&lt;/strong&gt;, select &lt;strong&gt;HTTPS only&lt;/strong&gt;: It Encrypts traffic; keeps your data secure in transit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Generate SAS token and URL&lt;/strong&gt; to finish!&lt;/p&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%2F5jz8s8z24tzztz4rlrdc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5jz8s8z24tzztz4rlrdc.png" alt=" " width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;G. Copy the &lt;strong&gt;Blob SAS URL&lt;/strong&gt;, then paste it into a new browser tab or window. The image you uploaded should display. Leave this tab open for later use.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Step 6: Rotate Access Keys to Revoke SAS Access.&lt;/strong&gt;&lt;br&gt;
Once you’ve created a SAS token, anyone with that link can access the file for as long as the token is valid. But managing access is not just about granting permissions it’s also about being able to revoke them when needed.&lt;/p&gt;

&lt;p&gt;To revoke a SAS token, you must invalidate it. The simplest way to do this is to rotate the access key used to sign the SAS.&lt;/p&gt;

&lt;p&gt;A. Navigate to your Azure Portal home page, on the search bar,  search for &lt;strong&gt;Storage Accounts&lt;/strong&gt; and click on it.&lt;/p&gt;

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

&lt;p&gt;B. Select the storage account (&lt;strong&gt;storageacct1demo1&lt;/strong&gt;) you created earlier while setting up your environment for this exercise. You can click the storage account name it’s a clickable link to open it. (Tip: Make sure it’s associated with the resource group &lt;strong&gt;RG1&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%2Fk3fggiatei4gfarvi0mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3fggiatei4gfarvi0mq.png" alt=" " width="800" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On the Storage Account page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Expend the Security + Networking submenu,&lt;/li&gt;
&lt;li&gt;Select Access Keys.&lt;/li&gt;
&lt;li&gt;For the &lt;strong&gt;Key1&lt;/strong&gt;, select &lt;strong&gt;Rotate Key&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Read the warning message about regenerating the access key, and click &lt;strong&gt;Yes&lt;/strong&gt; to acknowledge and proceed.&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%2F87rbp8qjz9bjcf78buoz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87rbp8qjz9bjcf78buoz.png" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ROTATE ACCESS KEYS SUCCESSFULLY:&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%2Fcq0janoupwqwc5fm17x5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq0janoupwqwc5fm17x5.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. After you see the success message confirming the access key has been rotated, return to the browser tab or window where you tested the SAS token and refresh the page. You should now see an authentication failed 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%2Fri6n8z58ztzwqs2g7sre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fri6n8z58ztzwqs2g7sre.png" alt=" " width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrapping Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that is it! In this walkthrough, I created a storage container and a file share, uploaded some data, set up a SAS token to control access, and even learned how to revoke that access by rotating your keys.&lt;/p&gt;

&lt;p&gt;This hands-on practice shows how managing storage in Azure is about more than just storing files, it’s about keeping your data secure and knowing exactly who can get to it (and when).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you found this helpful, feel free to follow, like, and drop a comment. I do love to hear your thoughts and what you’d like to see next!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy learning!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>storageaccount</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>Guidelines on Providing Storage for a New Company App Part 2</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Fri, 25 Jul 2025 21:55:37 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/guidelines-on-providing-storage-for-a-new-company-app-part-2-1j37</link>
      <guid>https://dev.to/aneneemmanuel_1/guidelines-on-providing-storage-for-a-new-company-app-part-2-1j37</guid>
      <description>&lt;p&gt;&lt;strong&gt;CONFIGURE THE STORAGE ACCOUNT TO USE A CUSTOMER-MANAGED KEY STORED IN THE KEY VAULT.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Before continuing, make sure to assign the Key Vault Crypto Service Encryption User role to the managed identity.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A: In the Azure portal, search for Resource groups and select it from the results.&lt;/p&gt;

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

&lt;p&gt;B. Select your Resource Group that you have been operating on &lt;strong&gt;(RG1)&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%2F0an6zy9qs7o8kk69reu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0an6zy9qs7o8kk69reu9.png" alt=" " width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On the Resource Group page(RG1)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Access Control (IAM) blade&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add role assignment&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%2Fpiw3quv9fazc9ohqa85i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpiw3quv9fazc9ohqa85i.png" alt=" " width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Now on the &lt;strong&gt;Role&lt;/strong&gt; page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the &lt;strong&gt;Job functions roles&lt;/strong&gt; page, &lt;/li&gt;
&lt;li&gt;Search for the &lt;strong&gt;Key Vault Crypto Service Encryption User role&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the search result.(&lt;strong&gt;Key Vault Crypto Service Encryption User role&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;Next&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%2Fzrawo51tkxqvbzw52zha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrawo51tkxqvbzw52zha.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. On the Member page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Managed Identity&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Select Members&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On the Drop-down on right-hand-side select &lt;strong&gt;User-assigned managed identity&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on your &lt;strong&gt;Managed Identity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Select&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%2F3vmqs8l2i5255frl4g41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3vmqs8l2i5255frl4g41.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. Click on &lt;strong&gt;Review + assign&lt;/strong&gt; tab and then click on  &lt;strong&gt;Review + assign&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%2F263q21oj2m3wp8mg78zr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F263q21oj2m3wp8mg78zr.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ROLE ASSIGNED&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%2F5rjwy7i55r8ildiooz96.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5rjwy7i55r8ildiooz96.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Configure the storage account to use the customer-managed key in your Key Vault&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A. Go to  your &lt;strong&gt;Storage Account (storageacct2demo1)&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%2Fu8n5irst8d56arzzkuqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8n5irst8d56arzzkuqx.png" alt=" " width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. On the &lt;strong&gt;Storage Account page (storageacct2demo1)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Security + Networking&lt;/strong&gt; on the drop-down, &lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Encryption&lt;/strong&gt; blade &lt;/li&gt;
&lt;li&gt;On the Encryption page select &lt;strong&gt;Customer-managed keys&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;And then click on &lt;strong&gt;Select a key vault and key&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%2Fjfj9df1jfwl7yh1ft37m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjfj9df1jfwl7yh1ft37m.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On Select a Key page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check click on Key Vault&lt;/li&gt;
&lt;li&gt;Select your &lt;strong&gt;Key Vault(keyvault1demo1)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select you &lt;strong&gt;Key(New-App-Key-Demo)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Select&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%2F282cnuuh2oykzj6ocxsb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F282cnuuh2oykzj6ocxsb.png" alt=" " width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Make sure that &lt;strong&gt;Identity Type&lt;/strong&gt; is &lt;strong&gt;User-assigned&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%2Fv1qa1cqpc1tpzalsw8z0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv1qa1cqpc1tpzalsw8z0.png" alt=" " width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. On User-assigned identity&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Select an identity&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On the drop-down, select your User-assigned managed identity(&lt;strong&gt;demo&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Add&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;And then &lt;strong&gt;Save&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%2F112f54l472bfg6drpl1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F112f54l472bfg6drpl1a.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ROLE ADDED 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%2F7x3x8h4ou6hvg17nxxp5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7x3x8h4ou6hvg17nxxp5.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SETTING A TIME-BASED RETENTION POLICY AND DEFINING AN ENCRYPTION SCOPE&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;1.The developers need a storage container where files cannot be modified not even by an administrator.&lt;/p&gt;

&lt;p&gt;A. Go to your storage account(storageacct2demo1).&lt;/p&gt;

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

&lt;p&gt;B. On the Storage Account page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Data Storage&lt;/strong&gt;, on the drop-down,&lt;/li&gt;
&lt;li&gt;Click on the &lt;strong&gt;Container&lt;/strong&gt; blade&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add Container&lt;/strong&gt; to create a container &lt;/li&gt;
&lt;li&gt;Give you Container a name &lt;strong&gt;(new-container-demo)&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;And then click on &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%2Fbnmi8uy3g092kkxw71uv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbnmi8uy3g092kkxw71uv.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Upload a file to your Container &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Upload&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Browse for Files&lt;/strong&gt; to select a file from your computer.&lt;/li&gt;
&lt;li&gt;And then click on &lt;strong&gt;Upload&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%2Fjuh3gk9tl9qzgg9uqmwx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjuh3gk9tl9qzgg9uqmwx.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Click on Settings, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the drop-down, select Access Policy&lt;/li&gt;
&lt;li&gt;On Immutable blob storage section, click on &lt;strong&gt;+ Add Policy&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%2Flqho5tf7ib4a4rv3r7zb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqho5tf7ib4a4rv3r7zb.png" alt=" " width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. On &lt;strong&gt;Immutable Storage policy&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the Policy type and select &lt;strong&gt;Time-based Retention&lt;/strong&gt; on the drop-down.&lt;/li&gt;
&lt;li&gt;Set Retention Period for 5 days&lt;/li&gt;
&lt;li&gt;And make sure you click on &lt;strong&gt;SAVE&lt;/strong&gt; after setting this.
&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%2Fa11x39s9idd6r4c6o9z3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa11x39s9idd6r4c6o9z3.png" alt=" " width="800" height="732"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The developers need to create an encryption scope that enables infrastructure encryption.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A. Go back to your Storage Account &lt;strong&gt;(storageacct2demo1)&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%2F04cg5ujc3yys0axy788n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F04cg5ujc3yys0axy788n.png" alt=" " width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. On the Storage Account page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Security + Networking&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;And select &lt;strong&gt;Encryption&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%2Fldahl6978zyyoa2dwpng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fldahl6978zyyoa2dwpng.png" alt=" " width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On the Encryption page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the Encryption Scopes tab&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add&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%2Fhrzs1kh0v3el34bwy2lq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhrzs1kh0v3el34bwy2lq.png" alt=" " width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. On the &lt;strong&gt;Create Encryption Scope&lt;/strong&gt; page,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give you Encryption Scope a name (EncryptionScopeDemo)&lt;/li&gt;
&lt;li&gt;Set Encryption type as &lt;strong&gt;Microsoft-managed keys&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The Infrastructure Encryption is Enabled by default.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Create&lt;/strong&gt; to create the &lt;strong&gt;Encryption Scope&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%2Fnixlg9x86cccsxpq6qqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnixlg9x86cccsxpq6qqn.png" alt=" " width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ENCRYPTION SCOPE NAME CREATED SUCCESSFULLY&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%2F24s0kqficn41h13mrgdw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24s0kqficn41h13mrgdw.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. Go back  your Storage Account and Create a new Container &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on &lt;strong&gt;Data Storage&lt;/strong&gt;, on the drop-down,&lt;/li&gt;
&lt;li&gt;Click on the &lt;strong&gt;Container&lt;/strong&gt; blade&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add Container&lt;/strong&gt; to create a container&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%2F9pg0qlho94ylt2qmk9bo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pg0qlho94ylt2qmk9bo.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. On the New Container page, you’ll see fields for the container Name and Public access level. In the Advanced section, you can choose the encryption scope you created and apply it to all blobs within the container.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;UP AND RUNNING&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%2F9v200f107goej9xrq2en.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v200f107goej9xrq2en.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And that is a wrap on this storage setup project! If you have followed along, you now have a clear path to building secure, reliable storage for your app from using customer-managed keys and Key Vault to setting retention policies and encryption scopes that help keep your data safe.&lt;/p&gt;

&lt;p&gt;I hope this guide makes it a little easier to tackle these tasks without feeling overwhelmed. Cloud storage can be tricky, but breaking it down step by step makes a huge difference.&lt;/p&gt;

&lt;p&gt;Thanks so much for reading I really appreciate you taking the time to follow along. If you found this helpful, feel free to share it or drop a comment  I’d love to hear how you’re putting this into practice or what you’d like to learn next.&lt;/p&gt;

&lt;p&gt;See you in the next one! 👋&lt;/p&gt;

</description>
      <category>devops</category>
      <category>learning</category>
      <category>development</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Guidelines on Providing Storage for a New Company App Part 1.</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Thu, 24 Jul 2025 18:26:35 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/guidelines-on-providing-storage-for-a-new-company-app-12gh</link>
      <guid>https://dev.to/aneneemmanuel_1/guidelines-on-providing-storage-for-a-new-company-app-12gh</guid>
      <description>&lt;p&gt;&lt;strong&gt;What Is Azure Storage Account&lt;/strong&gt;: An Azure Storage Account is a core service in Microsoft Azure that offers secure, cloud-based storage for different types of data.&lt;/p&gt;

&lt;p&gt;A company building a new application needs its developers to guarantee that storage access is restricted to using access keys and managed identities. They also plan to enforce role-based access control (RBAC) for better security management. Additionally, to support testing requirements, the developers need protected, immutable storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture diagram&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%2F9m61qdfrh1h6w13409fy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m61qdfrh1h6w13409fy.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First Thing: You have to login your active &lt;strong&gt;Azure Microsoft Account&lt;/strong&gt; on &lt;a href="https://dev.tourl"&gt;portal.azure.com&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%2F446xet3mteojmdv1d7za.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F446xet3mteojmdv1d7za.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In this article, I’ll cover the essential tasks for providing storage for a new company app.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key tasks include:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a storage account and setting up a manage identity&lt;/li&gt;
&lt;li&gt;Securing access to the storage account using an Azure Key Vault and encryption keys&lt;/li&gt;
&lt;li&gt;Configuring the storage account to use a customer-managed key stored in the Key Vault&lt;/li&gt;
&lt;li&gt;Setting a time-based retention policy and defining an encryption scope&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;CREATE A STORAGE ACCOUNT AND SETTING UP A MANAGE IDENTITY.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1. Provision of a storage account for the web application:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A. In the Azure portal, search for &lt;strong&gt;Storage accounts&lt;/strong&gt; and click on the &lt;strong&gt;Enter&lt;/strong&gt; key Button on your keyboard to select the &lt;strong&gt;Storage accounts&lt;/strong&gt; 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%2Fso0zmemvle7op2w2nfa1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fso0zmemvle7op2w2nfa1.png" alt=" " width="800" height="560"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. Click on +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%2Fgh1e4d2vzl3c2oynycda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgh1e4d2vzl3c2oynycda.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. &lt;strong&gt;Set up  the Basics&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;For Resource group select Create new. And give your resource group a name and select OK to save the changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Provide a unique Storage account name. Ensure it meets the naming requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Region: Chose the Region you will operating on &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Primary service: Chose Primary service as &lt;strong&gt;Azure Blob Storage or Azure Data Lake Storage Gen 2&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Redundancy: Select &lt;strong&gt;Geo-Redundant Storage&lt;/strong&gt;&lt;/p&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%2Fw5xabxxs0nx69r77aqam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5xabxxs0nx69r77aqam.png" alt=" " width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. &lt;strong&gt;Encryption&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on Encryption tab&lt;/li&gt;
&lt;li&gt;Check the box for &lt;strong&gt;Enable Infrastructure Encryption&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%2Fyc5got2iyvahh8reqgqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyc5got2iyvahh8reqgqt.png" alt=" " width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. Review + Create&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on Review + Create&lt;/li&gt;
&lt;li&gt;Click on Create (Wait for your deployment to be completed)&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%2Fwmhdlvlu15bz3opab14c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwmhdlvlu15bz3opab14c.png" alt=" " width="800" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEPLOYMENT COMPLETED&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%2Feqze8p6xaqiqkdelw3ez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqze8p6xaqiqkdelw3ez.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Set up a managed identity for the web app:&lt;/p&gt;

&lt;p&gt;A. In the Azure portal, search for Managed Identities and select it from the results.&lt;/p&gt;

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

&lt;p&gt;B. Click on +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%2Fqy1o0ow7g6aiaoy0thv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqy1o0ow7g6aiaoy0thv1.png" alt=" " width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. Set up the Basics &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select your Resource Group.&lt;/li&gt;
&lt;li&gt;Select the Region you working on.&lt;/li&gt;
&lt;li&gt;Give your &lt;strong&gt;Managed Identity&lt;/strong&gt; name.&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%2F6vr3ymb1pvs2bnhgxhqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vr3ymb1pvs2bnhgxhqu.png" alt=" " width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. Click on Review + Create tab, and then click on Create &lt;br&gt;
    (Wait for your deployment to be completed)&lt;/p&gt;

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

&lt;p&gt;DEPLOYMENT COMPLETED&lt;/p&gt;

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

&lt;p&gt;Step 3. Assign the appropriate permissions to the managed identity. The identity should only have permission to read and list containers and blobs.&lt;/p&gt;

&lt;p&gt;A. Search for Storage Accounts navigate to the Storage Account you created earlier(storageacct1demo1)&lt;/p&gt;

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

&lt;p&gt;B. Select Access Control (IAM) blade&lt;/p&gt;

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

&lt;p&gt;C. Click on &lt;strong&gt;+ Add&lt;/strong&gt; and select &lt;strong&gt;Add 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%2F8b1qb5wulc99563yjb0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8b1qb5wulc99563yjb0f.png" alt=" " width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. On the Role Tab: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click On Role &lt;/li&gt;
&lt;li&gt;Select Job Function Roles.&lt;/li&gt;
&lt;li&gt;Search for Storage Blob Data Reader.&lt;/li&gt;
&lt;li&gt;And select the Storage Blob Data Reader.&lt;/li&gt;
&lt;li&gt;Click Next&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%2F31okm582av7lfk0fcvmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31okm582av7lfk0fcvmd.png" alt=" " width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. On the Members tab:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select Manage Identity&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Select Members&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In the drop-down Select User-assigned managed identity&lt;/li&gt;
&lt;li&gt;Select the Managed Identity you created earlier&lt;/li&gt;
&lt;li&gt;And then click on Select&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%2Fwqlv3hj4f6dnevtai72g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqlv3hj4f6dnevtai72g.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. Click on the &lt;strong&gt;Review + assign&lt;/strong&gt; tab and then select &lt;strong&gt;Review + assign&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%2F2xn0zynhrjk821481lle.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xn0zynhrjk821481lle.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SECURING ACCESS TO THE STORAGE ACCOUNT USING AN AZURE KEY VAULT AND ENCRYPTION KEYS.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To create the Key Vault and the encryption key required for this part of the lab, make sure your user account has Key Vault Administrator permissions:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A. In the Azure portal, search for &lt;strong&gt;Resource groups&lt;/strong&gt; and select it from the results(Hit the ENTER button on the keyboard to get the right one).&lt;/p&gt;

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

&lt;p&gt;B. Select The &lt;strong&gt;Resource Group&lt;/strong&gt; you have your &lt;strong&gt;Storage Account&lt;/strong&gt; and &lt;strong&gt;Manage Identity&lt;/strong&gt; in it (&lt;strong&gt;RG1&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%2Fj4owbqel0llwuu1s5q9n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4owbqel0llwuu1s5q9n.png" alt=" " width="800" height="689"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. &lt;strong&gt;Access Control (IAM)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the &lt;strong&gt;Access Control (IAM)&lt;/strong&gt; blade.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Add&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On the drop down select &lt;strong&gt;Add Role Assignment&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%2F2a4p4zda78yihmkhi732.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2a4p4zda78yihmkhi732.png" alt=" " width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. On the Role tab:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On the Job Function Roles page,&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;"Key Vault Administrator role"&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Select it from the search result.&lt;/li&gt;
&lt;li&gt;And then click on &lt;strong&gt;Next&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%2Fc7b1gs73fxsb0e8xnjfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7b1gs73fxsb0e8xnjfo.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E.Click on the &lt;strong&gt;Members&lt;/strong&gt; tab&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select User, group, or service principal.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Select Members&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;On the drop-down on the right side of the portal,  search and select your account &lt;/li&gt;
&lt;li&gt;And then click on Select&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%2Fa599idus5pc45kyxw92f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa599idus5pc45kyxw92f.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. Click on the &lt;strong&gt;Review + assign&lt;/strong&gt; tab and select &lt;strong&gt;Review + assign&lt;/strong&gt; on left downside. &lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Create a Key Vault to store the access keys:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A. In the Azure portal, search for Key vaults and select it from the results.&lt;/p&gt;

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

&lt;p&gt;B. Click on &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%2F5xg8qgkrhr522pyet0ih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5xg8qgkrhr522pyet0ih.png" alt=" " width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;C. On the Basics.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the Resource you have use been this project.&lt;/li&gt;
&lt;li&gt;Give this Key Vault a unique name (keyvault1demo1)&lt;/li&gt;
&lt;li&gt;Select the Region you have been working in on the project.&lt;/li&gt;
&lt;li&gt;Pricing Tier: Select Standard (Because this is a DEMO),&lt;/li&gt;
&lt;li&gt;Then click on &lt;strong&gt;Next&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%2F7f1f9qxbh48owc51liav.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f1f9qxbh48owc51liav.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D. On the Access Configuration page check click on &lt;strong&gt;Azure role-based access control (recommended)&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%2Ftx0pl3kcak8gy711jkv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftx0pl3kcak8gy711jkv2.png" alt=" " width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E. Click on the &lt;strong&gt;Review + Create&lt;/strong&gt; tab and the click on &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%2Fvztvgttthxwwccs2jok6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvztvgttthxwwccs2jok6.png" alt=" " width="800" height="718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F. Click on Go to Resource after 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%2Fiye8dmcrljd4je1d762w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiye8dmcrljd4je1d762w.png" alt=" " width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;G. Ensure that both the &lt;strong&gt;Soft-delete&lt;/strong&gt; and &lt;strong&gt;Purge protection&lt;/strong&gt; are enabled.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Create a customer-managed key in the Key Vault:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A. In your Key Vault:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Objects&lt;/strong&gt; section &lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Keys&lt;/strong&gt; blade.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Generate/Import&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%2Fkr2p1112iwl97p1rf1zr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkr2p1112iwl97p1rf1zr.png" alt=" " width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B. Give the Key a name(New-App-Key-Demo) and click on &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%2Fzf151kpp8hlx3sqmk1zn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf151kpp8hlx3sqmk1zn.png" alt=" " width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key have been created:&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%2Fom88vp9fdvjbd3ktx85d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom88vp9fdvjbd3ktx85d.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:&lt;br&gt;
This wraps up Part 1 of our guide on how to set up secure, scalable storage for your new company app. In the next part, we’ll dive deeper into configuring access controls, setting up encryption scopes, and testing the storage setup end-to-end.&lt;/p&gt;

&lt;p&gt;Stay tuned for Part 2 coming next!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Azure App Service: Quickly Deploy Your Web App with Ease Part 1</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Sat, 21 Jun 2025 19:34:25 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/azure-app-service-quickly-deploy-your-web-app-with-ease-part-1-1e4m</link>
      <guid>https://dev.to/aneneemmanuel_1/azure-app-service-quickly-deploy-your-web-app-with-ease-part-1-1e4m</guid>
      <description>&lt;p&gt;🔷 &lt;strong&gt;Azure App Service Explained in Depth&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Azure App Service&lt;/strong&gt; is Microsoft Azure’s fully managed &lt;strong&gt;Platform-as-a-Service (PaaS)&lt;/strong&gt; offering designed to &lt;strong&gt;host web applications, RESTful APIs, and mobile app backends&lt;/strong&gt;. It provides a &lt;strong&gt;highly scalable, secure, and globally available environment&lt;/strong&gt; for running your web-based applications without the need to manage underlying infrastructure like virtual machines, operating systems, or web servers.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Key Features and Benefits&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Fully Managed Infrastructure&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No server management&lt;/strong&gt;: Microsoft handles patching, OS upgrades, and infrastructure scaling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in load balancing&lt;/strong&gt;: Requests are automatically balanced across instances for better performance and high availability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-scaling&lt;/strong&gt;: Automatically adds or removes instances based on traffic/load.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Multi-Language Support&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Supports multiple programming languages and frameworks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;.NET &amp;amp; .NET Core&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ruby (via custom containers)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;You can even &lt;strong&gt;deploy containerized apps&lt;/strong&gt; using Docker or bring your own custom Linux container.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DevOps Integration &amp;amp; CI/CD&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Seamless integration with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure DevOps&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bitbucket&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab&lt;/strong&gt;, and more&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Automate deployments using &lt;strong&gt;CI/CD pipelines&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Use &lt;strong&gt;deployment slots&lt;/strong&gt; to test in staging before pushing to production with zero-downtime swaps.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Security and Compliance&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Supports &lt;strong&gt;SSL/TLS&lt;/strong&gt;, custom domains, and authentication providers like &lt;strong&gt;Azure AD, Facebook, Google, and Twitter&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in network isolation&lt;/strong&gt;, integration with &lt;strong&gt;Azure Virtual Network&lt;/strong&gt;, and &lt;strong&gt;App Service Environments (ASE)&lt;/strong&gt; for enterprise-grade security.&lt;/li&gt;
&lt;li&gt;Complies with major certifications like &lt;strong&gt;ISO, SOC, PCI DSS&lt;/strong&gt;, and &lt;strong&gt;HIPAA&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Monitoring and Diagnostics&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Integrated with &lt;strong&gt;Azure Monitor&lt;/strong&gt; and &lt;strong&gt;Application Insights&lt;/strong&gt; for full observability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-time metrics&lt;/li&gt;
&lt;li&gt;Custom logging&lt;/li&gt;
&lt;li&gt;Error tracking and diagnostics&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Flexible Deployment Options&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Deploy using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git push&lt;/li&gt;
&lt;li&gt;FTP&lt;/li&gt;
&lt;li&gt;Visual Studio / VS Code&lt;/li&gt;
&lt;li&gt;Azure CLI / PowerShell&lt;/li&gt;
&lt;li&gt;ARM/Bicep templates or Terraform&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;🌐 &lt;strong&gt;Common Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting modern &lt;strong&gt;web applications&lt;/strong&gt; (e.g., e-commerce sites, CMS, portals)&lt;/li&gt;
&lt;li&gt;Running secure and scalable &lt;strong&gt;REST APIs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Hosting &lt;strong&gt;backend services&lt;/strong&gt; for mobile apps&lt;/li&gt;
&lt;li&gt;Supporting &lt;strong&gt;multi-tenant SaaS applications&lt;/strong&gt; with scaling and isolation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💡 &lt;strong&gt;Why Choose Azure App Service?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Accelerated development lifecycle&lt;/strong&gt;: Focus more on writing code, less on infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global reach&lt;/strong&gt;: Deploy apps in multiple regions around the world with a few clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise-ready&lt;/strong&gt;: Built-in compliance and identity integration make it suitable for production use in regulated industries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-effective&lt;/strong&gt;: Choose from various pricing tiers, from Free/Tier to Premium and Isolated SKUs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Guide on how to Deploy a Web App.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Login to an Azure Portal.&lt;/p&gt;

&lt;p&gt;Open your web browser and go to &lt;a href="https://dev.tourl"&gt;Azure Portal&lt;/a&gt;&lt;br&gt;
Sign in using your &lt;a href="https://dev.tourl"&gt;Microsoft Azure Account&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%2Ffpfq7pitndkj0fh31dr5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffpfq7pitndkj0fh31dr5.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Create Azure App Service.&lt;br&gt;
 Navigate to your search bar and search for term &lt;strong&gt;App Service&lt;/strong&gt; and click on it.&lt;/p&gt;

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

&lt;p&gt;Click on &lt;strong&gt;+ Create&lt;/strong&gt; and &lt;strong&gt;Select Webapp&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%2Fduv4tu49edyoabdtpndf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fduv4tu49edyoabdtpndf.png" alt=" " width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your Resource Group or create a new one.&lt;/li&gt;
&lt;li&gt;Give your Webapp a unique name&lt;/li&gt;
&lt;li&gt;Select your Publish (Code)&lt;/li&gt;
&lt;li&gt;Select your Runtime Stack (ASP.NET V4.8)&lt;/li&gt;
&lt;li&gt;Select the region you will operating on.&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%2Fc29cyr3r22mtimgciwkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc29cyr3r22mtimgciwkr.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Change the Pricing Plan to &lt;strong&gt;Shared D1&lt;/strong&gt; for the testing purpose &lt;/p&gt;

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

&lt;p&gt;Leave the other setting as default. Click on &lt;strong&gt;+ Create&lt;/strong&gt; wait for validation and then click on &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%2Fcvfm0bgxhdzcm2oyhokc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvfm0bgxhdzcm2oyhokc.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for the deployment to complete and then click on &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%2Fkh97gjzc3z8k3ei9n9qd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh97gjzc3z8k3ei9n9qd.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the Default Domain to confirm that the Webapp is Running.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Your Webapp is up and running&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%2Fow3ljt8tgxopo6tuyqts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow3ljt8tgxopo6tuyqts.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Optimizing IT Operations: Dedicated Storage for Testing and Training</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Thu, 19 Jun 2025 00:08:00 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/optimizing-it-operations-dedicated-storage-for-testing-and-training-58ei</link>
      <guid>https://dev.to/aneneemmanuel_1/optimizing-it-operations-dedicated-storage-for-testing-and-training-58ei</guid>
      <description>&lt;p&gt;&lt;strong&gt;Understanding Azure Storage: Your Cloud Data Solution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Azure Storage?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Azure Storage&lt;/strong&gt;, a core offering from Microsoft Azure, is a powerful and versatile cloud storage solution. It provides a comprehensive suite of services for storing and managing all types of data in the cloud, whether it's structured, unstructured, or semi-structured. Built for exceptional &lt;strong&gt;availability, durability, and scalability&lt;/strong&gt;, Azure Storage ensures your data is always accessible and protected.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key Components of Azure Storage:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blob Storage:&lt;/strong&gt; This is perfect for holding massive amounts of unstructured data like images, videos, and backups. It offers different access tiers, helping you manage costs effectively based on how frequently you need to access your data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;File Storage:&lt;/strong&gt; Need managed file shares in the cloud that you can access just like a network drive? File Storage delivers exactly that using the familiar SMB protocol, making it ideal for applications that rely on shared file access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Queue Storage:&lt;/strong&gt; For applications that need to communicate asynchronously, Queue Storage acts as a messaging service. It reliably stores and retrieves messages between different application components, ensuring smooth operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Table Storage:&lt;/strong&gt; This NoSQL key-value database is built for lightning-fast retrieval and expansion of semi-structured data. It's a great choice for high-performance storage needs where speed and scalability are crucial.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disk Storage:&lt;/strong&gt; Essential for your virtual machines (VMs), Disk Storage provides both managed and unmanaged disks for Azure VMs, giving you flexibility in how you manage your virtualized environments.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Beyond the Essentials:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Azure Data Lake Storage&lt;/strong&gt; is a specialized service designed specifically for big data analytics. It offers a hierarchical namespace and optimizations that are perfect for handling and processing massive analytical workloads.&lt;/p&gt;




&lt;h3&gt;
  
  
  Security and Integration:
&lt;/h3&gt;

&lt;p&gt;Azure Storage seamlessly integrates with a wide array of other Azure services, empowering you to build highly scalable and resilient applications. It's also packed with features like &lt;strong&gt;encryption, robust redundancy options, and granular access control&lt;/strong&gt; to ensure your data remains secure and compliant with industry standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Guide on how to set up a storage for for Testing and Training&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Login to an Azure Portal.&lt;/p&gt;

&lt;p&gt;Open your web browser and go to &lt;a href="https://dev.tourl"&gt;Azure Portal&lt;/a&gt;&lt;br&gt;
Sign in using your &lt;a href="https://dev.tourl"&gt;Microsoft Azure Account.&lt;br&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%2Fmjjb48imovgcsmnqryak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjjb48imovgcsmnqryak.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2. Create a resource group or you can use an exiting one if you have that already.&lt;br&gt;
Click on search bar and search for term &lt;strong&gt;Resource Group&lt;/strong&gt; and click on it.&lt;/p&gt;

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

&lt;p&gt;Click on +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%2Fk03achoebuslq1h8yz4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk03achoebuslq1h8yz4m.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your active Azure Subscription&lt;/li&gt;
&lt;li&gt;Give your Resource group a name e.g. RG1&lt;/li&gt;
&lt;li&gt;Select the Region you are operating on.&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%2Fqodvh3r9jylplywegx32.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqodvh3r9jylplywegx32.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Your Resource Group have been Created and Deployed Successfully.&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%2Fh8sujxr4v3kbvhl7q5ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8sujxr4v3kbvhl7q5ye.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3. Create and Deploy a Storage Account for Testing and Training. &lt;/p&gt;

&lt;p&gt;In your &lt;a href="https://dev.tourl"&gt;Azure Porta&lt;/a&gt;l, click on search bar and search for the term &lt;strong&gt;Storage Account&lt;/strong&gt; and then click on it. &lt;/p&gt;

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

&lt;p&gt;Click on &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%2Fp4462y5vb4xro1x24otd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4462y5vb4xro1x24otd.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the Resource Group you create earlier(RG1) &lt;/li&gt;
&lt;li&gt;Give your Storage Account a name e.g. &lt;strong&gt;storageacctdemo2&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;Select the correct Region as it is on the Resource Group [Europe, (North Europe)]&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%2F760cbuthsw1ke0f5qen4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F760cbuthsw1ke0f5qen4.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Standard&lt;/strong&gt; as Performance &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%2Frnqmtdrhghpxj3jchq1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frnqmtdrhghpxj3jchq1e.png" alt=" " width="800" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redundancy: Select &lt;strong&gt;Locally-Redundant Storage (LRS)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;em&gt;Click on **Review + Create *&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%2Fijtksg8c22hr8isbxlko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijtksg8c22hr8isbxlko.png" alt=" " width="800" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &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%2Fnnra5j8f5zn6lo3a0ts2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnra5j8f5zn6lo3a0ts2.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your Storage Account is up and running&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%2Fwnsqh8041scdml7wc6sz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnsqh8041scdml7wc6sz.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2. &lt;strong&gt;Ensure the storage account only allows requests from secure connections.&lt;/strong&gt;&lt;br&gt;
Under the Settings section, navigate to the Configuration blade.&lt;/p&gt;

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

&lt;p&gt;Confirm that "Secure transfer required" Enabled.&lt;/p&gt;

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

&lt;p&gt;Confirm that the Minimal TLS version is et to Version 1.2&lt;/p&gt;

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

&lt;p&gt;Step 4. Disable requests to the storage account until it is needed again. Learn more about disabling shared keys.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under the Settings section, navigate to the Configuration blade.&lt;/li&gt;
&lt;li&gt;Make sure you allow Storage Account Key Access is Disabled.&lt;/li&gt;
&lt;li&gt;Be sure that the changes is saved.&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%2Fxxoe28vm41f7h7njy2ue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxoe28vm41f7h7njy2ue.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;:&lt;br&gt;
Configuring Azure Storage for the IT department’s testing and training needs provides a secure, scalable, and cost-effective foundation tailored to real-world cloud learning. This guide has walked through essential steps—from creating a resource group to deploying a storage account and implementing robust security settings.&lt;/p&gt;

&lt;p&gt;By selecting &lt;strong&gt;Locally Redundant Storage (LRS)&lt;/strong&gt;, we achieved a balance between affordability and durability, ideal for non-production workloads. Security was reinforced by enabling secure transfer, enforcing &lt;strong&gt;TLS 1.2&lt;/strong&gt;, and disabling shared key access—ensuring modern compliance and tighter control over access and activity.&lt;/p&gt;

&lt;p&gt;Beyond meeting immediate IT requirements, this setup also serves as a practical learning environment empowering professionals to build hands-on expertise in &lt;strong&gt;Azure&lt;/strong&gt;, &lt;strong&gt;DevOps&lt;/strong&gt;, and &lt;strong&gt;cloud infrastructure&lt;/strong&gt;. It reflects best practices in resource organization, security hardening, and cost optimization—core skills in today’s cloud-driven IT landscape.&lt;/p&gt;

&lt;p&gt;Ultimately, this walkthrough demonstrates how to strategically deploy Azure Storage to support both operational readiness and long-term cloud proficiency.&lt;/p&gt;

&lt;p&gt;I hope this tutorial has helped lay a strong foundation for your cloud journey. Stay tuned for more in-depth guides and the latest insights into Azure services. Until next time—happy building! ✌&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
      <category>learning</category>
    </item>
    <item>
      <title>Mastering Azure Load Balancers: Your Step-by-Step Journey to Efficient Traffic Management</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Sat, 10 May 2025 08:54:20 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/mastering-azure-load-balancers-your-step-by-step-journey-to-efficient-traffic-management-143k</link>
      <guid>https://dev.to/aneneemmanuel_1/mastering-azure-load-balancers-your-step-by-step-journey-to-efficient-traffic-management-143k</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Welcome to this comprehensive guide on understanding and implementing load balancers within the Azure ecosystem. This tutorial will walk you through the fundamentals and practical steps of setting up your first load balancer in Microsoft Azure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a Load Balancer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a highly skilled air traffic controller for your data. A load balancer acts as this crucial orchestrator, intelligently distributing incoming network requests across a cluster of servers. Its primary role is to prevent any single server from becoming overwhelmed, ensuring smooth, uninterrupted service delivery. It's like having a smart dispatcher for your application's traffic, routing each request to the most available and capable server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why are Load Balancers Indispensable?&lt;/strong&gt;&lt;br&gt;
Load balancers are vital for modern applications due to several key advantages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Optimized Performance:&lt;/strong&gt; By evenly distributing workloads, they eliminate bottlenecks and ensure faster response times, leading to a superior user experience.&lt;br&gt;
&lt;strong&gt;Guaranteed High Availability:&lt;/strong&gt; Should a server fail or go offline, the load balancer automatically reroutes traffic to the remaining healthy servers, ensuring your applications stay online and accessible.&lt;br&gt;
&lt;strong&gt;Enhanced Security Posture:&lt;/strong&gt; They serve as an initial line of defense, capable of mitigating certain cyber threats, such as Distributed Denial-of-Service (DDoS) attacks, by effectively spreading malicious traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploring Azure's Load Balancing Solutions&lt;/strong&gt;&lt;br&gt;
Azure offers a versatile suite of load balancing services, each tailored for specific use cases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Azure Load Balancer (Layer 4 – Transport Layer):&lt;/strong&gt; Ideal for distributing traffic within a single Azure Virtual Network, operating at the TCP/UDP level.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Application Gateway (Layer 7 – Application Layer):&lt;/strong&gt; This service goes beyond basic load balancing, offering advanced features like SSL offloading, web application firewall (WAF) capabilities, and content-based routing (e.g., directing traffic based on URL paths).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Traffic Manager:&lt;/strong&gt; A DNS-based traffic distribution service that routes user requests to different geographical endpoints, perfect for global deployments and disaster recovery strategies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Azure Front Door:&lt;/strong&gt; Specifically designed for global web applications, Azure Front Door routes traffic based on optimal performance, robust security features, and low-latency paths, providing a unified global entry point.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step Guide of Creating a Load Balancer In Azure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Login to an Azure Portal.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open your web browser and go to&lt;a href="https://dev.tourl"&gt; Azure Portal&lt;/a&gt; &lt;br&gt;
  Sign in using your Microsoft Azure 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%2Fteqbhrmzuor0tvjev9o7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fteqbhrmzuor0tvjev9o7.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Create a New Load Balancer&lt;br&gt;
  In the search bar at the top, type &lt;strong&gt;"Load Balancer"&lt;/strong&gt; and &lt;strong&gt;select "Load Balancers"&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%2Flwezt6scidrmf0och9n2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwezt6scidrmf0och9n2.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"+ Create"&lt;/strong&gt; to start setting up your load balancer.&lt;/p&gt;

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

&lt;p&gt;"Take note of the type on the left panel marked"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step3: Configure the Basic Settings&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Select your Azure active Subscription.&lt;br&gt;
Resource Group: Choose an &lt;strong&gt;Existing Resource Group&lt;/strong&gt; or &lt;strong&gt;Create a New One&lt;/strong&gt;&lt;br&gt;
Region: Pick the Azure Region where you want to deploy the load balancer.&lt;br&gt;
&lt;strong&gt;Name:&lt;/strong&gt; Give your load balancer a name(e.g. load-Balancer-1)&lt;br&gt;
&lt;strong&gt;SKU:&lt;/strong&gt; Choose Standard, Gateway, or Basic(Standard is recommended for production use since it distributes traffic to backend resources).&lt;br&gt;
&lt;strong&gt;Type:&lt;/strong&gt; Select either Public(for internet-facing applications) or Internal (for internal network applications). For the purpose of this tutorial, we choose public.&lt;br&gt;
&lt;strong&gt;Tier:&lt;/strong&gt; Select either Regional or Global &lt;br&gt;
Click Next: &lt;strong&gt;Frontend IP Configuration.&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%2Fy49axefaiph1wr7pre9a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy49axefaiph1wr7pre9a.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4: Configure the Frontend IP&lt;br&gt;
      Click &lt;strong&gt;+Add a Frontend IP configuration&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%2Ftth6c49hr20wjwyaruyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftth6c49hr20wjwyaruyo.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give your Frontend IP a name&lt;/p&gt;

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

&lt;p&gt;Create a new &lt;strong&gt;Public IP&lt;/strong&gt; if you are using a public load balancer or select &lt;strong&gt;Private IP&lt;/strong&gt; for internal use.&lt;/p&gt;

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

&lt;p&gt;Name: Give the public address a name&lt;br&gt;
Availability Zone: Choose Zone Redundant or No Zone&lt;br&gt;
                 Click save&lt;br&gt;
                 Click &lt;strong&gt;Next: Backend Pools&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%2Fiq18752rvabu0ifasxay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq18752rvabu0ifasxay.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Configure the Backend Pool&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;+Add a backend pool&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%2Fnbjsxqznvuczgm26txh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbjsxqznvuczgm26txh8.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give your Backend Pool a name(e.g. Backend-Pool-1)&lt;br&gt;
On the Virtual Network: Select &lt;strong&gt;Virtual Machines&lt;/strong&gt; as the backend &lt;br&gt;
Add the Virtual Machines that will receive the traffic &lt;/p&gt;

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

&lt;p&gt;Click &lt;strong&gt;Save&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%2F06c8g6gj1bokyx1xgurs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06c8g6gj1bokyx1xgurs.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Next: Inbound 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%2Fjxn6g64baf1ko143skx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjxn6g64baf1ko143skx0.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Configure Load Balancing Rules&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click *&lt;em&gt;+Add a load balancing rules *&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%2Fg5s63gcazjxaci1m9ujf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5s63gcazjxaci1m9ujf.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give the rule a name(e.g. LB-rule-1)&lt;br&gt;
Set the frontend IP configuration.&lt;br&gt;
Choose the backend pool created earlier &lt;br&gt;
Protocol: Select the  (TCP, or UDP).&lt;br&gt;
Port: Set as 80 for web traffic)&lt;/p&gt;

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

&lt;p&gt;Health Probe: &lt;strong&gt;Click create new&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%2F16317pxzc3fjrgaqkh0b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16317pxzc3fjrgaqkh0b.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give it a name (e.g, Health-Probe) &lt;br&gt;
Select the protocol (TCP, HTTP, or HTTPS)&lt;br&gt;
Set a port (e.g, 80 for HTTP Traffic).&lt;br&gt;
Configure probe intervals (recommended: 5 secs)&lt;br&gt;
Then click &lt;strong&gt;Save&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%2Fo1w31nju8idmw6ngvdac.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1w31nju8idmw6ngvdac.png" alt=" " width="484" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on &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%2Fxj02cc0i8kgj5suc4yol.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxj02cc0i8kgj5suc4yol.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create&lt;/strong&gt; to Deploy your load Balancer&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Deployment is Complete&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%2Fvkqembrrr2i2bvmav9af.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvkqembrrr2i2bvmav9af.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Test the Load Balancer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Confirm the load balancer is functioning by accessing its public IP address through a web browser or the &lt;strong&gt;curl utility&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%2Fd8mssur5lzr1n07vwd1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd8mssur5lzr1n07vwd1p.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If configured right, traffic will be distributed among backend Virtual Machines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we've explored, the Azure Load Balancer stands as a pivotal tool, instrumental in significantly enhancing your application's speed, ensuring its high availability, and bolstering its overall security. Having meticulously followed the step-by-step instructions within this guide, you are now fully capable of successfully deploying and configuring a load balancer to expertly manage traffic flow across your Azure environment.&lt;/p&gt;

&lt;p&gt;I hope this tutorial has provided a solid foundation for your cloud endeavors. For more in-depth guides and the latest insights into Azure services, be sure to follow along and look out for the next installment! Happy building! ✌&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Creating Your Own Private Cloud Space: An Easy Guide to Azure Virtual Networks (via the Azure Portal)</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Thu, 08 May 2025 12:00:47 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/creating-your-own-private-cloud-space-an-easy-guide-to-azure-virtual-networks-via-the-azure-5fp5</link>
      <guid>https://dev.to/aneneemmanuel_1/creating-your-own-private-cloud-space-an-easy-guide-to-azure-virtual-networks-via-the-azure-5fp5</guid>
      <description>&lt;p&gt;&lt;strong&gt;Getting Started with Your Azure Playground&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, you're taking your first steps in the world of Microsoft Azure? Awesome! One of the very first things you'll encounter is the idea of a &lt;strong&gt;Virtual Network&lt;/strong&gt;, or &lt;strong&gt;VNet&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Think of a VNet as your very own secure and isolated network right there in the cloud. It's the dedicated space where all your Azure goodies – things like &lt;strong&gt;virtual machines&lt;/strong&gt;, &lt;strong&gt;databases&lt;/strong&gt;, and &lt;strong&gt;web applications&lt;/strong&gt; – can chat and work together safely. In this friendly guide, I'll show you how to build and set up your own VNet using the &lt;strong&gt;Azure Portal&lt;/strong&gt;. No need to be a command-line whiz here – we'll do it all with clicks!&lt;/p&gt;

&lt;p&gt;Ready to jump in?&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;Why Bother with Virtual Networks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you start launching resources in Azure, you don't want them just hanging out in the open, do you? A VNet acts like a secure boundary, giving you:&lt;/p&gt;

&lt;p&gt;Your own private corner: It keeps your different services separate and organized.&lt;br&gt;
&lt;strong&gt;Control over your digital address book: You get to decide the ranges of IP addresses, divide your network into smaller sections (subnets), and manage how traffic flows&lt;/strong&gt;.&lt;br&gt;
A bridge to your existing setup: You can even connect your on-premises network to your Azure VNet.&lt;br&gt;
Your own cloud security guards: You can set up firewall rules (using Network Security Groups) to control who can access what.&lt;br&gt;
Basically, if you're building anything beyond a simple test, a VNet is going to be your new best friend.&lt;/p&gt;

&lt;p&gt;🛠 What You'll Need in Your Toolkit&lt;/p&gt;

&lt;p&gt;Before we get started, make sure you have these two things handy:&lt;/p&gt;

&lt;p&gt;A Microsoft Azure account.&lt;br&gt;
Access to the Azure Portal (your web-based control center for Azure)&lt;/p&gt;

&lt;p&gt;🚧  &lt;strong&gt;Step 1: create a Virtual Network&lt;/strong&gt;&lt;br&gt;
We will start by creating a VNet first.&lt;/p&gt;

&lt;p&gt;Login your Azure Portal on the web: &lt;a href="https://potal.azure.com" rel="noopener noreferrer"&gt;https://potal.azure.com&lt;/a&gt; and sign in.&lt;/p&gt;

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

&lt;p&gt;Search for "Virtual Network" by using the search bar at the top of the portal, type &lt;em&gt;Virtual Network&lt;/em&gt; and select the service from the listed ones.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Click "+ create" to Start a New 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%2Fpnakexyyct1rz9gdggy1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnakexyyct1rz9gdggy1.png" alt=" " width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;i. Fill in the information &lt;br&gt;
ii. Choose a the correct and active Subscription&lt;br&gt;
iii. Create a new Resource Group (you can give it a name "VNet-Demo-RG") and press OK or you can use the existing 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%2F8c8fdmquor46dxm6e34m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8c8fdmquor46dxm6e34m.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;INSTANCE DETAILS&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Name&lt;/strong&gt;: Give your Virtual Network a name(VNet1)&lt;br&gt;
&lt;strong&gt;Region&lt;/strong&gt;: Choose the region closest to you&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;IP Address Space settings&lt;/strong&gt;:&lt;br&gt;
   Click on IP Addresses&lt;/p&gt;

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

&lt;p&gt;The default IP Address should be something like &lt;em&gt;10.0.0.0/16&lt;/em&gt;, which we can work with for now &lt;/p&gt;

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

&lt;p&gt;Add your first &lt;strong&gt;subnet&lt;/strong&gt;, you can call it &lt;strong&gt;Subnet-1&lt;/strong&gt; with the &lt;strong&gt;IP address range&lt;/strong&gt; &lt;em&gt;10.0.0.0/16&lt;/em&gt;&lt;br&gt;
Click on the pencil sign on default &lt;/p&gt;

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

&lt;p&gt;Change the name to &lt;strong&gt;Subnet-1&lt;/strong&gt;. Explore the other default settings including the starting address, size and subnet IP address range and then click on save.&lt;/p&gt;

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

&lt;p&gt;Add your second subnet, you call it "&lt;em&gt;Subnet-2&lt;/em&gt;" with IP address range 10.0.0.0/24&lt;br&gt;
Click on the +Add a Subnet &lt;/p&gt;

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

&lt;p&gt;Change the name to &lt;strong&gt;Subnet-2&lt;/strong&gt;. Explore the default settings and click on &lt;strong&gt;Add&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%2Fhc7lgjlxp3698rv6n2h8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhc7lgjlxp3698rv6n2h8.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Subnet have been added:&lt;/p&gt;

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

&lt;p&gt;Continue exploring the remaining tabs. &lt;/p&gt;

&lt;p&gt;You can skip the Security and DNS tabs for now unless you're already comfortable with those advanced settings. Once you've looked through the other tabs click "&lt;strong&gt;Review + Create&lt;/strong&gt;" and then "&lt;strong&gt;Create&lt;/strong&gt;" to finish.&lt;/p&gt;

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

&lt;p&gt;Click n the tab "&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%2Fsaggyn47o4w6y0xvyqvo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaggyn47o4w6y0xvyqvo.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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%2Fdk4sarjzmp31xj5qdget.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdk4sarjzmp31xj5qdget.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠  Step 2: Configure the VNet to use firewall&lt;/p&gt;

&lt;p&gt;Now that your network exists, let's perform some customization to enhance its security. We'll start by configuring the Virtual Network (VNet) to use a firewall.&lt;/p&gt;

&lt;p&gt;+Add More Subnets&lt;/p&gt;

&lt;p&gt;Before we configure the firewall, let's add more subnets to our Virtual Network. To do this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Create a new Virtual Network:&lt;/strong&gt; Navigate to the search box located at the top of the Azure portal. Type "virtual network" into the search bar.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Select Virtual Network:&lt;/strong&gt; From the dropdown menu that appears, click on &lt;strong&gt;"Virtual network."&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%2Fo2wjzx8t65r379zio1u8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2wjzx8t65r379zio1u8.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on +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%2Fbck0qav9ly179mvzj8v3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbck0qav9ly179mvzj8v3.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get started Use your &lt;strong&gt;active subscription&lt;/strong&gt;, select a &lt;strong&gt;Resource Group.&lt;/strong&gt; Next choose a name for the Resource Group or you can use an existing Resource Group, and then select a &lt;strong&gt;Region&lt;/strong&gt;, preferably the same as the previous region used for consistency.&lt;/p&gt;

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

&lt;p&gt;Click on IP Addresses&lt;/p&gt;

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

&lt;p&gt;Click on default&lt;/p&gt;

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

&lt;p&gt;On the &lt;strong&gt;Subnet Purpose&lt;/strong&gt;, click on the dropdown and click on &lt;strong&gt;Azure Firewall.&lt;/strong&gt; Then click save&lt;/p&gt;

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

&lt;p&gt;Click on Reviwe + 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%2Fdslfby9w6zss0pzzwgf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdslfby9w6zss0pzzwgf6.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on Create tab&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Set Up VNet Peering&lt;/strong&gt;&lt;br&gt;
To establish a secure connection between your Virtual Network, especially when operating across multiple VNets for purposes like isolation or reginal segregation, you'll utilize peering.&lt;/p&gt;

&lt;p&gt;To get started with &lt;strong&gt;Peering&lt;/strong&gt; you will go back to your Resource Group that was created  earlier(VNet-Demo-RG) Click on it.&lt;/p&gt;

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

&lt;p&gt;Click on VNet1 to navigate to &lt;strong&gt;Peerings&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%2Fyd2gv7nzqlbgn2wqfd7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd2gv7nzqlbgn2wqfd7y.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go the left side search bar and search &lt;strong&gt;Peerings&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%2Fzii1e3xqp4mrdynyglnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzii1e3xqp4mrdynyglnk.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the &lt;strong&gt;+Add&lt;/strong&gt; tab&lt;/p&gt;

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

&lt;p&gt;On the remote Virtual Network, peering link name should be &lt;strong&gt;'VNet1-to-VNet-2'&lt;/strong&gt;&lt;br&gt;
On the Virtual Network choose VNet-2&lt;br&gt;
Check the resource manager and also check the Allow VNet-2 to access VNet1&lt;/p&gt;

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

&lt;p&gt;On the local Virtual Network, Peering link name should be &lt;strong&gt;'VNet-2-to-VNet1'&lt;/strong&gt;&lt;br&gt;
Check the Resource Manager and also check the Allow 'VNet1 to AccESS VNet-2'&lt;/p&gt;

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

&lt;p&gt;To be sure that the &lt;strong&gt;Peering&lt;/strong&gt; of the Remote VNet and Local VNet was successful, the Peering state of the two VNet will shown &lt;strong&gt;Connected&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%2Fugbp4ssoy56vti3e7o0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugbp4ssoy56vti3e7o0t.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next Steps with your VNet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that your virtual network is all set up, Here are a few things on the radar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spin up a &lt;em&gt;Virtual Machine&lt;/em&gt; within one of the subnets.&lt;/li&gt;
&lt;li&gt;Play around with &lt;strong&gt;NSG rules&lt;/strong&gt; to fine-tune the network traffic flow.&lt;/li&gt;
&lt;li&gt;Give connecting &lt;strong&gt;two VNets&lt;/strong&gt; a shot using &lt;strong&gt;peering&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Look into setting up a &lt;strong&gt;VPN Gateway&lt;/strong&gt; to bridge the VNet with the local network.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔄 &lt;strong&gt;A Little More on VNet Peering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During the setup, I touched on something called Virtual Network Peering, and I wanted to clarify what that really entails.&lt;/p&gt;

&lt;p&gt;Imagine each of my Virtual Networks (VNets) in Azure as its own secure area. By default, these areas can't communicate with each other, even if they all belong to me. VNet Peering is like creating a private, secure pathway between two of your own areas. This allows resources, like the virtual machines or applications I deploy, in one VNet to easily and privately communicate with those in another.&lt;/p&gt;

&lt;p&gt;This is incredibly useful when:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you want to organize your resources into distinct VNets, perhaps for better security or to scale different parts of your infrastructure independently&lt;/strong&gt;.&lt;br&gt;
 &lt;strong&gt;You have VNets in different geographical locations but need them to function as a cohesive system&lt;/strong&gt;.&lt;br&gt;
 Your setting up a centralized hub network with other VNets connecting to it.&lt;/p&gt;

&lt;p&gt;And the great thing is, the communication between these peered VNets stays within the Azure network; it doesn't traverse the public internet.&lt;/p&gt;

&lt;p&gt;So, when you add a peering connection in Azure, I'm essentially telling two of your networks, "You're now connected, communicate securely with each other."&lt;/p&gt;

&lt;p&gt;💬 &lt;strong&gt;Wrapping Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Getting practical with Azure networking doesn't have to feel overwhelming. The Azure Portal provides a pretty intuitive way to configure and customize a Virtual Network.&lt;/p&gt;

&lt;p&gt;If this has been helpful, or if you'd be interested in a follow-up guide on &lt;em&gt;deploying VMs&lt;/em&gt; or &lt;em&gt;setting up hybrid networks&lt;/em&gt;, let me know! Happy building!&lt;/p&gt;

&lt;p&gt;📌 Stay tuned for more beginner-friendly Azure and cloud development insights!&lt;/p&gt;

</description>
      <category>staticwebapps</category>
      <category>azure</category>
      <category>cloudnetworking</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Creating and Deploying Your First Azure Virtual Machine</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Sat, 29 Mar 2025 00:27:49 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/creating-and-deploying-your-first-azure-virtual-machine-2nnn</link>
      <guid>https://dev.to/aneneemmanuel_1/creating-and-deploying-your-first-azure-virtual-machine-2nnn</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Virtual Machines?&lt;/strong&gt;&lt;br&gt;
When you of what a Virtual Machine is, you think of it as a software-created computer that lives inside your real, physical computer. It has its own pretend set of hardware – its own little fake processor, memory, storage, and network connection – all powered and managed by your actual computer's resources.   &lt;/p&gt;

&lt;p&gt;So, even though you only have one physical machine sitting on your desk, a virtual machine lets you run a completely separate operating system (like Windows, macOS, or Linux) and its applications within a window on your current operating system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Think of it like this:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your physical computer is the actual house.&lt;br&gt;
A virtual machine is like creating a separate, fully functional apartment &lt;/p&gt;

&lt;p&gt;inside that house.1 The apartment has its own furniture, its own kitchen, its own living room – everything it needs to operate independently. People living in different apartments in the same house can do their own thing without interfering with each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is this useful?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Well, it lets you do things like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Try out a different operating system without messing with your main computer.   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run software that's only compatible with a specific operating system.   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test new applications in a safe, isolated environment so if something goes wrong, it doesn't affect your main system.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Consolidate multiple physical servers onto a single, more powerful machine, saving space and energy.   &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, in simple terms, a virtual machine is like having a computer within a computer, created by software, allowing you to run different environments and do different things all on the same physical hardware.&lt;/p&gt;

&lt;p&gt;It's like a clever way of making one computer act like many!   &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;How to create Virtual Machines&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Step 1: &lt;strong&gt;Log in to Azure Portal&lt;/strong&gt;&lt;br&gt;
   (i) Navigate to portal.azure.com&lt;br&gt;
   (ii) Enter you username &amp;amp; password to access the dashboard&lt;/p&gt;

&lt;p&gt;Step 2: &lt;strong&gt;Search for "Virtual Machines"&lt;/strong&gt;&lt;br&gt;
      (i) In the search bar, type "Virtual Machines"&lt;/p&gt;

&lt;p&gt;Step 3: Select for Virtual Machine from the Search Results&lt;/p&gt;

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

&lt;p&gt;Step 4: ** Click on "Create"**&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   (ii) Click "Azure Virtual Machine"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Step 5: Enter Project Details &lt;br&gt;
      (i) Select the appropriate Subscription &lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     (ii) Click "Create Resource Group"——&amp;gt; Enter a name for it
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Step 6: Configure Virtual Machine Details.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  (i) VM Name (eg., MyAzureVM)
  (ii) Region
  (iii) Availability Options
  (iv) Zone Options
  (v) Availability Zone
  (vi)  Security Type
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(vii) Operating System: Select Ubuntu Server 20.04 or Windows Server Datacenter-x64 G2
 (viii)VM Size: Keep the default option 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Step 7: Set Up Administrator Account:&lt;br&gt;
      (i) Set User Name (Azureuser)&lt;br&gt;
      (ii) Password (Something you can always remember)&lt;br&gt;
      (iii) Confirm password&lt;/p&gt;

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

&lt;p&gt;Step 8: Configure Inbound Port Rules&lt;br&gt;
      Select SSH(for Linux) or RDP (for Windows)&lt;/p&gt;

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

&lt;p&gt;Step 9: Accept Licensing Terms&lt;br&gt;
      Click the checkbox to accept the licensing agreements.&lt;/p&gt;

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

&lt;p&gt;Step 10: Disable Boot Diagnostics &lt;br&gt;
      Click Next——&amp;gt; Navigate to Monitoring Tab ——&amp;gt; Disable Boot Diagnostics.&lt;/p&gt;

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

&lt;p&gt;Step 11: Review &amp;amp; Deploy the Virtual Machine&lt;br&gt;
    (i) 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%2Fc71c7pfiax1q50alff1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc71c7pfiax1q50alff1i.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(ii) Ensure Validation passes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(iii) Click "Create" to deploy (Deployment takes 3-5 minutes)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; (iv) Click on "Go to Resource" to check your VM status and connect to the VM.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Step 12: Check VM Status&lt;br&gt;
       If the status is running, you VM is ready!🎉&lt;/p&gt;

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

&lt;p&gt;Step 13: Connect to the Virtual Machine&lt;br&gt;
      Click "Connect" in the Azure VM blade.&lt;/p&gt;

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

&lt;p&gt;Step 14: Download &amp;amp; Open RDP File (Windows VM Only)&lt;br&gt;
     (i) Click "Native RDP"——&amp;gt; Download RDP 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%2F4iv4a9u6752fd8quj3pz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4iv4a9u6752fd8quj3pz.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(ii) Open the RDP file on your computer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;Step 15: Enter Admin Credentials&lt;br&gt;
       (i) Enter the Username and password created earlier.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   (ii) ✅ Complete Connection 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Chose pricy settings for your device and connect&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Wait for Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 16: Success! Start Using Your VM &lt;br&gt;
      🎉You are now connected! You can start using your Azure 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%2Fbeddxojuqxceypzmi21d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbeddxojuqxceypzmi21d.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅&lt;strong&gt;Final Thoughts:&lt;/strong&gt; &lt;br&gt;
Great job! You've taken the key steps to get your Azure Virtual Machine ready: you've built it, launched it into the Azure environment, and established a connection. Now that you're connected, you can begin installing the software you need, configuring your services exactly how you want them, and take your time to discover everything the Azure ecosystem has to offer.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Key Concepts in a Blog Post</title>
      <dc:creator>Emmanuel A. Anene</dc:creator>
      <pubDate>Sun, 26 Jan 2025 06:25:41 +0000</pubDate>
      <link>https://dev.to/aneneemmanuel_1/key-concepts-in-a-blog-post-2832</link>
      <guid>https://dev.to/aneneemmanuel_1/key-concepts-in-a-blog-post-2832</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. What is Virtualization?&lt;/strong&gt;&lt;br&gt;
Virtualization alludes to the simulation of an essential thing utilized in computing.  Virtualization is anything but an IT solution for enabling multiple services and solutions to operate in one physical location. Virtualization lets a single real server acts like, or host several virtual servers, which operate the same as a real server. You get better utilization of resources, savings of costs and flexibility as you can run different operating systems and applications on the same hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Scalability&lt;/strong&gt;&lt;br&gt;
Scalability is like a balloon which you can add air. You can add air without changing its structure, as you need that more and more air is needed. Scalability refers to the potential for a system to manage an increasing amount of work, i.e., growing data volumes and user loads. You can either add more machines or resources to meet the demand as per your wish.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Agility&lt;/strong&gt;&lt;br&gt;
Agility means the ability to move quickly and easily. Consider a dancer who has the ability to quickly change their feet to keep in sync with the music. Agility in business and technology means being able to respond quickly to changes in the market or changing customer needs. Faster sped upped product delivery makes an organization more competitive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. High Availability&lt;/strong&gt;&lt;br&gt;
High availability is like having a backup generator for your home. It guarantees that important services and systems keep going, even if something's not right. In technician language, high availability means that a system ought to up as much as possible and downtime reduced as much as possible. It is essential for companies that depend on continuous access to their software and information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Fault Tolerant&lt;/strong&gt;&lt;br&gt;
It would be like juggling without a safety net if we were not fault tolerant. You will not be in trouble even one ball drop. Fault tolerant means when something can still operate properly even with failures. Redundancy and backup systems make sure that if one fails, things don’t stop due to one failure or fault.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Global Reach&lt;/strong&gt;&lt;br&gt;
Expanding your business beyond borders, global reach is all about just that. A local shop is able to sell its products worldwide through an online platform. Global reach with businesses refers to serving and now operating in different nations and regions using technology that connects us. For reference, think of a shop that could only sell to locals. Now, they could sell to anyone worldwide via the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. What is the difference between Elasticity and Scalability&lt;/strong&gt;&lt;br&gt;
Scalability can be compared to a flexible building that expands or contracts as per the number of occupants. Elasticity is more about how you can change things quickly and right away. It is like a rubber band which can stretch and shrink often as per the needs.  In the world of cloud computing, we have two different terms with two different meanings. They are scalability and elasticity. Elasticity refers to the capacity of resource usage increase or decrease automatically depending on current demand. On the other hand, scalability refers to the ability to grow when needed. &lt;/p&gt;

&lt;p&gt;In short, these concepts represent the basis through which modern tech and business functions. These systems make efficient and responsive so that we are geared to tackle any trouble ahead.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
