Cấu hình bảo mật cho Kong API Gateway

Đây là bài nằm trong tập hợp những bài viết về Kong API Gateway. Tham khảo các bài biết khác theo đường dẫn dưới đây

Series bài viết về Kong API Gateway
Bài 1: Kong API Gateway là gì?
Bài 2: Hướng dẫn cách cài đặt Kong API Gateway 
Bài 3: Cấu hình Kong quản lý các APIs từ các backend servers
Bài 4: Cấu hình bảo mật cho Kong API Gateway (Bài viết hiện tại)
Bài 5: Cấu hình các tính năng nâng cao khác của Kong

Ở bài này sẽ hướng dẫn cấu hình một số plugins liên quan đến bảo mật mà Kong hỗ trợ. Để đơn giản thì tôi thực hiện với việc cài đặt Kong ở chế độ DB-less mode. Tham khảo cách cài đặt Kong ở bài trước.

Bình thường khi triển khai các API microservices thì bạn sẽ tự triển khai các bảo mật bên trong. Khi dùng Kong API Gateway thì Kong cung cấp sẵn các module bảo mật cho bạn thông qua việc cài đặt các plugins. Từ đó tránh được việc lặp đi lặp lại việc triển khai bảo mật trên từng microservices nhỏ và hệ thống cũng được thống nhất hơn.



Các plugins về bảo mật trong Kong có thể chia làm 3 nhóm lớn dưới đây

Authentication

Kong hỗ trợ đa dạng các plugins dùng cho việc Authentication

Basic Authentication
https://docs.konghq.com/hub/kong-inc/basic-auth/

HMAC Authentication
https://docs.konghq.com/hub/kong-inc/hmac-auth/

JWT - JSON Web Tokens
https://docs.konghq.com/hub/kong-inc/jwt/

Key Authentication
https://docs.konghq.com/hub/kong-inc/key-auth/

LDAP Authentication
https://docs.konghq.com/hub/kong-inc/ldap-auth/

OAuth 2.0 Authentication
https://docs.konghq.com/hub/kong-inc/oauth2/

Session
https://docs.konghq.com/hub/kong-inc/session/

Security

Bot Detection
https://docs.konghq.com/hub/kong-inc/bot-detection/

CORS
https://docs.konghq.com/hub/kong-inc/cors/

IP Restriction
https://docs.konghq.com/hub/kong-inc/ip-restriction/


Traffic Control

Liên quan đến việc quản lý traffic đến Kong Gateway, cấu hình các ràng buộc liên quan đến request chuyển đến nó.

ACL
https://docs.konghq.com/hub/kong-inc/acl/

Proxy Cache
https://docs.konghq.com/hub/kong-inc/proxy-cache/

Rate Limiting
https://docs.konghq.com/hub/kong-inc/rate-limiting/

Request Size Limiting
https://docs.konghq.com/hub/kong-inc/request-size-limiting/

Request Termination
https://docs.konghq.com/hub/kong-inc/request-termination/

Response Rate Limiting
https://docs.konghq.com/hub/kong-inc/response-ratelimiting/


Việc cấu hình các plugins các bạn chỉ cần tham khảo theo đường link đính kèm ở mỗi plugin là có thể cấu hình được. Ở đây tôi làm một ví dụ khá phổ biến là cấu hình JWT (JSON Web Tokens) cho việc authentication tới các API service thông qua Kong
Tham khảo và tải về thư mục ở đây.

Các API được giữ nguyên như bài 3.

Đầu tiên bạn thêm mới một consumer và các cấu hình liên quan đến bảo mật JWT vào file kong.yml. Tham khảo file bên dưới
Đi đến thư mục tải về và tiến hành chạy Kong
docker-compose -f .\kong-with-dbless-mode.yml up -d

Đi đến đường dẫn của API
http://localhost:8000/api/users
Sẽ nhận được thông báo không thể truy xuất được dữ liệu ("message": "Unauthorized")



Tiến hành tạo mới một JWT Token dựa trên các thông tin về consumer trên trang jwt.io



Thử lại request có gửi kèm token vừa tạo ở bên trên sử dụng Postman



Như vậy là việc cài đặt đã thành công.

Để xóa toàn bộ các containers và network vừa tạo ra
docker-compose -f .\kong-with-dbless-mode.yml down

Để tìm hiểu thêm sâu hơn các bạn có thể vào trang chủ của Kong

Tham khảo thêm
https://docs.konghq.com/hub/


Tiếp tục cập nhật ...