6.2. TLS 암호화
Kafka는 Kafka 클라이언트와의 통신을 암호화하기 위해 TLS를 지원합니다.
TLS 암호화 및 서버 인증을 사용하려면 개인 키와 공개 키가 포함된 키 저장소를 제공해야 합니다. 일반적으로 JKS(Java Keystore) 형식으로 파일을 사용하여 수행합니다. 이 파일의 경로는 ssl.keystore.location
속성에 설정됩니다. 키 저장소를 보호하는 암호를 설정하는 데 ssl.keystore.password
속성을 사용해야 합니다. 예를 들면 다음과 같습니다.
ssl.keystore.location=/path/to/keystore/server-1.jks ssl.keystore.password=123456
경우에 따라 개인 키를 보호하는 데 추가 암호가 사용됩니다. 이러한 암호는 ssl.key.password
속성을 사용하여 설정할 수 있습니다.
Kafka는 인증 기관에서 서명한 키와 자체 서명 키를 사용할 수 있습니다. 인증 기관에서 서명한 키를 사용하는 것이 항상 선호되는 방법이어야 합니다. 클라이언트가 연결 중인 Kafka 브로커의 ID를 확인할 수 있도록 하려면 인증서에서 항상 공개된 호스트 이름을 CN(일반 이름) 또는 SAN(주체 대체 이름)으로 포함해야 합니다.
다양한 리스너에 다양한 SSL 구성을 사용할 수 있습니다. ssl
으로 시작하는 모든 옵션의 접두사는 listener.name.<NameOfTheListener>입니다.
여기서 리스너 이름은 항상 소문자여야 합니다. 이렇게 하면 해당 특정 리스너에 대한 기본 SSL 구성이 재정의됩니다. 다음 예제에서는 다양한 리스너에 다양한 SSL 구성을 사용하는 방법을 보여줍니다.
listeners=INT1://:9092,INT2://:9093,REPLICATION://:9094 listener.security.protocol.map=INT1:SSL,INT2:SSL,REPLICATION:SSL # Default configuration - will be used for listeners INT1 and INT2 ssl.keystore.location=/path/to/keystore/server-1.jks ssl.keystore.password=123456 # Different configuration for listener REPLICATION listener.name.replication.ssl.keystore.location=/path/to/keystore/replication.jks listener.name.replication.ssl.keystore.password=123456
추가 TLS 구성 옵션
위에서 설명한 기본 TLS 구성 옵션 외에도 Kafka는 TLS 구성을 미세 조정하기 위한 다양한 옵션을 지원합니다. 예를 들어 TLS / SSL 프로토콜 또는 암호화 제품군을 활성화하거나 비활성화하려면 다음을 수행합니다.
ssl.cipher.suites
- 활성화된 암호화 제품군 목록입니다. 각 암호화 제품군은 TLS 연결에 사용되는 인증, 암호화, MAC 및 키 교환 알고리즘의 조합입니다. 기본적으로 사용 가능한 모든 암호화 제품군이 활성화됩니다.
ssl.enabled.protocols
-
활성화된 TLS/SSL 프로토콜 목록입니다. 기본값은
TLSv1.2,TLSv1.1,TLSv1
입니다.
6.2.1. TLS 암호화 활성화
다음 절차에서는 Kafka 브로커에서 암호화를 활성화하는 방법을 설명합니다.
사전 요구 사항
- Apache Kafka의 스트림 은 각 호스트에 설치되고 구성 파일을 사용할 수 있습니다.
프로세스
- 클러스터의 모든 Kafka 브로커에 대한 TLS 인증서를 생성합니다. 인증서에는 일반 이름 또는 주체 대체 이름에 광고 및 부트스트랩 주소가 있어야 합니다.
다음을 위해 모든 클러스터 노드에서 Kafka 구성 속성 파일을 편집합니다.
-
listener.security.protocol.map
필드를 변경하여 TLS 암호화를 사용하려는 리스너의SSL
프로토콜을 지정합니다. -
브로커 인증서와 함께 JKS 키 저장소의 경로로
ssl.keystore.location
옵션을 설정합니다. ssl.keystore.password
옵션을 키 저장소를 보호하는 데 사용한 암호로 설정합니다.예를 들면 다음과 같습니다.
listeners=UNENCRYPTED://:9092,ENCRYPTED://:9093,REPLICATION://:9094 listener.security.protocol.map=UNENCRYPTED:PLAINTEXT,ENCRYPTED:SSL,REPLICATION:PLAINTEXT ssl.keystore.location=/path/to/keystore/server-1.jks ssl.keystore.password=123456
-
- Kafka 브로커 시작