Báo cáo phân tích và đánh giá rủi ro ANBM: nền tảng giám sát máy chủ
Theo mẫu "Báo cáo phân tích & đánh giá rủi ro ANBM" (góc nhìn EA). Trả lời ba câu hỏi: rủi ro nằm ở đâu trong kiến trúc, ảnh hưởng tới năng lực nào, cần đổi kiến trúc gì để giảm rủi ro dài hạn.
| Trạng thái | BẢN NHÁP, phiên bản 0.1, 2026-09-30. Chưa có sign-off của bộ phận an ninh |
| Tài liệu tầng trên | L1 HLD |
| Nguồn | docs/07-security.md, docs/03, docs/04, docs/13, ADR 0007, 0010, và đối chiếu mã nguồn hiện có của Collector (đọc, không chạy, không thay đổi) |
Nhãn trạng thái dùng xuyên suốt:
- ĐÃ CÓ: có trong mã và (nếu ghi) có kiểm thử.
- THIẾT KẾ: có trong tài liệu, mã chưa làm hoặc chưa kiểm chứng.
- THIẾU: chưa có cả trong thiết kế.
Đây là đánh giá dựa trên đọc mã và tài liệu, không phải pentest. Chưa có thử nghiệm tấn công thực tế nào. Phần Access Hub của giám sát (HUB-*) chưa xây nên mọi kiểm soát phía Access Hub chỉ ở mức thiết kế.
1. Thông tin chung
- Hệ thống: Nền tảng giám sát máy chủ gồm Agent (trên máy chủ khách), Collector (data plane), phần giám sát của Access Hub (control plane).
- Domain: hạ tầng và vận hành, đa tenant.
- Mức độ quan trọng: đề xuất Cấp 3, Business Operational (chưa xác nhận, xem L1 mục 12). Mức này ảnh hưởng ngưỡng chấp nhận rủi ro.
- Ngày đánh giá: 2026-09-30.
- Người thực hiện: trợ lý lập trình (bản nháp). Chưa có người rà soát.
- Stakeholders: chưa chỉ định (bảo mật, vận hành, dev Access Hub, dev Go).
2. Mục tiêu đánh giá
- Xác định rủi ro ANBM trên kiến trúc agent, collector, kho số liệu, Redis, tích hợp Access Hub.
- Phân biệt trung thực: đã cài, mới thiết kế, còn thiếu.
- Đề xuất giảm thiểu ngắn hạn và dài hạn.
3. Phạm vi đánh giá
| Lớp | Nội dung trong phạm vi |
|---|---|
| Application | Agent Go, Collector Go (ingest, worker, admin), phần Access Hub sẽ xây |
| Integration | Agent tới Collector (HTTPS, protobuf), Collector tới Access Hub (hubclient), Access Hub tới Collector (admin API /internal/v1/*) |
| Data | Redis (registry, presence, bus, outbox), VictoriaMetrics, WAL trên máy chủ, thông tin đăng nhập agent |
| Technology | Systemd, gói cài, kho gói, mạng giữa các thành phần |
| Identity & Access | License, agent token, token admin của Collector, token collector phía Access Hub, quyền monitoring.* |
Ngoài phạm vi: bảo mật của phần Access Hub sẵn có (PAM, IaC, phê duyệt), hạ tầng mạng của khách hàng.
4. Tổng quan kiến trúc
4.1. Sơ đồ (STD-DIAG, Mermaid)
%%{init: {"flowchart": {"curve": "basis"}}}%%
flowchart LR
classDef owned fill:#2d4a3e,stroke:#5fb37a,color:#fff
classDef datastore fill:#3a2d4a,stroke:#a06fd9,color:#fff
classDef sensitive fill:#5a2d2d,stroke:#d96f6f,color:#fff
classDef entity fill:#3a3320,stroke:#d9b84a,color:#fff
classDef infra fill:#444,stroke:#aaa,color:#fff
AG([Agent trên máy chủ]):::entity
LB[Cân tải TLS]:::infra
IN[Ingest]:::owned
BUS[[Bus Redis Streams]]:::infra
WK[Worker]:::owned
RD[(Redis)]:::datastore
VM[(VictoriaMetrics)]:::datastore
AH[Access Hub]:::sensitive
AG -->|Đẩy số liệu, enroll| LB
LB --> IN
IN -.-> BUS
BUS -.-> WK
IN --> RD
WK --> VM
WK -.->|Sự kiện qua outbox| AH
AH -->|Đẩy registry, truy vấn| INChú thích: xanh lá = thành phần tự xây, tím = kho dữ liệu, đỏ = vùng nhạy cảm (nguồn sự thật danh tính và luật), vàng = tác nhân ngoài, xám = hạ tầng, nét liền = đồng bộ, nét đứt = bất đồng bộ. Sơ đồ rút gọn (bỏ admin API riêng, vmalert, vm-long).
| Biên tin cậy | Giao thức | Xác thực | Trạng thái |
|---|---|---|---|
| Agent tới Collector | HTTPS, TLS 1.2 trở lên, protobuf | Bearer token agent (dạng mờ, băm SHA-256 ở registry) | ĐÃ CÓ (TLS tùy chọn bật ở Collector, xem S-03) |
| Collector tới Access Hub | HTTP hoặc HTTPS (hubclient) | Bearer token collector | ĐÃ CÓ phía Collector, phía Access Hub THIẾT KẾ |
| Access Hub tới Collector (admin) | HTTP, nghe 127.0.0.1:9101 mặc định | Token admin, tối thiểu 24 ký tự, so sánh thời gian hằng | ĐÃ CÓ |
| Collector tới Redis | RESP, TLS tùy chọn | requirepass | ĐÃ CÓ (dev), TLS THIẾT KẾ cho sản xuất |
| Collector tới VictoriaMetrics | HTTP | Không có | ĐÃ CÓ, không xác thực, chỉ giới hạn mạng |
4.2. Các điểm trọng yếu
- Điểm truy cập từ internet: cổng ingest và enroll (
/agent/v1/*) qua cân tải. - Luồng nhạy cảm: License, agent token, token admin và token collector, số liệu theo công ty.
- Thành phần lõi: registry trong Redis (quyết định agent nào được nhận), admin API (có thao tác xóa dữ liệu).
- Điểm tích hợp bên thứ ba: kho gói và khóa ký (chưa chọn, Q2, Q3), kho chuỗi thời gian.
5. Phương pháp đánh giá
- Khung: STRIDE trong
docs/07, tham chiếu OWASP ASVS ở mức khái niệm, chưa ánh xạ chính thức sang NIST hoặc ISO 27001. - Phương pháp: đọc tài liệu, đọc mã (danh sách tệp đã xem ở phần 7), chấm điểm Impact x Likelihood, rà soát kiến trúc.
- Thang điểm (do tác giả bản nháp đặt, chưa xác nhận): Impact và Likelihood mỗi bên từ 1 đến 4 (Thấp 1, Trung bình 2, Cao 3, Rất cao 4). Điểm = Impact x Likelihood, từ 1 đến 16. Nhóm: 12 đến 16 Critical, 8 đến 11 High, 4 đến 7 Medium, 1 đến 3 Low.
- Giới hạn: chưa có kiểm thử xâm nhập, chưa có quét lỗ hổng phụ thuộc, chưa xem phần Access Hub (chưa tồn tại).
Mã đã xem (chỉ đọc): Collector internal/config, internal/app, internal/ingest, internal/registry, internal/tsdb, internal/admin, internal/hubclient, deploy/. Agent internal/creds, internal/buffer, internal/logx, internal/transport, internal/cli, internal/agent, internal/config, packaging/, cùng agent.proto.
6. Tổng hợp rủi ro (Executive Summary)
| Mức độ | Số lượng | Mã |
|---|---|---|
| Critical | 2 | S-01, S-03 |
| High | 6 | S-02, S-04, S-06, S-07, S-08, S-10 |
| Medium | 4 | S-05, S-09, S-11, S-12 |
| Low | 1 | S-13 |
- Mức rủi ro tổng thể: High cho bản phát hành sản xuất đầu tiên nếu các mục Critical và High chưa được xử lý. Với dev hiện tại: chấp nhận được (Redis và VM chỉ nghe loopback).
- Nhận định: nền tảng có thiết kế bảo mật đúng hướng (không có RCE, tenant do collector gắn, token băm, hạn mức đầu vào chặt) và phần lớn đã có trong mã. Các khoảng trống lớn nằm ở những phần chưa xây: xoay token, kiểm tra SSRF của checks, ký gói và cập nhật, phía Access Hub, TLS đầu cuối tới Redis và VM, cùng vài chỗ tài liệu hứa nhưng mã Collector chưa có (che log).
7. Danh sách rủi ro chi tiết
Cột trạng thái: Đ = ĐÃ CÓ, T = THIẾT KẾ, X = THIẾU. Chi tiết bằng chứng ở phần 8.
| ID | Thành phần | Mô tả rủi ro | Impact | Likelihood | Score | Nhóm | Business Impact | Khuyến nghị | Trạng thái kiểm soát |
|---|---|---|---|---|---|---|---|---|---|
| S-01 | Agent token | Token agent bị đánh cắp (đọc credentials.json, lộ log, sao chép image) dùng để giả mạo một máy và bơm số liệu giả tới hết đời token. Chưa có xoay token nên cửa sổ lộ không giới hạn | 4 | 3 | 12 | Critical | Số liệu và cảnh báo sai của một máy, không leo sang máy khác | Làm xoay token (AGT-10, HUB endpoint renew), đặt hạn token, thu hồi nhanh | Đ: băm, 0600, thu hồi qua admin API. T: xoay, hạn. X: phát hiện dùng token từ nhiều nguồn |
| S-02 | License | Mã enroll lộ (argv, lịch sử shell, log CI) hoặc dùng lại. Việc dùng một lần và hạn dùng do Access Hub thi hành, mà Access Hub chưa xây | 3 | 3 | 9 | High | Máy lạ đăng ký vào công ty | Access Hub bắt buộc dùng một lần, hạn ngắn, gắn công ty. Kiểm thử hợp đồng | Đ: agent nhận qua tệp hoặc stdin, cảnh báo với --token, xóa tệp sau khi enroll, giới hạn enroll theo IP. T: dùng một lần, hạn (ở Access Hub) |
| S-03 | Kênh truyền | TLS không bắt buộc ở mọi hop: ingest chạy được không TLS (chỉ cảnh báo), tồn tại tùy chọn bỏ kiểm chứng chứng chỉ ở agent và Redis, hubclient chấp nhận http, VM không TLS. Tài liệu docs/07 nói bản phát hành không có cờ tắt xác minh, mã có | 4 | 3 | 12 | Critical | Lộ token và số liệu trên đường truyền, MITM | Sản xuất: bắt buộc TLS ở ingest, hubclient, Redis; tắt hoặc cấm insecure_skip_verify trong bản phát hành; cập nhật docs/07 cho khớp thực tế | Đ: TLS 1.2 tối thiểu khi bật, agent ghim CA. T: bắt buộc ở sản xuất. X: kiểm tra cấu hình sản xuất tự động |
| S-04 | Cô lập tenant | Mọi công ty chung một VictoriaMetrics và một Redis. Cô lập chỉ nhờ collector gắn company_id, server_id và ép matcher khi truy vấn. Một lỗi ở lớp này là rò rỉ chéo tenant | 4 | 2 | 8 | High | Lộ số liệu hạ tầng của công ty khác, mất niềm tin | Giữ kiểm thử hai tenant trong CI, thêm kiểm thử truy vấn thù địch (nhãn giả, tiêm ký tự), cân nhắc kho tách theo tenant lớn | Đ: gắn nhãn phía collector, reservedLabels, allowlist catalog, quote an toàn, kiểm thử hai tenant và purge theo tenant. X: cô lập ở tầng kho, fuzz truy vấn |
| S-05 | Checks (SSRF) | Kiểm tra http và tcp do quản trị viên khai báo có thể tới địa chỉ nội bộ của máy chủ đó. Thiết kế chặn link-local (metadata cloud) mặc định. Chưa có mã thực thi checks | 3 | 2 | 6 | Medium | Dò mạng nội bộ khách hàng qua agent, lộ metadata cloud | Cài đặt AGT-8 với chặn link-local sau phân giải DNS, không theo redirect, giới hạn thời gian và số lượng, kiểm thử đích bị chặn | T: quy tắc chặn, khóa checks_allow_link_local, giới hạn 50 checks, validate cấu hình. X: bộ thực thi checks |
| S-06 | Redis, VM | Redis chứa registry, hash token, bus, outbox. VM không xác thực. Dev đã ràng buộc loopback, có requirepass, protected-mode; sản xuất chưa có hướng dẫn. Redis dùng một mật khẩu chung, không ACL | 4 | 2 | 8 | High | Đọc, sửa registry (chấp nhận agent lạ), xóa số liệu | Mạng riêng, TLS, ACL Redis theo vai trò (ingest chỉ được lệnh cần), VM sau proxy xác thực hoặc mTLS, hướng dẫn triển khai sản xuất | Đ: loopback, requirepass, protected-mode, noeviction, mật khẩu 0600 ngoài repo. T: cách ly mạng sản xuất. X: ACL, xác thực VM |
| S-07 | Chuỗi cung ứng | Gói cài và bản cập nhật có thể bị thay. Chưa có khóa ký, chưa chọn kho gói (Q2, Q3). install.sh kiểm SHA256SUMS và chữ ký nếu có khóa công khai, cho phép --allow-unsigned. Mã agent chưa có cơ chế cập nhật và xác minh chữ ký (UpdateManifest chỉ có trong .proto) | 4 | 2 | 8 | High | Mã độc lên hàng nghìn máy (R4) | Chốt khóa ký và kho gói, ký .deb, .rpm, MSI, SBOM, quét phụ thuộc trong CI, cập nhật theo đợt có xác minh Ed25519 và quay lui | Đ: kiểm checksum bắt buộc, cảnh báo khi không ký. T: ký, cập nhật có chữ ký (giai đoạn 3). X: khóa, kho gói, quét phụ thuộc |
| S-08 | Ingest (DoS, cardinality) | Bão kết nối, bơm số chuỗi cao làm sập ingest hoặc VM. Các hạn mức có nhưng tính theo từng instance, chưa kiểm thử tải | 3 | 3 | 9 | High | Gián đoạn giám sát, VM đầy | Giới hạn tốc độ toàn cục hoặc ở cân tải, kiểm thử tải 1k, 5k, 10k, theo dõi ahc_* và cảnh báo dung lượng | Đ: body 1 MiB, giải nén 8 MiB, 20.000 điểm, 500 chuỗi mỗi agent, allowlist nhãn, timeout máy chủ, giới hạn enroll theo IP, cache âm 60 s tối đa 100.000. T: kiểm thử tải. X: giới hạn toàn cục |
| S-09 | Không RCE | Tránh thực thi mã từ xa qua cấu hình. Đã thiết kế chặt, cần giữ khi mở rộng (giai đoạn 4) | 4 | 1 | 4 | Medium | Chiếm hàng loạt máy chủ | Giữ ADR 0010, kiểm thử hợp đồng cấm trường lệnh, chỉ cho phép hành động từ xa qua ADR mới có rà soát bảo mật | Đ: .proto không có trường lệnh hay đường dẫn, allowlist khóa cấu hình từ xa, regex RE2 giới hạn 200 ký tự. Ghi chú: exec.Command chỉ ở internal/svc/systemd.go với tên lệnh cố định |
| S-10 | Admin API và token | Token admin tĩnh dùng chung, chưa xoay, chưa mTLS (giai đoạn 3). API có thao tác xóa dữ liệu công ty và máy. Nghe loopback mặc định nhưng sản xuất phải để Access Hub gọi vào | 4 | 2 | 8 | High | Xóa hàng loạt số liệu, đăng ký agent trái phép qua registry push | Đặt mạng riêng, mTLS hoặc allowlist IP, ghi audit mọi thao tác hủy, xoay token có quy trình, tách quyền đọc và ghi | Đ: token tối thiểu 24 ký tự, so sánh hằng thời gian, loopback mặc định, kiểm thử bắt buộc xác thực. T: mTLS. X: audit thao tác hủy, xoay token, tách quyền |
| S-11 | Log | Tài liệu hứa che bí mật trong log của Collector và có kiểm thử, nhưng bộ ghi log của Collector không có bộ lọc che. Agent có (internal/logx/mask.go) | 3 | 2 | 6 | Medium | Lộ token trong log tập trung | Thêm handler che vào NewLogger, kiểm thử "log không chứa token", hoặc sửa tài liệu cho đúng | Đ (agent). X (collector) |
| S-12 | Danh tính máy | Nhân bản máy từ image làm trùng danh tính agent, hoặc agent bị thu hồi vẫn gửi. Đã có machine_id băm và phát hiện lệch danh tính, thu hồi đi qua registry (R8, R16) | 3 | 2 | 6 | Medium | Số liệu trộn lẫn, agent thu hồi còn được nhận | Kiểm thử thu hồi đến cạnh biên (đồng bộ registry), cảnh báo trùng danh tính | Đ: hash machine_id, lệch danh tính, thu hồi qua admin API có kiểm thử. T: cảnh báo trùng ở Access Hub |
| S-13 | Quyền riêng tư dữ liệu | Số liệu, hostname, IP, kiểm kê phần cứng thuộc công ty. Mất kiểm soát retention hoặc xóa theo yêu cầu | 2 | 1 | 2 | Low | Vi phạm cam kết dữ liệu nếu có yêu cầu pháp lý (chưa có yêu cầu nêu ra) | Xác nhận yêu cầu pháp lý (OQ-4), giữ purge theo công ty và máy, tài liệu vòng đời dữ liệu | Đ: machine_id chỉ lưu băm, purge theo công ty và máy. T: retention theo công ty (giai đoạn 4) |
Rủi ro về độ bền và sẵn sàng (không thuộc ANBM thuần nhưng liên quan): độ bền outbox phụ thuộc AOF của Redis (mất tối đa khoảng 1 giây với everysec), khoảng 500 ms mẫu đang gộp có thể mất khi worker sập, mỗi tiến trình cần collector_id riêng, VM chưa có snapshot theo lịch. Theo dõi ở docs/13 và docs/08.
8. Phân tích rủi ro theo lớp kiến trúc
8.1. Application Layer
| Khía cạnh | Bằng chứng | Nhãn |
|---|---|---|
| Xác thực agent | Token dạng mờ, băm SHA-256 hex ở registry, tra qua resolver.go, cache âm 60 s tối đa 100.000 mục | ĐÃ CÓ |
| Kiểm tra đầu vào | Kiểm tra header và phiên bản proto, hạn mức body, số điểm, số chuỗi, nhãn dự trữ (reservedLabels) và allowlist catalog | ĐÃ CÓ |
| Máy chủ HTTP | Timeout ReadHeader 10 s, Read và Write 30 s, Idle 120 s, header tối đa 64 KiB, TLS tối thiểu 1.2 khi bật | ĐÃ CÓ |
| Bí mật cứng trong mã | Không phát hiện trong phần đã xem. Chưa chạy quét bí mật tự động | Chưa kiểm chứng đầy đủ |
| Che log | Agent có, Collector chưa (S-11) | Một phần |
| Enroll | Giới hạn theo IP, tôn trọng TrustedProxies khi lấy IP thật (clientIP) | ĐÃ CÓ |
| Checks (SSRF) | Chưa có mã thực thi (S-05) | THIẾT KẾ |
8.2. Integration Layer
- Agent tới Collector: bearer, TLS 1.2 trở lên,
X-AH-Protođể chống lệch phiên bản. Redirect bị tắt ở transport của agent (CheckRedirecttrảErrUseLastResponse). - Collector tới Access Hub:
hubclientdùnghttp.Clientthường với bearer,base_urlnhậnhttphoặchttps. Không có mTLS hay chữ ký thông điệp. Gửi sự kiện idempotent (seqtăng chặt), thử lại qua outbox. - Access Hub tới Collector: admin API, xem S-10.
- Tin cậy giữa các hệ thống: một token tĩnh mỗi chiều. Chưa có xoay, chưa có mTLS (giai đoạn 3).
- Mock Access Hub (
mockhub) thay Access Hub ở dev: mọi kiểm thử hợp đồng hiện chạy với mock, không với hệ thật.
8.3. Data Layer
| Kho | Dữ liệu | Bảo vệ hiện tại | Khoảng trống |
|---|---|---|---|
| Redis | Registry (hash token), trạng thái presence, bus, outbox | Loopback, requirepass, protected-mode, noeviction, AOF everysec cộng RDB (dev) | TLS, ACL, mã hóa lúc nghỉ, bản sao lưu |
| VictoriaMetrics | Số liệu theo company_id và server_id | Loopback (dev và unit systemd) | Không xác thực, không TLS, không snapshot theo lịch, không cô lập theo tenant ở kho |
| Máy chủ khách | credentials.json (0600, ghi nguyên tử, từ chối nếu quyền lỏng), WAL 0600 | Quyền tệp, hardening systemd, DPAPI trên Windows (thiết kế) | Windows chưa có mã (AGT-7) |
| Access Hub MySQL | Bảng monitoring_* dự kiến | Chưa xây | Toàn bộ THIẾT KẾ |
Phân loại dữ liệu: chưa có tài liệu phân loại chính thức. Đề xuất, chưa xác nhận: token và khóa là "bí mật", số liệu và kiểm kê là "nội bộ khách hàng".
8.4. Technology Layer
- Agent: tệp tĩnh không CGO, systemd hardening trong
deployvàpackaging, tài khoản dịch vụ riêng (accesshub-agent). AGT-6 mới xong một phần: chưa có ma trận distro thật, chưa chạy công cụ rpm, chưa có khóa ký. - Collector: unit systemd có sẵn cho dev và mẫu triển khai; hướng dẫn triển khai sản xuất chưa hoàn tất (đang viết bởi luồng công việc khác).
- Quản lý bản vá: chưa có quy trình cập nhật Redis, VM, Go runtime. Cần đưa vào tài liệu vận hành (X-10).
8.5. Identity & Access
| Danh tính | Cơ chế | Vòng đời | Trạng thái |
|---|---|---|---|
| License | Do quản trị viên tạo ở Access Hub, dùng một lần, có hạn | Thi hành ở Access Hub | THIẾT KẾ |
| Agent token | Đổi từ License, dạng mờ, băm khi lưu | Thu hồi qua registry. Xoay: renew trả 503 (Access Hub chưa có endpoint), agent chưa có logic xoay | Một phần (xoay THIẾU) |
| Token admin Collector | Token tĩnh, tối thiểu 24 ký tự | Không xoay tự động | ĐÃ CÓ, xoay THIẾU |
| Token collector (Access Hub) | Bearer | Không xoay tự động | Phía Collector ĐÃ CÓ |
| Người dùng cuối | Quyền monitoring.* theo công ty trong Access Hub, CompanyScope | Sẵn có của Access Hub | THIẾT KẾ (chưa gắn vào giám sát) |
Thiếu MFA hay SSO cho endpoint collector phía Access Hub đã ghi ở Q15, chưa quyết định.
9. Phân tích rủi ro theo Business Capability
| Capability | Hệ thống liên quan | Mức rủi ro | Ảnh hưởng |
|---|---|---|---|
| Thu thập số liệu (Core) | Agent, S-01, S-03, S-07 | High | Số liệu sai hoặc lộ, máy chủ bị cài mã độc nếu chuỗi cung ứng hỏng |
| Lưu và truy vấn theo tenant (Core) | Collector, VM, Redis, S-04, S-06 | High | Rò rỉ dữ liệu hạ tầng chéo công ty |
| Phát hiện mất tín hiệu và cảnh báo (Core) | Collector, outbox, Access Hub, S-08, S-10 | Medium | Mất hoặc chậm cảnh báo, cảnh báo giả |
| Đăng ký và danh tính agent (Core) | Access Hub, Collector, S-01, S-02, S-12 | High | Máy lạ nhập hệ thống, danh tính trùng |
| Quản trị luật và giao diện (Management) | Access Hub | Chưa đánh giá được | Chưa xây |
| Phân phối bản cài (Supporting) | Kho gói, install.sh, S-07 | High | Lan truyền mã độc quy mô lớn |
10. Đánh giá nguyên nhân gốc (Root Cause)
- Giai đoạn hóa hợp lý nhưng còn khoảng trống chưa ghi: các kiểm soát nằm ở giai đoạn 3 (mTLS, cập nhật ký, HA) là quyết định có ý thức trong roadmap; khoảng trống thật là những mục tài liệu hứa mà mã chưa có (che log Collector, cờ tắt xác minh TLS) và ADR lệch thực tế (ADR 0009, ADR 0005, xem chỉ mục ADR).
- Phụ thuộc vào phần chưa xây: các kiểm soát dựa vào Access Hub (dùng một lần, hạn, xoay token) chưa kiểm chứng được vì HUB-* chưa bắt đầu.
- Kiểm thử bằng mock: hợp đồng chỉ chạy với
mockhub, chưa có kiểm thử với Access Hub thật. - Chưa có chủ sở hữu: rủi ro và khóa ký chưa có người phụ trách được chỉ định.
11. Kế hoạch xử lý rủi ro (Remediation Plan)
Chủ sở hữu và hạn: chưa chỉ định, cần bộ phận bảo mật và chủ sở hữu sản phẩm gán. Ưu tiên là đề xuất.
| ID | Hành động | Loại | Priority | Owner | Deadline |
|---|---|---|---|---|---|
| S-03 | Bắt buộc TLS ở sản xuất cho ingest, hubclient, Redis. Cấm insecure_skip_verify trong bản phát hành. Sửa docs/07 cho khớp | Quick win | Critical | chưa chỉ định | Trước phát hành đầu tiên |
| S-01 | Xoay và hạn token agent (AGT-10 cùng endpoint renew ở Access Hub) | Strategic | Critical | chưa chỉ định | Giai đoạn 2 |
| S-02 | License dùng một lần, hạn ngắn ở Access Hub, kiểm thử hợp đồng | Strategic | High | chưa chỉ định | Cùng HUB-6 |
| S-11 | Thêm bộ che log cho Collector và kiểm thử | Quick win | High | chưa chỉ định | Giai đoạn 1 |
| S-06 | Hướng dẫn mạng riêng, ACL Redis, xác thực hoặc proxy TLS cho VM | Quick win | High | chưa chỉ định | Cùng hướng dẫn triển khai sản xuất |
| S-10 | Audit thao tác hủy, mTLS hoặc allowlist IP, quy trình xoay token admin | Strategic | High | chưa chỉ định | Giai đoạn 3 (audit sớm hơn) |
| S-08 | Giới hạn tốc độ toàn cục, kiểm thử tải 1k, 5k, 10k | Strategic | High | chưa chỉ định | X-5, X-7, X-9 |
| S-07 | Chốt khóa ký và kho gói (Q2, Q3), ký gói, SBOM, quét phụ thuộc, cập nhật có xác minh | Strategic | High | chưa chỉ định | Trước phát hành công khai |
| S-04 | Kiểm thử truy vấn thù địch, giữ kiểm thử hai tenant trong CI | Quick win | High | chưa chỉ định | Giai đoạn 2 |
| S-05 | Cài AGT-8 với chặn link-local sau phân giải, không redirect | Strategic | Medium | chưa chỉ định | Giai đoạn 2 |
| S-12 | Kiểm thử thu hồi biên, cảnh báo trùng danh tính | Quick win | Medium | chưa chỉ định | Giai đoạn 2 |
| S-09 | Giữ ADR 0010, thêm kiểm thử hợp đồng cấm trường lệnh | Quick win | Medium | chưa chỉ định | Liên tục |
| S-13 | Xác nhận yêu cầu pháp lý (OQ-4), tài liệu vòng đời dữ liệu | Quick win | Low | chưa chỉ định | Trước phê duyệt L2 |
12. Khuyến nghị kiến trúc
12.1. Ngắn hạn
- Đóng các chỗ tài liệu và mã lệch nhau (S-03, S-11). Đây là việc rẻ nhất và giảm rủi ro ngay.
- Chốt cấu hình sản xuất tối thiểu: TLS bắt buộc, mạng riêng cho Redis và VM, ACL Redis.
- Thêm audit cho thao tác hủy của admin API.
- Bổ sung quét phụ thuộc và quét bí mật vào CI.
12.2. Trung hạn
- Xoay token có quy trình cho agent và hai token dịch vụ.
- Cài checks với chặn link-local, kiểm thử đích thù địch.
- Kiểm thử tải và kiểm thử truy vấn thù địch trước khi mở cho khách hàng thật.
- Kiểm thử hợp đồng với Access Hub thật thay
mockhub.
12.3. Dài hạn (Target Architecture)
- mTLS giữa các thành phần, khóa và chứng chỉ có vòng đời.
- Chuỗi cung ứng đầy đủ: khóa ký, kho gói, cập nhật ký có triển khai theo đợt (giai đoạn 3).
- Cân nhắc cô lập tenant sâu hơn ở tầng kho cho khách hàng lớn hoặc có yêu cầu pháp lý, kèm retention theo công ty.
13. Đánh giá tuân thủ (Compliance)
Không có tiêu chuẩn bắt buộc được nêu trong tài liệu hiện có (OQ-4). Bảng dưới là ước lượng sơ bộ của tác giả bản nháp, không thay thế đánh giá chính thức.
| Tiêu chuẩn | Trạng thái (sơ bộ) |
|---|---|
| OWASP (khía cạnh đầu vào, xác thực, cấu hình) | Partial: đầu vào và xác thực tốt, còn thiếu TLS bắt buộc, che log Collector, quét phụ thuộc |
| ISO 27001 | Chưa đánh giá. Chưa có chính sách, quản lý khóa, kiểm soát thay đổi chính thức cho hệ thống này |
| Chính sách bảo mật nội bộ của tổ chức | Chưa có tài liệu để đối chiếu |
14. Kết luận và đề xuất
- Rủi ro chính: (1) TLS chưa bắt buộc và tùy chọn tắt xác minh còn trong mã (S-03); (2) chưa xoay token nên token bị lộ có hiệu lực vô hạn (S-01); (3) chuỗi cung ứng chưa có khóa ký, kho gói, cập nhật có xác minh (S-07); (4) kho VM và Redis chưa có xác thực và TLS cho sản xuất (S-06).
- Mức ưu tiên xử lý: S-03 và S-01 trước phát hành sản xuất đầu tiên; S-06, S-07, S-10, S-11 trước khi mở cho khách hàng thật.
- Đề xuất hành động:
- Bộ phận bảo mật xem xét và chấp thuận (hoặc điều chỉnh) thang điểm và kế hoạch xử lý ở phần 11, gán chủ sở hữu và hạn.
- Bổ sung kiểm soát quản trị: kiểm thử bảo mật trong CI, quét phụ thuộc, cổng kiểm tra trước phát hành (
docs/07đã có danh sách kiểm trước phát hành). - Theo dõi định kỳ, đánh giá lại sau mỗi giai đoạn và khi phần Access Hub được xây.
Điều cần xác nhận: thang điểm và cấp độ quan trọng (ảnh hưởng ngưỡng chấp nhận), có chấp nhận insecure_skip_verify trong bản phát hành hay không, và yêu cầu pháp lý (OQ-4).