Zero Trust là gì? Nguyên tắc "không tin ai mặc định" trong bảo mật

  • author-image

    Nguyễn Đình Cường

  • blog-tag
  • blog-comment 0 comment
  • created-date 09 Nov, 2026
blog-thumbnail

Mô hình bảo mật cũ giống một lâu đài có tường cao: qua được cổng là coi như đáng tin. Nhưng khi nhân viên làm việc từ xa, ứng dụng nằm trên đám mây và kẻ tấn công có thể lọt vào bên trong, bức tường ấy không còn đủ. Zero Trust là cách nghĩ mới: không tin ai mặc định, luôn kiểm tra.

Zero Trust là gì?

Zero Trust (không tin cậy mặc định) là triết lý thiết kế bảo mật với nguyên tắc "không bao giờ tin, luôn xác minh". Mọi yêu cầu truy cập, dù đến từ mạng nội bộ hay từ Internet, đều phải được xác thực, được cấp quyền đúng mức và được giám sát. Vị trí mạng không còn là bằng chứng của sự đáng tin.

Các nguyên tắc cốt lõi

  1. Xác minh rõ ràng: dựa vào danh tính người dùng, tình trạng thiết bị, ngữ cảnh (vị trí, thời gian, hành vi) để quyết định.
  2. Quyền tối thiểu (least privilege): chỉ cấp đúng quyền cần thiết, trong thời gian cần thiết.
  3. Giả định đã bị xâm nhập: thiết kế để hạn chế thiệt hại nếu một phần bị chiếm quyền.
  4. Phân đoạn nhỏ: chia hệ thống thành các vùng, kẻ tấn công vào được một chỗ cũng khó đi ngang sang chỗ khác.
  5. Giám sát liên tục: ghi log, phát hiện bất thường và phản ứng nhanh.

Điều này liên quan gì đến lập trình viên?

Rất nhiều. Zero Trust không chỉ là việc của bộ phận hạ tầng, mà thể hiện ngay trong cách bạn viết ứng dụng:

  • Không tin dữ liệu đầu vào: luôn kiểm tra và làm sạch dữ liệu từ người dùng và từ dịch vụ khác.
  • Kiểm tra quyền ở mọi API: không dựa vào việc "ẩn nút trên giao diện".
  • Xác thực giữa các dịch vụ nội bộ: dịch vụ gọi dịch vụ cũng cần danh tính và quyền.
  • Bí mật không nằm trong code: dùng kho quản lý bí mật và biến môi trường.
  • Token ngắn hạn: ưu tiên thông tin xác thực hết hạn nhanh, có thể thu hồi.

Ví dụ kiểm tra quyền ở mọi yêu cầu

Đoạn Node.js (Express) sau thể hiện tư duy: không chỉ xác thực người dùng mà còn kiểm tra quyền sở hữu tài nguyên trên từng yêu cầu:

app.get("/orders/:id", xacThuc, async (req, res) => {
  const don = await Order.findById(req.params.id);
  if (!don) return res.status(404).end();

  // Không đủ nếu chỉ đăng nhập: phải đúng chủ đơn hoặc có quyền quản trị
  if (don.userId !== req.user.id && req.user.role !== "admin") {
    return res.status(403).json({ error: "Không có quyền truy cập" });
  }
  res.json(don);
});

Việc bỏ sót kiểm tra này gây ra lỗi phổ biến được gọi là truy cập trực tiếp đối tượng không an toàn (IDOR), nơi người dùng đổi id trong đường dẫn để xem dữ liệu của người khác.

Các thành phần hạ tầng thường gặp

  • Xác thực đa yếu tố (MFA): thêm lớp bảo vệ ngoài mật khẩu.
  • Quản lý danh tính và truy cập (IAM): kiểm soát tập trung ai được làm gì.
  • Vi phân đoạn mạng: giới hạn lưu lượng giữa các dịch vụ.
  • Kiểm tra tình trạng thiết bị: thiết bị phải cập nhật, bật mã hóa mới được truy cập tài nguyên nhạy cảm.
  • Ghi log và phân tích hành vi: phát hiện đăng nhập bất thường.

Áp dụng từng bước

  1. Kiểm kê tài sản và dữ liệu nhạy cảm, biết cái gì cần bảo vệ nhất.
  2. Bật MFA cho tài khoản quản trị và hệ thống quan trọng.
  3. Rà soát và thu hẹp quyền, xóa tài khoản không dùng.
  4. Tách môi trường, chia nhỏ mạng.
  5. Bổ sung giám sát và cảnh báo, rồi cải tiến dần.

Những hiểu lầm

  • "Zero Trust là một sản phẩm mua về": thực ra là kiến trúc và quy trình, sản phẩm chỉ hỗ trợ.
  • "Làm một lần là xong": đây là quá trình liên tục.
  • "Chỉ dành cho doanh nghiệp lớn": nguyên tắc quyền tối thiểu và MFA áp dụng được cho cả dự án nhỏ.

Kết luận

Zero Trust chuyển trọng tâm từ "bảo vệ vành đai" sang "kiểm tra mọi yêu cầu". Là lập trình viên, bạn thực hành nó mỗi khi kiểm tra quyền, xác thực dịch vụ và giữ bí mật ngoài mã nguồn.

Muốn học lập trình backend với xác thực và phân quyền đúng cách, bạn có thể xem các khóa học tại codebem.com.

author_photo
Nguyễn Đình Cường

0 comment