# Bảo mật

> Cách Xisom bảo vệ quyền truy cập vào mô hình, dữ liệu và vận hành của bạn — xác thực, kiểm soát truy cập, container được tăng cường bảo mật, và nhật ký kiểm toán.

Xisom được xây dựng cho mạng công nghiệp và được tăng cường bảo mật chống lại OWASP Top 10. Trang
này tóm tắt những gì bảo vệ box của bạn và những gì bạn, với tư cách người vận hành, chịu trách nhiệm.

## Xác thực

Hai luồng đăng nhập riêng biệt, phân tách theo mục đích:

- **Người vận hành và quản trị viên** đăng nhập vào bảng điều khiển và API bằng tên người dùng và
  mật khẩu và nhận token bearer **JWT**. Mật khẩu chỉ được lưu dưới dạng
  băm BCrypt — không bao giờ ở dạng văn bản thuần.
- **Hệ thống đối tác** gọi API bên ngoài sử dụng **khóa API tĩnh**, gửi trong
  header yêu cầu và chỉ lưu dưới dạng băm BCrypt.

**Bảo vệ khóa bí mật ký JWT**

Mỗi triển khai có khóa bí mật ký JWT riêng, được tạo trên box khi cài đặt
và lưu trong một tệp được bảo vệ. Hãy coi nó như bất kỳ bí mật nào khác — không bao giờ chia sẻ hoặc
commit nó. Việc xoay vòng nó sẽ đăng xuất tất cả mọi người, đó là tác dụng mong muốn.

## Kiểm soát truy cập

- **Từ chối theo mặc định.** Mọi endpoint đều yêu cầu người dùng đã đăng nhập trừ khi nó được
  đánh dấu công khai một cách rõ ràng. Quên bảo vệ một endpoint không làm lộ nó.
- **Dựa trên vai trò.** Các hành động chỉ dành cho quản trị viên (như gửi ghi thử kết quả hoặc quản lý
  khóa) bị giới hạn cho tài khoản quản trị.
- Chỉ có đăng nhập và kiểm tra tình trạng (health check) là có thể truy cập mà không cần xác thực.

## Chống tấn công vét cạn

Endpoint đăng nhập bị giới hạn tần suất theo IP nguồn — các lần đăng nhập **thất bại** lặp lại sẽ làm cạn
một khoảng thời gian ngắn, trong khi việc sử dụng bình thường (và một người vận hành mở nhiều tab) không bị
phạt. Tính năng này luôn bật trong môi trường sản xuất.

## Container được tăng cường bảo mật

- Tất cả container dịch vụ chạy dưới người dùng **không phải root**.
- Web frontend lắng nghe trên một cổng không đặc quyền bên trong container của nó.
- Image dịch vụ mang theo health check để nền tảng có thể phát hiện một dịch vụ bị lỗi.

## Xử lý bí mật

- Mật khẩu người dùng và khóa API chỉ được lưu dưới dạng băm BCrypt.
- Bí mật cấu hình kết nối (mật khẩu datasource, token) được **che bằng `***`**
  khi đọc lại; giá trị đã lưu được giữ lại khi bạn lưu mà không thay đổi nó.
- Giá trị khóa API được hiển thị cho bạn **một lần** khi tạo — hãy lưu chúng ngay lập tức.

## Nhật ký kiểm toán

Mọi kết quả đăng nhập (thành công và thất bại) và mọi lệnh gọi API bên ngoài đều được ghi vào
audit log, để bạn có thể xem ai đã truy cập hệ thống và khi nào.

## Danh sách kiểm tra tăng cường bảo mật cho sản xuất

Đối với một triển khai biên trong môi trường sản xuất, hãy xác nhận:

- Kết thúc TLS tại một reverse proxy đặt trước bảng điều khiển và API.
- Một khóa bí mật ký JWT mạnh, duy nhất cho mỗi triển khai (được trình cài đặt tạo ra
  tự động).
- Trình khám phá API tương tác (Swagger) bị vô hiệu hóa trừ khi một tích hợp đối tác
  cần đến nó.
- Kết nối datasource sử dụng broker đã xác thực / chính sách OPC-UA được bảo mật — không phải
  truy cập ẩn danh.
- Sao lưu định kỳ volume dữ liệu trước bất kỳ thao tác mang tính phá hủy nào.

**Mô hình mối đe dọa**

Nền tảng được thiết kế cho một mạng công nghiệp nội bộ, không phải để lộ trực tiếp ra
internet công cộng. Hãy đặt nó sau các biện pháp kiểm soát vành đai của mạng nhà máy của bạn.
