4.4 命令行工具
kafka-acls.sh
详细参数
- Action:
--add
: 增加 acl 规则--remove
: 删除 acl 规则--list
- Configuration:
--authorizer
: authorizer 的类名,默认kafka.security.authorizer.AclAuthorizer
--authorizer-properties
: key-val pairs 用来初始 authorizer。对于默认的 authorizer,需要传zookeeper.connect=
--bootstrap-server
: kafka 服务地址,与authorizer
相关的配置只需要保留一个--command-config
: 可与--bootstrap-server
一起使用,指定一个包含配置的 property 文件,用来初始Admin Client
--resource-pattern-type [pattern-type]
- add acls:
LITERAL
: 完全匹配,但是可以用*
代表所有PREFIXED
: 前缀匹配
- list or remove acls:
ANY
:MATCH
: 表示所有会影响到 resource 的规则,包括前缀匹配或者*
- add acls:
--zk-tls-config-file
- ResourcePattern
--cluster
--topic [topic-name]
--group [group-name]
--transactional-id [transactional-id]
--delegation-token [delegation-token]
- Principal
--allow-principal
--deny-principal
--principal
- Host
--allow-host
--deny-host
- Operation
--operation
: 可选的值:- Read
- Write
- Create
- Alter
- Describe
- ClusterAction
- DescribeConfigs
- AlterConfigs
- IdempotentWrite
- All
- Convenience
--producer
: Write, Describe, Create on topic--consumer
: Read, Describe on topic and Read on consumer-group--idempotent
: 和--producer
一起使用,表示 producer 可以幂等写
示例
-
允许 User:Bob 或者 User:Alice 从 IP 198.51.100.0 或者 198.51.100.1 读写 Test-topic
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Bob --allow-principal User:Alice \ --allow-host 198.51.100.0 --allow-host 198.51.100.1 \ --operation Read --operation Write \ --topic Test-topic
-
允许除 从 IP 198.51.100.3 访问的 User:BadBob 外的所有用户读 Test-topic
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:* --allow-host * \ --deny-principal User:BadBob --deny-host 198.51.100.3 \ --operation Read \ --topic Test-topic
-
从 IP 198.51.200.0 访问的 User:Peter 允许向任何 topic 生产消息
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Peter \ --allow-host 198.51.200.1 \ --producer \ --topic * bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Peter \ --allow-host 198.51.200.1 \ --producer \ --topic=*
-
允许 User:Jane 向任何以 Test- 开头的 topic 生产消息
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Jane \ --producer \ --topic Test- \ --resource-pattern-type prefixed
-
移除添加的第 1 条 acl 规则
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --remove \ --allow-principal User:Bob --allow-principal User:Alice \ --allow-host 198.51.100.0 --allow-host 198.51.100.1 \ --operation Read --operation Write \ --topic Test-topic
-
移除添加的第 4 条 acl 规则(topic 前缀匹配)
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --remove \ --allow-principal User:Jane \ --producer \ --topic Test- \ --resource-pattern-type Prefixed
-
可以根据 resource 列出关联的 acl 规则列表,比如列出 topic Test-topic 相关联的 acl 规则
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --list \ --topic Test-topic
-
可以用
*
表示所有 resource,比如列出所有 topic 的 acl 规则bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --list \ --topic *
-
如果想看特定 resource 关联的所有记录,包括前缀匹配和
*
,可以使用match
bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --list \ --topic Test-topic \ --resource-pattern-type match
-
--producer
选项可以方便的代表生产消息需要的操作bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Bob \ --producer \ --topic *
-
--consumer
选项可以方便的代表消费消息需要的操作,并且要与--group
搭配使用bin/kafka-acls.sh \ --authorizer-properties zookeeper.connect=localhost:2181 \ --add \ --allow-principal User:Bob \ --consumer \ --topic * \ --group *
-
给用户 Bob 增加 幂等写 权限
kafka-acls.sh \ --authorizer-properties zookeeper.connect=loalhost:2181 \ --add \ --allow-principal User:Bob \ --operation IdempotentWrite --cluster Adding ACLs for resource `ResourcePattern(resourceType=CLUSTER, name=kafka-cluster, patternType=LITERAL)`: (principal=User:Bob, host=*, operation=IDEMPOTENT_WRITE, permissionType=ALLOW) Current ACLs for resource `ResourcePattern(resourceType=CLUSTER, name=kafka-cluster, patternType=LITERAL)`: (principal=User:Bob, host=*, operation=IDEMPOTENT_WRITE, permissionType=ALLOW)
上述命令也替换成使用
--bootstrap-server
的方式:kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --add \ --allow-principal User:* \ --operation IdempotentWrite \ --cluster kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --add \ --allow-principal User:alice \ --operation IdempotentWrite \ --cluster --command-config /usr/local/ams-worker/conf/kafka.properties
-
给用户 alice 增加事务Id
transaction_id
的写权限:kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --add \ --resource-pattern-type LITERAL \ --transactional-id transaction_id \ --allow-principal User:alice \ --operation Write `--resource-pattern-type LITERAL --transactional-id=*` 表示所有事务Id kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --add \ --resource-pattern-type LITERAL \ --transactional-id=* \ --allow-principal User:alice \ --operation Write
-
给用户 alice 增加事务Id
transaction_id
的描述权限:kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --add \ --resource-pattern-type LITERAL \ --transactional-id transaction_id \ --allow-principal User:alice \ --operation Describe
-
删除用户 alice 对事务Id
transaction_id
的描述权限:kafka-acls.sh \ --bootstrap-server ${BOOTSTRAP_SERVER} \ --remove \ --resource-pattern-type LITERAL \ --transactional-id transaction_id \ --allow-principal User:alice \ --operation Describe