← 학습 카테고리

Learn

Kafka

84개 모듈 · 현재 63번째

Kafka 모듈 63/84 kafka-learn-63

OAUTHBEARER 재인증(KIP-368) — 짧은 수명 토큰이 실제로 의미 있으려면

Kafka OAUTHBEARER 재인증(KIP-368) 및 Connect Sink 전달보장 공식 문서 종합 (웹 리서치, 2026) — KIP-368: Allow SASL Connections to Periodically Re-Authenticate + Confluent 공식 문서(design/delivery-semantics, kafka-connectors/elasticsearch) KIP-368: Allow SASL Connections to Periodically Re-Authenticate

이 모듈을 다 읽으면

  • 긴 연결 수명을 가진 Kafka 연결에서 짧은 수명 토큰이 왜 무의미해지는지 설명할 수 있다
  • connections.max.reauth.ms가 이 문제를 어떻게 해결하는지 설명할 수 있다

kafka-learn-43에서 다룬 SASL/OAUTHBEARER(OAuth 2.0 토큰 기반 인증)를 전제로, 왜 그 토큰이 짧은 수명으로 발급돼도 아무 의미가 없었는지, 그리고 KIP-368이 이를 어떻게 실질적으로 만드는지를 정리한다.

문제 — Kafka 연결은 원래 한 번 인증하면 끝까지 안 다시 확인한다

OAuth 보안 권고사항으로는 짧은 수명의 토큰을 발급하는 것이 일반적이지만, Kafka 클라이언트에 짧은 수명 토큰을 발급해도 아무 이점이 없었다 — 클라이언트가 브로커에 한 번 연결되고 나면 다시는 인증을 재확인받지 않고, 그 연결은 토큰 만료 시점을 넘어서도 계속 유지될 수 있었기 때문이다. Kafka 연결은 원래 오래 유지되는 성격이라, 특정 연결에 결부된 베어러 토큰을 중간에 바꿀 방법 자체가 없었다는 게 근본 문제였다.

핵심 포인트

  • OAuth 권고사항인 짧은 수명 토큰을 써도, Kafka는 연결 한 번 맺으면 재인증을 안 해 토큰 만료가 실질적 의미가 없었음
  • Kafka 연결은 원래 오래 유지되는 성격이라 특정 연결의 베어러 토큰을 중간에 바꿀 방법이 없었던 게 근본 문제

KIP-368 — 주기적 재인증과 강제 종료

KIP-368은 SASL 클라이언트(및 브로커 간 프로토콜에 SASL을 쓰는 경우 브로커도)가 연결을 주기적으로 재인증할 수 있게 하고, 브로커가 만료된 세션을 계속 쓰는 연결을 끊어버릴 수 있게 한다. 구현은 콜백 함수를 통해 이뤄진다 — 설정된 콜백 함수가 토큰 정보를 가져오거나 갱신하고, 클라이언트가 브로커로부터 최초 SASLAuthenticate 응답을 받으면 그 응답을 파싱해 연결의 만료 시점을 알아낸다. 브로커 쪽에서 connections.max.reauth.ms를 설정하면, 그 시간이 지난 인증된 연결은 브로커가 강제로 닫아버린다.

핵심 포인트

  • KIP-368은 SASL 클라이언트(및 브로커 간 SASL 연결)가 주기적으로 재인증하고, 브로커가 만료된 세션의 연결을 끊을 수 있게 함
  • 콜백 함수가 토큰을 가져오거나 갱신, 최초 SASLAuthenticate 응답을 파싱해 만료 시점 파악 — 브로커의 connections.max.reauth.ms 설정 시간이 지나면 그 연결을 강제 종료