Kafka 클러스터에 대한 End-to-End 보안(인증, 인가, 암호화)을 구현하기 위한 아키텍처를 설계하고, 각 보안 요소(SSL/TLS, SASL, ACL)의 역할과 설정 방법을 설명하시오. 또한, 보안 적용 시 성능에 미치는 영향과 최적화 방안을 논하시오.
힌트 · SSL/TLS는 통신 암호화, SASL은 인증, ACL은 인가를 담당하며, 성능 오버헤드를 최소화하기 위한 하드웨어 가속이나 인증 메커니즘 선택이 중요합니다.
모범답안
Kafka 클러스터의 End-to-End 보안은 SSL/TLS, SASL, ACL을 조합하여 구현합니다.
SSL/TLS는 클라이언트와 브로커 간, 브로커 간 통신을 암호화하여 데이터 기밀성과 무결성을 보장합니다. 각 브로커와 클라이언트는 고유한 SSL 인증서를 발급받아 사용하며, server.properties에서 ssl.keystore.location, ssl.truststore.location 등을 설정합니다.
SASL은 사용자 인증을 담당합니다. Kerberos를 주로 사용하며, 클라이언트가 Kerberos 티켓을 제시하면 브로커가 이를 검증합니다. server.properties의 sasl.enabled, sasl.mechanism.inter.broker.protocol, sasl.mechanism.external 등을 설정합니다.
ACL은 인증된 사용자의 토픽, 그룹 등에 대한 접근 권한을 제어합니다. kafka-acls.sh 스크립트를 사용하여 특정 사용자에게 특정 토픽에 대한 읽기/쓰기 권한을 부여합니다.
보안 적용 시 SSL/TLS의 암호화 및 복호화, SASL의 인증 과정에서 CPU 오버헤드가 발생할 수 있습니다. 성능 최적화를 위해 하드웨어 가속 SSL/TLS 지원, Kerberos 대신 경량 SASL 메커니즘(SCRAM 등) 고려, 그리고 KRaft 모드에서 ACL 관리 효율성 증대를 고려할 수 있습니다. JMX나 Prometheus를 통해 보안 관련 지표를 모니터링하여 병목 지점을 파악하고 최적화합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- Kafka에서 End-to-End Exactly-Once Semantics를 보장하기 위한 프로듀서, 브로커, 컨슈머 측면에서의 접근 방식과 각 구성 요소의 역할을 설명하고, 이 과정에서 발생할 수 있는 잠재적 이슈와 해결 방안을 논하시오.
- Kafka Connect 클러스터를 프로덕션 환경에서 고가용성(High Availability) 및 확장성(Scalability)을 보장하도록 설계하고 운영하기 위한 방안을 설명하시오. 특히 Source/Sink 커넥터의 장애 발생 시 데이터 유실 없이 복구하는 전략에 대해 구체적으로 제시하시오.
- 수백 개의 토픽과 수천 개의 파티션을 가진 대규모 Kafka 클러스터에서 안정적인 성능을 유지하기 위한 브로커, 프로듀서, 컨슈머 각 계층에서의 주요 튜닝 파라미터와 그 효과에 대해 설명하시오. 특히 네트워크, 디스크 I/O 관점에서 최적화 방안을 포함하시오.
- 두 개 이상의 데이터센터에 걸쳐 Kafka 클러스터를 운영할 때 재해 복구(Disaster Recovery, DR) 전략을 수립하는 방안에 대해 설명하시오. 특히 MirrorMaker 2.0 또는 Confluent Replicator를 활용한 액티브-패시브(Active-Passive) 또는 액티브-액티브(Active-Active) 구성 시 고려해야 할 사항과 데이터 일관성 유지 방안을 포함하시오.
- 대규모 컨슈머 그룹에서 잦은 리밸런싱(rebalancing)이 발생할 경우 서비스에 미치는 영향과 이를 최소화하기 위한 전략을 설명하시오. 특히 `max.poll.interval.ms`, `session.timeout.ms`, `heartbeat.interval.ms` 등의 파라미터와 컨슈머 애플리케이션 로직 관점에서의 최적화 방안을 제시하시오.