Quản lí quyền truy cập#

Authentication#

Kafka sử dụng SASL để thực hiện authentication, hỗ trợ các cơ chế PLAIN, SCRAM, OAUTH, GSSAPI, Basic authentication… Sun Kafka Highway build in sẵn với cơ chế SCRAM-SHA-512, để tăng cường bảo mật Sun Kafka Highway loại bỏ cơ chế no authentication. Bạn có thể access đến Kafka bootstrap và Kafka REST API sử dụng chung yếu tố xác thực API key.

Authorization#

Kafka authorization bằng cơ chế ACL(Access control list) và được áp dụng trên các interface SDK, Command line, API. Mỗi Kafka ACL là một mệnh đề logic với định dạng:

Principal is Allow/ Deny Operation From Host on Resource

  • Principal là API key

  • Operation là một trong các actions: Read, Write, Create, Describe, Alter, Delete, DescribeConfigs, AlterConfigs, ClusterAction, IdempotentWrite, All

  • Host là địa chỉ network(IP) mà kafkaclient gọi đến broker

  • Resource là một trong các Kafka Resource: Topic, Consumer Group, Cluster, TransactionalId

Không phải tất cả các Operation đều được áp dụng trên mỗi loại resource. Bảng dưới đây liệt kê operation tương ứng với mỗi loại resource

Resoure

Operations

Topic

Read, Write, Describe, Delete, DescribeConfigs, AlterConfigs, All

Consumer Group

Read, Describe, All

Cluster

Create, ClusterAction, DescribeConfigs, AlterConfigs, IdempotentWrite, Alter, Describe, All

TransactionalId

Describe, Write, All

Cluster API key#

Cluster API key là authentication/authorization factor của Sun Kafka Highway. Có hai loại api key theo phạm vi Resource và Operation :

Global key được cấp quyền All trên toàn bộ các resource.

Granular key cấp quyền qua việc chỉ định các Resource và Operation được chọn. Bạn có thể chỉ định tài nguyên ACL bằng giá trị literal - chỉ định tên chính xác (mặc định). Kafka sẽ khớp tên tài nguyên đầy đủ (ví dụ: topic name hoặc consumer group id) với tài nguyên được chỉ định trong ACL. Loại pattern prefix cho phép tất cả các resource bắt đầu bằng chuỗi chỉ định. Trong một số trường hợp, bạn có thể sử dụng dấu hoa thị (*) để chỉ định tất cả các tài nguyên.

Attention

Khi tạo API key xong bạn nên lưu lại file .json để sử dụng về sau, vì API key và secret chỉ được download một lần duy nhất sau khi tạo.

Recommend sử dụng Global key cho mục đích develop còn Granular key cho môi trường production. Khi tạo granular key có thêm tùy chọn Tạo hoặc chọn service account để gắn với API key trong trường hợp người dùng muốn quản lý theo group service account khi số lượng API key lớn và không thể nhìn vào từng ACL config để biết API key đang được sử dụng như thế nào