Tổng quan ACL
Truy cập vào database Kafka được kiểm soát qua hai bước độc lập, và nhầm lẫn giữa chúng là lý do phổ biến khiến ứng dụng kết nối thành công rồi lỗi ở mọi thao tác.
| Bước | Làm gì | Thiếu nó thì |
|---|---|---|
| Kafka user | Xác thực client với database qua SASL | Client không kết nối được |
| ACL | Phân quyền cho user đó trên từng topic và consumer group | Client kết nối được nhưng không truy cập được gì |
Producer, consumer và Kafka Connect đều xác thực dưới danh nghĩa một Kafka user. Tính năng này chỉ áp dụng cho engine Kafka.
Kafka user không có ACL thì không truy cập được gì. Hãy cấp ACL sau khi tạo user.
Các cơ chế SASL
User được tạo với một trong ba cơ chế: PLAIN, SCRAM-SHA256 hoặc SCRAM-SHA512. Lựa chọn này không chỉ là chuyện mạnh yếu.
Tạo hoặc cập nhật user với SASL/PLAIN sẽ khởi động lại database Kafka, làm gián đoạn producer và consumer. Cơ chế SCRAM thì không. Hãy ưu tiên SCRAM, hoặc đặt lịch thay đổi PLAIN ngoài giờ cao điểm.
ACL cấp được những gì
ACL áp dụng ở mức database và có hiệu lực ngay, không cần khởi động lại. Mỗi ACL nêu một resource type, một prefix, và các thao tác được phép trên đó. Một user giữ được nhiều ACL.
Với Topic:
| Thao tác | Cho phép |
|---|---|
| All | Mọi thao tác trên topic. |
| Alter | Sửa các tham số DANGER của topic trong Kafka UI. |
| AlterConfigs | Sửa các tham số không thuộc nhóm DANGER của topic trong Kafka UI. |
| Read | Đọc nội dung topic. |
| Write | Ghi dữ liệu vào topic. |
Với Consumer group:
| Thao tác | Cho phép |
|---|---|
| Delete | Xóa group. |
| Describe | Xem chi tiết group. |
| Read | Đọc nội dung group. |
Prefix quyết định phạm vi. Nhập All để phủ mọi topic hoặc mọi consumer group; giá trị khác sẽ phủ các resource có tên bắt đầu bằng giá trị đó.
Làm sao cho an toàn
- Tạo một user cho mỗi ứng dụng hoặc dịch vụ, để thu hồi quyền mà không ảnh hưởng những cái khác.
- Cấp theo prefix thay vì theo từng resource. ACL theo prefix vẫn đúng khi số topic tăng lên.
- Tách quyền producer và consumer sang các user khác nhau nếu kiến trúc của bạn cho phép.
- Chỉ cấp All khi có lý do cụ thể.
- Đổi mật khẩu định kỳ, và rà lại danh sách ACL để gỡ những gì ứng dụng không còn dùng.
- Tránh tạo user vào giờ cao điểm, vì cơ chế PLAIN kích hoạt khởi động lại.
Bước tiếp theo
- Cấu hình ACL để tạo user và cấp quyền
- Cấu hình NAT cho Kafka để truy cập database từ ngoài VPC
- Xem Action Log để biết ai đã thay đổi gì