Checklist bảo mật cho Odoo 19 External API

Tám kiểm tra thực dụng cho API key, service user, quyền truy cập, public method và transaction trước khi mở một integration JSON-2 ở production.

Vấn đề

Một request JSON-2 hợp lệ về cú pháp vẫn có thể quá quyền, gọi nhầm public method hoặc để lại trạng thái dở dang giữa nhiều transaction. Bảo mật integration không dừng ở việc giấu API key.

Bằng chứng cần giữ làm baseline

Odoo 19 nhận API key qua bearer token và có hướng dẫn rotation: tạo key mới, triển khai và xác minh key mới trước khi revoke key cũ. [K1]

JSON-2 áp dụng ACL, record rules và field access của user đang gọi. Service user vì vậy là một phần của security boundary, không chỉ là một tài khoản kỹ thuật. [K2]

Public model method có thể được gọi qua RPC với tham số do client chọn; tài liệu security yêu cầu coi record và tham số là dữ liệu không tin cậy. Method bắt đầu bằng _ không được expose qua external API. [K3]

Mỗi call JSON-2 là một transaction riêng. Một chuỗi call phía client không có bảo đảm all-or-nothing. [K4]

Checklist trước production

  1. Service user riêng: không dùng tài khoản cá nhân hoặc admin; chỉ cấp group cần cho flow.
  2. Quản lý key: lưu trong secret manager, không đưa vào source, log, analytics hay nội dung prompt.
  3. Rotation có kiểm chứng: tạo key mới, deploy, chạy smoke test, rồi mới revoke key cũ.
  4. Test quyền thật: chạy read/write bằng đúng service user trên dữ liệu đại diện để thấy ACL, record rule và field access thật.
  5. Allowlist client: khóa model, method và field mà integration được phép dùng; từ chối target ngoài danh sách.
  6. Review public method: ưu tiên ORM method chuẩn. Với method custom, validate state, ownership và tham số ở server; không tin kiểm tra phía client.
  7. Giữ atomicity: nếu nhiều bước phải thành công cùng nhau, gói chúng trong một method server-side đã test thay vì nhiều request JSON-2.
  8. Khả năng dừng: có owner, cách revoke key, kill switch và audit trail trước khi mở write.

Khi xảy ra sự cố

Revoke key bị nghi lộ, dừng worker/client, giữ lại request ID và audit log, sau đó kiểm tra phạm vi record mà service user có thể truy cập. Chỉ cấp key mới sau khi nguyên nhân và quyền dư thừa đã được xử lý.

Giới hạn

Checklist này không thay security review của custom module, không chứng minh record rules đúng và không thay kiểm thử nghiệp vụ. Dynamic documentation cùng live registry vẫn là nguồn xác nhận model/method/field của database cụ thể. Recommendation về least privilege, allowlist và secret manager là biện pháp vận hành bổ sung trên baseline chính thức của Odoo.