1. Tổng Quan & Kiến Trúc
Mục tiêu Phase 02:
- Deploy 2 VSA nodes (Node 1 Site Chính + Node 2 Site DR)
- Hình thành HA cluster với Cluster IP + WAL streaming replication
- Cấu hình RBAC với four-eyes approval cho thao tác nguy hiểm
- Bật MFA bắt buộc cho tất cả admin accounts
- Cấu hình SAML 2.0 SSO với Azure AD / ADFS
- Kiểm tra planned switchover và xác nhận HA hoạt động
Kiến Trúc HA:
Site Chính (Production) Site DR (Disaster Recovery)
┌─────────────────────────┐ ┌─────────────────────────┐
│ VSA Node 1 │ │ VSA Node 2 │
│ veeam-node1.domain.local│ │ veeam-node2.domain.local│
│ (ACTIVE — primary) │◄──WAL──►│ (STANDBY — hot standby)│
│ PostgreSQL (primary) │ sync │ PostgreSQL (replica) │
│ Rocky Linux 9 JeOS │ │ Rocky Linux 9 JeOS │
└──────────┬──────────────┘ └─────────────────────────┘
│
Cluster IP
veeam-cluster.domain.local
(luôn trỏ vào node Active)
│
┌────────┴────────┐
│ Admin Console │ Tất cả clients kết nối qua
│ Web UI :9443 │ Cluster IP — không bao giờ
│ API :9392 │ kết nối trực tiếp vào node
└─────────────────┘
Failover flow:
Node 1 down → Cluster IP cập nhật → trỏ sang Node 2 → ~6-10 min (unplanned)
→ ~10-15 min (planned)
2. Breaking Changes v13 Quan Trọng
- JeOS platform: Rocky Linux 9 (thay Photon OS) — DISA STIG compliant out-of-box, không cần hardening thêm
- HA topology: Active/Passive; cả 2 nodes PHẢI cùng L2 subnet (không hỗ trợ routed giữa 2 nodes)
- NTLM đã bị xóa hoàn toàn — chỉ Kerberos + Certificate auth
- MFA bắt buộc trên tất cả admin accounts — không thể disable
Veeam v13 yêu cầu Security Officer phê duyệt việc kích hoạt HA cluster. Đây là biện pháp bảo vệ chống lại attacker cố tình tắt HA để cô lập backup data. Security Officer phải đăng nhập riêng và approve trong UI.
Bước 1 Deploy VSA Node 1 (Site Chính)
Download Veeam Backup & Replication v13.0.1.1071 hoặc mới hơn. Build number quan trọng — phiên bản cũ hơn có thể thiếu DISA STIG patches.
# Verify checksum sau khi download (SHA256) # Veeam cung cấp file .sha256 cùng với OVA sha256sum VeeamBackup&Replication_13.0.1.1071.ova # So sánh với giá trị trên veeam.com/downloads
| Trường | Giá trị cho Node 1 | Lý do |
|---|---|---|
| VM Name | VEEAM-NODE1 | Phải khớp với hostname FQDN |
| Firmware | UEFI (bắt buộc) | JeOS Rocky Linux 9 không boot BIOS |
| Secure Boot | Enabled (khuyến nghị) | DISA STIG requirement |
| Network Adapter | VMXNET3 | Hiệu năng tốt nhất trong vSphere |
| IP Address | 192.168.10.11/24 (static) | DHCP không cho phép — Kerberos SPN cần IP cố định |
| Hostname | veeam-node1.domain.local | FQDN đầy đủ — không dùng shortname |
| Datastore | SSD datastore riêng | I/O intensive — không share với production VMs |
https://veeam-node1.domain.local:9443
Default credentials: admin / veeam — BẮT BUỘC đổi ngay sau lần đăng nhập đầu tiên
DOMAIN\svc-veeam-backup$ (dấu $ ở cuối là bắt buộc cho gMSA)Security Officer là cơ chế four-eyes: người ra lệnh (admin) và người phê duyệt (security officer) phải khác nhau. Nếu cùng một người, toàn bộ cơ chế kiểm soát bị vô hiệu hóa.
- • Settings → Security → Security Officers → Add Officer
- • Chọn user từ AD:
VeeamSecurityOfficergroup - • Email notification: bắt buộc (nhận approval requests)
- • MFA: bật ngay, KHÔNG thể tắt sau này
Settings → License → Install License → upload file .lic nhận từ Veeam.
- • Web UI accessible:
https://veeam-node1.domain.local:9443— hiển thị dashboard - • Node status: "Standalone" (chưa join cluster — bình thường)
- • gMSA service account: hiển thị trong Settings → Service Account
- • License: Enterprise Plus hoặc VUL confirmed
Bước 2 Deploy VSA Node 2 (Site DR)
Lặp lại toàn bộ Bước 1 với các thông số DR-specific sau đây. Node 2 sẽ ở trạng thái "Standalone" cho đến khi join cluster ở Bước 7.
| Trường | Node 1 (Site Chính) | Node 2 (Site DR) |
|---|---|---|
| VM Name | VEEAM-NODE1 | VEEAM-NODE2 |
| IP Address | 192.168.10.11/24 | 192.168.10.12/24 |
| FQDN | veeam-node1.domain.local | veeam-node2.domain.local |
| vSphere Cluster | Cluster-Production | Cluster-DR (khác AZ/rack) |
| Security Officer | Tạo tại đây | KHÔNG tạo lại — dùng chung |
| License | Cài tại đây | Cài cùng .lic file |
Bước 3 Console Configuration & Kết Nối vCenter
Infrastructure → Virtual Infrastructure → Add Server → VMware vSphere
| Trường | Giá trị | Lý do |
|---|---|---|
| DNS Name / IP | vcenter.domain.local | FQDN, KHÔNG dùng IP — SSL cert validation cần hostname |
| Credentials | Dedicated service account | Không dùng [email protected] |
| Port | 443 | Mặc định HTTPS API |
| SSL Certificate | Verify và Trust | Không dùng "Skip certificate check" trong production |
Bước 4 Cấu Hình RBAC
| Account / AD Group | Veeam Role | Scope | Quyền chính |
|---|---|---|---|
| VeeamAdmins | Veeam Backup Administrator | All | Full control trừ Security Officer actions |
| VeeamBackupOps | Veeam Backup Operator | Assigned jobs | Create/edit/run backup jobs; no delete |
| VeeamRestoreOps | Veeam Restore Operator | Assigned VMs | Restore only; cannot create backup jobs |
| VeeamSecurityOfficer | Veeam Security Officer | Global (approval) | Approve/reject critical operations only |
# Cấu hình RBAC qua Veeam PowerShell module (sau khi VSA deploy)
# Chạy trên Windows machine có Veeam Console cài đặt
# Kết nối VSA qua Cluster IP
Connect-VBRServer -Server veeam-cluster.domain.local -Port 9392 `
-Credential (Get-Credential) # Dùng gMSA admin account
# Tạo scope cho backup jobs (optional — restrict Operators)
$vcenter = Get-VBRServer -Name "vcenter.domain.local"
$scope = New-VBRBackupOperatorScope -Entity (Get-VBRViEntity -Server $vcenter)
# Thêm AD groups vào Veeam roles
Add-VBRBackupAdministrator -Account "DOMAIN\VeeamAdmins"
Add-VBRBackupOperator -Account "DOMAIN\VeeamBackupOps" -Scope $scope
Add-VBRRestoreOperator -Account "DOMAIN\VeeamRestoreOps" -Scope $scope
# Verify
Get-VBRUserRole | Select-Object Name, Account, Role | Format-Table
Bước 5 Cấu Hình MFA (Multi-Factor Authentication)
Đặc biệt với Security Officer account: MFA permanent, không exception. Đảm bảo mỗi admin có smartphone và đã cài authenticator app trước buổi setup này.
Logout → Login lại → Nhập username/password → Nhập 6-digit TOTP code từ app. Nếu login thành công: MFA configured correctly.
Bước 6 SAML 2.0 SSO — Azure AD / ADFS
Azure AD App Registration:
Veeam-VBR-SSO | Account type: Single tenanthttps://veeam-cluster.domain.local:9443/saml/callbackveeam.backup.adminVeeam SAML Configuration:
https://login.microsoftonline.com/{tenant-id}/saml2https://veeam-cluster.domain.local:9443VeeamAdmins → Role Veeam Backup AdministratorBước 7 Hình Thành Cụm HA (Critical Steps)
Sau khi HA cluster hình thành, việc "unjoin" Node 2 sẽ xóa toàn bộ backup metadata trên node đó. Verify kỹ tất cả pre-requisites trước khi click "Enable HA".
Settings → High Availability → Enable → Security Officer nhận email notification và phải approve trong UI trong vòng 30 phút.
Nhập Cluster IP đã reserve từ Phase 01:
Cluster IP: 192.168.10.10/24 # IP đã reserve, chưa cấp Cluster FQDN: veeam-cluster.domain.local Subnet Mask: 255.255.255.0 Gateway: 192.168.10.1 # Same gateway as Node 1 & 2
Add Secondary Node → nhập FQDN của Node 2: veeam-node2.domain.local
PostgreSQL WAL initial sync — thời gian phụ thuộc vào số backup jobs đã có. Không làm gì trong lúc sync.
# Monitor sync progress từ Node 1 SSH sudo -u postgres psql -c "SELECT * FROM pg_stat_replication;" # Expected: state = 'streaming', sent_lsn ≈ write_lsn ≈ replay_lsn (khi sync xong)
- • Dashboard: cả 2 nodes hiển thị Green / Healthy
- • Cluster IP:
veeam-cluster.domain.localresolve thành Node 1 IP - • HA Status: "Protection: Enabled, Replication: Synchronized"
- • Node 2: trạng thái "Standby"
Bước 8 Kiểm Tra HA (Planned Switchover)
KHÔNG test unplanned failover (giả lập Node 1 crash) trong môi trường production mới setup. Luôn dùng Planned Switchover để kiểm soát quá trình. Unplanned failover test chỉ nên thực hiện trong maintenance window với sự chấp thuận đầy đủ.
https://veeam-cluster.domain.local:9443 — phải hiển thị Node 2 là primary# Từ Windows admin machine nslookup veeam-cluster.domain.local # Expected: phải trả về IP của Node 2 (192.168.10.12) # Kiểm tra backup catalog còn nguyên vẹn # Home → Backups → Disk — tất cả backup points vẫn visible
Bước 9 Auto-Update Policy
| Loại Update | Auto? | Lý do |
|---|---|---|
| OS Security Patches (Rocky Linux) | BẮT BUỘC AUTO | Cannot disable — DISA STIG requirement |
| VBR Security Fixes (critical CVEs) | BẮT BUỘC AUTO | Patch trong maintenance window tự động |
| VBR Minor (13.0.x → 13.0.x+1) | TÙY CHỌN | Khuyến nghị bật; test trong staging trước |
| VBR Major (v13 → v14) | KHÔNG BAO GIỜ AUTO | Major upgrade cần change management, test window, rollback plan |
Settings → Maintenance → Schedule: Chủ Nhật 02:00 sáng — thời điểm ít backup jobs nhất, đủ thời gian apply patches + verify trước giờ làm việc.
Configuration Backup
Configuration backup chỉ chứa job definitions, RBAC, settings — KHÔNG chứa actual backup data. Nhưng nếu mất config, sẽ mất toàn bộ job schedule và phải reconfigure từ đầu. Phải backup config ra ngoài VSA.
- • Settings → Configuration Backup → Enable
- • Location: NAS offsite (KHÔNG phải SOBR main repo)
- • Schedule: Daily, 23:00 (sau khi backup jobs chạy xong)
- • Retention: 7 copies
- • Encryption: AES-256, passphrase lưu trong password vault
# Verify file tồn tại trên NAS ls -lh /mnt/nas-offsite/veeam-config/ # Expected: VeeamConfigBackup_.bco # Test restore (trên lab node) # Settings → Configuration Backup # → Restore → chọn file → Verify Only
Checklist Hoàn Thành Phase 02
Đánh Giá Rủi Ro Phase 02:
| Rủi ro | Mức độ | Biện pháp giảm thiểu |
|---|---|---|
| Node 1 & 2 không cùng L2 — HA fail to form | CAO | Verify VLAN/subnet trước Bước 7; dùng L2 extension nếu cross-site |
| BIOS firmware thay vì UEFI — JeOS không boot | CAO | Check VM settings trước khi power on; xem VM Hardware → Boot Options |
| Security Officer và Admin là cùng người — four-eyes vô hiệu | CAO | Kiểm tra AD group memberships; Security Officer phải là người khác, không trong VeeamAdmins |
| Backup codes MFA lost — admin bị lock out | TRUNG BÌNH | Lưu backup codes trong password vault ngay khi nhận; test recovery procedure |
| Config backup cùng location với data backup | THẤP | Verify config backup path trỏ vào NAS offsite, không phải SOBR extents |