Các phương pháp triển khai tốt nhất cho API Gateway

Sugi_b3o

Moderator
Thành viên BQT
30/08/2016
317
446 bài viết
Các phương pháp triển khai tốt nhất cho API Gateway
Ngày nay API đã trở thành 1 phần quan trọng trong quá trình phát triển hiện do tầm quan trọng của chúng trong các dịch vụ microservices. Vì phần mềm hiện đại thường bao gồm nhiều dịch vụ. Với doanh nghiệp xây dựng API Gateway, chúng ta có thể tổng hợp, tập trung các dịch vụ đó để hoạt động như một API duy nhất để xử lí thông tin và trả về các phản hồi phức tạp từ các dịch vụ microservices khác nhau thông qua một đầu mối nhất là gọi đến API Gateway.

Trong bài viết này, chúng ta sẽ xem xét những lợi ích về bảo mật mà cổng API cung cấp và khám phá những best practice (phương pháp tốt nhất) cần tuân thủ trong khi thực hiện các biện pháp bảo mật để đảm bảo an toàn cho cổng API.

1689441215929.png


API Gateway là gì?

API Gateway sẽ public các dịch vụ microservices ra bên ngoài để tương tác với người dùng cuối. Nó hoạt động như một proxy cho các microservices phía sau, cầu nối các điểm cuối API dành cho khách hàng, định tuyến (route) các yêu cầu từ khách hàng đến các microservices thích hợp và tổng hợp dữ liệu phản hồi trước khi gửi đến khách hàng yêu cầu. Nó cung cấp một giao diện chương trình ứng dụng nhất quán và thống nhất giúp đơn giản hóa công việc cho các nhà phát triển xây dựng tính năng tiện ích cho người dùng.
Những lợi ích khác mà cổng API cung cấp bao gồm:
  • Thực hiện cân bằng tả (Load balancing)i: Chúng ta có thể cấu hình API Gateway để cung cấp hỗ trợ cân bằng tải bằng cách phân phối các yêu cầu từ khách hàng đến các phiên bản dịch vụ khả dụng.
  • Loại bỏ yêu cầu dư thừa (Eliminating round-trip requests): API Gateway sẽ loại bỏ các yêu cầu không cần thiết từ khách hàng có thể làm tăng độ trễ và dẫn đến hiệu suất kém. Chúng có thể thực hiện một yêu cầu duy nhất đến cổng, chuyển tiếp yêu cầu đến nhiều dịch vụ và tổng hợp các phản hồi.
  • Tập trung giám sát và phân tích sử dụng: API Gateway cho phép chúng ta tích hợp các công cụ giám sát và phân tích để thu thập và phân tích dữ liệu quan trọng liên quan đến lưu lượng người dùng, thời gian thực thi và lỗi. Thông tin này là quan trọng khi đưa ra quyết định về việc mở rộng và gỡ lỗi ứng dụng.
API Gateway hoạt động như một "hàng rào bảo mật" giữa dịch vụ microservices backend và người dùng cuối.

Cách mà API Gateway tăng cường bảo mật Bảo mật là một vấn đề quan trọng đối với các công ty cung cấp dịch vụ dưới dạng API.Có một số cách mà cổng API tăng cường khả năng bảo mật của các hệ thống sử dụng các điểm cuối API công khai. Các cách này bao gồm:
1689439883025.png

Thực thi chính sách (Policy enforcement) Chính sách là các quy tắc phải tuân thủ khi truy cập các dịch vụ cơ bản và quản lý hành vi của API. Một chính sách bao gồm hai thành phần - các quy tắc cần được kiểm tra và hành động kết quả. Việc thực thi các chính sách được thực hiện bên trong API Gateway. Chúng ta có thể tùy chỉnh chúng để phù hợp với các tác vụ khác nhau như xác thực /ủy quyền hoặc quản lý lưu lượng. Một ví dụ về điều này là việc chuyển đổi swagger JSON và các hình thức khác của việc tuần tự hóa dữ liệu, chúng ta có thể đưa ra tiêu chuẩn cho người dùng cuối biết cách để thực hiện kết nối với API Gateway.

Bảo vệ tránh quá tải lưu lượng (Traffic overload protection) API Gateway có thể giới hạn số lần gọi API trong một khoảng thời gian nhất định. Điều này đảm bảo không vượt quá khả năng xử lý yêu cầu phía backend. Nó bảo vệ hệ thống khỏi các cuộc tấn công từ chối dịch vụ (DoS) liên quan đến làm quá tải các microservices backend bằng lưu lượng. Nó cũng bảo vệ API khỏi các cuộc tấn công vét cạn và cuộc tấn công thử và lỗi, trong đó nhiều yêu cầu với thông tin đăng nhập khác nhau được gửi.

Circuit breakers là kĩ thuật ngắt tự động ngăn chặn kết nối tăng khả năng bảo mật bằng cách đảm bảo rằng kết nối đến các dịch vụ backend được bảo mật. Nó hoạt động bằng cách ngừng kết nối với backend trong một khoảng thời gian xác định nếu nó phát hiện số lần kết nối thất bại liên tiếp đã đạt đến một giới hạn nhất định. Điều này ngăn chặn backend bị quá tải với các yêu cầu được dự đoán sẽ thất bại. Đây là một biện pháp bảo vệ tự động ngăn chặn kẻ tấn công cố tính gây ra / tìm kiếm cách tạo sự cố liên tục cho API.

Tách rời các dịch vụ backend khỏi các ứng dụng frontend API Gateway API nâng cao bảo mật của các dịch vụ backend nhạy cảm bằng cách loại bỏ liên hệ trực tiếp nào giữa chúng và các ứng dụng frontend. Điều này cũng giới hạn những gì ứng dụng frontend có thể biết về các dịch vụ nhỏ xử lý yêu cầu của chúng. Điều này bảo vệ hệ thống khỏi các cuộc tấn công SQL injection liên quan đến việc chuyển mã độc hại đến cơ sở dữ liệu backend. Hạn chế việc biết thông tin về phần backend làm cho việc khởi động các cuộc tấn công SQL injection trở nên khó khăn hơn. Điều này bởi vì họ không có thông tin liên quan đến cơ sở dữ liệu mà thông tin đang đến từ.

Luôn luôn kiểm tra các tham số truyền vào, các biến nhập từ Khách Hàng trước khi truyền xuống các dịch vụ ở backend là nguyên tác tốt nhất bảo mật cho các API này, đảm bảo các thông tin sai lệch, vi phạm policy bị loại bỏ ngay từ đầu.


HTTPS và mã hóa đường truyền


Để cải thiện bảo mật của một cổng API, chúng ta nên đảm bảo rằng việc truyền thông giữa cổng API và khách hàng diễn ra qua HTTPS. HTTPS là một giao thức bảo mật mã hóa tất cả dữ liệu trong quá trình truyền tải, tăng cường tính bảo mật. Đây là tiêu chuẩn ngành hiện tại cho các trang web công khai. Giao thức TLS đặc biệt quan trọng khi truyền tải dữ liệu nhạy cảm như đăng nhập vào dịch vụ email, tài khoản ngân hàng hoặc hệ thống công ty từ xa. Nó cũng giúp chúng ta chuyển giao nhiệm vụ quản lý TLS từ phía khách hàng sang nhà cung cấp dịch vụ đám mây.

Thực hiện xác thực yêu cầu API

Chúng ta nên cấu hình cổng API để xác thực yêu cầu API nhận được từ khách hàng trước khi chuyển tiếp đến các dịch vụ microservices phía sau. Ví dụ, chúng ta có thể cấu hình cổng để xác minh rằng tham số hoặc tiêu đề yêu cầu không trống, hoặc dữ liệu gửi theo một lược đồ JSON được phép.

Nếu quá trình xác thực không thành công, cổng API sẽ từ chối yêu cầu và trả về phản hồi lỗi cho khách hàng. Việc này giảm số lượng yêu cầu không cần thiết được chuyển tiếp đến máy chủ và giảm thiểu rủi ro của các cuộc tấn công vượt quyền cao hơn.
1689441134509.png

Thiết lập ghi nhật ký (logging)

Chúng ta nên kích hoạt ghi nhật ký trong API Gateway để giúp chúng ta giải quyết vấn đề truy cập khách hàng và thực thi yêu cầu. Có hai loại ghi nhật ký mà API Gateway, thực hiện: ghi nhật ký thực thi và ghi nhật ký truy cập.

Các ghi nhật ký thực thi chứa thông tin về mỗi bước được thực hiện bởi cổng API trong quá trình xử lý yêu cầu. Dữ liệu ghi nhật ký bao gồm các bước thực thi, các bước xác thực và lỗi. Các ghi nhật ký truy cập chứa thông tin về mỗi lần truy cập vào cổng API. Mỗi yêu cầu tạo ra một mục nhập chi tiết về người truy cập API Gateway và cách họ truy cập vào dịch vụ.

Thực hiện giới hạn số lần gửi request (rate-limit)

Trong API Gateway, chúng ta nên thực hiện giới hạn rate-limit nhằm:
  • Ngăn chặn cuộc tấn công từ chối dịch vụ (DOS).
  • Giới hạn ảnh hưởng đến các API khác.
  • Giới hạn việc sử dụng tài nguyên.
Thực hiện giới số lần gửi request trên API Gateway, đảm bảo rằng các microservices của chúng ta tránh khỏi bị lạm dụng, gian lận hoặc gây quá tải lưu lượng thật có thể gây ra sự cố hệ thống. Thiết lập và định nghĩa Chính sách ngay từ đầu giúp chúng ta giảm thiểu nhược điểm của việc giới hạn số lần gửi request nghiêm ngặt bằng cách xếp hàng các yêu cầu vượt quá giới hạn để xử lý trong số lượng tiếp theo. Chúng ta có thể áp dụng chính sách giới hạn và điều chỉnh tốc độ cho một tài nguyên cụ thể hoặc tất cả các yêu cầu.

Bật / Sử dụng tường lửa ứng dụng web (WAF)

Chúng ta có thể bảo vệ API Gateway của chúng ta bằng tường lửa ứng dụng web (WAF), giới hạn truy cập vào API dựa trên một tập hợp các điều kiện và quy tắc đã xác định. WAF giúp bảo vệ cổng API khỏi các mối đe dọa thông thường như tấn công cross-site scripting và injection.

Ví dụ, chúng ta có thể sử dụng WAF để từ chối hoặc cho phép truy cập từ các lớp mạng CIDR được chỉ định, các phạm vi địa chỉ IP hoặc các quốc gia. Nó cũng có thể phát hiện và loại bỏ các yêu cầu chứa mã kịch bản độc hại hoặc mã SQL. Việc triển khai WAF cho phép chúng ta di chuyển rào cản bảo mật gần hơn với phía máy khách và giải phóng cổng API khỏi công việc không cần thiết.

Phân loại các API (group)

Chúng ta nên tạo ra các cổng API riêng biệt dựa trên các trường hợp sử dụng của chúng để giảm diện tích tấn công có thể xảy ra Việc phân loại API cũng giúp giảm thiểu hiệu ứng domino trong trường hợp API Gateway gặp sự cố hoặc bị hạn chế.

Ví dụ, nếu có một cuộc tấn công vào một cổng API, nó sẽ không làm hỏng tất cả các dịch vụ hệ thống. Điều này làm cho việc debug hệ thống dễ dàng hơn vì diện tích tấn công nhỏ hơn.

Trên đây là các khuyến nghị về tiêu chí bảo mật cho các Doanh nghiệp đã đang và sẽ có nhu cầu triển khai API Gateway cho các microservice . Mặc dù các API Gateway cung cấp khả năng bảo mật tuyệt vời - nhưng chúng ta biết cách triển khai một cách chủ động để đảm bảo an toàn cho các endpoint API và các dịch vụ nhỏ xử lý yêu cầu của chúng trong doanh nghiệp mang lại giá trị cho người sử dụng và công ty.
Sugi_b3o​
 
Chỉnh sửa lần cuối:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Thẻ
api gateway api security application security
Bên trên