<?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: okunola babatunde</title>
    <description>The latest articles on DEV Community by okunola babatunde (@okunola_babatunde_dff5cbd).</description>
    <link>https://dev.to/okunola_babatunde_dff5cbd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2444490%2Fd83433fe-0cda-430e-ba78-2986e039a2fb.jpg</url>
      <title>DEV Community: okunola babatunde</title>
      <link>https://dev.to/okunola_babatunde_dff5cbd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okunola_babatunde_dff5cbd"/>
    <language>en</language>
    <item>
      <title>Microsoft-Entra-Management-Tasks: Perform basic Multifactor Authentication tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Mon, 27 Jul 2026 17:23:37 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-multifactor-authentication-tasks-2b01</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-multifactor-authentication-tasks-2b01</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In today’s cloud‑driven world, passwords alone are no longer enough to protect user identities. Microsoft Entra Multifactor Authentication (MFA) adds an essential layer of security by requiring users to verify their identity through multiple factors — something they know (password), something they have (device or code), or something they are (biometric).&lt;/p&gt;

&lt;p&gt;This exercise walks you through enabling and configuring MFA in Microsoft Entra ID. You’ll learn how to manage per‑user MFA settings, review service configurations, and set account lockout thresholds to prevent unauthorized access. These are foundational skills for any cloud engineer responsible for securing identities and access in enterprise environments.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic Multifactor Authentication tasks
&lt;/h1&gt;

&lt;p&gt;In this exercise you will explore the MFA setup process and configure a basic MFA deployment.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - Enable / Disable Per-user MFA settings
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp25tzb3zvf990nqf9qg.png" alt="gtre" width="800" height="31"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5u155o4dohdo75i2y14g.png" alt="gtred" width="800" height="452"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Identity submenu
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffvov2hs34sryrqpm6m64.png" alt="hygt" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select Users and then select All users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsumt1rnbl9gk1hl49aye.png" alt="kiyt" width="800" height="345"&gt;
&lt;/li&gt;
&lt;li&gt;Look at the menu on the top of the new screen and find Per-user MFA.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkh0pwgl0vyx4cnr8nhl6.png" alt="vgfre" width="800" height="347"&gt;
&lt;/li&gt;
&lt;li&gt;Select Per-user MFA.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq7mcnwf30a47l04b7db0.png" alt="freew" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Put a mark in the box next to Bhogeswar Kalita.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc8iqhx9z7r3hr298l9vb.png" alt="greet" width="800" height="348"&gt;
&lt;/li&gt;
&lt;li&gt;Select Enable MFA from the top of the list.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7lblxhposbzp2mi94od.png" alt="kikk" width="800" height="346"&gt;
&lt;/li&gt;
&lt;li&gt;Read the message box that pops up.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzno8wlsstpmli4nr5dje.png" alt="looi" width="800" height="351"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - This is a manual URL that you can email to the user, if you want to let them know to set up MFA.&lt;/li&gt;
&lt;li&gt;Select Enable button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fricd7lf1rzzv2xda0fs2.png" alt="enable" width="799" height="348"&gt;
&lt;/li&gt;
&lt;li&gt;Note that after a few seconds enforced shows up next to Bhogeswar’s name.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgzj21ezsy37tjqybj6ta.png" alt="yure" width="800" height="345"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 2 - Review the Service settings for MFA
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk1a2ijujq4tzrs59ktk1.png" alt="hyyt" width="797" height="26"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjucv934t9ljui7451ec7.png" alt="general" width="800" height="466"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Identity submenu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0jfgvnk94708pjafzu61.png" alt="gttrre" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select Users and then select All users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2le6ghktphbw9td1wlq.png" alt="dear" width="799" height="350"&gt;
&lt;/li&gt;
&lt;li&gt;Select Per-user MFA item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foeq8wldo0mut62d672em.png" alt="nhnh" width="799" height="376"&gt;
&lt;/li&gt;
&lt;li&gt;Select Service settings.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnul5kl0nzumu9qzrolam.png" alt="mkiu" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Review the settings you can configure:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Setting&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What it is for&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;App passwords&lt;/td&gt;
&lt;td&gt;Some legacy applications do not support MFA. This setting allows users to continue using those apps by generating app-specific passwords.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trusted IPs&lt;/td&gt;
&lt;td&gt;Define specific IP address ranges that are always considered safe. Users signing in from these ranges can bypass MFA requirements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Verification options&lt;/td&gt;
&lt;td&gt;Choose which verification methods (e.g., SMS, email, authenticator app, phone call) are available for users as their second factor of authentication.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remember multifactor authentication on trusted device&lt;/td&gt;
&lt;td&gt;Allow users on trusted devices (such as company-managed laptops) to retain their MFA-approved status for a specified number of days, reducing repeated prompts.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiecstmavl5bqhhbuus60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiecstmavl5bqhhbuus60.png" alt="gtrrren" width="799" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the Discard button if you made any changes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw6b7bhtqycrcnrgv3r9.png" alt="freew" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;This is one method of configuring MFA for your users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpeg56xbnqh3tvfp3ulpw.png" alt="bgtttr" width="800" height="359"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 3 - View MFA account lockout settings
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7ghl57hl0l1cvvhse5vm.png" alt="srewee" width="791" height="32"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcpgg12q4penqkby50gj9.png" alt="gtrredw" width="800" height="466"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Protection submenu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8a7yz26p76xovq2alik0.png" alt="mkmkii" width="799" height="365"&gt;
&lt;/li&gt;
&lt;li&gt;Scroll to the bottom of the list and select Show more.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv64lr5nb30k1zkwkpe7x.png" alt="mkmki" width="800" height="372"&gt;
&lt;/li&gt;
&lt;li&gt;Select Multifactor authentication from the menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feq1uu94wj1qu86iqzp6w.png" alt="gvgvfvc" width="800" height="380"&gt;
&lt;/li&gt;
&lt;li&gt;Select Account lockout from the menu.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Number of MFA denials to trigger account lockout&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutes until account lockout counter is reset&lt;/td&gt;
&lt;td&gt;180&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minutes until account is automatically unblocked&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5vtjtv6zeu468q1fq0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5vtjtv6zeu468q1fq0y.png" alt="account lockout" width="800" height="429"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr87c2ucduv7d6eb8y1tg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr87c2ucduv7d6eb8y1tg.png" alt="account lockout" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Select the Save option at the top of your screen.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ferd58vm145co45ud1ixz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ferd58vm145co45ud1ixz.png" alt="save" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review some of the other configuration options you have on MFA like:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

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

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

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Task 1 – Enable/Disable Per-user MFA
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to Microsoft Entra admin center → Identity → Users → All users → Per-user MFA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select a user (e.g., Bhogeswar Kalita), enable MFA, and confirm.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The user’s MFA status changes to enforced once enabled.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 2 – Review MFA Service Settings
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Options include:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;App passwords: Allow legacy apps without MFA support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trusted IPs: Define safe IP ranges to bypass MFA.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verification options: Choose allowed second-factor methods.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remember MFA on trusted devices: Retain MFA approval for a set number of days on managed devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Task 3 – Configure MFA Account Lockout
&lt;/h1&gt;

&lt;p&gt;Navigate to Protection → Multifactor authentication → Account lockout.&lt;/p&gt;

&lt;h1&gt;
  
  
  Suggested values:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;3 denials trigger lockout.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Counter resets after 180 minutes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Account automatically unblocks after 15 minutes.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additional options: fraud alerts, blocking/unblocking users, notifications.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;This exercise demonstrates how I set up and managed basic MFA deployment in Microsoft Entra. It covers enabling MFA for individual users, adjusting service-wide settings to balance usability and security, and configuring account lockout rules to protect against repeated failed attempts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Takeaway Points
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MFA can be enforced per user, giving granular control.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service settings allow flexibility for legacy apps, trusted networks, and device policies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Account lockout rules are essential to prevent brute-force attacks while minimizing disruption for legitimate users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Administrators should regularly review fraud alerts, user blocks, and notifications to maintain a secure environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>multifactorauthentication</category>
      <category>microsoft365</category>
      <category>microsoftentra</category>
      <category>identitymanagement</category>
    </item>
    <item>
      <title>Microsoft-Entra-Management-Tasks: Perform basic Conditional Access policy tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Thu, 16 Jul 2026 16:14:09 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-conditional-access-policy-tasks-2f98</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-conditional-access-policy-tasks-2f98</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Modern organizations rely on secure access to cloud applications, but not every sign‑in should be treated equally. Microsoft Entra Conditional Access provides administrators with intelligent controls to decide who can access what, when, and under which conditions.&lt;br&gt;
In this exercise, you’ll learn how to create and configure a simple Conditional Access policy that blocks a specific user from accessing a chosen app — in this case, Sway — and then test the policy using the What If analysis tool. This hands‑on lab demonstrates how Conditional Access strengthens identity protection and enforces compliance without disrupting productivity.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic Conditional Access policy tasks
&lt;/h1&gt;

&lt;p&gt;In this exercise you will learn to create and configure a Conditional Access policy and test its results with the What If analysis tool.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - Review a Conditional Access policy
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2fkhdyokj7kwe4zdinc.png" alt="sture" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2fkhdyokj7kwe4zdinc.png" alt="sture" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Protection submenu and then select Conditional access.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1151ggsxutghl9vwdp3n.png" alt="great" width="799" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Review the information provided on the Conditional Access Overview page.
&lt;strong&gt;Note&lt;/strong&gt; - You can see how many policies you have enabled, and how many users who have logged in recently that are not covered by a policy; along with other details.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F72e4msv68buf26059zi7.png" alt="stelth" width="799" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Select the + Create new policy from the top menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn88oid0l8bu9x1rsgcdk.png" alt="new policy" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;In the Name box enter Block Bhogeswar from using Sway.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzqmtvsmu4w7wc72oh47.png" alt="bogos" width="800" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;In the Assignments section select 0 users and groups selected text.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftt3uz0wub4tp6tb9ka2i.png" alt="group" width="800" height="364"&gt;
&lt;/li&gt;
&lt;li&gt;In the Include section mark the Select users and groups item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc7fu1wconjhb90e1ohc2.png" alt="group" width="800" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;Put a mark in the Users and groups box.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff6n83nrsxvyips8aclnb.png" alt="ree" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;When the list of users and groups opens, select Bhogeswar Kalita from the list.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwgvrglhomc7ux9xcrxzd.png" alt="kalita" width="799" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Select button to add the user.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0s685wwdv6m69olw28fl.png" alt="dear" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select the word Exclude to switch tabs.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq4s6mjsar3eugc6srjdb.png" alt="liure" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Put a mark in the Users and groups box.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyupfm3xswm7ocapngj5o.png" alt="reew" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;When the list of users ang groups opens, select the admin user you are using from the list.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffu54bbym2eub04ju9w2r.png" alt=" " width="800" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Select button to exclude this user.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F824i0sbi6soeh615bh5i.png" alt="reach" width="800" height="362"&gt;
*&lt;em&gt;Lab tip *&lt;/em&gt;- We have added a user for this policy and we have added an exclude for our admin, to make sure they are not accidentally locked out by a policy change.&lt;/li&gt;
&lt;li&gt;Find the section Target resources section.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4atbz6l6ik2ry8mahnfy.png" alt="rrrr" width="800" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;Select the No target resources selected text from this section.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2zrh0k472orykcxqyljb.png" alt="wwwws" width="799" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;Make sure Resources (formerly cloud apps) is chosen in the dropdown.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F533bm17yyku33mr8k9vz.png" alt="sewrd" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;In the section titled Select chose the word None.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqkgtkghyjb6vcjljoilu.png" alt="none" width="799" height="350"&gt;
&lt;/li&gt;
&lt;li&gt;When the resource selection dialog opens, enter Sway into the search bar.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxki7zf870mt5mgw5aoys.png" alt="sway" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Put a check in the box next to Sway then use the Select button to approve the choice.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs0ino4kmctu1qu85y383.png" alt="sway" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Open and review the Network section, but we are not going to use that for this lab.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe786wqjagm4q3ovoqlge.png" alt="network" width="799" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Open and review the Conditions section, but we are not using it for this lab.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvjftol70acsr88oqdhro.png" alt="dadds" width="800" height="352"&gt;
&lt;strong&gt;Lab tip&lt;/strong&gt; - Network and Conditions are powerful options in the Conditional Access policy, but they are not required for this simple policy to block access to an app. You would use them if you wanted to do things like restrict access for user working from a specific location, or block access if a user has show risky behavior. There are many granular options that you can choose from, or even combine together.&lt;/li&gt;
&lt;li&gt;Find the section titled Access controls.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9zyxc70ke5yaulqturpq.png" alt="dree" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Under the word Grant select the text 0 controls selected.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6f05cdrqbmjv44d7z1b.png" alt="imade" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;When the Grant dialog opens, select the Block access item.
Use the Select button to accept the change.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fotnipnkict4iya0bgxxq.png" alt="rewe" width="800" height="383"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Select button to accept the change.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd04j2gw4xa6pe0uh8r2e.png" alt="drea" width="800" height="353"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Lab tip&lt;/strong&gt; - You have not set the values needed to create a simple block access policy to the Sway app for Bhogeswar. In the Access controls section, we could have allowed access with specific conditions like MFA or a domain joined device.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;At the bottom of the Conditional Access interface, find the Enable policy item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fszbcyk98xefdxfzz8ho3.png" alt="dear" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Set the value to On.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr65f3cgcodhu7mllflh0.png" alt="likuh" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Create button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy3aco4tv7980ix3ccxkk.png" alt="select" width="800" height="361"&gt;
*&lt;em&gt;Lab tip *&lt;/em&gt;- You have three options to pick from, and you can change value at any time, without having to change the policy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On = enables the policy to run&lt;br&gt;
Off = turn the policy off in case you need to modify it.&lt;br&gt;
Report-only = use this option to review the outcome of the policy before you fully turn it on.&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; blocked policy is on and there by the access is granted&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxi965g8ziapp3mcboe1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxi965g8ziapp3mcboe1.png" alt="hytfd" width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 2 - Perform a What If analysis for a conditional access policy
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2fkhdyokj7kwe4zdinc.png" alt="sture" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv2fkhdyokj7kwe4zdinc.png" alt="sture" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Protection submenu and then select Conditional access.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj22gvrfp2uag7hvnt83i.png" alt="conditional" width="800" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;From the Conditional access screen select the** What if** option from the top menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fejfbeui37d74eodprl3z.png" alt="what if" width="800" height="364"&gt;
&lt;/li&gt;
&lt;li&gt;In the section User or Workload identity select the text No user or service principal selected.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8uyl9ncodtdtovolg9mt.png" alt="no user" width="799" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Make sure the circle next to User is marked.&lt;/li&gt;
&lt;li&gt;Select the text No user selected.
Note: steps 5,6 and 7, the user in has been preselected and hence option to seclect "No user selected" is not found in my microsoft entra identity dashboard.&lt;/li&gt;
&lt;li&gt;From the Users list, put a mark next to Bhogeswar Kalita, then use the Select button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hm6gakv1r0s3p64ydd5.png" alt="grest" width="799" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;In the Cloud apps, actions, or authentication context, select the text Any cloud app.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm6lmvoa3qqakv1o8rjii.png" alt="cloud app" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;When the Select target type dialog opens, confirm that Cloud apps is chosen in the dropdown.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3x6016qq24supvyiymrg.png" alt="great" width="799" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;+ Select Cloud App
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8hehf1falnjchwmbg87c.png" alt="sway" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Use the search to find the Sway app, then use the Select botton to finalize.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffqraivrkxyp4r8iozq32.png" alt="sweet" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom of the What If tool.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flqpm1ox44o74p2983cue.png" alt="great" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select the button What If.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhgy0fdf2dltifeld99pn.png" alt="htrgad" width="800" height="348"&gt;
*&lt;em&gt;Note *&lt;/em&gt;- the results appear off the bottom of the screen, so you will need to scroll down again.
15.You should see the Block Bhogeswar from using Sway policy listed, and it is blocking access.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7kdno6o9d8lpa3doeoso.png" alt="swap" width="800" height="351"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - Try a different app in the What If analysis
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Scroll back to the top of the What If tool.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F923cdfdlae094ebd0zpm.png" alt=" " width="800" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Cloud apps, actions, or authentication context, select the text 1 app selected.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the elipsis ... next to Sway and choose Remove.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the text None to pick a new app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for Office 365 and choose it from the list, then use the &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0c7wi98tzir38ajohis3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0c7wi98tzir38ajohis3.png" alt="swear" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select button.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4ugahnbyqjv9te7wg0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc4ugahnbyqjv9te7wg0j.png" alt="read" width="799" height="352"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scroll down to the bottom again.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F971zgudyl5jkmlq69u1m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F971zgudyl5jkmlq69u1m.png" alt="gtr" width="799" height="348"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the What If button.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl2dtyo0v27qsinvdj1i2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl2dtyo0v27qsinvdj1i2.png" alt="what if button" width="800" height="352"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; Steps 3 and 4 are not in my account platform, hence I skipped to step 5 and others to continue with the rest of the assignment.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;During this exercise, you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Opened the Microsoft Entra admin center and navigated to Protection → Conditional Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created a new policy named “Block Bhogeswar from using Sway.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Assigned the policy to a specific user (Bhogeswar Kalita) while excluding the admin account to prevent lockout.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Selected Sway as the target resource (cloud app) for the policy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configured Access controls → Grant → Block access to deny sign‑in attempts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enabled the policy and reviewed the three operational modes: On, Off, and Report‑only.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Used the What If analysis tool to simulate sign‑in scenarios and confirm that the policy correctly blocked access to Sway but not to other apps like Office 365.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This workflow, illustrates how Conditional Access evaluates signals such as user identity, app, and context to enforce real‑time access decisions.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Conditional Access is the cornerstone of Zero Trust security in Microsoft Entra ID. By defining precise conditions and controls, administrators can ensure that only trusted users and devices access corporate resources.&lt;br&gt;
The What If tool provides a safe environment to test policies before deployment, helping prevent accidental lockouts and ensuring that access rules behave as intended.&lt;br&gt;
Through this exercise, you’ve seen how a simple policy can effectively block unauthorized access while maintaining flexibility for legitimate users.&lt;/p&gt;

&lt;h1&gt;
  
  
  Takeaway Points
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Conditional Access policies allow fine‑grained control over user access to cloud apps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always exclude admin accounts from restrictive policies to avoid lockouts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Report‑only mode or the What If tool to test policies before enabling them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Combine Access controls with Conditions (location, device, risk) for advanced protection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conditional Access is a key component of a Zero Trust architecture, balancing security and usability.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>conditionalaccess</category>
      <category>accesscontrol</category>
      <category>authentication</category>
      <category>riskbasedaccess</category>
    </item>
    <item>
      <title>Microsoft-Entra-Management-Tasks: Perform basic Self-Service Password Rest (SSPR) tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 15 Jul 2026 13:50:09 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-self-service-password-rest-sspr-tasks-1bd4</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-self-service-password-rest-sspr-tasks-1bd4</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Passwords are the gateway to every digital identity, and managing them securely is critical for any organization. Microsoft Entra ID empowers users with Self‑Service Password Reset (SSPR) — a feature that allows individuals to reset their own passwords without administrative intervention.&lt;br&gt;
This exercise demonstrates how administrators can configure and test SSPR, enabling users to verify their identity through multiple authentication methods such as email, SMS, or security questions. The goal is to reduce help‑desk dependency while maintaining strong security controls.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic Self-Service Password Rest (SSPR) tasks.
&lt;/h1&gt;

&lt;p&gt;In this exercise you will learn where the self-service password reset feature is located in Microsoft Entra and explore the process to configure it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - View the SSPR properties for a specific group.
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkv0vaqmj6xl17syye985.png" alt="grace" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0u6zdp5qmhxqt066tpkd.png" alt="grace" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open Protection submenu and then select Password reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu9dkmavmwr492z66mbp0.png" alt="password reset" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Find the Self service password enabled bar&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What it means&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No users can use the SSPR feature.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Selected&lt;/td&gt;
&lt;td&gt;Only members of the selected group(s) can use SSPR.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All&lt;/td&gt;
&lt;td&gt;All users in the tenant can use the SSPR feature.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwlg1ivefxnts0pbchczd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwlg1ivefxnts0pbchczd.png" alt="set" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set the value to Selected.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foruj5i5jsk5bouiygr1n.png" alt="selected" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select the text No groups selected.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fue5w7a6s6232iq5gdx4t.png" alt="no group" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Mark the Project23 group we created previously.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzgplbx1mmeilxuay0fbu.png" alt="grace" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Select button to complete your choice.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fofra0s1c6i3iy87cidga.png" alt="select" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Save your configuration.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fazqhk7xeiwkzkiz95e8n.png" alt="dase" width="799" height="353"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - View SSPR authentication methods
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Select Authentication methods from the menu within Password reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw32yzh5ujyk23zld36gg.png" alt="tree" width="800" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;Select 1 as the value for Number of methods required to reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff0bevhmhji8evdh5t7ry.png" alt="great" width="799" height="350"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - this value represents how many different ways the user is required to sign-in to the password reset tool, before they are allowed to reset their password. Note that using a password is not an option.
3, Select Email, Mobile phone, and Mobile app code for Methods available to user.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fahs5vqi807m4j43j26qe.png" alt="great" width="799" height="357"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - if you use Security Questions you have to specific the number of questions the user is required to create and answer.&lt;/li&gt;
&lt;li&gt;Use the button at the top to Save your choices.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxq3ay6p4oycroilgxtqc.png" alt="saved" width="799" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;You have added an Authentication method to your self-service password reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv87dahqkbse1p5f9nkhy.png" alt="auth set" width="800" height="356"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 2 - View SSPR registration
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Select Registration from the menu within Password reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvcacl5wo4wnxxq20vvv1.png" alt="real" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Make sure the Required users to register when signing in? value is 
set to Yes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9n2x5lo80t6wwnzx74id.png" alt="wear" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Set the Number of days before users are asked to re-confirm… to 90 days.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5phz5slnlaysgn9kqkr.png" alt="grey" width="800" height="356"&gt;
4.Select Save to save your changes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqkcdttumn0t3eap02rw.png" alt="dist" width="799" height="352"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 3 - View SSPR reset notifications
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Select Notifications from the menu withing Password reset.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ficl2dgz4lf6vszr0x3oe.png" alt="great" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Leave the Notify users on password reset? at the default of Yes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2fmz9r9swy7epcc5mnab.png" alt="trre" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Change the Notify all admins when other admins reset their password? value to Yes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn3u58b8mxyibzq7w8l27.png" alt="skiip" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Save option to save your changes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F04ufh9cdu7kifkovawa8.png" alt="save" width="800" height="355"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In this exercise, you learned how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access the Microsoft Entra admin center and navigate to Authentication methods → Password reset.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure SSPR settings to allow users to reset their passwords securely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up verification options — including email, SMS, and security questions — to confirm user identity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test the password reset workflow, from “Forgot Password?” to successful verification and password creation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand how multi‑factor authentication (MFA) enhances password recovery security.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These steps ensure that users can regain access to their accounts quickly and safely, improving both productivity and security posture.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Implementing Self‑Service Password Reset in Microsoft Entra ID is a simple yet powerful way to strengthen identity management. It reduces administrative overhead, minimizes downtime caused by forgotten passwords, and empowers users to take control of their own credentials.&lt;br&gt;
By combining SSPR with multi‑factor authentication, organizations create a resilient defense against unauthorized access and password‑related attacks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Takeaway Points
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;SSPR enhances user autonomy while maintaining enterprise‑grade security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiple verification methods (email, SMS, security questions) ensure flexible identity validation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MFA integration adds an extra layer of protection during password recovery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Admin configuration in Microsoft Entra ID is straightforward and scalable for any organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Empowering users through SSPR reduces help‑desk workload and improves overall security hygiene.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>microsoftentra</category>
      <category>identitymanagement</category>
      <category>cloudsecurity</category>
      <category>sspr</category>
    </item>
    <item>
      <title>Microsoft-Entra-Management-Tasks: Perform basic Password Protection tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 15 Jul 2026 10:05:01 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-password-protection-tasks-18pc</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-password-protection-tasks-18pc</guid>
      <description>&lt;p&gt;Introduction&lt;br&gt;
Passwords remain the most common method of authentication, but they are also one of the weakest links in security if not properly managed. Microsoft Entra ID provides built-in password protection features that help administrators enforce strong password policies, prevent common attack vectors, and reduce the risk of compromised accounts.&lt;/p&gt;

&lt;p&gt;In this exercise, you’ll explore how to configure smart lockout settings and enforce a custom banned password list. These capabilities allow organizations to automate password strength requirements and defend against brute-force login attempts, ensuring a more secure identity environment.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic Password Protection tasks
&lt;/h1&gt;

&lt;p&gt;In this exercise you will explore the capabilities Microsoft Entra ID offers in protecting your password. You will see how you can automate and enforce a strong password,and use login restrictions to prevent password attacks.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - View lock settings, and review duration and threshold values
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8tz5zyehszrufhthhevg.png" alt="open" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa16yh3cck8puaiboond1.png" alt="open" width="800" height="167"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Protection submenu and then select Authentication methods.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm19y4gg1epf4d263bswx.png" alt="auth" width="800" height="361"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - You could also search on Password protection in the search bar at the top.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Password protection from the list.&lt;br&gt;
Set the Custom smart lockout with the following values.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdaldezkkhe3lfjli0opi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdaldezkkhe3lfjli0opi.png" alt="pwd" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set the Custom smart lockout with the following values.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lockout threshold&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Number of failed login attempts allowed before the account is locked.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lockout duration&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;Duration (in seconds) that the account remains locked once the threshold is reached.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; - You can also configure a custom banned password list here.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxsfj4iu59px9ghi9topq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxsfj4iu59px9ghi9topq.png" alt="set2" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set Enforce custom list to Yes.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1o4u9n2jc67woviv6gdv.png" alt="set" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the following values:&lt;/li&gt;
&lt;li&gt;Contoso&lt;/li&gt;
&lt;li&gt;London&lt;/li&gt;
&lt;li&gt;Widget
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5ccmjh38otvve92mazq.png" alt="london" width="799" height="352"&gt;
&lt;strong&gt;Lab Tip&lt;/strong&gt; - Your lab is being performed for a company called Contoso, located in London, and it makes Widgets. By enter these three words you block them from being part or a whole of a password.&lt;/li&gt;
&lt;li&gt;Set the value for Mode to Enforced.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1dbhnzg5v2i0leigzgn2.png" alt="smp" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Save item at the top of the screen.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmcarci7wadq92xyk4iy.png" alt="smty" width="799" height="359"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;This exercise demonstrated how to:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access the Authentication methods → Password protection settings in Microsoft Entra.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure Custom smart lockout with a threshold of 5 failed attempts and a lockout duration of 30 seconds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a custom banned password list (e.g., “Contoso,” “London,” “Widget”) to block weak or predictable passwords.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set the Mode to “Enforced” so that these rules are actively applied to all users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By applying these configurations, administrators can strengthen password policies and reduce exposure to password-based attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Strong password protection is a cornerstone of identity security. With Microsoft Entra ID, administrators can go beyond basic complexity rules by implementing smart lockout policies and custom banned password lists. These measures ensure that users cannot rely on weak, predictable passwords and that repeated failed login attempts are automatically mitigated.&lt;/p&gt;

&lt;p&gt;This exercise highlights how simple configuration changes can significantly improve organizational security posture, making password attacks far less effective.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Takeaway Points&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Smart lockout automatically protects accounts from brute-force attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Custom banned password lists prevent the use of predictable or company-related terms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting the Mode to Enforced ensures policies are applied consistently across the tenant.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even small adjustments in password policy can have a big impact on security resilience.&lt;/p&gt;

</description>
      <category>microsoftentra</category>
      <category>authentication</category>
      <category>bannedpasswords</category>
      <category>enterprisesecurity</category>
    </item>
    <item>
      <title>Microsoft-Entra-Management-Tasks: Perform basic Group Management tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 15 Jul 2026 08:37:20 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-group-management-tasks-aee</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-tasks-perform-basic-group-management-tasks-aee</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;In modern cloud environments, Microsoft Entra plays a crucial role in managing identity and access across organizations. Understanding how to perform basic group management tasks is an essential skill for any aspiring cloud engineer. This exercise introduces you to the foundational operations in Microsoft Entra — creating groups, assigning members, managing access, and linking licenses — all of which mirror real-world administrative tasks in enterprise settings.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic Group Management tasks
&lt;/h1&gt;

&lt;p&gt;In this exercise you will explore the beginner level tasks associated with creating and using groups. You make a new group and assign members and set some basic access levels.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - Create a Microsoft 365 group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9yqc6zd4d2kbg90wnd8.png" alt="365 group" width="800" height="433"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcyhfo1d9cx9kuevj9mnk.png" alt="tenant" width="800" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Groups and then All groups.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmf1debm9c5i7e2sz09mb.png" alt="all groups" width="799" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select New group option.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fko1pm0a4x57g014t9wju.png" alt="new group" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the requested information:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Microsoft 365&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Project23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;This group consists of members of the new AI Simulation software with codename Project23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Membership type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Assigned&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8wlkdr00aopbwcg2kolx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8wlkdr00aopbwcg2kolx.png" alt="microsoft 365" width="799" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under the Members heading, select No member selected.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F54t3x6e7ue7bjb2zi13y.png" alt="no member" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Add Bhogeswar Kalita, by marking the box and choosing the Select button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9c04mytqyj5uhgiqdt4l.png" alt="kalita" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Create button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Forxoakd9017jx2a2z3qf.png" alt="kalita" width="800" height="353"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 2 - Create a Security group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frmf13fyy6oiii0urjcpq.png" alt="entral admin" width="800" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F99nr7wbs0c8tnacavvt6.png" alt="credentials" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Groups and then All groups.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjb5omdhef07svhrokx0y.png" alt="all group" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Select New group option.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsxqwvm0mgag2jnnnbmfy.png" alt="new group" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the requested information:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Guest Users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Group description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;This group has all the Guest users currently in the tenant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Membership type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Dynamic User&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjl78jkv1l85pyc8eggw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjl78jkv1l85pyc8eggw.png" alt="tenant" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under the Dynamic user members** heading, select &lt;strong&gt;Add dynamic query&lt;/strong&gt;.
**
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhzm5uqfrta3yn8yen9a1.png" alt="dynamic" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Create a dynamic query with the following values:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Field&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Property&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;userType&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Equals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Value&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Guest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dtv4og20yu6lrot2qir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8dtv4og20yu6lrot2qir.png" alt="equals" width="799" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the Save item from the top of the page.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgptuto198dbsrgb1h5u0.png" alt="safe" width="799" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Create button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq934z3ba6t9ppft1er79.png" alt="create" width="799" height="357"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - It will take up to 2 minutes for the group to be populate.&lt;/li&gt;
&lt;li&gt;From the Groups select the Refresh item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmkf8u4v1zo3j9ru1f8o5.png" alt="group" width="799" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Guest Users group we just created.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fglgnvzixx16nknafuif7.png" alt="guest user" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select Members.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa1iwc3foh2xkf824fslp.png" alt="member" width="800" height="356"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 3 - Add an existing user to a new group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnjfmdfiy8kzfnvssbgq8.png" alt="add" width="800" height="433"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fisgckxki5e9uqgsn16k2.png" alt="credential" width="800" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Groups and then All groups.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe62kdaja0qelzuqga51a.png" alt="group" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Project23 group we created in Task 1.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fstp6yynmus78n4fax4ea.png" alt="project23" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Members option from the menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft4t9cy7qb5ukhz30qqq7.png" alt="select" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Select + Add members from the menu near the top.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv9k0h8wtzkm94po6vvv4.png" alt="add member" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Mark the box next to External User and use the Select button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1j7nqwjj2mzi93js0ypu.png" alt="external user" width="800" height="356"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - Alternative method to add an existing user to a new group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Users menu, then select All users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuvdl2qh5c9enrgnzkm5b.png" alt="user" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Find and select External User from the list.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxu6eefdl6dam9xuoenq2.png" alt="external" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Groups item from the menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3b78e4z2ie4vtye153n9.png" alt="group item" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select the option to + Add memberships.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg7m1gc01qjfm00uo6e6d.png" alt="add membership" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Mark an existing group and use the Select button to add them.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9hdr9sf4venj24dpy7t.png" alt="exixting groupscription" width="799" height="354"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 4 - Add licenses and owners to a group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5b9iy1bbkw2kqdo997ec.png" alt="tree" width="800" height="433"&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj482fbfdkhcp82zkrzj8.png" alt="tree" width="800" height="359"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select Groups and then All groups.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs9j0aw31tgrk2b6k8kgq.png" alt="five" width="799" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Project23 group we created in Task 1.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmvfeentfrynfv6yqrahp.png" alt="project23" width="799" height="362"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the Owners option from the menu.
&lt;strong&gt;Note&lt;/strong&gt; - Your tenant administrator will automatically be added as the owner of a group, if no owner is specified.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fww8imjeuswxp2c6f79gy.png" alt="ower" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Select the + Add owners menu item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwl2zg43pr6cq6d3z47xi.png" alt="add owner" width="799" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Mark the box next to Bhogeswar and use the Select button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvyzsxfwsezy9iaj8lr8t.png" alt="selection button" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Notice the new owner has been added to the group.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqxsqlgurhdbvsq8pczjw.png" alt="owner" width="799" height="354"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - Adding a license to a group
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open a new tab in your browser.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs1pduf3pkpfbb9ubyjyd.png" alt="new tab" width="800" height="398"&gt;
&lt;/li&gt;
&lt;li&gt;Connect to Microsoft 365 admin center at &lt;a href="https://admin.microsoft.com" rel="noopener noreferrer"&gt;https://admin.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcvf8ilde90cqhz5e6w3q.png" alt="billing" width="800" height="410"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Billing section and select Licenses.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm19ixkzwnwcq8awcsd35.png" alt="lisences" width="799" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Microsoft Power Automate Free license.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fan1m4tvkm20oesspimsl.png" alt="power automate" width="800" height="378"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the Groups tab from the newly opened screen.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F19wj82hkz06z3ssjh5ke.png" alt="power auth" width="799" height="346"&gt;
&lt;/li&gt;
&lt;li&gt;Select the + Assign licenses item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv1hsogvlz4sufzddppdy.png" alt="assign" width="800" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Use the dropdown on the right side of the screen to select the Project23 group created earlier.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fquk6ggejb7wj1hr4d1b0.png" alt="select" width="800" height="383"&gt;
&lt;/li&gt;
&lt;li&gt;Use the Assign button at the bottom of the screen.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frb9zv375lwxr34ec6lic.png" alt="assign" width="800" height="375"&gt;
&lt;/li&gt;
&lt;li&gt;Close the You assigned licenses… notification.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm2ki4ui2sd8vqtfl9vyy.png" alt="close" width="800" height="351"&gt;
# Note: In carrying out the assignment of microsoft power automate free, I used my mentor's microsoft 365 account to assign this license to the Project group 233. The assignment was un-successful due to the pre-assignment done by the account holder.&lt;/li&gt;
&lt;li&gt;Use the Refresh button to see the added group licenses.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnzjdxuygvxzwgiw36t9r.png" alt=" " width="800" height="348"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;This exercise demonstrated how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Microsoft 365 group for collaboration.&lt;/li&gt;
&lt;li&gt;Create a Security group with a dynamic membership rule.&lt;/li&gt;
&lt;li&gt;Add existing users to groups using multiple methods.&lt;/li&gt;
&lt;li&gt;Assign owners and licenses to groups.
These are the building blocks of group management in Microsoft Entra and Microsoft 365.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Group management is central to identity governance. By mastering these tasks, administrators can ensure that users are properly organized, permissions are consistently applied, and resources are securely managed. This exercise highlights how assigned membership and dynamic rules complement each other in different scenarios.&lt;/p&gt;

</description>
      <category>groupmanagement</category>
      <category>identitymanagement</category>
      <category>accesscontrol</category>
      <category>azureactivedirectory</category>
    </item>
    <item>
      <title>“From Code to Cloud: Building and Shipping a Simple Node.js App with Docker and GitHub”</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Mon, 13 Jul 2026 14:01:30 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/from-code-to-cloud-building-and-shipping-a-simple-nodejs-app-with-docker-and-github-6a</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/from-code-to-cloud-building-and-shipping-a-simple-nodejs-app-with-docker-and-github-6a</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;In the world of DevOps, the ability to package applications into containers and manage them with version control is a fundamental skill. This guide walks you through creating a minimal Node.js app, containerizing it with Docker, and pushing it to GitHub for collaboration and backup.&lt;/p&gt;

&lt;p&gt;By following these steps, you’ll not only learn how to build and run containers but also understand how version control ties into modern cloud workflows. This exercise emphasizes operational excellence, reliability, and performance efficiency — three pillars of cloud-native engineering.&lt;/p&gt;

&lt;h1&gt;
  
  
  Create Folder
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Implementation Guide 1
&lt;/h1&gt;

&lt;p&gt;Create Folder&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Creates a dedicated working directory for the lab and moves your shell into it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Keeps the app and Dockerfile isolated from other files on the machine so the build context stays clean.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Setting up a clean workspace before you start.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To create a folder named "Container-Lab", run this command &lt;strong&gt;"mkdir -p ~\container-lab &amp;amp;&amp;amp; cd ~\container-lab"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffaoh535dar3h3rinygfd.png" alt="container lab" width="800" height="404"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Create app.js
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Implementation Guide 1
&lt;/h1&gt;

&lt;p&gt;Create app.js: Create app.js using touch and write the Node.js console log statement&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Creates the Node.js source file that the container will run.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;This is the application code your Dockerfile will package into the image.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Performance Efficiency — Shipping the smallest possible app for the container.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To create app.js, run this command &lt;strong&gt;"touch app.js &amp;amp;&amp;amp; echo 'console.log("Hello, DevOps!");' &amp;gt; app.js"&lt;/strong&gt;
Note: The first part of the command, &lt;strong&gt;"touch app.js"&lt;/strong&gt; means to create an app known as &lt;strong&gt;app.js&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d1txh2lp1cgztddsjl7.png" alt="app.js" width="799" height="417"&gt;
While the second part of the command, &lt;strong&gt;echo 'console.log("Hello, DevOps!");' &amp;gt; app.js&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fizh3qbf3o7rn4k8end0q.png" alt="app.js" width="799" height="414"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide 1
&lt;/h1&gt;

&lt;p&gt;Create Dockerfile&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Writes the build recipe Docker uses to package your app: base image, files to copy in, and the startup command.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Without a Dockerfile, Docker has no instructions for turning your source code into a runnable image.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Reproducible builds defined as code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The two commands are in existence. The first command is to create a Dockerfile which &lt;strong&gt;"touch Dockerfile "&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuk27v36wga1c9fm1l8hq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuk27v36wga1c9fm1l8hq.png" alt="dockerfile" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;while the second command prints into the dockerfile created &lt;strong&gt;"echo -e 'FROM node:18-alpine\nCOPY app.js .\nCMD ["node","app.js"]' &amp;gt; Dockerfile"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faoadcqzkfw9l41u6wbtb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faoadcqzkfw9l41u6wbtb.png" alt="dockerfile" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Build Image&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Reads the Dockerfile and builds a portable, versioned image containing your app and its runtime.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;The image is the artifact that actually gets shipped and run anywhere Docker is installed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Reliability — A versioned image guarantees the same app runs identically everywhere.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In other to  Build a Docker image from the Dockerfile in the current directory, run this Command "docker build -t simple-container-lab:1.0 ."
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc0h5lvenbyv6y12w8xzr.png" alt="dockerimage" width="799" height="177"&gt;
# Note: Ensure you run your docker engine before running this docker image buiding command "docker build -t simple-container-lab:1.0 ." to avoide error notification on your IDE
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuuj8chcq0q24y24bihbj.png" alt="docker image" width="800" height="386"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Run Container&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Starts a container from the image you just built and removes it automatically when it exits.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Confirms the image actually runs your app correctly before you ship it anywhere.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Verify before you trust a build.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To create and start a new container from the specified image, &lt;strong&gt;"docker run --rm simple-container-lab:1.0"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F13memh5xnqztgfm1s5qz.png" alt="container" width="799" height="385"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;p&gt;1 Initialize Git&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Creates a local .git directory so version control can start tracking your project.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Without a repository, Git has nothing to track changes against.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Version control is the foundation of every DevOps workflow.&lt;br&gt;
-To nitialize a new Git repository in the current directory, run this command &lt;strong&gt;"git init"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgb0ruasfxd3b0b9j0kvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgb0ruasfxd3b0b9j0kvw.png" alt="git init" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;p&gt;1 Stage Files&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Marks the project files as ready to be included in the next commit.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Git only commits what has been staged — this moves files from the working directory into the staging area.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Deliberate, reviewable changesets.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To know the files that are not staged, run this command "git status"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft5i7j7c63zpvcqxk7ali.png" alt="git status" width="800" height="423"&gt;
-To stage all changed files for the next commit, run this command &lt;strong&gt;"git add ."
**
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7enc8mdvcb1wwn3eqw7q.png" alt="git add" width="800" height="292"&gt;
**Note&lt;/strong&gt;: In other to view Staged file, re run this command "git status"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmio0lrp7114gcltzvvoa.png" alt="status" width="800" height="292"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Commit Files&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Saves the staged files as a permanent, named snapshot in your repository's history.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Commits are the checkpoints you can always return to, diff against, or roll back.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Reliability — A clear history makes recovery and audits possible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run *&lt;em&gt;git commit -m 'feat: first container' 
*&lt;/em&gt; to create a new commit with all staged changes and the message after -m.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjlj8bbk93k83p4j745hb.png" alt="git commit" width="800" height="413"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Set GitHub Username&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Stores your GitHub username in a shell variable.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Lets the next command build the correct remote URL without you retyping your username.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Reusable, less error-prone commands.&lt;br&gt;
-To Set the shell variable GITHUB_USERNAME so later commands can reference it with $GITHUB_USERNAME. Run this command "GITHUB_USERNAME="BAOKONCEPTS"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4ahwtmw9lfr3zmemrhk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh4ahwtmw9lfr3zmemrhk.png" alt="BAOKONCEPTS" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Implementation Guide&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add Remote&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instruction Summary&lt;br&gt;
Links your local repository to a repository on GitHub named "origin".&lt;/p&gt;

&lt;p&gt;Why It's Needed&lt;br&gt;
Without a remote, there is nowhere for your local commits to be pushed to.&lt;/p&gt;

&lt;p&gt;Pillar Connection&lt;br&gt;
Operational Excellence — Connecting local work to a shared, backed-up remote.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tO Stage the specified file(s) for the next commit, "git remote add origin &lt;a href="https://github.com/$%7BGITHUB_USERNAME%7D/simple-container-lab.git" rel="noopener noreferrer"&gt;https://github.com/${GITHUB_USERNAME}/simple-container-lab.git&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8m72k4epyh9dx1hqojks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8m72k4epyh9dx1hqojks.png" alt="GIT ADD" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Rename Branch&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Renames the current branch to "main".&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;Matches the default branch name GitHub expects for new repositories, avoiding a push error.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Operational Excellence — Consistent naming conventions across your team.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To rename the default branch to main, run this command "git branch -M main"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frlyw8311o7lzod8bqhh5.png" alt="git branch -M main" width="799" height="423"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;p&gt;1 Push to GitHub&lt;/p&gt;

&lt;h1&gt;
  
  
  Instruction Summary
&lt;/h1&gt;

&lt;p&gt;Uploads your commits to the "origin" remote and sets "main" to track it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why It's Needed
&lt;/h1&gt;

&lt;p&gt;This is what actually gets your work onto GitHub and sets up future pushes/pulls to sync automatically.&lt;/p&gt;

&lt;h1&gt;
  
  
  Pillar Connection
&lt;/h1&gt;

&lt;p&gt;Reliability — Your work is now backed up and shareable outside your local machine.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To Upload your local commits to the remote repository, run this command &lt;strong&gt;"git push -u origin main"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzdx7d7e5hbzhtn70o71b.png" alt="git push" width="799" height="171"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;This hands-on lab covered the following stages;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a clean project folder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Writing a minimal Node.js app (app.js).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Defining a Dockerfile for reproducible builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Building and running a Docker image.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initializing Git and staging files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Linking to GitHub, renaming the branch, and pushing code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these steps demonstrate the end-to-end DevOps lifecycle starting from writing code to shipping it in a container and backing it up in a shared repository.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;By completing this workflow, you’ve learned how to;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create and run a Node.js app inside a Docker container.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Dockerfiles to define reproducible builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply Git version control to track and manage changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Push your project to GitHub for collaboration and reliability.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This exercise demonstrates the core practices of DevOps: automation, reproducibility, and collaboration.&lt;/p&gt;

&lt;h1&gt;
  
  
  Key takeaways from this hands-on lab;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Containers make applications portable and consistent across environments.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;-Dockerfiles are the blueprint for reproducible builds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git ensures deliberate, reviewable changes and collaboration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GitHub integration connects local work to a shared, backed-up remote.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Practicing all steps as detailed in this article, builds confidence in cloud-native workflows and prepares you for real-world DevOps tasks.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>containers</category>
    </item>
    <item>
      <title>Microsoft-Entra-Management-Task: Perform basic User Management tasks</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:38:59 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-task-perform-basic-user-management-tasks-1pm6</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/microsoft-entra-management-task-perform-basic-user-management-tasks-1pm6</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Welcome to your first step into cloud identity management! In modern IT architecture, an organization's security boundary begins with identity. This hands-on lab introduces you to the core responsibilities of an Identity and Access Administrator. Over the next 10 minutes, you will gain practical experience in Microsoft Entra ID by executing five essential user management workflows—ranging from provisioning single and bulk user accounts to assigning operational roles, licenses, and collaborating with external partners.&lt;/p&gt;

&lt;h1&gt;
  
  
  Exercise - Perform basic User Management tasks
&lt;/h1&gt;

&lt;p&gt;In this exercise you will explore the beginner tasks of an Identity and Access administrator by creating and managing a user in Microsoft Entra ID. There are five common activities you will perform in your lab from creating a new user to assigning them roles and licenses.&lt;/p&gt;

&lt;h1&gt;
  
  
  Task 1 - Create a new user
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ev3ltxpfq7dp5zsj35u.png" alt="tenant" width="800" height="361"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, select &lt;strong&gt;User&lt;/strong&gt; and then &lt;strong&gt;All users&lt;/strong&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fenq6q5un6ludhryzhi99.png" alt="all users" width="799" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Select + New user and then pick the Create new user option
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmf1y2jpigxj3wgznxdwd.png" alt="select" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the requested information:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;| Field | Value |&lt;/p&gt;

&lt;p&gt;| :--- | :--- |&lt;/p&gt;

&lt;p&gt;| User principal name | BhogeswarK |&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Leave the Mail nickname as is.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx5jji975eserw3khtuo2.png" alt="nickname" width="800" height="453"&gt;
&lt;/li&gt;
&lt;li&gt;Make a copy of the Password (auto-generated) and store it in Notepad. You will need it later.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0dq5353gam6g33ogog6o.png" alt="make shift" width="800" height="405"&gt;
&lt;/li&gt;
&lt;li&gt;Leave Accounted enabled checked.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq607osx80jztw8nn1vf1.png" alt="account enable" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Properties tab.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz45tz0woowthgs4zti1u.png" alt="properties" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Set the values for first and last name:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;First name&lt;/td&gt;
&lt;td&gt;Bhogeswar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Last name&lt;/td&gt;
&lt;td&gt;Kalita&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1i4002kf66cm3qrw22dx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1i4002kf66cm3qrw22dx.png" alt="first name" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Note that you can set the User type to Member. If you pick Guest, it will restrict the users capabilities.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4g93gbfbtwo0lmwjin7w.png" alt="member" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom of the page.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7zsmooo75g9krgn5eezl.png" alt="scroll" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Set the Usage location to United States or to whatever region you are in.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdfwtv1y0syvnbj7es58f.png" alt="united state" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the Review + create button.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kii8qh6g7ur6t85ueb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6kii8qh6g7ur6t85ueb7.png" alt="review" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Create.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgfzyefbru6sxym1hbznd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgfzyefbru6sxym1hbznd.png" alt="create" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - Log in to confirm user
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open an InPrivate browsing window.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftwqwoun52elq8rroc0ia.png" alt="inprivate" width="799" height="426"&gt;
&lt;/li&gt;
&lt;li&gt;Connect to the Microsoft Entra admin center at the link &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;
Voya457374
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F439vpbrbv08mnye1mp2m.png" alt="password" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the username and password you just created.
| Field | Value |
| :--- | :--- |
| Username | BhogeswarK@your tenant name.onmicrosoft.com |
| Password | Auto generated password you saved |&lt;/li&gt;
&lt;li&gt;If prompted follow the on-screen instructions to complete MFA setup.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdpnq9i7gh2gwb0ih8x2n.png" alt="mfa" width="800" height="381"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F740stn1greylr9bs0ss3.png" alt="mfa" width="800" height="371"&gt;
&lt;/li&gt;
&lt;li&gt;Feel free to explore the Microsoft Entra admin center for a minute
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5aehapu2eroij004onk.png" alt="entralid" width="799" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Close the InPrivate browsing window.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwyqo3fizvquo5opw7cwo.png" alt="close inprivate" width="800" height="422"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 2 - Add a license to the user
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Open a new tab in your browser.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3cipe2lzlwq8tj5w42fk.png" alt="browser" width="800" height="413"&gt;
&lt;/li&gt;
&lt;li&gt;Connect to the Microsoft 365 admin center at https//:admin.microsoft.com.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbmzc2ird7pyhrz47a0wv.png" alt="microsoft 365" width="800" height="378"&gt;
&lt;/li&gt;
&lt;li&gt;If prompted, log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn7sa6zfvgw02byjetssw.png" alt="credentials" width="800" height="376"&gt;
&lt;/li&gt;
&lt;li&gt;Find the menu on the left side of the screen.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvr66ck597kdwuyrcsx5q.png" alt="left side" width="800" height="382"&gt;
&lt;/li&gt;
&lt;li&gt;Open the Billing item in the menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fabz6z3oziyqwyxom0nbh.png" alt="Billing" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Select Licenses from the list.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9xrfi542bvs3r9304waa.png" alt="licenses" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;When the list of licenses appears, select Microsoft Power Automate Free
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa52r9mt50y6g4o4o4ivo.png" alt="power ato free" width="800" height="379"&gt;
&lt;/li&gt;
&lt;li&gt;Select the + Assign licenses item.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1q40ezrbiy1bjjfrb05x.png" alt="assign licenses" width="799" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Choose Brogeswar from the list (user created in previous task).
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwmnpyidc7kuqgt6np8o0.png" alt="brogeswar" width="800" height="348"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Assign button at the bottom of the page.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknecs7bx681erms4uq2d.png" alt="assign" width="800" height="352"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 3 - Invite an external user to your tenant
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;If not already open - Open a browser and connect to the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fes0fzhoqv0b5amqng0et.png" alt="entra admin center" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Identity menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe3y07pl9utzqe10o3l0d.png" alt="admin" width="800" height="371"&gt;
&lt;/li&gt;
&lt;li&gt;From the menu on the left, open the Identity menu.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5ys2ahddo7c3uo9g43v0.png" alt="all users" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;At the top of the page select + New User.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsg72j1znqhcar8klm18g.png" alt="new user" width="800" height="347"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the option to Invite external user from the dropdown.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9wifcziajtabixz8gft.png" alt="external user" width="799" height="377"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the information for your new external user:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Email&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="mailto:ExtUser@testemail.com"&gt;ExtUser@testemail.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Display Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;External User&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Message&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Thank you for joining the company for this short work project. We look forward to building this project together.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndg3thm2a2b2io0qrr6p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fndg3thm2a2b2io0qrr6p.png" alt="image" width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the** Review + Create** button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhe0b1tu2k03d6bjhxpc1.png" alt="review" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Select Create.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fah6eurwaezg7rmbcc6hd.png" alt="guest" width="800" height="346"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 4 - Assign a role to a user
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;If not already open - Open a browser and connect to the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx2gj4iuk0i2hs3xnv1ye.png" alt="admin" width="799" height="373"&gt;
&lt;/li&gt;
&lt;li&gt;If prompted, log in using the credentials for your tenant.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft1fz0hts2m63pc0entds.png" alt="admin" width="800" height="408"&gt;
&lt;/li&gt;
&lt;li&gt;In the left menu find the Identity section. Open it if not already opened.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7r2lft7hcuqza7540azl.png" alt="Identity" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select Users then select All users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxco05jobov9zdg69ljwd.png" alt="sellect all" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the user Bhogeswar Kalita create in the earlier task.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcbjxtebed0e76b20ajm6.png" alt="Bhogeswar" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;From the newly opened menu select Assigned roles.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvpmlu5s5i9uzqr6hjiq6.png" alt="assign roles" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;At the top of the screen select + Add assignment.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fejreoewccvr3ag5agtyq.png" alt="add assinmenty" width="799" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;From the Select role dropdown menu chose the role Attribute Definition Reader.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Febs2n01syiwd7pz3uf5u.png" alt="role attribute" width="799" height="353"&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl95py0z4xec1dykvixmx.png" alt="destribution" width="799" height="360"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Next button when it becomes available
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw7sgrkopwjuvqqdiwgk4.png" alt="next" width="799" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the option Eligible for Assignment type.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxnxnpw852s43r3kzytyn.png" alt="eligible" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;Select Assign.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Subtask 1 - Alternate method to assign a role to a user
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Look at the Identity menu section on the left side of the screen.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F60iyzcvnfwpdirpxxk2b.png" alt="identity" width="799" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Show more option to see the full Identity menu.&lt;/li&gt;
&lt;li&gt;From the list of items in the Identity menu, expand the Roles &amp;amp; admins section.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7b9tknbg9x6ew8z7c3up.png" alt="admin" width="800" height="351"&gt;
&lt;/li&gt;
&lt;li&gt;Select Roles &amp;amp; admins.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqi1i85ehzibmz18kjg9y.png" alt="role and admin" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select Attribute Log Reader from the list of roles.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fou86q6h4ob3lu948eonq.png" alt="attribute" width="800" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;From the top of the screen select + Add assignment.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2wj128qnel0xe9e69z8v.png" alt="add assignment" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;From the Select member(s) select the No member selected text.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpio4n822uulxxcce9eel.png" alt="no member" width="800" height="358"&gt;
&lt;/li&gt;
&lt;li&gt;From the list of user choose Bhogeswar Kalita.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2rarjneq2e9denx33acd.png" alt="kalita" width="800" height="356"&gt;
&lt;/li&gt;
&lt;li&gt;Choose the Select button at the bottom.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzbku63azdttbm0riov9w.png" alt="select" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Select the Next button.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4yy70tlc0sucv9j8lvih.png" alt="next" width="799" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;On the Add assignments page choose Active for the Assignment type.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe4vfhsp6tycdyx81jkit.png" alt="assignment" width="800" height="357"&gt;
&lt;/li&gt;
&lt;li&gt;Note that you have to enter a justification for this role / user assignment.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8xrzcsytavmtrywcv1pr.png" alt="justification role" width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Enter the justification User will be working as an Attribute log reader as their primary job. into the box.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyw3hsaqladeovnop9d2u.png" alt="justification role" width="799" height="353"&gt;
&lt;/li&gt;
&lt;li&gt;Select Assign.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymr7si65jpbzwx3uyqvf.png" alt="assign" width="800" height="354"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Task 5 - Bulk import users
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;If not already open - Open a browser and connect to the Microsoft Entra admin center at &lt;a href="https://entra.microsoft.com" rel="noopener noreferrer"&gt;https://entra.microsoft.com&lt;/a&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe91o4hsyh77d8fgry2ps.png" alt="admin" width="800" height="450"&gt;
&lt;/li&gt;
&lt;li&gt;If prompted, log in using the credentials for your tenant
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxljmz40fqgi85q4dhas7.png" alt="credential" width="800" height="363"&gt;
&lt;/li&gt;
&lt;li&gt;From the Identity menu, select Users and then select All users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fczo1hsagbq8p5l7lvm9j.png" alt="all users" width="800" height="354"&gt;
&lt;/li&gt;
&lt;li&gt;From the top of the page, select the Bulk operations drop-down arrow and then select Bulk create.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fviiybwi81bdpwh7wbb53.png" alt="bulk create" width="800" height="358"&gt;
&lt;strong&gt;Note&lt;/strong&gt; - Selecting Bulk create will open a new tile. This tile provides a Download link to a template file that you will edit to populate with your user information and upload to add the bulk creation of users.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Download&lt;/strong&gt; to see a sample bulk user CSV file
&lt;strong&gt;Note **- The .csv template provides you with the fields included with the user profile. This includes the required username, display name, and initial password. You can also complete optional fields, such as Department and Usage location, at this time. You do not need to fill out all the fields.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr5ht0u6vxyloib32b4nq.png" alt="csv file" width="800" height="354"&gt;
**Lab Tip&lt;/strong&gt; - A sample CSV has been provided in the Allfiles/Lab1 folder – APL0501-BulkUser.csv.&lt;/li&gt;
&lt;li&gt;Open Notepad.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft6nyl1kv1amh3z0do8ct.png" alt="notepad" width="800" height="350"&gt;
&lt;/li&gt;
&lt;li&gt;Open the SC300BulkUser.csv file.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwcouu96eyd8hy46828sd.png" alt="bulk file" width="800" height="398"&gt;
&lt;/li&gt;
&lt;li&gt;Search and replace the existing value &lt;strong&gt;«&amp;gt;&amp;gt;&lt;/strong&gt; with &lt;strong&gt;Your actual domain name&lt;/strong&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbv0d85sva49c4y23cap1.png" alt="replace" width="800" height="370"&gt;
&lt;/li&gt;
&lt;li&gt;Save the file.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fscamcddwrgt3xvjhzcg5.png" alt="save" width="800" height="425"&gt;
&lt;/li&gt;
&lt;li&gt;On the Bulk create users dialog, select the file folder icon on step 3.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4mr1zgfvpt2c364pm047.png" alt="bulk create" width="800" height="352"&gt;
&lt;/li&gt;
&lt;li&gt;Path to the Allfiles/Lab1 folder and select APL0501-BulkUser.csv file.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fau6gk4cozcujgv1d4jhx.png" alt="path" width="800" height="419"&gt;
&lt;/li&gt;
&lt;li&gt;Select Open.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2nhachp954x81ksps00.png" alt="select open" width="799" height="532"&gt;
&lt;/li&gt;
&lt;li&gt;Wait for the notification that the file uploaded successfully. Select the Submit button to add the users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fukot34cmu1bb5a1cft9d.png" alt="users" width="800" height="395"&gt;
*&lt;em&gt;Note *&lt;/em&gt;- After the users have been created, you will be prompted that the creation has succeeded.&lt;/li&gt;
&lt;li&gt;Close the Bulk create users dialog.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fue1g661336dzmfn50fcd.png" alt=" " width="800" height="355"&gt;
&lt;/li&gt;
&lt;li&gt;Check the list of users to see your bulk created users.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhckqrt3yzebtoznjc8k8.png" alt="users" width="799" height="360"&gt;
Modern Cloud Engineering relies heavily on the principle of Least Privilege and secure identity management. This hands-on technical exercise demonstrated the foundational lifecycle of identity and access management (IAM) within Microsoft Entra ID and the Microsoft 365 Admin Center.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  SUMMARY
&lt;/h1&gt;

&lt;p&gt;The lab successfully walked through the five core pillars of user administration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Identity Provisioning: Creating a standard internal user cloud identity &lt;strong&gt;(Bhogeswar Kalita)&lt;/strong&gt; and verifying authentication pipelines via isolated active sessions (InPrivate browsing).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource &amp;amp; License Lifecycle: Assigning SaaS capabilities (Microsoft Power Automate Free) to a user entity via central billing allocation frameworks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;B2B Collaboration: Operationalizing business-to-business workflows by safely inviting external guest identities &lt;strong&gt;(&lt;a href="mailto:ExtUser@testemail.com"&gt;ExtUser@testemail.com&lt;/a&gt;)&lt;/strong&gt; into a secure tenant space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Role-Based Access Control (RBAC): Implementing sophisticated authorization boundaries by assigning targeted roles &lt;strong&gt;(Attribute Definition Reader and Attribute Log Reader)&lt;/strong&gt; using both Eligible and Active assignment types—complete with strict auditing justification.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automation &amp;amp; Scalability: Utilizing standardized structural templates (.csv) to execute bulk identity provisioning operations efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Key Takeaways for Aspiring Cloud Engineers
&lt;/h1&gt;

&lt;p&gt;If you are charting your path toward becoming a successful Cloud or DevOps Engineer, this exercise holds crucial architectural lessons that stretch far beyond just clicking buttons in a portal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Identity is the New Perimeter: In the cloud, traditional network perimeters (like firewalls) are no longer enough. Identity is your first and strongest line of defense. Mastering Microsoft Entra ID (or AWS IAM / Google Cloud IAM) is an absolute non-negotiable skill for any modern cloud professional.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embrace Just-In-Time (JIT) &amp;amp; PIM Mentality: Task 4 highlighted the difference between Eligible and Active assignments. As a cloud engineer, you should rarely give someone permanent global access. Understanding how to configure temporary, auditable, and justifiable access is what separates junior admins from elite cloud architects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Think in Scale (Automate Everything): While creating a single user manually (Task 1) teaches you the fundamentals, Task 5 (Bulk Import) teaches you how production environments actually work. Always look for ways to abstract manual workflows into CSVs, scripts (PowerShell/CLI), or Infrastructure as Code (Terraform/Bicep).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure Multi-Tenant Boundaries: Cloud ecosystems are interconnected. Learning how to properly invite, restrict, and manage B2B guest accounts ensures that external collaboration does not accidentally open backdoors into your organization's sensitive data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Mastering the cloud begins with mastering the user. This exercise seamlessly bridges the gap between theoretical identity governance and the practical realities of infrastructure management.&lt;/p&gt;

&lt;p&gt;By understanding how identities are provisioned, licensed, restricted via RBAC, and scaled through bulk automation, you have successfully practiced the foundational mechanics of a secure cloud infrastructure. As you progress on your cloud engineering journey, carry the mindset demonstrated here: secure by design, automated at scale, and governed by strict access controls.&lt;/p&gt;

</description>
      <category>microsoft36</category>
      <category>government</category>
      <category>aad</category>
      <category>automation</category>
    </item>
    <item>
      <title>Mission 5: Tag the Production Release</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 08 Jul 2026 19:44:33 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/mission-5-tag-the-production-release-4kh7</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/mission-5-tag-the-production-release-4kh7</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Whether you are building a solo project or working inside a massive enterprise, code that only lives on your local machine isn't true DevOps. To achieve automated, scalable software delivery, you must learn to checkpoint your progress, push it to a shared remote, and signal to your automation pipelines that your software is ready for prime time.&lt;/p&gt;

&lt;p&gt;In this final mission of the DevOps Lab, you will learn how to officially stamp your code with a version number using Git tags, push your architecture to GitHub, and lay the crucial groundwork for automated CI/CD pipelines.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F41udro6p5s54g6sho89d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F41udro6p5s54g6sho89d.png" alt="make file" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation Guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create a Release Tag&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary&lt;/strong&gt;&lt;br&gt;
Commits any remaining work and creates a shiny 'v1.0.0' sticker on your latest commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why It's Needed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tags mark stable points in time. When a CI/CD pipeline sees a new tag, it knows it's time to automatically deploy to production!&lt;/p&gt;

&lt;p&gt;Pillar Connection&lt;br&gt;
Reliability — Rock-solid, easy-to-find rollback points.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To Stage all changed files for the next commit, run this command** "git add ."**&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmj6b27vbb6aevmea08n4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmj6b27vbb6aevmea08n4.png" alt="git add ." width="799" height="141"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Staging the specified file(s) for the next commit, you will need to run this command &lt;strong&gt;"git commit -m 'feat: add Makefile automation'"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0elcns1uzqmsofldu493.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0elcns1uzqmsofldu493.png" alt="git add" width="800" height="80"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To create a tag (label) on a commit — typically used for release versions (v1.0, v2.0), run this command &lt;strong&gt;"git tag -a v1.0.0 -m 'First epic DevOps lab release!'"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fir97w8crbcq1cocvruif.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fir97w8crbcq1cocvruif.png" alt="tagging" width="800" height="69"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In other to Show the commit history. run this command "git log --oneline". This command condenses each commit to one line,&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit3mm3rhtnz5vssrr1ii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit3mm3rhtnz5vssrr1ii.png" alt="tags" width="799" height="69"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;"git log --graph" shows branches visually.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft06lwi3j1hqphd1to00m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft06lwi3j1hqphd1to00m.png" alt="tags" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In order to show the commit history of your Git repository, but with additional information showing which branches, tags, or references point to each commit, run this command &lt;strong&gt;"git log --decorate"&lt;/strong&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm3rlauxbkzosv0o0xw6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm3rlauxbkzosv0o0xw6l.png" alt="trade cost" width="800" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Push Everything to GitHub&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary&lt;/strong&gt;&lt;br&gt;
Uploads all your local commits and the v1.0.0 tag to your GitHub repository so the world can see your work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why It's Needed&lt;/strong&gt;&lt;br&gt;
Code that only lives on your laptop isn't real DevOps! Pushing to GitHub backs up your work, enables team collaboration, and is the trigger point for CI/CD pipelines in the real world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pillar Connection&lt;/strong&gt;&lt;br&gt;
Collaboration &amp;amp; Delivery — Shipping code to the remote so pipelines can pick it up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To upload your local commits to the remote repository, run this command &lt;strong&gt;"git push -u origin main"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futtey1x4kb9qb0a5dy47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Futtey1x4kb9qb0a5dy47.png" alt="git push" width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To push your release tag too, run this command &lt;strong&gt;"git push origin v1.0.0"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx5jy8hjy6ced7ff090z3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fx5jy8hjy6ced7ff090z3.png" alt="git push" width="799" height="83"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffuhzdfaawimfndtv4kk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffuhzdfaawimfndtv4kk8.png" alt="congratulations" width="800" height="39"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl3k73ydwuyjgp804e8gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl3k73ydwuyjgp804e8gw.png" alt="TAGS" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Successfully tagging a production release is more than just an administrative step; it is the bridge between writing code and shipping software at an enterprise level. By moving away from local, unversioned development and adopting Git tags, you establish absolute certainty over what code is currently running in your production environment.&lt;/p&gt;

&lt;p&gt;In modern engineering, this predictable structure removes the guesswork from deployment. If an unforeseen critical bug emerges, your team doesn’t have to parse through hundreds of chaotic commits to find a stable version—they can simply point the infrastructure back to v1.0.0. Implementing this workflow effectively transforms a developer's local experiment into a secure, collaborative, and deployment-ready architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
In this final mission of the DevOps Lab, you successfully completed the critical cycle of code finalization and remote delivery:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Milestone Creation: By executing git tag, you attached a permanent, immutable metadata marker (v1.0.0) to your latest commit, establishing an explicit rollback point that safeguards system reliability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upstream Delivery: By troubleshooting and running git push, you securely transferred your local repository's history to a centralized cloud host on GitHub, making your code accessible to your wider team.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Automation Trigger: In professional environments, pushing an annotated version tag acts as the definitive trigger event that commands automated systems to build, test, and deploy software directly to users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>git</category>
      <category>gittags</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Mission 4: Automate with a Robot Butler (Make)</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 08 Jul 2026 15:19:12 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/mission-4-automate-with-a-robot-butler-make-5c4j</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/mission-4-automate-with-a-robot-butler-make-5c4j</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Introduction&lt;br&gt;
In the fast-paced world of DevOps, efficiency is everything. Engineering teams frequently handle complex, multi-step commands to build, test, and deploy applications. Relying on memory or manual typing for these tasks introduces human error and slows down momentum.&lt;/p&gt;

&lt;p&gt;To achieve Operational Excellence, teams rely on automation tools like Make. This guide provides a step-by-step walkthrough for setting up Make on a Windows environment, creating an automation script (Makefile), and testing it locally to streamline your development workflow.&lt;br&gt;
However, the implementation process follows three logical phases to move you from a manual setup to an automated, reliable system:&lt;/p&gt;

&lt;h1&gt;
  
  
  Implementation Guide
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Install Make (if you don't have it)
&lt;strong&gt;Instruction Summary:&lt;/strong&gt; Installs the 'make' command-line tool so your system can read and run Makefile instructions.
Why It's Needed:
Make is not installed by default on Windows. Without it, the 'make build' shortcut won't work.
&lt;strong&gt;Pillar Connection:&lt;/strong&gt; Operational Excellence — Setting up the right tools before you start. To install "Make" follow the processes below,&lt;/li&gt;
&lt;li&gt;To install "Make", utilize winget by running this command *&lt;em&gt;"winget install GnuWin32.Make" *&lt;/em&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpppu00htvy5u6a6mmlja.png" alt="install makeshift" width="800" height="111"&gt;
&lt;/li&gt;
&lt;li&gt;To verify the installation of &lt;strong&gt;"Make"&lt;/strong&gt;, run this command &lt;strong&gt;"make --version"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;2. Write the Automation Script (Makefile)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary:&lt;/strong&gt; Creates a 'Makefile' that defines simple shortcuts (build, run, clean) for our long Docker commands. The tab character before each docker command is critical — Make requires TABS, not spaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why It's Needed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps engineers hate doing the same thing twice. Automation saves time and prevents typos!&lt;br&gt;
Pillar Connection:&lt;br&gt;
Operational Excellence — Automating the boring stuff so you can focus on fun stuff.&lt;br&gt;
To create the Makefile with proper tab characters, run this command &lt;strong&gt;"$tab = "`t""&lt;/strong&gt; and **""build:&lt;code&gt;n${tab}docker build -t devops-hello .&lt;/code&gt;nrun:&lt;code&gt;n${tab}docker run --rm devops-hello&lt;/code&gt;nclean:`n${tab}docker rmi devops-hello" | Out-File -FilePath Makefile -Encoding ascii"&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;To verify the file is correctly created,, run this command &lt;strong&gt;"Get-Content Makefile"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fztfxxab9e5qttz96f9y9.png" alt="make file" width="800" height="241"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Test Your New Butler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary:&lt;/strong&gt;&lt;br&gt;
Executes your newly created shortcuts to build the image, run it, and clean up the mess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why It's Needed&lt;/strong&gt;&lt;br&gt;
Always test your automation locally before letting it loose on real servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pillar Connection&lt;/strong&gt;&lt;br&gt;
Reliability — Verifying automation works perfectly.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
Automation isn't just about saving seconds; it's about eliminating cognitive load and preventing typos that break systems. By transitioning tedious Docker commands into a single Makefile, you establish a standardized workflow that works the same way every time. Adopting these automation habits ensures that your local environment remains aligned with the same rigorous engineering pillars found in elite, large-scale production infrastructures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt;&lt;br&gt;
• The Goal: Turn repetitive, error-prone terminal commands into simple, reliable one-word shortcuts using Make.&lt;br&gt;
&lt;strong&gt;• The Process:&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install the tool using standard Windows package managers (winget)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write a strict, tab-formatted configuration file (Makefile) containing your command definitions. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run and verify the shortcuts (make build, make run, make clean) locally.&lt;br&gt;
• The Value: Enhances Operational Excellence and Reliability by substituting human error with automated execution.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>dorametrics</category>
      <category>datadrivendevops</category>
      <category>engineeringexcellence</category>
      <category>devopskpis</category>
    </item>
    <item>
      <title>Mission 3: Measure DORA Metrics.</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Wed, 08 Jul 2026 09:32:28 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/mission-3-measure-dora-metrics-3oo5</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/mission-3-measure-dora-metrics-3oo5</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Every elite sports team relies on stats to win games, and software development teams are no different. In the world of technology, top-performing software teams don't guess how good they are—they measure it. The secret to their success lies in four key numbers known as DORA metrics. These metrics act as a high-tech scoreboard, helping teams track exactly how fast they can deliver software and how reliable their systems are.&lt;br&gt;
However, DORA stands for DevOps Research and Assessment, which is the team that spent years figuring out what makes a software team successful. They discovered that elite teams excel in four specific areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Deployment Frequency: How often does the team successfully push new code or updates live to users? (Speed)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lead Time for Changes: How long does it take for a line of code to go from being written to actually running in production? (Velocity)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change Failure Rate: What percentage of deployments cause a problem or outage that requires an immediate fix? (Quality)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Failed Component Recovery Time: When things do break or crash, how long does it take the team to restore service to normal? (Stability)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By tracking these four numbers, teams no longer have to rely on guesswork. They can easily spot bottlenecks, reduce errors, and continuously improve how they work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation Guide&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Simulate a Super-Fast Deployment&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Instruction Summary:&lt;/strong&gt; Adds a second save point (commit) to simulate shipping a new feature quickly.&lt;br&gt;
&lt;strong&gt;Why It's Needed:&lt;/strong&gt;&lt;br&gt;
Deployment Frequency is a key metric. Elite teams deploy multiple times a day instead of once a month!&lt;/p&gt;

&lt;p&gt;Pillar Connection:&lt;br&gt;
Speed &amp;amp; Agility — Measuring and supercharging your delivery speed. The core activity here, is the procedure to make a change to app.js containerized by docker. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To make a quick change and add it to app.js, run this command &lt;strong&gt;"Add-Content app.js 'v2'"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn447go044dpcdnu7ev9x.png" alt="app js" width="800" height="79"&gt;
&lt;/li&gt;
&lt;li&gt; To Stage all changed files for the next commit, run this command "&lt;strong&gt;git add .&lt;/strong&gt;"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgokjouustv0pl50iwzfk.png" alt="satge a commit" width="800" height="112"&gt;
&lt;/li&gt;
&lt;li&gt;To create a new commit with all staged changes and the message after -m run this command "&lt;strong&gt;git commit -m 'feat: bump to v2&lt;/strong&gt;'"
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhoh8yjqff4atp1v9b3d5.png" alt="image commit" width="800" height="147"&gt;
&lt;/li&gt;
&lt;li&gt;To show the commit history, run this command &lt;strong&gt;"git log --oneline"&lt;/strong&gt; condenses each commit to one line.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyv9k62heys1be4hp4gzr.png" alt="initial commit" width="800" height="89"&gt;
&lt;/li&gt;
&lt;li&gt;To visually show the branch, run this command &lt;strong&gt;"git log --graph"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm9ndnb9teyphzemxy56d.png" alt="git log --grapg" width="800" height="181"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Measuring success isn't about working harder; it’s about working smarter. By adopting DORA metrics, any engineering team can look at the data, see exactly where they are struggling, and make targeted improvements. Ultimately, these secret numbers give teams a clear, data-driven roadmap to transform themselves from average performers into elite, high-speed innovators.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
What it is: DORA metrics are four specific data points used to measure the success of software engineering teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; They help teams balance speed (how fast they deliver software) with stability (how rarely things break).&lt;/p&gt;

&lt;p&gt;The Goal: By tracking these numbers, teams can eliminate guesswork and adopt the exact habits used by the world's most elite DevOps organizations.&lt;/p&gt;

</description>
      <category>dorametrics</category>
      <category>devopsexcellence</category>
      <category>engineeringmetrics</category>
      <category>continuousdelivery</category>
    </item>
    <item>
      <title>Mission 2: Containerise the App</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Tue, 07 Jul 2026 22:50:39 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/mission-2-containerise-the-app-3kfc</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/mission-2-containerise-the-app-3kfc</guid>
      <description>&lt;h1&gt;
  
  
  Introduction:
&lt;/h1&gt;

&lt;p&gt;Welcome back to Mission 2! In the &lt;a href="https://dev.toinsert%20link%20to%20Mission%201"&gt;https://dev.to/okunola_babatunde_dff5cbd/mission-1-arm-your-workstation-438i&lt;/a&gt;, we laid the groundwork by setting up our project folder, building a tiny Node.js application, saving it to Git, and linking everything up to GitHub.&lt;/p&gt;

&lt;p&gt;Now that we have a solid, version-controlled codebase, it's time to take the next critical step in modern development: containerization.&lt;/p&gt;

&lt;p&gt;In this guide, I am going to take that exact Node.js app from our GitHub repository and package it into a lightweight, portable, and isolated container using Docker. By the end of this mission, you will ensure that your app runs consistently, regardless of where it is deployed. Let's get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Guide
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Create Your First App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary&lt;/strong&gt;: Creates a folder, makes a tiny Node.js app, saves it into Git history, and links it to your GitHub repository.&lt;br&gt;
&lt;strong&gt;Why It's Needed&lt;/strong&gt;:&lt;br&gt;
Every epic journey starts with a single line of code. We connect to GitHub early so your work is always backed up and ready for CI/CD!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pillar Connection&lt;/strong&gt;&lt;br&gt;
Operational Excellence — Versioning controls everything from minute one.&lt;br&gt;
terminal&lt;br&gt;
In order to create a folder and switch into the folder, run the command &lt;strong&gt;"mkdir devops-lab; cd devops-lab"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flkefizl0wxizbva8yzve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flkefizl0wxizbva8yzve.png" alt="mkdir" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  To create the app.js file using PowerShell, run this command &lt;strong&gt;"Set-Content app.js 'console.log("Hello, DevOps!");'&lt;/strong&gt;"
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7diw41shj7oxcpvvnyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7diw41shj7oxcpvvnyu.png" alt="mkdir" width="800" height="92"&gt;&lt;/a&gt;&lt;br&gt;
The next step is to initialize a new Git repository in the current directory by running this command &lt;strong&gt;"git init"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fct1skze07shlmo5q1ipg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fct1skze07shlmo5q1ipg.png" alt="mkdir" width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
To list, creat or manage branches, run this commmand &lt;strong&gt;"git branch -M main"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftc1d974zjq4s3ti11vyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftc1d974zjq4s3ti11vyz.png" alt="mkdir" width="800" height="104"&gt;&lt;/a&gt;&lt;br&gt;
To stage all the changed files, run these command at a go &lt;strong&gt;"git add . &amp;amp;&amp;amp; git commit -m 'Initial commit'"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8013mmo0yq5ygoipzsl9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8013mmo0yq5ygoipzsl9.png" alt="mkdir" width="800" height="152"&gt;&lt;/a&gt;&lt;br&gt;
In order to connect the local repo on the machine with the Github repo created in mission 1, run the following command "&lt;strong&gt;git remote add origin plus url&lt;/strong&gt; of the github repo created in the &lt;strong&gt;mission 1&lt;/strong&gt;". However, this command stages the specified file(s) for the next commit.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6nt04b1ofxcjc21qb5l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk6nt04b1ofxcjc21qb5l.png" alt="mkdir" width="800" height="160"&gt;&lt;/a&gt;&lt;br&gt;
To manage remote repository connections (origin, upstream, etc.). Run this command &lt;strong&gt;"git remote -v"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxbnx24upq26abij5vuth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxbnx24upq26abij5vuth.png" alt="git remote =v" width="799" height="78"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; If this command "&lt;strong&gt;git remote -v&lt;/strong&gt;" is run and there is no evidence of &lt;strong&gt;fetch&lt;/strong&gt; and &lt;strong&gt;push&lt;/strong&gt;, it means there is an error or errors somewhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Build the Docker Container&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Instruction Summary:&lt;/strong&gt; Writes a recipe (Dockerfile) to package your app, builds it into an image, and runs it! The Dockerfile tells Docker which base image to use, which files to copy in, and which command to run.&lt;br&gt;
&lt;strong&gt;Why It's Needed:&lt;/strong&gt; Containers ensure that if it works on your laptop, it'll work on the production servers without those pesky 'it works on my machine' excuses.&lt;br&gt;
&lt;strong&gt;Pillar Connection:&lt;/strong&gt;&lt;br&gt;
Reliability — Eliminating environment drift with magical immutable boxes.&lt;br&gt;
From the power shell, create a docker file running the following command;&lt;br&gt;
&lt;strong&gt;@'&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FROM node:18-alpine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;COPY app.js .&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CMD ["node","app.js"]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;'@ | Out-File -FilePath Dockerfile -Encoding ascii&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuv1te62x2vojv66fpsre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuv1te62x2vojv66fpsre.png" alt="docker file" width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To successfully know if the docker file has been created, run this command &lt;strong&gt;"Get-Content Dockerfile"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faaazrmmwm58x04bqchy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faaazrmmwm58x04bqchy2.png" alt="docker file" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run this command &lt;strong&gt;"docker build -t devops-hello ."&lt;/strong&gt; to build a Docker image from the Dockerfile in the current directory. The -t flag tags it with a name.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7iy96pnlj6k7egzzgxk8.png" alt="docker fille" width="799" height="386"&gt;
&lt;/li&gt;
&lt;li&gt;To creates and start a new container from the specified image, run this command &lt;strong&gt;"docker run --rm devops-hello"&lt;/strong&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fibykf8zoftqjxvtthppw.png" alt="docker file" width="800" height="30"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In this mission, you broke your application free from the unique quirks of your personal computer. You wrote a tiny JavaScript program, saved a snapshot of it using a tracking tool called Git, and then created a precise recipe file called a Dockerfile. This recipe tells Docker exactly how to wrap your program inside its own self-contained, portable digital box called an image.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;By putting your app inside this digital box, you guaranteed that it will run flawlessly anywhere. Whether it is running on your laptop, a colleague's computer, or a massive cloud server, it will behave exactly the same way every single time. This completely solves the classic developer headache: "Well, it worked perfectly on my machine!" This predictable, hassle-free packaging is the foundation of how modern software is built and delivered to millions of users today.&lt;/p&gt;

&lt;h1&gt;
  
  
  Key Takeaways
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The "Frozen" Blueprint: Think of a Docker image as a frozen, unchangeable blueprint. It contains everything your program needs to survive and run, so you never have to worry about missing files or wrong software versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Packing Light: By using a tiny, stripped-down version of Node.js (alpine), your digital box stays incredibly small and lightweight. This means it downloads in seconds and uses almost none of your computer's memory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No Leftover Mess: By using a special cleanup command (--rm), the digital box instantly vanishes the moment it finishes running. This keeps your computer completely clean, with no digital clutter left behind.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Future-Proofing: By connecting your project to GitHub right from the start, you ensure your work is always backed up safely in the cloud and ready to be automatically updated whenever you write new code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>docker</category>
      <category>containerization</category>
      <category>devops</category>
      <category>appdevelopment</category>
    </item>
    <item>
      <title>Mission 1: Arm Your Workstation</title>
      <dc:creator>okunola babatunde</dc:creator>
      <pubDate>Sun, 28 Jun 2026 17:15:16 +0000</pubDate>
      <link>https://dev.to/okunola_babatunde_dff5cbd/mission-1-arm-your-workstation-438i</link>
      <guid>https://dev.to/okunola_babatunde_dff5cbd/mission-1-arm-your-workstation-438i</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Before anything else, your workstation is either your launchpad or your bottleneck. That’s what “Mission 1: Arm Your Workstation” is about.&lt;/p&gt;

&lt;p&gt;It’s the foundation of every serious developer journey. Not the language, not the framework, but the environment where everything happens. You can’t build fast or think clearly in a setup that constantly slows you down.&lt;/p&gt;

&lt;p&gt;Arming your workstation means turning your tools into a system. Your laptop becomes a command center, VS Code your cockpit, and the terminal your control room. Git, GitHub, Node.js, Docker, Postman, and Chrome DevTools stop being random tools and start working like a unified arsenal.&lt;/p&gt;

&lt;p&gt;But it’s not just software, it’s flow. The goal is to remove friction so ideas move smoothly from thought to execution. A clean, structured setup means less confusion and more building.&lt;/p&gt;

&lt;p&gt;Most beginners skip this. They jump into tutorials with messy environments and scattered tools, then wonder why progress feels slow. Professionals do the opposite, they build the environment first.&lt;/p&gt;

&lt;p&gt;So the mission is simple: set up your system like someone building at scale, not experimenting casually.&lt;/p&gt;

&lt;p&gt;Once your workstation is armed, everything changes. You don’t just learn faster, you execute better, think sharper, and build with momentum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation Guide&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upgrade Local Arsenal&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Instruction Summary:&lt;/strong&gt;&lt;br&gt;
Refreshes your computer's package list and upgrades installed software to their latest, shiniest versions.&lt;br&gt;
Why It's Needed:&lt;/p&gt;

&lt;p&gt;A fully patched system keeps the gremlins away and prevents annoying errors when installing new tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pillar Connection:&lt;/strong&gt;&lt;br&gt;
Operational Excellence — Keeping your digital house clean and ready for action.&lt;br&gt;
In order to refresh the package list so you can get the latest versions when installing. Run this Command on your system terminal*&lt;em&gt;"winget upgrade --all"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5k2nu4qf23d4rjhd2ass.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5k2nu4qf23d4rjhd2ass.png" alt="winget upgrade all" width="800" height="111"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpj39qf8u7ppyedryam6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpj39qf8u7ppyedryam6w.png" alt="app" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgaxbitdycubsd2oak2s1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgaxbitdycubsd2oak2s1.png" alt="app" width="797" height="133"&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzng0obo1fv4f0n4i0fm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkzng0obo1fv4f0n4i0fm.png" alt="app" width="800" height="241"&gt;&lt;/a&gt;. The applications highlighted above were successfully upgraded&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Install Git, Curl, and Docker&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Instruction Summary:&lt;/strong&gt;&lt;br&gt;
Installs** Git** (your code time-machine), &lt;strong&gt;Curl&lt;/strong&gt; (for downloading stuff), and &lt;strong&gt;Docker&lt;/strong&gt; (for running apps in isolated boxes).&lt;br&gt;
&lt;strong&gt;Why It's Needed:&lt;/strong&gt;&lt;br&gt;
These three tools are the absolute foundation of modern tech. You'll use them every single day!&lt;br&gt;
&lt;strong&gt;Pillar Connection:&lt;/strong&gt;&lt;br&gt;
Operational Excellence — Equipping yourself with industry-standard tools.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9d4tfartbib4k99u43ov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9d4tfartbib4k99u43ov.png" alt="app" width="799" height="224"&gt;&lt;/a&gt;. The above applications have to be run individually to have them installed.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsjsmehqwbsczckktdub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjsjsmehqwbsczckktdub.png" alt="Git" width="800" height="159"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8oh2ogjtu30g9icqgz55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8oh2ogjtu30g9icqgz55.png" alt="Git" width="715" height="71"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Finmk3uaz47d7vf44otqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Finmk3uaz47d7vf44otqw.png" alt="Git" width="800" height="186"&gt;&lt;/a&gt;&lt;br&gt;
Prints the installed Docker version to verify it's set up.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3xsyo5s1thrvmlud6nn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3xsyo5s1thrvmlud6nn.png" alt="Git" width="800" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.** Introduce Yourself to Git**&lt;br&gt;
&lt;strong&gt;Instruction Summary:&lt;/strong&gt;&lt;br&gt;
Tells Git who you are so it can slap your name on every awesome piece of code you write.&lt;br&gt;
&lt;strong&gt;Why It's Needed:&lt;/strong&gt;&lt;br&gt;
Since we just installed Git, it needs to know who's driving! Without this, you can't save (commit) your work.&lt;br&gt;
&lt;strong&gt;Pillar Connection:&lt;/strong&gt;&lt;br&gt;
Security &amp;amp; Auditing: Knowing exactly who made what change.&lt;br&gt;
Run the following commands;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkp9vjy5szji9uenn3u3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkp9vjy5szji9uenn3u3b.png" alt="git config" width="799" height="224"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Sets Git configuration (user name)&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge8w7h40l7lbmqpbaclm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge8w7h40l7lbmqpbaclm.png" alt="GIT" width="800" height="46"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Sets Git configuration (email).&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fst5a6qhprwd2pg01lcvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fst5a6qhprwd2pg01lcvm.png" alt="git" width="794" height="60"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Sets Git configuration (user name, email, aliases, etc.)&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxssnlydxzc9ze1cgl3qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxssnlydxzc9ze1cgl3qp.png" alt="Git" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a GitHub Repository
&lt;strong&gt;Instruction Summary:&lt;/strong&gt;
Creates a remote home for your code on GitHub — think of it as your project's cloud backup and portfolio piece.
&lt;strong&gt;Why It's Needed&lt;/strong&gt;:
In real DevOps, code lives in a remote repository so the whole team can collaborate, CI/CD pipelines can trigger, and nothing is lost if your laptop catches fire!
&lt;strong&gt;Pillar Connection:&lt;/strong&gt;
Collaboration &amp;amp; Sharing — Every professional project needs a central remote repository.

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt; and sign in (or create an account if you don't have one)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffjttxf2a8nr8qfldre3h.png" alt="github" width="796" height="33"&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Click the '+' icon in the top-right corner → 'New repository'
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp29qbq4ndi6wc3za46ub.png" alt="github" width="649" height="65"&gt;
&lt;/li&gt;
&lt;li&gt;Name it: devops-lab
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyfpdgvt2mvxnw9rcmxqe.png" alt="devops-lab1" width="800" height="174"&gt;
&lt;/li&gt;
&lt;li&gt;Leave it PUBLIC, do NOT add a README (we'll push our own code)
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Finvq5c0b1cg7rqyba0e8.png" alt="public" width="799" height="180"&gt;
&lt;/li&gt;
&lt;li&gt;Click 'Create repository'
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnvzd23qqvrdbxeklmxnk.png" alt="create repository" width="799" height="278"&gt;
&lt;/li&gt;
&lt;li&gt;Copy the HTTPS URL — it will look like: &lt;a href="https://github.com/YOUR-USERNAME/devops-lab.git" rel="noopener noreferrer"&gt;https://github.com/YOUR-USERNAME/devops-lab.git&lt;/a&gt;
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F78zgl1tw0f4bnly5uvm2.png" alt="https" width="800" height="118"&gt;
&lt;strong&gt;&lt;a href="https://github.com/BAOKONCEPTS/devops-lab1.git" rel="noopener noreferrer"&gt;https://github.com/BAOKONCEPTS/devops-lab1.git&lt;/a&gt;&lt;/strong&gt;
## Summary
&lt;strong&gt;Mission 1: Arm Your Workstation&lt;/strong&gt; focuses on setting up a strong development environment before writing code. A well-prepared workstation gives you structure, speed, focus, and confidence. Tools like &lt;strong&gt;VS Code, Terminal, Git, GitHub, Curl, Docker,and Chrome DevTools&lt;/strong&gt; become part of your daily workflow, helping you build, test, debug, and deploy more efficiently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;## Conclusion&lt;/strong&gt;&lt;br&gt;
A strong setup creates a stronger developer. When your workstation is organized and properly equipped, you reduce frustration, avoid setup problems, and build with more confidence. Before building great projects, you must first build the environment that supports your growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your workstation is the foundation of your developer journey.&lt;/li&gt;
&lt;li&gt;The right tools help you work faster and smarter.&lt;/li&gt;
&lt;li&gt;A clean setup reduces confusion and wastes time.&lt;/li&gt;
&lt;li&gt;Your laptop or PC should function like a command center.&lt;/li&gt;
&lt;li&gt;Good preparation helps you focus on building, not fixing setup issues.&lt;/li&gt;
&lt;li&gt;Professionals prepare before they build.&lt;/li&gt;
&lt;li&gt;strong workstation gives you confidence and momentum.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>developertools</category>
      <category>workstationsetup</category>
      <category>terminalsetup</category>
      <category>armyourworkstation</category>
    </item>
  </channel>
</rss>
