Use mTLS instead of Kerberos for KRaft inter-node traffic

Open
#1,066 0 comments 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 1 day

@razvan is already working on this.

Since Nov 13, 2026.

  • #1067 by @razvan — open

Assessment

This issue has not been assessed yet.

Description

type/internal-improvement

Description

With Kerberos enabled, the CONTROLLER listener currently uses SASL_SSL/GSSAPI. Brokers and controllers authenticate to each other with Kerberos principals (#1024). The INTERNAL listener already uses mTLS with the pod certificates of the internalSecretClass in every configuration.

Kerberos principals are a poor fit for identifying the Kafka nodes. With the default sasl.kerberos.principal.to.local.rules, every node principal maps to the same short name, so it can't be pinned to a specific node. Pod certificate subjects can.

Proposal:

  • Make the CONTROLLER listener always SSL, and require client authentication when Kerberos, TLS client authentication or OPA is configured.
  • Use Kerberos only on the client-facing broker listeners. Controllers get no keytab or JAAS configuration.
  • Make super.users contain only the pod certificate subjects of the nodes.

Issue checklist

This is a simple checklist of things to bear in mind when creating a new issue.

  • Describe the use-case: As far as possible, use the pattern "As a [type of user], I would like [feature/functionality] to be able to do [specific action]." This helps identify the feature and the problem it addresses.
  • Indicate importance and urgency: Use a scale (e.g., low, medium, high) to indicate the level of importance and urgency.
  • Work-around: If there is a known work-around, describe it briefly.
  • Environment: Describe the environment where the issue occurs (e.g., SDP version, K8S version, etc.).
Dominant language
Rust
Stars
31
Forks
9
Avg merge
4d 5h
Merged PRs (30d)
14

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from stackabletech/kafka-operator

All issues in stackabletech/kafka-operator

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.