Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "HI.AI Members" các nội dung bạn quan tâm.

Bài 4. Kiểm soát truy cập API

1. Đặt vấn đề

API là cầu nối giữa chatbot, website, Drupal, QMS, phần mềm bệnh viện và Ollama. Nếu API không được kiểm soát, người dùng hoặc ứng dụng có thể gọi AI tùy tiện, gửi dữ liệu nhạy cảm, dùng model không được phép, gây quá tải GPU hoặc truy xuất thông tin vượt quyền. Trong bệnh viện, API AI không thể để mở tự do như một service nội bộ bình thường.

Kiểm soát truy cập API là một trong những yêu cầu bảo mật quan trọng nhất khi triển khai AI local.

2. API nào cần kiểm soát?

Các API liên quan gồm:

  • API chatbot.
  • API generate.
  • API chat.
  • API embedding.
  • API RAG search.
  • API upload file.
  • API tóm tắt tài liệu.
  • API phân tích dữ liệu.
  • API xem lịch sử.
  • API log.
  • API quản trị model.
  • API cập nhật chỉ mục FAISS.

Đặc biệt, API gọi Ollama không nên được mở trực tiếp cho client.

3. Không để frontend gọi Ollama trực tiếp

Không nên để trình duyệt người dùng gọi:

 
http://server-ai:11434/api/chat
 

Lý do:

  • Lộ endpoint.
  • Không kiểm soát quyền.
  • Không log đúng người dùng.
  • Người dùng có thể gọi model bất kỳ.
  • Không kiểm soát prompt.
  • Không lọc dữ liệu.
  • Không rate limit theo user.
  • Có thể bị lạm dụng tài nguyên.

Luồng đúng:

 
Frontend → API trung gian → Ollama localhost
 

4. Xác thực API

API trung gian cần xác thực:

  • Session người dùng.
  • JWT.
  • API key nội bộ.
  • OAuth/OpenID nếu có.
  • Token service-to-service.
  • IP allowlist cho service nội bộ.

Không nên có endpoint AI quan trọng không xác thực.

5. Phân quyền API

Sau khi xác thực, API phải kiểm tra quyền:

  • Người dùng có được dùng chức năng này không?
  • Có được dùng model này không?
  • Có được truy xuất kho dữ liệu này không?
  • Có được upload file không?
  • Có được phân tích dữ liệu nhạy cảm không?
  • Có được xem lịch sử/log không?

Xác thực trả lời “bạn là ai”; phân quyền trả lời “bạn được làm gì”.

6. Rate limit và quota

Cần giới hạn:

  • Số request mỗi phút.
  • Số token hoặc độ dài prompt.
  • Số file upload.
  • Kích thước file.
  • Số phiên chat đồng thời.
  • Số request embedding.
  • Số tác vụ dài.
  • Quyền dùng model lớn.

Rate limit giúp bảo vệ GPU, RAM và tránh lạm dụng.

7. Kiểm tra dữ liệu đầu vào

API phải kiểm tra:

  • Prompt quá dài.
  • File không đúng loại.
  • File quá lớn.
  • Dữ liệu định danh.
  • Nội dung không được phép.
  • Yêu cầu chuyên môn vượt thẩm quyền.
  • Yêu cầu truy xuất dữ liệu không có quyền.
  • Lệnh kỹ thuật nguy hiểm nếu là trợ lý CNTT.

Không nên chuyển nguyên input người dùng sang model.

8. Kiểm soát dữ liệu đầu ra

API có thể kiểm tra response:

  • Có chứa dữ liệu định danh không?
  • Có bịa số liệu không?
  • Có thiếu nguồn không?
  • Có vượt phạm vi chuyên môn không?
  • Có lỗi không?
  • Có cần cảnh báo không?

Với tác vụ nhạy cảm, có thể không streaming trực tiếp mà kiểm tra response trước.

9. Timeout và xử lý lỗi

API cần có:

  • Timeout request.
  • Thông báo khi model bận.
  • Cơ chế hủy request.
  • Xử lý lỗi Ollama không phản hồi.
  • Xử lý lỗi embedding.
  • Xử lý lỗi FAISS.
  • Không trả stack trace cho người dùng cuối.
  • Log lỗi cho quản trị.

10. Ghi log API

Log nên gồm:

  • User.
  • Vai trò.
  • IP hoặc thiết bị nếu cần.
  • Endpoint gọi.
  • Model.
  • Tác vụ.
  • Thời gian.
  • Trạng thái.
  • Thời lượng.
  • Tài liệu truy xuất.
  • Lỗi.

Không nhất thiết luôn lưu nội dung prompt/response, đặc biệt với dữ liệu nhạy cảm.

11. Kết luận

Kiểm soát truy cập API là lớp bảo vệ trung tâm của AI local bệnh viện. Không được để frontend hoặc người dùng gọi trực tiếp Ollama. Mọi request cần đi qua API trung gian có xác thực, phân quyền, rate limit, kiểm tra input, kiểm soát output, log và xử lý lỗi. API an toàn giúp AI trở thành dịch vụ nội bộ có quản trị, thay vì một cổng truy cập model không kiểm soát.