Zero Trust cho web app: IAM, secret rotation, audit log và least privilege
Bảo mật

Zero Trust cho web app: IAM, secret rotation, audit log và least privilege

Nam Nguyen
4 phút đọc
2 lượt xem
#security
#zero-trust
#iam
#secrets

Zero Trust là tư duy thiết kế quyền#

Zero Trust không có nghĩa là mua một sản phẩm bảo mật rồi xong. Nó là cách thiết kế hệ thống với giả định mạng nội bộ, user, service và token đều có thể bị lạm dụng. Vì vậy mỗi request cần được xác thực, phân quyền, giới hạn phạm vi và ghi nhận đủ dấu vết để điều tra.

Với web app nhỏ, Zero Trust thực dụng bắt đầu từ các việc rất cụ thể: cookie an toàn, admin route có auth thật, API không trả thừa field, service key không nằm trong client, secret được xoay vòng và database policy giới hạn đúng quyền.

Authentication chưa đủ nếu authorization yếu#

Authentication trả lời user là ai. Authorization trả lời user được làm gì trên tài nguyên nào. Lỗi phổ biến trong API là chỉ kiểm tra đăng nhập rồi cho phép sửa tài nguyên bằng id bất kỳ. Đây là dạng broken object level authorization, một rủi ro lớn trong API hiện đại.

TypeScript
if (invoice.ownerId !== session.userId && !session.roles.includes('admin')) {
  return forbidden();
}

Authorization nên nằm ở server, không dựa vào việc ẩn button trên frontend. UI chỉ cải thiện trải nghiệm; server mới là ranh giới bảo mật.

Least privilege cho user, service và database#

Mỗi credential chỉ nên có quyền tối thiểu cần thiết. Public frontend dùng anon key hoặc publishable key với RLS chặt. Server admin dùng service role nhưng chỉ ở server. CI/CD chỉ có quyền deploy đúng project. Database user runtime không nên có quyền drop schema nếu app chỉ cần đọc/ghi bảng nghiệp vụ.

  • Public API select rõ field public, không select * nếu có dữ liệu nhạy cảm.
  • Admin API kiểm tra session hoặc key ở server và dùng SameSite cookie.
  • Service role key không bao giờ xuất hiện trong JavaScript gửi ra browser.
  • Storage bucket tách public asset và private upload.

Secret rotation cần có quy trình#

Secret bị lộ thường không báo trước. Hãy chuẩn bị cách xoay vòng API key, admin key, webhook secret và database password mà không downtime. Với key quan trọng, dùng dual-key rollout: thêm key mới, deploy app đọc key mới, xác nhận traffic ổn, rồi revoke key cũ.

Secret không nên nằm trong Git, Docker image, log, analytics event hoặc client bundle. Nếu lỡ commit secret, xóa commit chưa đủ; bạn phải revoke secret vì lịch sử có thể đã bị clone.

Audit log giúp điều tra và răn đe#

Admin dashboard cần biết ai đã approve comment, sửa bài, xóa tin nhắn hoặc đổi cấu hình. Audit log nên ghi actor, action, resource, timestamp, IP hoặc user agent khi phù hợp. Không cần log mọi thứ ngay từ đầu, nhưng các thao tác phá hủy hoặc liên quan dữ liệu user nên có dấu vết.

Phòng thủ các tấn công phổ biến#

  • XSS: sanitize HTML, escape output, dùng CSP và tránh render nội dung user tùy tiện.
  • CSRF: SameSite cookie, kiểm tra Origin/Sec-Fetch-Site và token nếu form rủi ro cao.
  • Brute force: rate limit login/contact/comment và cảnh báo bất thường.
  • IDOR/BOLA: kiểm tra quyền theo từng object ở server.
  • Data leakage: public API chỉ trả field cần thiết và không lộ email comment.

Checklist Zero Trust cho web app#

  • Mọi write endpoint có auth, authorization và validation.
  • Cookie admin có HttpOnly, Secure ở production và SameSite phù hợp.
  • Secret có owner, nơi lưu, ngày xoay vòng và quy trình revoke.
  • Public response được giảm field nhạy cảm.
  • Database RLS hoặc policy tương đương được kiểm thử.
  • Admin action quan trọng có audit trail.
  • Security headers gồm CSP, X-Frame-Options, nosniff và Referrer-Policy.

Nguồn tham khảo chính#

Chia sẻ bài viết

Giúp người khác tìm thấy bài viết này

Bình luận

Đang tải bình luận...

Đang tải bình luận...

Để lại bình luận

Email của bạn sẽ không được công khai

Tối thiểu 10 ký tự

0 / 5000