4.5.3.3. Kafka 操作所需的权限示例
以下示例演示了在 Kafka 上执行常见操作所需的用户权限。
创建主题
要创建主题,特定主题或 Cluster:kafka-cluster
需要 Create
权限。
bin/kafka-topics.sh --create --topic my-topic \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
列出主题
如果用户对指定主题具有 描述
权限,则会列出该主题。
bin/kafka-topics.sh --list \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
显示主题详细信息
要显示主题的详细信息,主题需要 Description
scribe 和 DescribeConfigs
权限。
bin/kafka-topics.sh --describe --topic my-topic \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
生成到一个主题的消息
要生成到某个主题的消息,主题需要Describe 和
Write
权限。
如果尚未创建该主题,并且已启用主题自动创建,则需要有创建主题的权限。
bin/kafka-console-producer.sh --topic my-topic \ --broker-list my-cluster-kafka-bootstrap:9092 --producer.config=/tmp/config.properties
使用来自主题的消息
若要使用某个主题的消息,主题需要 描述
和 读取
权限。从主题中消耗的消耗通常取决于将消费者偏移存储在消费者组中,这需要消费者组具有额外的 描述
和 读取
权限。
匹配需要两个 资源
。例如:
Topic:my-topic Group:my-group-*
bin/kafka-console-consumer.sh --topic my-topic --group my-group-1 --from-beginning \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --consumer.config /tmp/config.properties
使用幂等生成器生成到主题的消息
除了生成主题的权限外,集群资源需要有额外的 IdempotentWrite
权限 。
匹配需要两个 资源
。例如:
Topic:my-topic Cluster:kafka-cluster
bin/kafka-console-producer.sh --topic my-topic \ --broker-list my-cluster-kafka-bootstrap:9092 --producer.config=/tmp/config.properties --producer-property enable.idempotence=true --request-required-acks -1
列出消费者组
在列出消费者组时,仅返回用户具有 Describe 权限的
组。或者,如果用户对 Cluster:kafka-cluster
具有 Describe 权限
,则返回所有消费者组。
bin/kafka-consumer-groups.sh --list \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
显示消费者组详情
要显示消费者组的详细信息,需要对组具有 描述
权限,以及与该组关联的主题。
bin/kafka-consumer-groups.sh --describe --group my-group-1 \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
更改主题配置
要更改主题的配置,主题必须具有 描述
和 Alter
权限。
bin/kafka-topics.sh --alter --topic my-topic --partitions 2 \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
显示 Kafka 代理配置
要使用 kafka-configs.sh
获取代理的配置,需要在 Cluster:kafka-cluster
上具有 Describe Configs
权限。
bin/kafka-configs.sh --entity-type brokers --entity-name 0 --describe --all \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
更改 Kafka 代理配置
要更改 Kafka 代理的配置,Cluster:kafka-cluster
需要 Describe
权限。
Configs
和 AlterConfigs
bin/kafka-configs --entity-type brokers --entity-name 0 --alter --add-config log.cleaner.threads=2 \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
删除主题
要删除某个主题,主题上需要描述和删除 权限
。
bin/kafka-topics.sh --delete --topic my-topic \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config=/tmp/config.properties
选择潜在分区
要为主题分区运行领导选择,需要在 Cluster:kafka-cluster
上具有 Alter
权限。
bin/kafka-leader-election.sh --topic my-topic --partition 0 --election-type PREFERRED / --bootstrap-server my-cluster-kafka-bootstrap:9092 --admin.config /tmp/config.properties
重新分配分区
要生成分区重新分配文件,需要对涉及的主题 描述
权限。
bin/kafka-reassign-partitions.sh --topics-to-move-json-file /tmp/topics-to-move.json --broker-list "0,1" --generate \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config /tmp/config.properties > /tmp/partition-reassignment.json
要执行分区重新分配,需要在 Cluster:kafka-cluster
上具有 Describe 和
Alter
权限。此外,描述
涉及的主题的权限是必需的。
bin/kafka-reassign-partitions.sh --reassignment-json-file /tmp/partition-reassignment.json --execute \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config /tmp/config.properties
要在 Cluster:kafka-cluster
以及每个涉及的主题上验证分区重新分配、Describe 和
AlterConfigs
权限是必需的。
bin/kafka-reassign-partitions.sh --reassignment-json-file /tmp/partition-reassignment.json --verify \ --bootstrap-server my-cluster-kafka-bootstrap:9092 --command-config /tmp/config.properties