SSCP Domain 2 · 16%

Kiểm soát truy cập

Access Controls

Domain trọng số cao nhất SSCP: thiết kế và vận hành hệ thống kiểm soát truy cập từ xác thực danh tính, MFA, quản lý tài khoản đặc quyền (PAM), đến federated identity và Zero Trust — nền tảng của mọi kiến trúc bảo mật hiện đại.

Mục tiêu chương / Learning objectives

1. Lý thuyết cốt lõi / Core theory

1.1. Xác minh danh tính & Xác thực (Identity Proofing & Authentication)

Identity Proofing là quá trình xác minh rằng người dùng thực sự là người họ tự xưng trước khi cấp credential. Ba mức: IAL1 (tự khai báo), IAL2 (xác minh qua document như CMND), IAL3 (xác minh biometric tại chỗ). Authentication là kiểm tra credential mỗi khi đăng nhập.

Bốn yếu tố xác thực: Something you know (password, PIN), Something you have (OTP token, smart card, phone), Something you are (fingerprint, face, iris), Somewhere you are (geolocation, IP range). MFA kết hợp từ 2 yếu tố khác loại.

Tỷ lệ lỗi sinh trắc học (Biometric Error Rates)

Phương thứcCER (xấp xỉ)Ghi chú
Vân tay (Fingerprint)~0.1%Phổ biến, chi phí thấp
Mống mắt (Iris)~0.0001%Chính xác nhất, chi phí cao
Khuôn mặt (Face)~0.5%Tiện lợi, dễ bị ảnh hưởng ánh sáng

TOTP vs FIDO2: TOTP (Time-based One-Time Password — RFC 6238) sinh mã 6 số mỗi 30 giây dựa trên shared secret. Dễ phishing (kẻ tấn công tạo trang giả lấy OTP thời gian thực). FIDO2/WebAuthn dùng public-key cryptography: private key lưu trên thiết bị, không bao giờ rời khỏi thiết bị — chống phishing hoàn toàn vì bound to origin.

1.2. Privileged Access Management (PAM)

PAM kiểm soát tài khoản có quyền cao (admin, root, service accounts). Các thành phần chính của giải pháp PAM (CyberArk/Delinea/BeyondTrust):

1.3. Vòng đời tài khoản & Access Review (Account Lifecycle Management)

Vòng đời tài khoản: Provisioning (tạo tài khoản khi nhân viên vào) → Modification (thay đổi quyền khi chuyển bộ phận) → Access Review/Recertification (kiểm tra định kỳ quyền có còn phù hợp không) → Deprovisioning (thu hồi quyền khi nghỉ việc). Deprovisioning chậm là lỗ hổng phổ biến nhất: tài khoản cũ vẫn hoạt động sau khi nhân viên nghỉ.

Access Creep (tích lũy quyền): Theo thời gian nhân viên chuyển bộ phận nhưng không thu hồi quyền cũ, dẫn đến vi phạm least privilege. Access Recertification định kỳ (quarterly/semi-annual) là biện pháp kiểm soát chính.

1.4. Federated Identity — SAML 2.0, OAuth 2.0, OIDC

SAML 2.0 (Security Assertion Markup Language): XML-based, dùng cho enterprise SSO (Single Sign-On). IdP (Identity Provider) phát SAML assertion cho SP (Service Provider). Use case: nhân viên dùng AD FS để đăng nhập Office 365.

OAuth 2.0: Framework ủy quyền (authorization), không phải xác thực. Cấp access token để ứng dụng thứ ba truy cập tài nguyên thay mặt người dùng. Ví dụ: ứng dụng third-party đọc Google Calendar của bạn.

OpenID Connect (OIDC): Layer xác thực (authentication) bên trên OAuth 2.0. Thêm ID token (JWT) mang thông tin người dùng. Use case: "Đăng nhập bằng Google" trên website.

1.5. Zero Trust Network Access (ZTNA)

ZTNA từ bỏ mô hình "perimeter security" (tin tưởng mọi thứ trong mạng nội bộ). Nguyên lý: "Never trust, always verify" — mọi truy cập đều phải xác thực, ủy quyền và kiểm tra liên tục bất kể vị trí. Ba trụ cột: Identity verification (ai đang truy cập?), Device compliance (thiết bị có tuân thủ policy không?), Least privilege access (chỉ cấp quyền tối thiểu cần thiết). ZTNA thay thế VPN vì VPN cấp quyền quá rộng một khi kết nối thành công.

2. Bài thực hành / Hands-on labs

🖥️ Nền tảng / Platform: Windows Server 2022 + Ubuntu 22.04 LTS
🛠️ Công cụ / Tools: PowerShell 7 + AD Module, Bash + PAM

Lab 1 — PAM Audit trên Windows AD (PowerShell)

OS: Windows Server 2022 · Tool: PowerShell 7 + RSAT Active Directory Module

  1. Kiểm tra thành viên nhóm Administrators cục bộ:
# Kiểm tra local Administrators — ai có quyền admin cục bộ?
Get-LocalGroupMember -Group "Administrators" | Select-Object Name, ObjectClass, PrincipalSource

# Kiểm tra thành viên Domain Admins + thông tin mật khẩu
Get-ADGroupMember -Identity "Domain Admins" | Get-ADUser -Properties PasswordLastSet, PasswordNeverExpires, Enabled |
    Select-Object Name, SamAccountName, PasswordLastSet, PasswordNeverExpires, Enabled |
    Format-Table -AutoSize

# Tìm tài khoản có PasswordNeverExpires — vi phạm policy
Search-ADAccount -PasswordNeverExpires | Select-Object Name, SamAccountName, DistinguishedName

# Tìm tài khoản không đăng nhập trong 90 ngày — ứng viên deprovisioning
$cutoff = (Get-Date).AddDays(-90)
Get-ADUser -Filter { LastLogonDate -lt $cutoff -and Enabled -eq $true } `
    -Properties LastLogonDate | Select-Object Name, LastLogonDate | Sort-Object LastLogonDate

✅ Kết quả mong đợi / Expected output: Danh sách thành viên Domain Admins với ngày đổi mật khẩu gần nhất. Tài khoản PasswordNeverExpires = True là rủi ro — cần ép đổi mật khẩu hoặc chuyển sang PAM vault. Tài khoản không active 90 ngày nên disable ngay. Đây là bước audit PAM cơ bản mà SOC phải chạy hàng tuần.

Lab 2 — Cấu hình PAM Linux: faillock & pwquality (Ubuntu 22.04)

OS: Ubuntu 22.04 · Tool: Bash (sudo)

# Xem cấu hình PAM xác thực hiện tại
cat /etc/pam.d/common-auth

# Kiểm tra trạng thái lockout của user root (faillock thay pam_tally2 trên Ubuntu 22.04)
sudo faillock --user root

# Xem cấu hình độ phức tạp mật khẩu
cat /etc/security/pwquality.conf

# Xem toàn bộ cấu hình PAM password
cat /etc/pam.d/common-password

# Kiểm tra user nào đang bị lock
sudo faillock --user testuser

# Reset lockout cho testuser (sau khi xác minh danh tính)
sudo faillock --user testuser --reset

# Xem shadow file — kiểm tra password aging
sudo chage -l root

✅ Kết quả mong đợi / Expected output: common-auth hiển thị các module PAM như pam_unix.so, pam_faillock.so. pwquality.conf cho thấy tham số như minlen=12, dcredit=-1 (yêu cầu ít nhất 1 chữ số). chage -l root hiển thị ngày hết hạn mật khẩu. Nếu Password inactive: never — cần thiết lập aging policy.

3. Tình huống doanh nghiệp / Real-world scenario

Bối cảnh:

Điều tra sự cố phát hiện hacker đã dùng credential của một kỹ sư CNTT đã nghỉ việc 3 tháng trước để đăng nhập vào hệ thống ERP và xuất dữ liệu khách hàng. Tài khoản chưa bị disable vì HR quên thông báo IT khi nhân viên nghỉ.

Giải pháp hệ thống:

  1. Tức thời: Disable tài khoản, thu hồi tất cả sessions và access tokens, reset tất cả mật khẩu mà tài khoản này có thể biết.
  2. Khắc phục quy trình: Tích hợp HRMS (Human Resource Management System) với Active Directory — khi HR terminate employee trong HRMS, tài khoản AD tự động disable trong vòng 24 giờ.
  3. Access Review: Chạy ngay một kỳ recertification cho tất cả tài khoản, ưu tiên người dùng đặc quyền.
  4. PAM deployment: Tài khoản admin không được dùng trực tiếp — phải checkout qua PAM vault với session recording.
  5. ZTNA: Truy cập ERP yêu cầu device compliance + MFA ngay cả từ mạng nội bộ.

Bài học: 85% vi phạm dữ liệu liên quan đến credential bị đánh cắp hoặc lạm dụng. Vòng đời tài khoản và PAM là đầu tư bảo mật có ROI cao nhất.

4. Tự kiểm tra / Knowledge check

  1. Tại sao FIDO2/WebAuthn chống phishing tốt hơn TOTP? Giải thích cơ chế kỹ thuật.
  2. Just-in-Time (JIT) Access trong PAM giảm thiểu rủi ro gì so với tài khoản admin thường trực?
  3. Phân biệt OAuth 2.0 và OIDC. Khi nào dùng OAuth 2.0 đơn thuần, khi nào cần OIDC?
  4. Access Creep là gì? Biện pháp kiểm soát nào ngăn ngừa nó?
  5. Một nhân viên nghỉ việc — liệt kê 5 bước deprovisioning cần thực hiện trong 24 giờ đầu.
C01: Vận hành & Quản trị bảo mật Chương 3: Nhận diện & Phân tích rủi ro
Thực hành trên công cụPowerShell 7 · Bash · PAM
Nền tảngWindows Server 2022 · Ubuntu 22.04
Thời điểm phát hànhQ2/2026
Ngày biên soạn24/05/2026
Người biên soạnTrần Văn Hòa (MCT)
Phiên bảnv1.0
Zalo