Bảo mật

Cập nhật lần cuối: 25/05/2026

Tài liệu này mô tả các biện pháp kỹ thuật và quy trình XomiMail áp dụng để bảo vệ dữ liệu Gmail và dữ liệu doanh nghiệp của bạn. Trang này được duy trì làm tài liệu công khai phục vụ kiểm toán an ninh và rà soát của Google API (Restricted Scope verification, CASA Tier 2).

1. Tổng quan mô hình bảo mật

XomiMail là dịch vụ SaaS đa người thuê (multi-tenant), mỗi tổ chức là một tenant hoàn toàn tách biệt ở cấp dữ liệu, OAuth token, và quyền truy cập. Mọi truy cập đến dữ liệu Gmail của một tổ chức đều bị giới hạn theo phạm vi của tổ chức đó (organization scoping).

Toàn bộ giao tiếp client ↔ server và server ↔ Google / nhà cung cấp AI / lưu trữ đám mây đều dùng TLS 1.2+. Dữ liệu lưu trữ tại nhà cung cấp hạ tầng và lưu trữ tệp đều bật mã hóa AES-256 mặc định.

2. Mã hóa OAuth token Gmail

OAuth access token + refresh token của hộp thư Gmail là dữ liệu nhạy cảm nhất trong hệ thống. Mỗi token được mã hóa AES-256-GCM với khóa server-side (biến môi trường ENCRYPTION_KEY) trước khi ghi vào database. Khóa không bao giờ commit vào mã nguồn và chỉ load vào tiến trình server từ biến môi trường được bảo vệ bởi nhà cung cấp hạ tầng.

Khi worker cần gọi Gmail API, token được giải mã trong RAM tiến trình và không bao giờ ghi log. Khi user ngắt kết nối hộp thư, token được xóa vĩnh viễn khỏi DB (không soft-delete).

3. Phạm vi quyền (OAuth scope) tối thiểu

XomiMail chỉ yêu cầu scope tối thiểu thực sự cần để vận hành tính năng user đã chọn:

  • https://www.googleapis.com/auth/gmail.readonly BẮT BUỘC. Để đọc email + tệp đính kèm phục vụ phân loại và bóc tách dữ liệu.
  • https://www.googleapis.com/auth/gmail.modify chỉ cấp khi user cấu hình đích “gắn nhãn Gmail” cho ít nhất 1 workflow. Dùng duy nhất để thêm/sửa nhãn (label) theo phân loại AI, KHÔNG xóa email, KHÔNG sửa nội dung.
  • https://www.googleapis.com/auth/gmail.send chỉ cấp khi user cấu hình đích “trả lời tự động” cho ít nhất 1 workflow. Dùng duy nhất để gửi email phản hồi từ template do user soạn (vd xác nhận đã nhận PO).

User chủ động chọn cấp scope mở rộng tại form Mailbox; nếu chỉ cần đọc + ghi Google Sheet, chỉ gmail.readonly được cấp.

4. Kiểm soát truy cập (Access control)

  • Xác thực user: Đăng nhập qua Google OAuth (không mật khẩu riêng) — đảm bảo MFA của tài khoản Google áp dụng cho cả XomiMail.
  • Phân quyền trong tổ chức: 3 vai trò — owner (toàn quyền + xóa tổ chức), admin (cấu hình + quản lý thành viên), member (chỉ xem dữ liệu).
  • Tenant isolation: Mọi truy vấn DB và file storage đều scope theo organizationId. Code review bắt buộc check tenant scoping cho mọi server action.
  • Nhân viên XomiMail: không có quyền truy cập production data Gmail của khách. Truy cập admin panel chỉ giới hạn cho danh sách platform admin được khai báo cứng trong cấu hình; mọi thao tác admin có audit log.

5. Mã hóa khi truyền và khi lưu (encryption in transit & at rest)

  • In transit: TLS 1.2+ giữa browser ↔ server, server ↔ Google API, server ↔ nhà cung cấp AI, server ↔ lưu trữ tệp. HTTPS bắt buộc qua HSTS.
  • At rest: Database PostgreSQL được mã hóa AES-256 mặc định bởi nhà cung cấp hạ tầng. Bucket lưu tệp đính kèm bật mã hóa AES-256 server-side. OAuth token có lớp mã hóa AES-256-GCM ứng dụng-cấp riêng (xem mục 2).
  • Backup: Sao lưu database hằng ngày, lưu trữ kỳ hạn 7 ngày, mã hóa khi vận chuyển và khi lưu.

6. Cô lập dữ liệu giữa các tenant

Mọi bảng nghiệp vụ (Mailbox, EmailMessage, Workflow, Route, ...) đều có cột organizationId và xóa cascade khi tổ chức bị xóa. Truy vấn ứng dụng-cấp luôn filter theo organizationId của session đang hoạt động; thiếu filter là lỗi nghiêm trọng buộc fail test.

Server actions yêu cầu vai trò qua requireRole() trước mọi thao tác ghi, đảm bảo user không thể truy cập dữ liệu tổ chức khác kể cả khi biết ID.

7. Nhà cung cấp mô hình AI

Nội dung email + tệp đính kèm được gửi cho mô hình ngôn ngữ lớn để phân loại + trích xuất. XomiMail dùng các nhà cung cấp API chế độ không huấn luyện (no-training):

  • Google Gemini API — paid tier, dữ liệu không dùng để training (chính sách).
  • Anthropic Claude API — no training by default (AUP).
  • OpenAI API — data not used for training on API tier (business terms).

XomiMail KHÔNG fine-tune mô hình AI bằng dữ liệu khách hàng (sẽ thông báo trước bằng văn bản và xin đồng thuận nếu thay đổi trong tương lai cho khách hàng enterprise).

8. Lưu trữ tệp đính kèm

Tệp PDF / DOCX / ảnh đính kèm được lưu trữ tạm trong bucket private để worker tải lại khi phân tích lại email. Bucket cấu hình:

  • Mã hóa AES-256 server-side mặc định.
  • Không public access — chỉ truy xuất qua signed URL có thời hạn (15 phút).
  • Block delete public bypass.
  • Vòng đời lưu trữ: tệp bị xóa cùng email cha khi tổ chức/user xóa, hoặc theo chính sách lưu trữ retentionDays của tổ chức (mặc định 90 ngày).

9. Audit log + giám sát

  • Mỗi thay đổi cấu hình quan trọng (Route, Destination, Workflow, quyền member) được ghi log với actor, before/after snapshot.
  • Mọi bước trong pipeline xử lý email (fetch, parse, analyze, route, extract, deliver) được log status + chi tiết lỗi nếu có, hiển thị cho user qua trang Nhật ký.
  • Lỗi ứng dụng được gửi tới hệ thống giám sát (Sentry) sau khi loại các lỗi UI dự kiến (UserError). Stack trace + breadcrumb được lưu, nhưng không bao gồm nội dung email hay tệp đính kèm (filter ở SDK).
  • Sao lưu DB hằng ngày kèm smoke test pg_restore — fail → alert ngay vào Sentry.

10. Vòng đời dữ liệu + xóa

  • Xóa hộp thư (mailbox): token OAuth bị xóa ngay, background job xóa email + tệp đính kèm trong vòng 24h.
  • Xóa tổ chức: cascade xóa toàn bộ mailbox, email, tệp đính kèm, workflow, route, destination, audit log. Lưu lại metadata billing tối thiểu cho yêu cầu thuế ≤ 7 năm.
  • Retention tự động: email + parsedContent cũ hơn retentionDays (mặc định 90, tùy chỉnh) sẽ bị xóa tự động.
  • Quyền của chủ thể dữ liệu: xuất dữ liệu (data export) và xóa tài khoản theo yêu cầu — gửi email tới security@xomimail.com, phản hồi trong 30 ngày.

11. Phản ứng sự cố (Incident response)

Khi phát hiện sự cố ảnh hưởng tính bảo mật dữ liệu, XomiMail tuân theo quy trình:

  1. Trong 1 giờ: phát hiện (qua Sentry alert / báo cáo user / kiểm tra định kỳ) → ghi nhận incident, xác định phạm vi sơ bộ.
  2. Trong 4 giờ: chặn lỗ hổng (rotate secret, revoke token, vô hiệu hóa endpoint nếu cần).
  3. Trong 24 giờ: phân tích nguyên nhân, đánh giá dữ liệu bị ảnh hưởng.
  4. Trong 72 giờ: thông báo cho user/khách hàng bị ảnh hưởng qua email tới owner của tổ chức (phù hợp Article 33 GDPR khi áp dụng).
  5. Trong 7 ngày: báo cáo hậu sự cố (postmortem) công khai trên trang status — nguyên nhân, biện pháp khắc phục, hành động ngăn ngừa tái diễn.

Báo cáo sự cố nghi ngờ tới security@xomimail.com. PGP key có sẵn theo yêu cầu cho báo cáo nhạy cảm.

12. Quản lý lỗ hổng + bản vá

  • Dependency được audit định kỳ qua pnpm audit + Dependabot. Lỗ hổng critical/high được vá trong 7 ngày; medium trong 30 ngày.
  • Hệ điều hành + runtime (Node.js, PostgreSQL) tự cập nhật theo nhà cung cấp hạ tầng (managed).
  • Báo cáo lỗ hổng có thiện chí từ bên ngoài (responsible disclosure) được hoan nghênh; gửi tới security@xomimail.com. Cam kết không truy cứu pháp lý nếu báo cáo có thiện chí, không khai thác dữ liệu khác, không công bố trước khi vá.

13. Sao lưu + khôi phục

  • Sao lưu database tự động hằng ngày (00:30 giờ VN), giữ 7 ngày gần nhất.
  • Smoke test sau mỗi backup: kích thước > min, parse được, có đủ các bảng quan trọng.
  • RTO mục tiêu: ≤ 4 giờ. RPO mục tiêu: ≤ 24 giờ.
  • Backup encrypt khi vận chuyển + khi lưu trữ.

14. Tuân thủ + chứng chỉ

XomiMail đang trong quá trình hoàn thiện:

  • Google API Restricted Scope verification — đang chuẩn bị nộp; cam kết Limited Use.
  • CASA Tier 2 self-assessment — đang chuẩn bị nộp.
  • SOC2 Type II + ISO 27001 — lộ trình cho khách hàng enterprise (cần đặt hàng cụ thể).

DPA (Data Processing Agreement) có sẵn cho khách hàng enterprise theo yêu cầu — security@xomimail.com.

15. Liên hệ

Câu hỏi về bảo mật, báo cáo lỗ hổng, hoặc yêu cầu chứng từ tuân thủ (DPA, security questionnaire, audit evidence) gửi tới security@xomimail.com.