<?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: Shadrack Acquah</title>
    <description>The latest articles on DEV Community by Shadrack Acquah (@shadrack_acquah_b59ab8555).</description>
    <link>https://dev.to/shadrack_acquah_b59ab8555</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%2F3931792%2F71e73e2d-29da-43d9-945d-17febe560e34.jpg</url>
      <title>DEV Community: Shadrack Acquah</title>
      <link>https://dev.to/shadrack_acquah_b59ab8555</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shadrack_acquah_b59ab8555"/>
    <language>en</language>
    <item>
      <title>I deployed ONE Dockerized Notes App (Node.js + Postgres) locally + to Azure ACI! (CLOUD)</title>
      <dc:creator>Shadrack Acquah</dc:creator>
      <pubDate>Tue, 29 Sep 2026 18:34:57 +0000</pubDate>
      <link>https://dev.to/shadrack_acquah_b59ab8555/i-deployed-one-dockerized-notes-app-nodejs-postgres-locally-to-azure-aci-cloud-2712</link>
      <guid>https://dev.to/shadrack_acquah_b59ab8555/i-deployed-one-dockerized-notes-app-nodejs-postgres-locally-to-azure-aci-cloud-2712</guid>
      <description>&lt;p&gt;I Deployed  Docker App  on Azure — Part 1: Local + ACI (Working)&lt;/p&gt;

&lt;p&gt;Stack: Node.js 20 + Express + PostgreSQL 16 + Docker + Azure Container Instances&lt;/p&gt;

&lt;p&gt;Repo old: &lt;a href="https://github.com/krisking7/lexszy-note" rel="noopener noreferrer"&gt;https://github.com/krisking7/lexszy-note&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New repo:&lt;a href="https://github.com/Shack793/Docker-to-Cloud.git" rel="noopener noreferrer"&gt;https://github.com/Shack793/Docker-to-Cloud.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My Docker Hub: devshadd/notes-app:v1 → &lt;a href="https://hub.docker.com/r/devshadd/notes-app" rel="noopener noreferrer"&gt;https://hub.docker.com/r/devshadd/notes-app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure: Subscription 1, eastus, SUFFIX=dev12&lt;/p&gt;

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

&lt;p&gt;Live ACI: &lt;a href="http://notes-app-dev12.eastus.azurecontainer.io:3000" rel="noopener noreferrer"&gt;http://notes-app-dev12.eastus.azurecontainer.io:3000&lt;/a&gt; (IP 48.194.78.11:3000)(Pulled Down To avoid billing-refer to screenshot)&lt;/p&gt;

&lt;p&gt;Core lesson: same image everywhere, config via env, vars DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME, DB_SSL.&lt;/p&gt;

&lt;p&gt;STEP 1 — Prepare Tools&lt;br&gt;
Ran:&lt;br&gt;
git --version # 2.52.0&lt;br&gt;
docker --version # 29.8.1&lt;br&gt;
docker compose version # v5.5.1&lt;br&gt;
az --version # 2.90.0&lt;/p&gt;

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

&lt;p&gt;Challenge: docker info failed — failed to connect to docker API at npipe:////./pipe/dockerDesktopLinuxEngine.&lt;/p&gt;

&lt;p&gt;Fix: Docker Desktop installed at %LOCALAPPDATA%\Programs\DockerDesktop\Docker Desktop.exe (not C:\Program Files\Docker).&lt;/p&gt;

&lt;p&gt;Started it, waited 5s, docker info → Server=29.8.1 OS=Docker Desktop.&lt;/p&gt;

&lt;p&gt;STEP 2 — Get Code + Run Locally first &lt;/p&gt;

&lt;p&gt;cd C:\laragon2\www\Cloud-Docker&lt;/p&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/krisking7/lexszy-note.git" rel="noopener noreferrer"&gt;https://github.com/krisking7/lexszy-note.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;cd lexszy-note&lt;/p&gt;

&lt;p&gt;dir # Dockerfile, docker-compose.yaml, package.json, server.js, public/&lt;/p&gt;

&lt;p&gt;30-sec tour:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;server.js — Express API, creates notes table on startup, /health → {"status":"ok"}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;public/index.html — frontend&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dockerfile — FROM node:20-alpine &amp;gt; WORKDIR /app &amp;gt; COPY package*.json &amp;gt; RUN npm install &amp;gt; COPY . . &amp;gt; EXPOSE 3000 &amp;gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;docker-compose.yaml — app reaches DB at hostname db, volume db_data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ran:&lt;br&gt;
docker compose up -d --build&lt;br&gt;
docker compose ps # app + db Up&lt;br&gt;
docker compose logs app&lt;/p&gt;

&lt;p&gt;Challenge 1: First build timed out after 120s pulling postgres:16-alpine + node:20-alpine.&lt;/p&gt;

&lt;p&gt;Fix: Re-ran with 300s timeout, resumed and finished: added 82 packages in 26s.&lt;/p&gt;

&lt;p&gt;Challenge 2: Logs showed:&lt;br&gt;
Notes app running on port 3000&lt;br&gt;
Database initialization failed: ECONNREFUSED 172.18.0.2:5432&lt;/p&gt;

&lt;p&gt;depends_on only waits for container start, not DB ready.&lt;/p&gt;

&lt;p&gt;Fix (per guide):&lt;br&gt;
docker compose restart app&lt;/p&gt;

&lt;p&gt;Start-Sleep 8&lt;br&gt;
docker compose logs app&lt;/p&gt;

&lt;h1&gt;
  
  
  → Notes app running on port 3000
&lt;/h1&gt;

&lt;h1&gt;
  
  
  → Database initialized (notes table ready)
&lt;/h1&gt;

&lt;p&gt;Test:&lt;br&gt;
curl &lt;a href="http://localhost:3000/health" rel="noopener noreferrer"&gt;http://localhost:3000/health&lt;/a&gt; # {"status":"ok"}&lt;br&gt;
Invoke-RestMethod &lt;a href="http://localhost:3000/api/notes" rel="noopener noreferrer"&gt;http://localhost:3000/api/notes&lt;/a&gt; -Method Post -Body '{"title":"Test1"}'...&lt;/p&gt;

&lt;h1&gt;
  
  
  → id:1 Test1 created, GET returns row
&lt;/h1&gt;

&lt;p&gt;Challenge 3: curl.exe -X POST -d '{"title":...}' failed in PowerShell with Unterminated string in JSON.&lt;/p&gt;

&lt;p&gt;Fix: Used PowerShell native:&lt;br&gt;
$body = @{title="Test1";content="hello from step2"} | ConvertTo-Json&lt;br&gt;
Invoke-RestMethod -Uri &lt;a href="http://localhost:3000/api/notes" rel="noopener noreferrer"&gt;http://localhost:3000/api/notes&lt;/a&gt; -Method Post -Body $body -ContentType "application/json"&lt;/p&gt;

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

&lt;p&gt;STEP 3 — Publish to Docker Hub&lt;br&gt;
My username: devshadd (social login).&lt;br&gt;
Changed docker-compose.yaml:6:&lt;/p&gt;

&lt;h1&gt;
  
  
  before:
&lt;/h1&gt;

&lt;p&gt;image: krisking2024/notes-app:v1&lt;/p&gt;

&lt;h1&gt;
  
  
  after:
&lt;/h1&gt;

&lt;p&gt;image: devshadd/notes-app:v1&lt;br&gt;
docker tag krisking2024/notes-app:v1 devshadd/notes-app:v1&lt;br&gt;
docker image ls # both → be7d37659533 212MB&lt;br&gt;
docker push devshadd/notes-app:v1&lt;/p&gt;

&lt;p&gt;Challenge: First push timed out: failed commit ... net/http: timeout awaiting response headers after some layers Pushed.&lt;/p&gt;

&lt;p&gt;Fix: Re-ran docker push — resumable:&lt;br&gt;
44136fa355b3: Already exists&lt;br&gt;
4feea04c1543: Pushed&lt;br&gt;
v1: digest: sha256:be7d376595330de84a093765019acda4ec777df4064570499210f5c6818c442e&lt;br&gt;
Verified at &lt;a href="https://hub.docker.com/r/devshadd/notes-app" rel="noopener noreferrer"&gt;https://hub.docker.com/r/devshadd/notes-app&lt;/a&gt; → tag v1, 48.9MB, docker pull devshadd/notes-app:v1.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1666b94zgh71mgp4onb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1666b94zgh71mgp4onb4.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;br&gt;
Social-login note: if docker login asks password, create Hub PAT: Hub → Account Settings → Personal Access Tokens → use token as password.&lt;/p&gt;

&lt;p&gt;STEP 4 — Prepare Azure&lt;br&gt;
Already logged in:&lt;br&gt;
az account show --output table # Subscription 1 Enabled&lt;br&gt;
az provider register --namespace Microsoft.ContainerInstance&lt;br&gt;
az provider register --namespace Microsoft.DBforPostgreSQL&lt;br&gt;
az provider register --namespace Microsoft.Web&lt;/p&gt;

&lt;h1&gt;
  
  
  first → Registering, after 1min → Registered
&lt;/h1&gt;

&lt;p&gt;Vars (PowerShell):&lt;br&gt;
$DOCKER_USER="devshadd"&lt;br&gt;
$SUFFIX="dev12"&lt;br&gt;
$LOCATION="eastus"&lt;br&gt;
$DB_PASS="*** lab-only, redacted for post ***"&lt;/p&gt;

&lt;p&gt;STEP 5 — Option A: ACI&lt;br&gt;
az group create --name notes-app-rg --location eastus&lt;/p&gt;

&lt;p&gt;Created aci-notes.yaml:&lt;br&gt;
image: devshadd/notes-app:v1&lt;br&gt;
command: ["/bin/sh", "-c", "sleep 20 &amp;amp;&amp;amp; node server.js"]&lt;br&gt;
DB_HOST: localhost # NOT db — ACI group shares localhost network&lt;br&gt;
dnsNameLabel: notes-app-dev12&lt;br&gt;
secureValue: "***" # hides password&lt;/p&gt;

&lt;p&gt;az container create --resource-group notes-app-rg --file aci-notes.yaml&lt;br&gt;
Challenge: First create → MultipleErrorsOccurred Conflict RegistryErrorResponse index.docker.io. Please retry later.&lt;br&gt;
Fix: Waited 30s, retried — succeeded with full JSON ID returned.&lt;br&gt;
Verify:&lt;br&gt;
az container show --resource-group notes-app-rg --name notes-app-group --query "{provisioning:provisioningState, fqdn:ipAddress.fqdn, ip:ipAddress.ip}" --output table&lt;/p&gt;

&lt;h1&gt;
  
  
  Succeeded notes-app-dev12.eastus.azurecontainer.io 48.194.78.11
&lt;/h1&gt;

&lt;p&gt;az container logs --resource-group notes-app-rg --name notes-app-group --container-name app&lt;/p&gt;

&lt;h1&gt;
  
  
  Notes app running on port 3000
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Database initialized (notes table ready)
&lt;/h1&gt;

&lt;p&gt;curl &lt;a href="http://notes-app-dev12.eastus.azurecontainer.io:3000/health" rel="noopener noreferrer"&gt;http://notes-app-dev12.eastus.azurecontainer.io:3000/health&lt;/a&gt; # {"status":"ok"}&lt;/p&gt;

&lt;p&gt;Challenge: Browser ERR_NAME_NOT_RESOLVED for notes-app-dev12.eastus.&lt;/p&gt;

&lt;p&gt;Fix: URL was truncated. Must use full + http + :3000:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://notes-app-dev12.eastus.azurecontainer.io:3000" rel="noopener noreferrer"&gt;http://notes-app-dev12.eastus.azurecontainer.io:3000&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fallback &lt;a href="http://48.194.78.11:3000" rel="noopener noreferrer"&gt;http://48.194.78.11:3000&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%2Fspzdlzu2jk8j80phlp9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fspzdlzu2jk8j80phlp9c.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lesson for post: &lt;br&gt;
ACI = fastest, closest to compose, but ephemeral — delete/recreate loses data (no volume). No HTTPS.&lt;/p&gt;

&lt;p&gt;Cleanup (run after screenshots):&lt;br&gt;
az group delete --name notes-app-rg --yes --no-wait&lt;/p&gt;

&lt;p&gt;Biggest lessons: depends_on ≠ DB ready (needed restart/sleep), same image runs everywhere via env vars. &lt;br&gt;
ACI was fast but ephemeral. &lt;br&gt;
 #Azure #Docker #DevOps&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>devops</category>
      <category>docker</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Shadrack Acquah</dc:creator>
      <pubDate>Tue, 26 May 2026 15:54:16 +0000</pubDate>
      <link>https://dev.to/shadrack_acquah_b59ab8555/-3m6c</link>
      <guid>https://dev.to/shadrack_acquah_b59ab8555/-3m6c</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" class="crayons-story__hidden-navigation-link"&gt;Azure Entra ID: Creating Users and Managing Global Administrator Access — A Step-by-Step Guide&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shadrack_acquah_b59ab8555" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3931792%2F71e73e2d-29da-43d9-945d-17febe560e34.jpg" alt="shadrack_acquah_b59ab8555 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shadrack_acquah_b59ab8555" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shadrack Acquah
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shadrack Acquah
                
              
              &lt;div id="story-author-preview-content-3757986" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shadrack_acquah_b59ab8555" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3931792%2F71e73e2d-29da-43d9-945d-17febe560e34.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shadrack Acquah&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" id="article-link-3757986"&gt;
          Azure Entra ID: Creating Users and Managing Global Administrator Access — A Step-by-Step Guide
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/azure"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;azure&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cloud"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cloud&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/microsoft"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;microsoft&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Microsoft Azure Entra ID tutorial</title>
      <dc:creator>Shadrack Acquah</dc:creator>
      <pubDate>Tue, 26 May 2026 15:47:27 +0000</pubDate>
      <link>https://dev.to/shadrack_acquah_b59ab8555/microsoft-azure-entra-id-tutorial-31g3</link>
      <guid>https://dev.to/shadrack_acquah_b59ab8555/microsoft-azure-entra-id-tutorial-31g3</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" class="crayons-story__hidden-navigation-link"&gt;Azure Entra ID: Creating Users and Managing Global Administrator Access — A Step-by-Step Guide&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/shadrack_acquah_b59ab8555" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3931792%2F71e73e2d-29da-43d9-945d-17febe560e34.jpg" alt="shadrack_acquah_b59ab8555 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/shadrack_acquah_b59ab8555" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Shadrack Acquah
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Shadrack Acquah
                
              
              &lt;div id="story-author-preview-content-3757986" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/shadrack_acquah_b59ab8555" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3931792%2F71e73e2d-29da-43d9-945d-17febe560e34.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Shadrack Acquah&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9" id="article-link-3757986"&gt;
          Azure Entra ID: Creating Users and Managing Global Administrator Access — A Step-by-Step Guide
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/azure"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;azure&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cloud"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cloud&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/microsoft"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;microsoft&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/beginners"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;beginners&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Azure Entra ID: Creating Users and Managing Global Administrator Access — A Step-by-Step Guide</title>
      <dc:creator>Shadrack Acquah</dc:creator>
      <pubDate>Tue, 26 May 2026 15:45:54 +0000</pubDate>
      <link>https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9</link>
      <guid>https://dev.to/shadrack_acquah_b59ab8555/azure-entra-id-creating-users-and-managing-global-administrator-access-a-step-by-step-guide-6n9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Microsoft Azure Entra ID (formerly known as Azure Active Directory) is Microsoft's cloud-based identity and access management service. It helps organizations manage who can access what — from internal apps to cloud resources — and is a foundational skill for any cloud or IT administrator.&lt;br&gt;
In this guide, I'll walk you through:&lt;/p&gt;

&lt;p&gt;**1. Creating a new user in Azure Entra ID&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Signing in with the new user account&lt;/li&gt;
&lt;li&gt;Granting Global Administrator access to that user&lt;/li&gt;
&lt;li&gt;Using the promoted account to create a second user&lt;/li&gt;
&lt;li&gt;Revoking the Global Administrator role from the first user
**
Let's get started!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An active Azure subscription (a free account works)&lt;br&gt;
Access to the Azure Portal with an existing admin account&lt;br&gt;
A browser in private/incognito mode (useful for signing in with the new user simultaneously)&lt;/p&gt;

&lt;p&gt;Step 1 — Sign In to the Azure Portal&lt;br&gt;
Open your browser and navigate to &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;. Sign in with your existing administrator account.&lt;/p&gt;

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

&lt;p&gt;Once signed in, you'll land on the Azure home dashboard. From here, we'll navigate to Microsoft Entra ID.&lt;br&gt;
In the left sidebar or search bar at the top, type "Microsoft Entra ID" and click on it.&lt;/p&gt;

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

&lt;p&gt;Step 2 — Create the First New User&lt;br&gt;
Inside the Microsoft Entra ID blade, click on "Users" in the left-hand menu under the Manage section.&lt;/p&gt;

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

&lt;p&gt;On the Users page, click "+ New user" at the top of the page, then select "Create new user" from the dropdown.&lt;/p&gt;

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

&lt;p&gt;You'll be taken to the Create new user form. Fill in the following fields:&lt;br&gt;
*&lt;em&gt;Field                    Example Value *&lt;/em&gt;&lt;br&gt;
User principal name     &lt;a href="mailto:john.doe@yourdomain.onmicrosoft.com"&gt;john.doe@yourdomain.onmicrosoft.com&lt;/a&gt;&lt;br&gt;
Display name            John Doe&lt;br&gt;
Password                Auto-generate or set a temporary password&lt;/p&gt;

&lt;p&gt;⚠️ Note: Copy the temporary password — you'll need it to sign in as this user in the next step.&lt;/p&gt;

&lt;p&gt;After filling in the details, click "Review + create", then "Create".&lt;/p&gt;

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

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

&lt;p&gt;Step 3 — Sign In With the Newly Created User Account&lt;br&gt;
Open a private/incognito browser window and navigate to &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;.&lt;br&gt;
Sign in using the new user's credentials:&lt;/p&gt;

&lt;p&gt;Username: the user principal name you set (e.g., &lt;a href="mailto:john.doe@yourdomain.onmicrosoft.com"&gt;john.doe@yourdomain.onmicrosoft.com&lt;/a&gt;)&lt;br&gt;
Password: the temporary password you copied&lt;/p&gt;

&lt;p&gt;You will be prompted to change the password on first login. Set a new permanent password and complete the sign-in process.&lt;/p&gt;

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

&lt;p&gt;The new user has limited access at this point — this is expected. Keep this window open; we'll come back to it.&lt;/p&gt;

&lt;p&gt;Step 4 — Grant Global Administrator Access to the First User&lt;br&gt;
Switch back to your original browser window (logged in as your admin account).&lt;br&gt;
In Microsoft Entra ID, navigate to "Users" and search for or click on the user you just created (e.g., John Doe).&lt;/p&gt;

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

&lt;p&gt;On the user's profile page, click "Assigned roles" in the left menu under the Manage section.&lt;/p&gt;

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

&lt;p&gt;Click "+ Add assignments" at the top.&lt;/p&gt;

&lt;p&gt;In the search box that appears on the right panel, type "Global Administrator" and check the box next to it.&lt;br&gt;
Click "Add" to confirm.&lt;/p&gt;

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

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

&lt;p&gt;The first user now has Global Administrator privileges.&lt;/p&gt;

&lt;p&gt;Step 5 — Create a Second User Using the Promoted Account&lt;br&gt;
Switch back to the incognito/private browser window where you're signed in as the first user (e.g., John Doe).&lt;/p&gt;

&lt;p&gt;⚠️ Note: You may need to refresh the page or sign out and sign back in for the new Global Administrator role to take effect.&lt;/p&gt;

&lt;p&gt;After refreshing, navigate to Microsoft Entra ID → Users and click "+ New user" → "Create new user" again.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte28ueao52t3vdbbr3xl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte28ueao52t3vdbbr3xl.png" alt="Created User can create" width="800" height="357"&gt;&lt;/a&gt;&lt;br&gt;
Fill in the details for the second user:&lt;br&gt;
Field                 Example Value&lt;br&gt;
User principal name   &lt;a href="mailto:jane.smith@yourdomain.onmicrosoft.com"&gt;jane.smith@yourdomain.onmicrosoft.com&lt;/a&gt;&lt;br&gt;
Display name          Jane Smith&lt;br&gt;
Password             Auto-generate or set a temporarypassword&lt;br&gt;
Click "Review + create", then "Create".&lt;/p&gt;

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

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

&lt;p&gt;The second user has been successfully created using the promoted account.&lt;/p&gt;

&lt;p&gt;Step 6 — Revoke Global Administrator Access From the First User&lt;br&gt;
Switch back to your original admin browser window.&lt;br&gt;
Navigate to Microsoft Entra ID → Users and select the first user (e.g., John Doe).&lt;br&gt;
Click "Assigned roles" in the left menu.&lt;/p&gt;

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

&lt;p&gt;Click the checkbox next to "Global Administrator" to select it, then click "Remove assignments" (or the trash/remove icon that appears).&lt;br&gt;
Confirm the removal when prompted.&lt;/p&gt;

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

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

&lt;p&gt;The Global Administrator role has been successfully revoked from the first user.&lt;/p&gt;

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

&lt;p&gt;Azure Entra ID is the identity backbone of Microsoft Azure, managing users, groups, and access roles.&lt;br&gt;
Global Administrator is the most powerful role in Azure Entra ID — assign it carefully and always revoke it when it's no longer needed. This follows the principle of least privilege.&lt;br&gt;
Using incognito/private windows is a practical trick for testing multiple user sessions simultaneously without conflict.&lt;br&gt;
Role assignments in Entra ID may take a few seconds to propagate — always refresh after making changes.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Managing identities and access in Azure Entra ID is a critical cloud skill. Through this exercise, we've seen how straightforward it is to create users, elevate their privileges, and — importantly — take those privileges away. Practicing proper access management habits now builds a strong foundation for real-world cloud administration.&lt;br&gt;
If you found this guide helpful, drop a reaction below or share it with a teammate learning Azure!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>microsoft</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
