Skip to content

Commit 07f8a17

Browse files
authored
Merge pull request #54014 from Rob-Barefoot/fundlp4m4
Initial commit: guided-project-new-employee-access
2 parents 1add2b9 + d3472cd commit 07f8a17

18 files changed

Lines changed: 537 additions & 0 deletions
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.introduction
3+
title: Introduction
4+
metadata:
5+
title: Introduction
6+
description: "Introduction"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/1-introduction.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.exercise-create-user-group
3+
title: Exercise - Create user and group
4+
metadata:
5+
title: Exercise - Create user and group
6+
description: "Exercise - Create user and group"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/2-exercise-create-user-group.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.exercise-assign-role
3+
title: Exercise - Assign RBAC role at scope
4+
metadata:
5+
title: Exercise - Assign RBAC role at scope
6+
description: "Exercise - Assign RBAC role at scope"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/3-exercise-assign-role.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.exercise-verify-least-privilege
3+
title: Exercise - Verify least-privilege model
4+
metadata:
5+
title: Exercise - Verify least-privilege model
6+
description: "Exercise - Verify least-privilege model"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 6
14+
content: |
15+
[!include[](includes/4-exercise-verify-least-privilege.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.validate-success
3+
title: Validate success
4+
metadata:
5+
title: Validate success
6+
description: "Validate success"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/5-validate-success.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.clean-up-resources
3+
title: Clean up resources
4+
metadata:
5+
title: Clean up resources
6+
description: "Clean up resources"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/6-clean-up-resources.md)]
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.knowledge-check
3+
title: Knowledge check
4+
metadata:
5+
title: Knowledge check
6+
description: "Knowledge check"
7+
ms.date: 03/29/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/7-knowledge-check.md)]
16+
quiz:
17+
title: "Check your knowledge"
18+
questions:
19+
- content: "What is the benefit of assigning RBAC roles to a group instead of individual users?"
20+
choices:
21+
- content: "Groups automatically inherit permissions from the subscription."
22+
isCorrect: false
23+
explanation: "Groups do not automatically inherit permissions. Roles must be explicitly assigned."
24+
- content: "It simplifies access management when users join or leave the team."
25+
isCorrect: true
26+
explanation: "When you assign a role to a group, new members automatically get the role and removed members automatically lose it."
27+
- content: "Groups can hold more permissions than individual users."
28+
isCorrect: false
29+
explanation: "The same roles and permissions are available for both users and groups."
30+
- content: "What RBAC role provides view-only access to Azure resources without allowing changes?"
31+
choices:
32+
- content: "Contributor"
33+
isCorrect: false
34+
explanation: "The Contributor role allows creating and managing resources, not just viewing them."
35+
- content: "Owner"
36+
isCorrect: false
37+
explanation: "The Owner role grants full access including the ability to assign roles to others."
38+
- content: "Reader"
39+
isCorrect: true
40+
explanation: "The Reader role grants view-only access. Users can see resources but cannot create, modify, or delete them."
41+
- content: "At what scope level was the RBAC role assigned in this guided project?"
42+
choices:
43+
- content: "Subscription"
44+
isCorrect: false
45+
explanation: "The role was scoped more narrowly than the entire subscription to follow least-privilege principles."
46+
- content: "Resource group"
47+
isCorrect: true
48+
explanation: "The Reader role was assigned at the resource group level, limiting access to only the resources in that group."
49+
- content: "Individual resource"
50+
isCorrect: false
51+
explanation: "While you can scope roles to individual resources, this project scoped the role at the resource group level."
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-new-employee-access.summary
3+
title: Summary
4+
metadata:
5+
title: Summary
6+
description: "Summary"
7+
ms.date: 03/16/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/8-summary.md)]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
This guided project focuses on setting up identity and access for a new employee using Microsoft Entra ID and Azure role-based access control (RBAC).
2+
3+
Microsoft Entra ID is the identity service that manages users and groups in Azure. RBAC lets you assign specific permissions at a specific scope, so users get exactly the access they need and nothing more. Together, they implement the principle of least privilege.
4+
5+
## Scenario
6+
7+
A new support analyst is joining your team and needs read-only access to a development resource group. You create the user account, add them to a security group, assign the Reader role at the resource group scope, and then sign in as the new user to verify that least-privilege access works as expected.
8+
9+
- Exercise 1 - Create a user account and security group in Entra ID.
10+
- Exercise 2 - Assign the Reader role to the group at resource group scope.
11+
- Exercise 3 - Verify that read access is granted and write access is denied.
12+
13+
:::image type="content" source="../media/overview-architecture.png" alt-text="Diagram showing the identity and access flow from Entra ID user and group through RBAC role assignment to resource group scope." border="false":::
14+
15+
By the end of this project, you have hands-on experience creating identities, assigning group-based RBAC, and validating access controls.
16+
17+
> [!NOTE]
18+
> This is a guided project module where you complete a project by following step-by-step instructions.
19+
20+
## Skilling areas
21+
22+
In this project, you practice skills in the following areas:
23+
24+
**Manage identities in Entra ID**
25+
+ Create a security group.
26+
+ Create a user account.
27+
+ Add a user to a group.
28+
29+
**Assign Azure RBAC roles**
30+
+ Assign a built-in role to a group at resource group scope.
31+
+ Understand scope inheritance and the Reader role.
32+
33+
**Validate access and audit changes**
34+
+ Use Check access to preview effective permissions.
35+
+ Review role assignment events in the Activity Log.
36+
+ Enable and generate a Temporary Access Pass (TAP).
37+
+ Sign in as the new user and test permissions firsthand.
38+
39+
> [!IMPORTANT]
40+
> This project uses the Azure portal for every step. No prior Azure experience is required.
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
This guided project consists of the following exercises:
2+
3+
- **Create user and group**
4+
- Assign RBAC role at scope
5+
- Verify least-privilege model
6+
7+
In this exercise, you create a security group, a new user account, and add the user to the group. This sets up the identity foundation that you assign permissions to in the next exercise.
8+
9+
This exercise includes the following tasks:
10+
11+
- Prepare the environment
12+
- Create a test storage account
13+
- Create the security group
14+
- Create the user account
15+
- Add the user to the group
16+
17+
**Outcome:** A new user account and security group are ready for access assignment.
18+
19+
> [!TIP]
20+
> Pause after each major action and confirm the page status before moving on. This habit prevents compounding mistakes.
21+
22+
## Task 1: Prepare the environment
23+
24+
Set up your Azure environment before you begin. You create a resource group and a test resource as a safe sandbox for practicing access control.
25+
26+
> [!WARNING]
27+
> This project creates Azure resources that may incur charges. Complete the clean-up unit when you're done to avoid unintended expenses.
28+
29+
1. Sign in to the [Azure portal](https://portal.azure.com) with an account that can manage users and role assignments.
30+
2. In the portal search bar, search for **Resource groups** and select **Resource groups**.
31+
3. Select **+ Create**. Name the resource group **rg-gp-access-model**, choose your preferred region, and select **Review + create** then **Create**.
32+
33+
## Task 2: Create a test storage account
34+
35+
Create a storage account inside the resource group. This resource provides a scope for your RBAC role assignments.
36+
37+
1. In the portal search bar, search for **Storage accounts** and select **Storage accounts**.
38+
2. Select **+ Create**.
39+
3. On the Basics tab, select **rg-gp-access-model** as the resource group.
40+
4. For **Storage account name**, enter a globally unique name (for example, **stgpaccessmodel** followed by your initials and a number).
41+
5. For **Region**, use the same region as the resource group.
42+
6. For **Preferred Storage Type**, select **Azure Blob Storage or Azure Data Lake Storage Gen 2**.
43+
7. For **Performance**, select **Standard**.
44+
8. For **Redundancy**, select **Locally-redundant storage (LRS)**.
45+
9. Select **Review + create** and then select **Create**.
46+
10. When deployment finishes, select **Go to resource**.
47+
48+
## Task 3: Create the security group
49+
50+
Set up a security group that serves as a container for your new user. Using groups makes permission management scalable—you assign permissions once to a group, then add or remove users as needed.
51+
52+
1. In the portal search bar, search for **Microsoft Entra ID** and select **Microsoft Entra ID**.
53+
2. In the left menu under **Manage**, select **Groups**.
54+
3. Select **New group**.
55+
3. For **Group type**, select **Security**.
56+
4. For **Group name**, enter **gp-rg-readers**.
57+
5. For **Group description**, enter **Readers for the guided project resource group**.
58+
6. Select **Create**.
59+
60+
> [!NOTE]
61+
> **Validation step:** Verify the **gp-rg-readers** security group now exists in your tenant.
62+
63+
> [!NOTE]
64+
> Each exercise includes validation steps like this one. Track your results as you go—you'll review them all in the validation unit at the end of this module.
65+
66+
## Task 4: Create the user account
67+
68+
Create a new identity in Entra ID for the team member. This user account will be added to the security group, inheriting all permissions assigned to that group.
69+
70+
1. In the portal search bar, search for **Microsoft Entra ID** and select **Microsoft Entra ID**.
71+
2. In the left menu under **Manage**, select **Users**.
72+
3. Select **New user** and then select **Create new user**.
73+
4. For **User principal name**, enter a unique name (for example, **alexgp**). This is the sign-in name the user would use to access Azure (combined with your tenant domain, it becomes something like **[email protected]**). Record this value—you need it for later validation.
74+
5. For **Display name**, enter **Alex Guided Project**.
75+
6. Select **Review + create** and then select **Create**.
76+
7. The Users list may not refresh automatically. Select **Refresh** to confirm the new user appears in the list.
77+
78+
> [!NOTE]
79+
> **Validation step:** Confirm the new user account is created. Record the user principal name (UPN) for later validation.
80+
81+
## Task 5: Add the user to the group
82+
83+
Complete the group membership by adding the new user. This establishes the connection between the user and the group, so the user now inherits all RBAC permissions assigned to the group.
84+
85+
1. In the Users list, select the checkbox to the left of **Alex Guided Project**.
86+
2. In the horizontal menu at the top, select **Edit**.
87+
3. Select **Add to group**.
88+
4. Search for and select **gp-rg-readers**, then select **Select**.
89+
90+
> [!NOTE]
91+
> **Validation step:** Confirm the user is now a member of **gp-rg-readers**. Any RBAC permissions assigned to this group will apply to all members.

0 commit comments

Comments
 (0)