LAB 07 AZ-500 ~45 phút Chương 02 Conditional Access

Named Location + Chặn Đăng Nhập Ngoài VN

Tạo Named Location country-based cho Việt Nam, xây dựng Conditional Access policy chặn truy cập từ mọi quốc gia ngoài VN. Kiểm tra bằng What If tool, xem sign-in log để xác minh policy hoạt động đúng.

🎯 Mục Tiêu Lab

Tạo Named Location loại Country dựa trên IP geolocation của Microsoft

Xây dựng CA policy chặn tất cả location ngoài Việt Nam

Loại trừ break-glass account và áp dụng cho nhóm user lab

Chạy Report-only mode và kiểm tra bằng What If trước khi enforce

Phân tích sign-in log để xác nhận location-based blocking hoạt động

Hiểu hạn chế của country-based blocking (VPN bypass, IP geolocation accuracy)

📋 Chuẩn Bị

Yêu cầu:
  • Quyền Conditional Access Administrator hoặc Global Admin
  • Đã hoàn thành Lab 05-06 (có group và CA policy mẫu)
  • Entra ID P1/P2 license (Named Location cần CA)
  • Break-glass account đã chuẩn bị sẵn (từ Lab 05)
Cảnh báo:
  • LUÔN test Report-only trước — sai policy có thể khóa toàn tenant
  • Country blocking dựa trên IP geolocation — VPN có thể bypass
  • Nếu bạn đang ở nước ngoài khi test → dùng break-glass để thoát
  • Không nên block All users — chỉ apply cho nhóm lab cụ thể

🏗️ Kịch Bản

Công ty HoaTranLab Corp có chính sách: nhân viên chỉ được truy cập tài nguyên Azure từ Việt Nam. Security audit phát hiện một số tài khoản đăng nhập bất thường từ nước ngoài. Bạn cần triển khai Conditional Access policy chặn tất cả đăng nhập ngoài lãnh thổ Việt Nam cho nhóm GRP-AZ500-SecOps, áp dụng Report-only 24h, sau đó dùng What If để mô phỏng kết quả trước khi bật thật.

🧪 Các Bước Thực Hiện

1

Tạo Named Location — Vietnam (Country-based)

Cách 1 — Portal (chính)
  1. 1.1Entra ID → Security → Conditional Access → Named locations
  2. 1.2Click + Countries location (không phải IP range)
  3. 1.3Name: NL-AZ500-Vietnam
  4. 1.4Tìm và chọn Vietnam (VN) từ danh sách quốc gia
  5. 1.5Determine location by: IP address (IPv4 and IPv6)
  6. 1.6Create → Xác nhận Named Location xuất hiện trong danh sách
Cách 2 — Microsoft Graph PowerShell
Microsoft Graph PowerShell
Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"

# Tạo Named Location — Việt Nam
$params = @{
    "@odata.type" = "#microsoft.graph.countryNamedLocation"
    displayName   = "NL-AZ500-Vietnam"
    countriesAndRegions = @("VN")
    includeUnknownCountriesAndRegions = $false
}
$location = New-MgIdentityConditionalAccessNamedLocation -BodyParameter $params
Write-Host "Named Location ID: $($location.Id)"

# Xác nhận
Get-MgIdentityConditionalAccessNamedLocation |
  Where-Object { $_.DisplayName -like "*Vietnam*" } |
  Select-Object Id, DisplayName
Kết quả bước 1: Named Location NL-AZ500-Vietnam xuất hiện trong danh sách, loại Country, quốc gia: Vietnam (VN).
2

Tạo CA Policy — Chặn Đăng Nhập Ngoài Việt Nam

Cách 1 — Portal (chính)
  1. 2.1Conditional Access → New policy
  2. 2.2Name: CA-AZ500-BlockOutsideVietnam
  3. 2.3Users: Include → Groups → GRP-AZ500-SecOps → Exclude break-glass account
  4. 2.4Target resources: All cloud apps
  5. 2.5Conditions → Locations: Include → Any location; Exclude → Selected locations → chọn NL-AZ500-Vietnam
  6. 2.6Grant: Block access
  7. 2.7Enable policy: Report-only → Save
Cách 2 — Microsoft Graph PowerShell
Microsoft Graph PowerShell
$groupId     = (Get-MgGroup -Filter "DisplayName eq 'GRP-AZ500-SecOps'").Id
$bgId        = (Get-MgUser -Filter "UserPrincipalName eq '[email protected]'").Id
$locationId  = (Get-MgIdentityConditionalAccessNamedLocation `
                 -Filter "displayName eq 'NL-AZ500-Vietnam'").Id

$params = @{
    displayName = "CA-AZ500-BlockOutsideVietnam"
    state = "enabledForReportingButNotEnforced"   # Report-only
    conditions = @{
        users = @{
            includeGroups = @($groupId)
            excludeUsers  = @($bgId)
        }
        applications = @{ includeApplications = @("All") }
        locations = @{
            includeLocations = @("All")
            excludeLocations = @($locationId)    # Exclude VN = chặn ngoài VN
        }
    }
    grantControls = @{
        operator        = "OR"
        builtInControls = @("block")
    }
}
New-MgIdentityConditionalAccessPolicy -BodyParameter $params
Write-Host "CA-AZ500-BlockOutsideVietnam created (Report-only)"
3

Kiểm Tra Bằng What If Tool

Cách 1 — Portal
  1. 3.1Conditional Access → What If
  2. 3.2Test 1 — User từ nước ngoài: User = az500-secops01, Cloud app = All, IP address = 1.1.1.1 (Cloudflare DNS, USA) → Run → xác nhận policy: Block
  3. 3.3Test 2 — User từ VN: IP = 118.70.0.1 (FPT Telecom VN) → Run → xác nhận policy: Not applied (user được phép)
  4. 3.4Test 3 — Break-glass: User = az500-breakglass → Run → xác nhận Not applied (đã exclude)
Lưu ý What If: IP 118.70.0.1 là của FPT Telecom, Microsoft Entra geolocates về Vietnam. Nếu What If không nhận diện được VN location — thử dùng IP range của VNPT hoặc Viettel.
Cách 2 — Xem Sign-in Logs (Report-only result)
Microsoft Graph PowerShell
Connect-MgGraph -Scopes "AuditLog.Read.All"

# Xem sign-in log và trạng thái CA policy (Report-only)
$userId = (Get-MgUser -Filter "UserPrincipalName eq '[email protected]'").Id

Get-MgAuditLogSignIn -Filter "userId eq '$userId'" -Top 10 |
  Select-Object CreatedDateTime,
    @{N="Location";E={"$($_.Location.City), $($_.Location.CountryOrRegion)"}},
    @{N="IPAddress";E={$_.IpAddress}},
    @{N="CAStatus";E={$_.ConditionalAccessStatus}} |
  Format-Table -AutoSize
4

Bật Policy On và Xem Sign-in Log

Cách 1 — Portal
  1. 4.1Sau khi Report-only log xác nhận đúng → Conditional Access → chọn policy → Enable policy: On → Save
  2. 4.2Kiểm tra: đăng nhập bằng az500-secops01 → quan sát bị block với thông báo "Access has been blocked"
  3. 4.3Sign-in logs → click vào event bị block → tab Conditional Access → xem policy: Failure, Reason: Block
Sign-in Log — Expected Output — Kết quả mong đợi khi bị chặn
Sign-in Event (bị block từ nước ngoài):
  Status             : Failure
  Error Code         : 53003
  Error Description  : Access has been blocked due to conditional access policies
  Conditional Access : CA-AZ500-BlockOutsideVietnam → Applied → Block
  IP Address         : 1.1.1.1
  Location           : [US] — Not in NL-AZ500-Vietnam

Sign-in Event (từ VN — được phép):
  Status             : Success
  Conditional Access : CA-AZ500-BlockOutsideVietnam → Not applied
  IP Address         : 118.70.x.x
  Location           : [VN] — Matches NL-AZ500-Vietnam exclude

📊 Kết Quả Đầu Ra

Named Location VN tạo thành công

NL-AZ500-Vietnam hiển thị loại Country, quốc gia VN

CA Policy Block ngoài VN

Policy trạng thái On, Block location ngoài NL-AZ500-Vietnam

What If xác nhận đúng

IP nước ngoài → Block, IP VN → Not applied, break-glass → Not applied

Sign-in log ghi nhận Block

Error 53003 xuất hiện cho đăng nhập từ ngoài VN

🧹 Dọn Dẹp

Microsoft Graph PowerShell
# Tắt policy sau khi lab (giữ Named Location để tái sử dụng)
$policyId = (Get-MgIdentityConditionalAccessPolicy `
  -Filter "displayName eq 'CA-AZ500-BlockOutsideVietnam'").Id

Update-MgIdentityConditionalAccessPolicy `
  -ConditionalAccessPolicyId $policyId `
  -State "disabled"
Write-Host "Policy disabled — Named Location preserved for reuse"

❓ Câu Hỏi Ôn Tập

1. Có 2 loại Named Location trong Entra ID — đó là gì và khi nào dùng loại nào?

Gợi ý: IP range (dùng cho office IP cố định, có thể mark as Trusted) và Countries location (dùng cho geoblocking theo quốc gia)

2. Tại sao logic của policy là Include = All locations, Exclude = Vietnam mà kết quả lại là "block ngoài VN"?

Gợi ý: CA conditions: Include All → Exclude VN = kết quả condition match = "mọi location NGOẠI TRỪ VN" → Grant = Block

3. Country-based blocking có thể bị bypass bằng phương pháp nào?

Gợi ý: VPN với exit node tại Việt Nam — IP geolocation chỉ dựa trên IP, không xác minh vị trí thật. Giải pháp tốt hơn: kết hợp với device compliance hoặc sign-in risk

4. Error code 53003 trong sign-in log có nghĩa là gì?

Gợi ý: Access has been blocked due to Conditional Access policies — đây là error code chuẩn cho CA block

5. "Trusted Location" trong Named Location có lợi ích gì thêm so với location thường?

Gợi ý: Trusted Location được dùng trong Sign-in Risk evaluation — đăng nhập từ trusted location được coi là ít rủi ro hơn, có thể dùng làm điều kiện bypass MFA

Lab 06: Authentication Methods Thư viện Labs Lab 08: Block Legacy Auth
Zalo