🎯 Mục Tiêu Lab
Bật PIM và truy cập Azure resources trong Microsoft Entra Privileged Identity Management
Tạo Eligible Assignment cho role Contributor — user chỉ có quyền khi kích hoạt
Cấu hình activation settings: MFA required, justification required, thời gian tối đa 8 giờ
User đăng nhập, thực hiện kích hoạt role tạm thời qua PIM portal
Kiểm tra role tự hết hạn sau thời gian cấu hình, xem audit history
Phân biệt Eligible vs Active assignment — khi nào dùng mỗi loại
🏗️ Kịch Bản
Công ty có quy định: không ai được có quyền Contributor thường trực trên production subscription. Thay vào đó, dùng PIM để gán dạng Eligible. Khi cần làm việc, user phải kích hoạt — cung cấp lý do, xác thực MFA — và quyền tự hết sau tối đa 8 giờ. Mọi lần kích hoạt đều được ghi vào audit log.
User "có tư cách" được dùng role, nhưng phải kích hoạt mỗi lần cần. Quyền KHÔNG thường trực.
User có quyền ngay, không cần kích hoạt. Dùng cho role ít nhạy cảm hoặc service account.
PIM cho Azure roles: cần Microsoft Entra ID P2 hoặc Microsoft Entra ID Governance.
📋 Chuẩn Bị
- Microsoft Entra ID P2 license (hoặc trial 30 ngày)
- Quyền Privileged Role Administrator hoặc Global Admin
- User
az500-admin01với MFA đã đăng ký - Resource group
rg-az500-rbacđã tạo (Lab 10)
- PIM cho Azure resources khác với PIM cho Entra roles — lab này dùng Azure resources
- Activation có thể mất 2–3 phút để có hiệu lực
- MFA on activation được khuyến nghị cho tất cả privileged roles
- Eligible assignment có thể có expiry date (recommend: 180 ngày)
🧪 Các Bước Thực Hiện
Truy cập PIM và chọn Azure Resources
- 1.1Portal → tìm Privileged Identity Management (hoặc entra.microsoft.com → Identity Governance → PIM)
- 1.2Menu trái: Azure resources → click Discover resources
- 1.3Lọc theo Resource type: Resource group → tìm
rg-az500-rbac - 1.4Chọn checkbox → click Manage resource để enable PIM cho RG này
- 1.5Xác nhận: RG hiển thị trong danh sách Azure resources của PIM
# Kiểm tra license Entra ID P2 đang active
az ad sp list --display-name "Microsoft Entra ID" --query "[0].appId" -o tsv
# Xem resource group ID để dùng trong PIM scope
RG_ID=$(az group show \
--name rg-az500-rbac \
--query id -o tsv)
echo "Resource Group ID: $RG_ID"
# Lấy Object ID của user sẽ được gán eligible
USER_ID=$(az ad user show \
--id [email protected] \
--query id -o tsv)
echo "User ID: $USER_ID"
Cấu hình Role Settings (Activation Policy)
Trước khi gán eligible assignment, cấu hình chính sách kích hoạt: yêu cầu MFA, justification và giới hạn thời gian.
- 2.1PIM → Azure resources → chọn
rg-az500-rbac - 2.2Menu trái: Settings → tìm role Contributor → click vào
- 2.3Click Edit → Tab Activation
- 2.4Activation maximum duration: 8 hours
- 2.5Bật: Require Azure MFA on activation ✓
- 2.6Bật: Require justification on activation ✓
- 2.7Click Update để lưu settings
Tạo Eligible Assignment cho az500-admin01
- 3.1PIM → Azure resources →
rg-az500-rbac→ Assignments - 3.2Click + Add assignments
- 3.3Select role: Contributor
- 3.4Select member(s): tìm az500-admin01 → Select
- 3.5Next → Assignment type: Eligible (không phải Active)
- 3.6Assignment starts/ends: đặt expiry 90 ngày từ hôm nay
- 3.7Click Assign
# Lấy Role Definition ID của Contributor
CONTRIBUTOR_ID=$(az role definition list \
--name "Contributor" \
--query "[0].name" -o tsv)
# Tính ngày hết hạn (90 ngày)
START_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
END_DATE=$(date -u -d "+90 days" +"%Y-%m-%dT%H:%M:%SZ" 2>/dev/null || \
date -u -v+90d +"%Y-%m-%dT%H:%M:%SZ")
# Tạo PIM eligible assignment bằng REST API (Azure CLI không có command trực tiếp)
# Dùng az rest để gọi PIM API
az rest \
--method PUT \
--url "https://management.azure.com${RG_ID}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/$(uuidgen)?api-version=2022-04-01-preview" \
--body "{
\"properties\": {
\"principalId\": \"$USER_ID\",
\"roleDefinitionId\": \"${RG_ID}/providers/Microsoft.Authorization/roleDefinitions/$CONTRIBUTOR_ID\",
\"requestType\": \"AdminAssign\",
\"scheduleInfo\": {
\"startDateTime\": \"$START_DATE\",
\"expiration\": {
\"type\": \"AfterDateTime\",
\"endDateTime\": \"$END_DATE\"
}
}
}
}"
User Kích Hoạt Role Tạm Thời
Đăng nhập bằng az500-admin01 và thực hiện kích hoạt role qua PIM. Đây là flow người dùng thực tế sẽ thực hiện.
- 4.1Incognito browser → đăng nhập az500-admin01
- 4.2Tìm Privileged Identity Management → My roles
- 4.3Tab Azure resource roles → thấy Contributor với trạng thái Eligible
- 4.4Click Activate bên cạnh Contributor
- 4.5Duration: chọn 4 hours (tối đa 8h theo policy)
- 4.6Reason: nhập "Lab 12: testing PIM eligible activation"
- 4.7Click Activate → xác thực MFA khi được yêu cầu
- 4.8Chờ 2–3 phút → tab Active assignments → thấy Contributor đã active
# Đăng nhập bằng az500-admin01
az login --username [email protected]
# Kích hoạt PIM role qua REST API
az rest \
--method PUT \
--url "https://management.azure.com${RG_ID}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/$(uuidgen)?api-version=2022-04-01-preview" \
--body "{
\"properties\": {
\"principalId\": \"$USER_ID\",
\"roleDefinitionId\": \"${RG_ID}/providers/Microsoft.Authorization/roleDefinitions/$CONTRIBUTOR_ID\",
\"requestType\": \"SelfActivate\",
\"justification\": \"Lab 12: testing PIM eligible activation\",
\"scheduleInfo\": {
\"startDateTime\": null,
\"expiration\": {
\"type\": \"AfterDuration\",
\"duration\": \"PT4H\"
}
}
}
}"
# Kiểm tra active assignment
az role assignment list \
--scope $RG_ID \
--assignee [email protected] \
--output table
Xem Audit History và kiểm tra role hết hạn
- 5.1PIM (với admin account) → Azure resources →
rg-az500-rbac→ Audit resource - 5.2Xem event: "Member activated role" với requestor = az500-admin01, justification đã nhập
- 5.3Kiểm tra Active assignments → thấy Contributor với End time = 4 giờ từ lúc kích hoạt
- 5.4(Optional) Deactivate sớm: My roles → Active → Contributor → Deactivate
# Xem role assignment schedule (active assignments với expiry)
az rest \
--method GET \
--url "https://management.azure.com${RG_ID}/providers/Microsoft.Authorization/roleAssignmentScheduleInstances?api-version=2022-04-01-preview" \
--query "value[?principalId=='$USER_ID'].{role:roleDefinitionId, startTime:startDateTime, endTime:endDateTime, status:status}" \
-o table
# Xem eligible schedules
az rest \
--method GET \
--url "https://management.azure.com${RG_ID}/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?api-version=2022-04-01-preview" \
--query "value[].{principal:principalId, role:roleDefinitionId, end:endDateTime}" \
-o json
🧹 Dọn Dẹp Tài Nguyên
- 1PIM → Azure resources → rg-az500-rbac → Assignments → Eligible assignments
- 2Chọn az500-admin01 / Contributor → click Remove → xác nhận
- 3Giữ lại RG nếu dùng tiếp cho Lab 13, xóa nếu không cần
📊 Kết Quả Đầu Ra Lab 12
PIM → Eligible assignments hiển thị az500-admin01 / Contributor với expiry 90 ngày
MFA required, justification required, max 8h — tất cả được lưu trong Settings
Active assignments hiển thị Contributor với end time = T+4h sau khi activate
Audit resource hiển thị "Member activated role" với justification và timestamp
❓ Câu Hỏi Ôn Tập
1. Sự khác biệt giữa Eligible assignment và Active assignment trong PIM?
Gợi ý: Eligible = phải kích hoạt mỗi lần dùng, có thời hạn và điều kiện; Active = có quyền ngay, không cần kích hoạt.
2. PIM cho Azure resources yêu cầu license gì? Khác với PIM cho Entra roles không?
Gợi ý: Cả hai đều cần Entra ID P2. PIM cho Azure resources quản lý Azure RBAC roles; PIM cho Entra roles quản lý directory roles như Global Admin.
3. Tại sao nên bật "Require justification" khi activate PIM role?
Gợi ý: Tạo audit trail rõ ràng — ai, khi nào, vì lý do gì sử dụng quyền cao. Hỗ trợ điều tra sự cố và compliance.
4. Điều gì xảy ra khi activation duration hết hạn?
Gợi ý: Role assignment tự động bị thu hồi — user trở về trạng thái chỉ Eligible, không còn Active. Cần kích hoạt lại nếu muốn tiếp tục.
5. Eligible assignment expiry khác activation duration như thế nào?
Gợi ý: Eligible expiry = sau ngày này user không còn eligible nữa (ví dụ 90 ngày). Activation duration = thời gian mỗi lần kích hoạt (ví dụ 4–8 giờ).