1

我创建了一个 KafkaUser 来从外部访问云上的 Kafka 主题,其定义如下,我可以使用 SSL 模式通过端口 9094 从外部访问该主题。

apiVersion: kafka.strimzi.io/v1beta1
kind: KafkaUser
  name: data-user
  namespace: abc
  labels:
    strimzi.io/cluster: data-cluster
spec:
  authentication:
    type: tls
  authorization:
    acls:
      - host: '*'
        operation: All
        resource:
          name: data-topic
          patternType: literal
          type: topic
        type: allow
      - host: '*'
        operation: All
        resource:
          name: data-group
          patternType: literal
          type: group
        type: allow
      - host: '*'
        operation: All
        resource:
          name: data-cluster
          patternType: literal
          type: cluster
        type: allow
    type: simple

现在在云端,我打算使用9092端口访问这个主题,不需要任何身份验证和授权,可以吗?

当我运行消费者时,它会抱怨 TOPIC_AUTHORIZATION_FAILED。

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --group data-group --topic data-topic

[2021-03-06 19:54:22,689] WARN [Consumer clientId=consumer-data-group-1, groupId=data-group] Error while fetching metadata with correlation id 2 : {data-topic=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient)
[2021-03-06 19:54:22,692] ERROR [Consumer clientId=consumer-data-group-1, groupId=data-group] Topic authorization failed for topics [data-topic] (org.apache.kafka.clients.Metadata)
[2021-03-06 19:54:22,696] ERROR Error processing message, terminating consumer process:  (kafka.tools.ConsoleConsumer$)
org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [osprey2-topic]
Processed a total of 0 messages

我的问题是,我想在没有任何授权的情况下访问端口 9092 的主题,怎么做?

4

1 回答 1

0

Kafka 仅支持集群范围的授权。因此,您可以创建多个具有不同身份验证或没有身份验证的侦听器。但是您只能对整个集群启用或禁用一次授权。所以没有授权是不可能有内部监听的。当用户在没有任何身份验证的情况下通过侦听器连接时,它将以用户身份连接,ANONYMOUS并且将像任何其他用户一样检查该用户的 ACL,如果它没有它们,将不允许做任何事情。

ANONYMOUS您可以通过使用 Kafka Admin API 并为用户授予您想要从 9092 端口执行的所有操作的权限来解决此问题。但是,从安全角度来看,这绝对是一种不好的做法。您还应该在 9092 接口上使用正确的身份验证,这将允许您为用户提供他们需要的正确 ACL。如果您出于某种原因不想在 9092 侦听器上使用 SSL,您仍然可以使用例如 SCRAM-SHA-512 身份验证。

于 2021-03-07T01:02:50.017 回答