Dev_duri

Kafka SASL/SCRAM (인증) 본문

Kafka

Kafka SASL/SCRAM (인증)

marcel 2025. 4. 10. 10:37

개요

Kafka는 기본적으로 누구나 접근 가능한 구조를 가지고 있어, 실서비스 환경에서는 인증(Authentication), 권한 제어(Authorization), 데이터 암호화(Encryption)와 같은 보안 설정이 필수적이다. 이 중 **SASL(Simple Authentication and Security Layer)**은 Kafka에서 클라이언트의 신원을 확인하기 위한 인증 체계로 사용된다.

 

SASL은 다양한 인증 메커니즘을 Kafka 클러스터에 적용할 수 있도록 하는 프레임워크이다. 클라이언트가 Kafka에 접속할 때, SASL을 통해 사용자 인증을 수행할 수 있다.

Kafka에서 지원하는 대표적인 SASL 메커니즘은 다음과 같다:


 

메커니즘 설명 특징
PLAIN 사용자 이름과 비밀번호를 평문으로 전송 TLS와 함께 사용해야 안전
SCRAM-SHA-256 / SCRAM-SHA-512 비밀번호를 해시 방식으로 검증 보안성이 높고 Strimzi에서 기본 제공
GSSAPI Kerberos 기반 인증 복잡하지만 사내 인증 시스템과 연동 가능
OAUTHBEARER OAuth 2.0 토큰 기반 인증 외부 인증 시스템과의 통합에 적합

동작 방식

  1. 클라이언트는 Kafka 브로커에 접속을 시도한다.
  2. 브로커는 SASL 메커니즘에 따라 인증 정보를 요구한다.
  3. 클라이언트는 사용자 이름과 비밀번호(또는 해시)를 전송한다.
  4. 브로커는 미리 등록된 사용자 정보와 비교하여 인증 여부를 결정한다.

이 과정을 통해 Kafka는 등록된 사용자만 Kafka 클러스터에 접근할 수 있도록 제한할 수 있다.

 

 

SASL 인증을 Kafka 환경에 적용하기 위해서는 다음과 같은 설정이 필요하다:

1) Kafka 브로커 설정 (Strimzi 기준)

listeners:
  - name: sasl
    port: 9093
    type: internal
    tls: false
    authentication:
      type: scram-sha-512

 

2) KafkaUser 리소스 정의

apiVersion: kafka.s
trimzi.io/v1beta2
kind: KafkaUser
metadata:
  name: admin
spec:
  authentication:
    type: scram-sha-512

Strimzi는 해당 KafkaUser에 대한 사용자 정보를 자동으로 Kubernetes Secret으로 생성한다.

 

 

3) 클라이언트 설정 예시 (Kafka UI, 앱 등)

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="비밀번호";

sasl.jaas.config는 Secret 또는 환경변수 등을 통해 안전하게 주입하는 것이 좋다.

 

 

마무리

Kafka에서 SASL은 인증을 위한 핵심 구성 요소이며, 특히 Strimzi 환경에서는 SCRAM-SHA-512 메커니즘을 활용해 손쉽게 안전한 사용자 인증 체계를 구성할 수 있다.

보안이 필요한 Kafka 환경에서는 반드시 SASL 기반 인증을 도입하고, 사용자 권한(ACL) 및 암호화 설정과 함께 종합적인 보안 구성을 적용하는 것이 바람직하다.

 

 

 

'Kafka' 카테고리의 다른 글

Kafka Zookeeper에서 KRaft로  (0) 2025.04.10
Kafka Connect 개념  (0) 2025.04.10
Kafka Cluster 구조  (0) 2025.04.10
Kafka Kraft Mode 구축  (0) 2025.04.10
Kafka Perf Test  (0) 2025.03.14