토픽과 컨슈머 그룹에 대한 접근 권한을 kafka-acls.sh 로 관리한다. 인증이 먼저 서 있어야 한다 — SASL PLAIN 인증 을 볼 것.
server.properties 에 authorizer 를 켠다. 모든 노드(controller · broker)에 같은 값을 준다[1].
authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
StandardAuthorizer 는 KRaft 전용이며 4.x 에서 유일한 내장 authorizer 다. ZooKeeper 모드의 kafka.security.authorizer.AclAuthorizer 는 ZooKeeper 와 함께 4.0 에서 사라졌다. super.users 의 구분자는 쉼표가 아니라 세미콜론(User:a;User:b)이다.
allow.everyone.if.no.acl.found=true로 두면 ACL 이 없는 리소스는 전부 열린다. 운영에서는false로 둔다.
kafka-acls.sh --bootstrap-server broker:9092 \
--command-config admin.properties \
--add --allow-principal User:app-producer \
--producer --topic orders
--producer 는 해당 토픽에 Write · Describe, 그리고 Create 권한을 한 번에 준다.
kafka-acls.sh --bootstrap-server broker:9092 \
--command-config admin.properties \
--add --allow-principal User:app-consumer \
--consumer --topic orders --group order-workers
--consumer 는 토픽에 Read · Describe, 컨슈머 그룹에 Read 를 준다. --group 을 빠뜨리면 컨슈머가 그룹에 붙지 못한다.
kafka-acls.sh --bootstrap-server broker:9092 \
--command-config admin.properties \
--add --allow-principal User:app-producer \
--producer --topic orders --resource-pattern-type prefixed
orders 로 시작하는 모든 토픽에 적용된다.
# 전체 조회
kafka-acls.sh --bootstrap-server broker:9092 --command-config admin.properties --list
# 특정 토픽만
kafka-acls.sh --bootstrap-server broker:9092 --command-config admin.properties \
--list --topic orders
# 삭제
kafka-acls.sh --bootstrap-server broker:9092 --command-config admin.properties \
--remove --allow-principal User:app-producer --producer --topic orders
관리 명령이 쓸 인증 정보다.
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" password="<관리자_비밀번호>";
Authorization and ACLs — 2026-09-20 확인. https://kafka.apache.org/43/security/authorization-and-acls/ ↩︎