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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.