0

Access Controls Trong Cấu Hình Hệ Thống: Giải Mã Cơ Chế Restrict Domain & Allow Route

Khi xây dựng kiến trúc Backend (đặc biệt là tại các tầng API Gateway, Reverse Proxy, hoặc cấu hình Middleware), Access Controls (Kiểm soát truy cập) là chốt chặn an ninh đầu tiên. Đoạn cấu hình bạn đang phân tích là một thiết kế theo mô hình Feature Toggle (Cờ tính năng) kết hợp với Whitelist (Danh sách cho phép) – một tiêu chuẩn bảo mật cực kỳ phổ biến trong các hệ thống phân tán và Microservices.

Hãy cùng "mổ xẻ" hai thông số chiến lược này để hiểu cách chúng bảo vệ hệ thống của bạn.

1. enabled_restrict_domain: Chốt Chặn Nguồn Gốc (Origin Control)

Đoạn cấu hình quy định:

  • true => Chỉ giới hạn (chấp nhận) các domain được liệt kê rõ ràng trong danh sách restrict_domains.

  • false => Tắt tính năng này (nhận request từ mọi nơi).

Bản chất kỹ thuật

Đây là một lớp bảo vệ hoạt động ở cấp độ mạng hoặc HTTP Header (thường dựa vào Origin, Referer hoặc IP của Client). Khi bật lên (true), hệ thống chuyển sang trạng thái "Zero Trust" đối với nguồn gửi request. Nó đóng vai trò như một lớp CORS (Cross-Origin Resource Sharing) khắt khe ở tầng server hoặc Gateway.

Ứng dụng thực tế

  • Bảo vệ API nội bộ (Private API): Đảm bảo API chỉ được gọi từ chính các website nội bộ của công ty (ví dụ: admin.yourdomain.com) và từ chối mọi request từ các domain lạ (phòng chống tấn công CSRF).

  • Tích hợp đối tác (B2B API): Khi bạn cung cấp API cho đối tác, bạn yêu cầu họ cung cấp Domain/IP tĩnh. Hệ thống của bạn sẽ đưa thông tin này vào restrict_domains. Dù kẻ gian có lấy cắp được API Key, họ cũng không thể gọi API từ một server khác.

2. enabled_allow_route: Chốt Chặn Điểm Đến (Endpoint Control)

Đoạn cấu hình quy định:

  • true => Chỉ cho phép truy cập vào các route/đường dẫn được định nghĩa trong danh sách allow_routes. Các route khác sẽ bị chặn (thường trả về lỗi 403 Forbidden hoặc 404 Not Found).

  • false => Tắt tính năng (mọi route đều có thể truy cập nếu vượt qua được bước xác thực).

Bản chất kỹ thuật

Đây là cơ chế kiểm soát truy cập ở tầng Application (Lớp 7 trong mô hình OSI). Nó áp dụng nguyên tắc Whitelist (Allowlist) – nguyên tắc an toàn nhất trong an toàn thông tin: "Khóa mọi thứ theo mặc định, chỉ mở những gì thực sự cần thiết".

Ứng dụng thực tế

  • Public/Private Routing trên API Gateway: Một service Backend có thể có 50 API khác nhau, nhưng bạn chỉ muốn public 5 API cho người dùng cuối qua Gateway. Bằng cách thiết lập enabled_allow_route: true và khai báo 5 API đó vào allow_routes, 45 API nội bộ còn lại sẽ được tự động bảo vệ một cách an toàn mà không cần sửa code bên trong service.

  • Bảo trì hệ thống (Maintenance Mode): Khi cần nâng cấp database hệ thống thanh toán, bạn có thể tạm thời tháo các route liên quan đến /api/payment ra khỏi allow_routes mà vẫn giữ cho các route /api/products hoạt động bình thường.

3. Bức Tranh Tổng Thể: Defense in Depth (Bảo mật nhiều lớp)

Khi kết hợp cả hai cờ này, hệ thống của bạn tạo ra một ma trận kiểm soát truy cập rất chặt chẽ. Dưới đây là ví dụ minh họa cách các thông số này hoạt động cùng nhau trong một file cấu hình YAML hoàn chỉnh:

YAML

# Cấu hình Access Controls cho API Gateway
access_controls:
  # Cấp độ 1: Lọc theo Domain
  enabled_restrict_domain: true
  restrict_domains:
    - "https://www.my-ecommerce.com"
    - "https://partner-portal.com"

  # Cấp độ 2: Lọc theo Route (Đường dẫn)
  enabled_allow_route: true
  allow_routes:
    - "/api/v1/products"
    - "/api/v1/categories"
    - "/api/v1/auth/login"
    # Route "/api/v1/admin/users" KHÔNG nằm trong danh sách này, 
    # nên mọi request gọi tới nó từ bên ngoài Gateway sẽ bị chặn.

Luồng xử lý (Request Lifecycle):

  1. Một request HTTP bay tới server với đường dẫn /api/v1/products từ domain [https://hacker.com](https://hacker.com).

  2. Middleware kiểm tra enabled_restrict_domain -> true.

  3. Kiểm tra domain [https://hacker.com](https://hacker.com) có nằm trong restrict_domains không? -> Không.

  4. Request bị hủy ngay lập tức (Tiết kiệm tài nguyên xử lý).

Việc thiết kế cấu hình dạng Cờ (Flags) như thế này giúp các kỹ sư Backend/DevOps linh hoạt ứng biến trong các tình huống khẩn cấp, dễ dàng phân phối cấu hình qua CI/CD mà không cần phải chạm vào hay compile lại source code.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí