Bảo mật
Mô hình đe dọa và biện pháp cho toàn bộ chuỗi agent, collector, Access Hub. Phần bảo mật nội bộ của agent do dự án Agent quản lý, tài liệu này chỉ nêu các yêu cầu Collector đặt lên agent.
1. Tài sản cần bảo vệ
| Tài sản | Rủi ro chính |
|---|---|
| Token agent | Bị đánh cắp để gửi dữ liệu giả mạo một máy chủ |
| License | Bị lộ để đăng ký agent trái phép |
| Số liệu và kiểm kê của công ty | Đọc chéo tenant |
| Token quản trị collector, token dịch vụ của Access Hub | Chiếm quyền điều khiển hạ tầng giám sát |
| Kênh cập nhật agent (GĐ 3) | Đẩy mã độc lên hàng nghìn máy chủ (rủi ro cao nhất) |
| Tính khả dụng của collector | Từ chối dịch vụ bằng dữ liệu rác hoặc bão kết nối |
2. Mô hình đe dọa (STRIDE rút gọn)
| Đe dọa | Kịch bản | Biện pháp |
|---|---|---|
| Spoofing | Kẻ tấn công dùng token đánh cắp để nói dối về một máy | Token riêng cho mỗi agent, thu hồi tức thì (60 giây), xoay 30 ngày, phát hiện machine_id lệch, mTLS tùy chọn GĐ 3 |
| Spoofing | Enroll giả để vào công ty khác | License băm, hạn ngắn, giới hạn số lần dùng, gắn công ty và tùy chọn gắn Server, giới hạn tốc độ theo IP, tài khoản khóa |
| Tampering | Agent gửi nhãn company_id của công ty khác | Danh tính chỉ lấy từ registry theo token, nhãn cùng tên trong payload bị bỏ |
| Tampering | Sửa cấu hình agent trên đường truyền | TLS, cập nhật có chữ ký Ed25519 |
| Repudiation | Người dùng phủ nhận thu hồi hoặc sửa luật | Audit qua AuditRecorder, Auditable trên token, agent, luật |
| Information disclosure | Truy vấn số liệu đọc chéo tenant | Access Hub tự chọn company_id, server_id, collector chèn bộ lọc, không nhận PromQL thô, kiểm thử tự động (NFR-12) |
| Information disclosure | Token lộ trong log hoặc danh sách tiến trình | Không ghi token vào log, License nhận qua biến môi trường, tệp hoặc stdin, không qua argv; tệp thông tin đăng nhập quyền 0600 hoặc ACL |
| DoS | Hàng nghìn agent gửi dồn hoặc gửi payload khổng lồ | Giới hạn kích thước, số series, tốc độ theo agent, jitter, bus có giới hạn, 503 kèm Retry-After, ingest không trạng thái để scale ngang |
| DoS | Bùng nổ cardinality làm sập TSDB | Danh sách nhãn trắng, giới hạn series mỗi agent, cắt giá trị nhãn, cảnh báo tổng series |
| Elevation | Chạy lệnh từ xa qua agent | Không hỗ trợ thực thi lệnh từ xa ở GĐ 1 đến 3. Kiểm tra chỉ gồm kiểu cố định (port, tcp, http, cert, service), không nhận script (ADR 0010) |
| Elevation | Kiểm tra dùng như SSRF trong mạng nội bộ | Kiểm tra chạy từ máy đã cài agent, đích cấu hình bởi quản trị viên công ty, tùy chọn allow_cidrs giới hạn đích, không theo chuyển hướng ra ngoài mặc định |
3. Xác thực và phân quyền
Agent -> collector
- Token mờ (opaque), 256 bit ngẫu nhiên, mã hóa dạng
ahat_<base64url>(tiền tố giúp máy quét bí mật nhận ra khi bị lộ). - Lưu phía hub chỉ là SHA-256 của token. Collector và Access Hub không lưu bản rõ.
- Xoay: 30 ngày, chồng lấn 24 giờ. Xoay thủ công bất cứ lúc nào từ Access Hub.
- Thu hồi: Access Hub đẩy
DELETE /internal/v1/agents/{id}, ghi sẵn vào registry, hiệu lực ngay khi mọi node ingest nhận được (cache tối đa 60 giây nếu đẩy thất bại, do đó có đối soát định kỳ).
Collector -> Access Hub
- Bearer token Sanctum của user dịch vụ, vai trò chỉ chứa
monitoring.collector. Xoay định kỳ, lưu trong kho bí mật của nền tảng triển khai (biến môi trường hoặc secret manager), không ghi vào repo. - IP allowlist phía Access Hub (tùy chọn) cho các endpoint collector.
Access Hub -> collector (admin)
- Token admin riêng, chỉ mở trên mạng nội bộ, TLS, có thể thêm mTLS. Endpoint admin không bao giờ ra Internet.
Người dùng -> dữ liệu giám sát
- Không bao giờ truy cập trực tiếp collector. Toàn bộ qua Access Hub với quyền
monitoring.viewvà ràng buộc công ty củaServer(CompanyScope).
4. Bảo vệ truyền tải
- TLS 1.2 trở lên, ưu tiên 1.3, bộ mã hiện đại. Chứng chỉ công khai (Let's Encrypt hoặc CA doanh nghiệp) cho endpoint agent.
- Agent xác minh chứng chỉ máy chủ theo kho tin cậy của hệ điều hành. Tùy chọn ghim CA riêng (
ca_file) cho môi trường nội bộ. Không có cờ tắt xác minh trong bản phát hành (chỉ tồn tại trong build dev có cờ biên dịch). - mTLS tùy chọn GĐ 3: agent có chứng chỉ máy khách cấp khi enroll, ràng buộc với
agent_id.
5. Cô lập tenant
Các lớp phòng thủ chồng nhau:
- Danh tính từ registry theo token, không tin nội dung.
- Nhãn
company_id,server_iddo collector gắn, xóa nhãn trùng tên từ agent. - Truy vấn: Access Hub xác định đối tượng, collector chèn matcher, danh sách chỉ số trắng, không PromQL thô, giới hạn khoảng thời gian và số điểm.
- Xóa dữ liệu theo tenant qua API nội bộ có
company_idbắt buộc. - Kiểm thử tự động "hai công ty" ở cả hai repo: agent công ty A không thể ghi vào series của B, truy vấn của A không trả dữ liệu B, purge A không đụng B.
6. Bảo mật chuỗi cung ứng và cập nhật
- Gói cài đặt ký: GPG cho
.deb,.rpm(kho gói ký), Authenticode cho.msivà.exe(chứng chỉ ký mã, khuyến nghị EV để tránh SmartScreen), cosign hoặc SHA-256 kèm chữ ký cho tar và script. - Script cài xác minh checksum và chữ ký trước khi chạy.
- Cập nhật tự động (GĐ 3): manifest ký Ed25519, khóa công khai được nhúng trong agent lúc build, khóa riêng chỉ ở HSM hoặc kho khóa CI bảo vệ, xoay khóa có kế hoạch (nhúng nhiều khóa công khai). Agent kiểm tra chữ ký manifest, SHA-256 của tệp, phiên bản chỉ tăng (chống hạ cấp), giữ bản cũ để quay lui.
- Phụ thuộc: khóa phiên bản,
govulncheckvàosv-scannertrong CI, SBOM (CycloneDX) cho mỗi bản phát hành, build tái lập được khi khả thi. - Repo: bảo vệ nhánh chính, review bắt buộc, bí mật ký chỉ có trong môi trường CI phát hành.
7. Bảo mật vận hành collector
- Chạy không dùng root, bộ mô tả systemd với
NoNewPrivileges,ProtectSystem=strict,PrivateTmp, giới hạn địa chỉ. - Container: hình ảnh distroless, không shell, chỉ đọc hệ thống tệp.
- Log JSON, không ghi token, License, header Authorization. Có bộ lọc che (redaction) ở tầng log, có kiểm thử.
- Redis: bật mật khẩu và TLS, mạng riêng. Khuyến nghị cân nhắc Valkey do thay đổi giấy phép Redis (xem 13).
- Dữ liệu ở trạng thái nghỉ: đĩa TSDB và outbox mã hóa theo nền tảng lưu trữ nếu chính sách công ty yêu cầu.
8. Quyền riêng tư và dữ liệu thu thập
- Chỉ thu chỉ số hệ thống tổng hợp và kiểm kê phần cứng. Không thu dòng lệnh tiến trình, nội dung tệp, nội dung mạng, biến môi trường, danh sách người dùng.
- Danh sách dịch vụ và port chỉ gửi cho những mục quản trị viên khai báo trong cấu hình kiểm tra.
- Địa chỉ MAC mặc định không gửi. Hostname và IP được coi là dữ liệu vận hành nội bộ của công ty.
- Xóa dữ liệu khi xóa tenant hoặc máy chủ (FR-43). Tài liệu chính sách lưu trữ hiển thị cho người dùng.
9. Ghi nhận và phát hiện
Sự kiện bảo mật cần ghi và cảnh báo: enroll thất bại lặp lại, token bị từ chối hàng loạt từ một IP, agent có machine_id trùng ở nhiều hostname, tăng vọt số series bị bỏ, thay đổi cấu hình từ xa, cập nhật thất bại chữ ký. Đẩy về Access Hub dưới dạng sự kiện hệ thống hoặc metric collector.
10. Danh sách kiểm tra trước khi phát hành mỗi giai đoạn
- [ ] Kiểm thử cô lập tenant đạt trên cả hai repo.
- [ ]
govulncheck, quét bí mật, quét container sạch. - [ ] Không có token hoặc bí mật trong log (kiểm thử redaction).
- [ ] Cờ bỏ xác minh TLS không tồn tại trong bản release.
- [ ] Gói ký và xác minh chữ ký thành công trên máy sạch.
- [ ] Tài liệu vận hành cập nhật: xoay token, thu hồi khẩn cấp, xử lý lộ khóa ký.