D2 · 13% · CGRC

C02 — Vận hành chương trình GRC

GRC Program Operations — Xây dựng và vận hành chương trình GRC: policy lifecycle, security awareness training, phát triển security culture, GRC platforms (Archer, ServiceNow), metrics và reporting cho management.

Tools
ServiceNow · Archer
Platform
PowerShell · Python
Quarter
Q2/2026
Updated
24/05/2026
Author
Trần Văn Hòa (MCT)
Version
v1.0

Mục tiêu bài học — Learning Objectives

  • Xây dựng policy lifecycle hoàn chỉnh: draft → review → approve → publish → monitor → retire
  • Thiết kế chương trình Security Awareness Training (SAT) hiệu quả với phishing simulation
  • So sánh GRC platforms: RSA Archer, ServiceNow GRC, MetricStream, OneTrust — chọn đúng nền tảng
  • Tạo security metrics dashboard và báo cáo lên management bằng dữ liệu thực tế
  • Tự động hóa policy compliance tracking với PowerShell và Python scripts

Lý thuyết — Theory

1. Policy Lifecycle Management

Policy là nền tảng của GRC program. Không có policy rõ ràng, không thể đo lường compliance hay quản lý risk một cách nhất quán. Policy hierarchy: Policy → Standard → Procedure → Guideline (từ mandatory đến advisory).

Policy Câu lệnh cao cấp về intention và direction. VD: "Tất cả dữ liệu nhạy cảm phải được mã hóa." — Bắt buộc, không chi tiết kỹ thuật.
Standard Yêu cầu cụ thể hơn. VD: "Dữ liệu at-rest dùng AES-256; in-transit dùng TLS 1.2+." — Bắt buộc, đo lường được.
Procedure Hướng dẫn từng bước thực hiện. VD: "Quy trình mã hóa database với AWS KMS trong 5 bước." — Bắt buộc, operational.
Guideline Khuyến nghị best practices. VD: "Nên dùng customer-managed keys thay vì AWS-managed keys." — Không bắt buộc.
Policy Lifecycle — 6 giai đoạn:
1. Draft 2. Review (SME/Legal) 3. Approve (CISO/Board) 4. Publish & Communicate 5. Monitor Compliance 6. Review/Retire (annual)

2. Security Awareness Training (SAT) Program

Theo SANS Institute, 95% các vụ tấn công thành công bắt đầu từ human error. SAT không phải là "training một lần mỗi năm" — đó là continuous reinforcement thay đổi hành vi bảo mật.

Thành phần SAT hiệu quả:
  • Role-based content: Developer, Finance, HR, IT nhận nội dung phù hợp rủi ro vai trò
  • Phishing simulation: Monthly simulated phishing → track click rate theo thời gian
  • Micro-learning: Video 2-3 phút > khóa học 2 giờ → retention rate cao hơn
  • Gamification: Security scoreboard, badges → healthy competition giữa teams
  • Just-in-time training: Ai click phishing link → ngay lập tức nhận micro-module
KPIs đo lường SAT:
  • Phishing click rate: Mục tiêu <5% sau 6 tháng training
  • Training completion: >95% nhân viên hoàn thành annual training
  • Report rate: % nhân viên báo cáo phishing nghi ngờ (tăng = tốt)
  • Repeat offenders: Theo dõi cá nhân click phishing >2 lần
  • Knowledge retention: Quiz score trước/sau training
Công cụ phổ biến: KnowBe4, Proofpoint Security Awareness, Mimecast, SANS Security Awareness. Tích hợp với Active Directory/Entra ID để auto-assign training theo role và department.

3. GRC Platforms — So sánh và lựa chọn

GRC platform tập trung hóa risk register, policy library, control mapping, audit management và compliance reporting. Lựa chọn phụ thuộc vào quy mô tổ chức, ngân sách và regulatory requirements.

PlatformĐiểm mạnhPhù hợp nhấtChi phí
RSA ArcherHighly customizable, mature platform, strong audit mgmtEnterprise, Financial, Healthcare$$$$
ServiceNow GRCITSM integration, workflow automation, good UXOrg đã dùng ServiceNow$$$
MetricStreamStrong risk quantification (FAIR), AI-assistedLarge enterprises, banking$$$$
OneTrustPrivacy-first, GDPR/CCPA, cookie consentData privacy focus$$$
Vanta / DrataSOC 2/ISO 27001 automation, continuous complianceSaaS startups, SMB$$
ERAMBA (OSS)Free, ISO 27001 aligned, community editionBudget-constrained orgsFree/$

4. Security Metrics và Management Reporting

GRC Operations phải liên tục đo lường và báo cáo hiệu quả chương trình. Báo cáo cần được điều chỉnh theo đối tượng: Board muốn business risk; Operations muốn technical details.

Board Dashboard (quarterly)
  • • Overall risk posture (RAG status)
  • • Top 5 residual risks
  • • Compliance rate per framework (%)
  • • Security investment vs. incident cost
  • • Regulatory changes on horizon
CISO Dashboard (monthly)
  • • Open risks by severity
  • • Control effectiveness scores
  • • Audit findings & remediation %
  • • Policy exceptions granted
  • • SAT completion & phishing rates
Ops Team (weekly)
  • • Patch compliance by system
  • • Vulnerability age analysis
  • • Control failures & exceptions
  • • Upcoming audit deadlines
  • • Ticket SLA breaches

5. Exception Management & Policy Waivers

Không phải lúc nào cũng có thể tuân thủ 100% policy ngay lập tức. Exception management là quy trình xử lý ngoại lệ có kiểm soát — không phải "vi phạm bị bỏ qua" mà là "rủi ro được chấp nhận có tài liệu."

Exception Request phải chứa:
  • • Policy/control bị ngoại lệ
  • • Lý do kinh doanh (business justification)
  • • Thời hạn ngoại lệ (không quá 12 tháng)
  • • Compensating controls thay thế
  • • Risk owner chấp nhận residual risk
  • • Kế hoạch remediation dài hạn
Approval workflow:
  • • Low risk: Risk Manager approve
  • • Medium risk: CISO approve
  • • High risk: CISO + CRO approve
  • • Critical risk: Board sign-off required
  • • Track tất cả exceptions trong GRC platform
  • • Review exceptions quarterly

Bài thực hành — Hands-on Labs

LAB 01

Policy Compliance Tracker với PowerShell — Kiểm tra Password Policy & User Training Status

Platform
Active Directory / Entra ID
Tools
PowerShell, AD Module
Output
CSV Report
Thời gian
25 phút
Bước 1: Kiểm tra Password Policy compliance
# Policy requirement: MinPasswordLength=14, ComplexityEnabled=True, MaxAge=90 days
$policyRequirements = @{
    MinPasswordLength  = 14
    ComplexityEnabled  = $true
    MaxPasswordAgeDays = 90
    LockoutThreshold   = 5
}

# Lấy default domain password policy
Import-Module ActiveDirectory
$domainPolicy = Get-ADDefaultDomainPasswordPolicy

$policyFindings = @()

# Check MinPasswordLength
$policyFindings += [PSCustomObject]@{
    Control  = "IA-5(1)"
    Check    = "MinPasswordLength"
    Required = $policyRequirements.MinPasswordLength
    Actual   = $domainPolicy.MinPasswordLength
    Status   = if ($domainPolicy.MinPasswordLength -ge $policyRequirements.MinPasswordLength) { "PASS" } else { "FAIL" }
}

# Check Complexity
$policyFindings += [PSCustomObject]@{
    Control  = "IA-5(1)"
    Check    = "ComplexityEnabled"
    Required = $policyRequirements.ComplexityEnabled
    Actual   = $domainPolicy.ComplexityEnabled
    Status   = if ($domainPolicy.ComplexityEnabled -eq $policyRequirements.ComplexityEnabled) { "PASS" } else { "FAIL" }
}

# Check MaxPasswordAge
$maxAgeDays = $domainPolicy.MaxPasswordAge.TotalDays
$policyFindings += [PSCustomObject]@{
    Control  = "IA-5(f)"
    Check    = "MaxPasswordAgeDays"
    Required = $policyRequirements.MaxPasswordAgeDays
    Actual   = $maxAgeDays
    Status   = if ($maxAgeDays -le $policyRequirements.MaxPasswordAgeDays -and $maxAgeDays -gt 0) { "PASS" } else { "FAIL" }
}

$policyFindings | Format-Table -AutoSize
Bước 2: Kiểm tra Security Training completion (giả lập từ AD attribute)
# Lấy users enabled và kiểm tra training attribute (extensionAttribute1 = training date)
$users = Get-ADUser -Filter {Enabled -eq $true} `
    -Properties DisplayName, Department, Mail, extensionAttribute1 |
    Where-Object { $_.DistinguishedName -notlike "*OU=ServiceAccounts*" }

$trainingReport = foreach ($user in $users) {
    $trainingDate = $null
    $status       = "NOT COMPLETED"
    $daysAgo      = $null

    if ($user.extensionAttribute1) {
        $trainingDate = [datetime]::ParseExact($user.extensionAttribute1, "yyyy-MM-dd", $null)
        $daysAgo      = (Get-Date) - $trainingDate
        $status       = if ($daysAgo.Days -le 365) { "CURRENT" } else { "OVERDUE" }
    }

    [PSCustomObject]@{
        Name         = $user.DisplayName
        Department   = $user.Department
        Email        = $user.Mail
        LastTraining = $trainingDate
        DaysAgo      = $daysAgo?.Days
        Status       = $status
    }
}

$trainingReport | Export-Csv "C:\GRC\training-compliance.csv" -NoTypeInformation
$summary = $trainingReport | Group-Object Status | Select-Object Name, Count
Write-Host "Training Compliance Summary:" -ForegroundColor Yellow
$summary | Format-Table
KẾT QUẢ ĐẦU RA (Expected Output)
Password Policy Compliance:
Control   Check              Required  Actual  Status
-------   -----              --------  ------  ------
IA-5(1)   MinPasswordLength  14        12      FAIL
IA-5(1)   ComplexityEnabled  True      True    PASS
IA-5(f)   MaxPasswordAgeDays 90        90      PASS

Training Compliance Summary:
Name           Count
----           -----
CURRENT        287
OVERDUE         43
NOT COMPLETED   12

[CSV exported to C:\GRC\training-compliance.csv]
Action required: 43 users overdue + 12 never completed
LAB 02

GRC Metrics Dashboard — Python Script tạo Security KPI Report

Platform
Linux / Windows
Tools
Python 3, openpyxl
Output
Excel Dashboard
Thời gian
20 phút
Script tạo GRC metrics report từ dữ liệu CSV (risk register, vuln scan, training)
#!/usr/bin/env python3
"""GRC Metrics Report Generator — tổng hợp KPIs từ multiple data sources."""

import json
from datetime import datetime

# Giả lập data (trong thực tế đọc từ CSV/API GRC platform)
grc_data = {
    "risk_register": [
        {"id": "R001", "name": "Ransomware attack", "severity": "Critical", "status": "Open"},
        {"id": "R002", "name": "Insider threat",   "severity": "High",     "status": "Mitigating"},
        {"id": "R003", "name": "Supply chain compromise", "severity": "High", "status": "Open"},
        {"id": "R004", "name": "GDPR non-compliance", "severity": "Medium", "status": "Closed"},
    ],
    "compliance": {
        "ISO_27001": 87, "NIST_CSF": 79, "PCI_DSS": 94, "GDPR": 91
    },
    "training": {
        "total_users": 342, "completed": 287,
        "phishing_click_rate": 4.2, "report_rate": 23.5
    },
    "vulnerabilities": {
        "critical": 3, "high": 12, "medium": 47, "avg_remediation_days": 8.3
    }
}

# Tính toán KPIs
risks          = grc_data["risk_register"]
open_critical  = len([r for r in risks if r["severity"] == "Critical" and r["status"] == "Open"])
training_rate  = (grc_data["training"]["completed"] / grc_data["training"]["total_users"]) * 100
avg_compliance = sum(grc_data["compliance"].values()) / len(grc_data["compliance"])

# In báo cáo
report = {
    "report_date":        datetime.now().strftime("%Y-%m-%d"),
    "open_critical_risks": open_critical,
    "avg_compliance_pct": round(avg_compliance, 1),
    "training_completion": round(training_rate, 1),
    "phishing_click_rate": grc_data["training"]["phishing_click_rate"],
    "critical_vulns":      grc_data["vulnerabilities"]["critical"],
    "avg_remediation_days":grc_data["vulnerabilities"]["avg_remediation_days"],
    "compliance_by_framework": grc_data["compliance"]
}

print("=" * 55)
print(f"  GRC MONTHLY KPI REPORT — {report['report_date']}")
print("=" * 55)
for k, v in report.items():
    if isinstance(v, dict):
        print(f"  {k}:")
        for fk, fv in v.items():
            print(f"    {fk}: {fv}%")
    else:
        print(f"  {k}: {v}")

# Lưu JSON để import vào dashboard
with open("/tmp/grc-kpi-report.json", "w") as f:
    json.dump(report, f, indent=2)
print("\nReport saved: /tmp/grc-kpi-report.json")
KẾT QUẢ ĐẦU RA (Expected Output)
=======================================================
  GRC MONTHLY KPI REPORT — 2026-05-24
=======================================================
  report_date: 2026-05-24
  open_critical_risks: 1
  avg_compliance_pct: 87.8
  training_completion: 83.9
  phishing_click_rate: 4.2
  critical_vulns: 3
  avg_remediation_days: 8.3
  compliance_by_framework:
    ISO_27001: 87%
    NIST_CSF: 79%
    PCI_DSS: 94%
    GDPR: 91%

Report saved: /tmp/grc-kpi-report.json
[Import JSON into Power BI / Grafana for visual dashboard]

Tình huống doanh nghiệp — Business Scenario

CASE STUDY — MediCare Vietnam (Healthcare)

MediCare Vietnam (500 nhân viên, 3 bệnh viện) phải tuân thủ HIPAA và Nghị định 13/2023 về bảo vệ dữ liệu cá nhân. Họ chưa có GRC platform, policy library lạc hậu (cập nhật lần cuối 2019), và không có SAT program chính thức.

1
Policy Gap Analysis: Thuê consultant so sánh policy hiện tại với HIPAA Security Rule 45 CFR Part 164. Phát hiện 23 gaps — tất cả cần policy mới hoặc cập nhật.
2
Triển khai SAT: KnowBe4 với role-based content (doctor khác nurse khác IT). Phishing simulation tháng 1: 34% click rate. Sau 6 tháng training: giảm xuống còn 7%.
3
GRC Platform (Vanta): Automated evidence collection cho HIPAA controls — 40% thời gian chuẩn bị audit được tiết kiệm so với quy trình manual.
4
Kết quả audit HIPAA: Từ "Needs Significant Improvement" (2024) lên "Substantially Compliant" (2026) — không bị fine sau sự cố breach nhỏ vì có documented remediation plan.

Tự kiểm tra — Self-Assessment (5 câu)

1. Đâu là thứ tự đúng trong Policy Hierarchy từ cao xuống thấp (mandatory → advisory)?

A. Guideline → Standard → Policy → Procedure
B. Policy → Standard → Procedure → Guideline ✓
C. Standard → Policy → Guideline → Procedure
D. Policy → Procedure → Guideline → Standard

2. Sau 6 tháng SAT program, metric nào chứng minh rõ nhất rằng security culture đang cải thiện?

A. 100% nhân viên hoàn thành annual training
B. Số lượng phishing emails giảm từ attacker
C. Phishing click rate giảm từ 30% xuống 5% và report rate tăng ✓
D. Zero security incidents trong 6 tháng

Behavioral change (click rate giảm + report rate tăng) chứng minh cultural shift, không chỉ knowledge acquisition.

3. SaaS startup cần đạt SOC 2 Type II trong 6 tháng với ngân sách hạn chế. GRC platform nào phù hợp nhất?

A. RSA Archer
B. MetricStream
C. Vanta hoặc Drata ✓
D. ServiceNow GRC

4. Business Unit yêu cầu exception từ policy "không dùng USB drives" vì cần transfer data vật lý với đối tác. Điều nào PHẢI có trong exception request?

A. Chỉ cần email chấp thuận từ manager
B. Business justification, compensating controls, thời hạn, và risk owner sign-off ✓
C. Báo cáo kỹ thuật từ IT team
D. Danh sách nhân viên sẽ dùng USB

5. Khi nào policy cần được review và update BẮT BUỘC (ngoài annual review)?

A. Khi có nhân viên mới vào
B. Khi CISO yêu cầu
C. Khi có thay đổi quy định pháp lý, incident lớn, hoặc thay đổi kiến trúc hệ thống đáng kể ✓
D. Mỗi 6 tháng bất kể thay đổi
C01: Governance, Risk & Compliance C03: Information Security & Compliance
Zalo