SASL 인증을 사용하도록 Apache Kafka 구성

이 태스크는 SSL 클라이언트 인증 없이 Apache Kafka에 대해 SASL 인증을 사용으로 설정하는 방법을 설명합니다.

시작하기 전에

클라이언트 인증을 사용하는 SASL 인증을 사용하는 경우 클라이언트 인증을 사용하도록 Apache Kafka 구성을 참조하십시오.

  1. Kafka 서버가 사용하는 포트가 방화벽에 의해 차단되지 않았는지 확인하십시오.
  2. Kafka 이용자 (QRadar) 와 Kafka 브로커 간에 클라이언트 인증을 사용하려면 클러스터의 각 브로커 및 클라이언트에 대한 키 및 인증서를 생성해야 합니다. 또한 인증 기관(CA)이 이 인증서에 서명해야 합니다.

이 태스크에 대한 정보

다음과 같은 단계에서는 CA를 생성하여 이 CA를 사용하여 클라이언트 및 브로커 인증서에 서명한 후 이를 브로커 신뢰 저장소에 추가합니다. Java keytool 및 OpenSSL을 사용하여 키 및 인증서도 생성합니다. 또는 여러 CA(브로커 인증서 서명을 위한 CA 하나와 클라이언트 인증서를 위한 다른 CA)와 함께 외부 CA를 사용할 수 있습니다.

프로시저

  1. 신뢰 저장소, 키 저장소, 개인 키 및 CA 인증서를 생성하십시오.
    참고: 다음 명령에서 PASSWORD, VALIDITY, SERVER_ALIAS및 CLIENT_ALIAS를 적절한 값으로 대체하십시오.
    1. 서버 키 저장소를 생성하십시오.
      참고:

      브로커 인증서의 공통 이름(CN)은 서버/호스트의 완전한 도메인 이름(FQDN)과 일치해야 합니다. QRadar 에서 사용되는 Kafka 이용자 클라이언트는 CN을 DNS 도메인 이름과 비교하여 악성 브로커 대신 올바른 브로커에 연결되어 있는지 확인합니다. 서버 키 저장소를 생성할 때 CN/First and Last name 값에 대해 FQDN을 입력해야 합니다.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. CA 인증서를 생성하십시오.
      참고:

      이 CA 인증서를 사용하여 모든 브로커 및 클라이언트 인증서에 서명할 수 있습니다.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. 서버 신뢰 저장소를 작성하고 CA 인증서를 가져오십시오.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. 서버 인증서를 생성한 후 CA를 사용하여 서명하십시오.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -certreq -file cert-file
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days VALIDITY -CAcreateserial
      keytool -keystore kafka.server.keystore.jks -alias server.hostname 
      -certreq -file cert-file 
      openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out
       cert-signed -days 365 -CAcreateserial 
    5. CA 인증서를 서버 키 저장소로 가져오십시오.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    6. 서명된 서버 인증서를 서버 키 저장소로 가져오십시오.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    7. 서버 인증서를 2진 DER 파일에 내보내십시오.
      참고: keytool -exportcert 명령은 기본적으로 DER 형식을 사용합니다. Kafka와 통신하는 EP의 trusted_certificates/ 디렉토리에 인증서를 배치하십시오. 구성에서 사용하는 모든 부트스트랩 서버에 대한 서버 인증서가 필요합니다. 그렇지 않으면 QRadar 는 서버와의 TLS 핸드쉐이크를 거부합니다.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
  2. 클라이언트 인증을 위해 Kafka 브로커를 구성하십시오.
    1. 소켓 서버 설정 섹션을 찾은 후 listeners=PLAINTEXT://:<port>listeners=SSL://:<PORT>로 변경하십시오.
    2. 다음과 같은 특성을 추가하여 브로커 사이 및 브로커와 클라이언트 사이에 암호화된 통신을 강제하십시오. 필요에 따라 경로, 파일 이름 및 비밀번호를 조정하십시오. 이러한 특성은 서버의 신뢰 저장소 및 키 저장소입니다.

      security.inter.broker.protocol=SASL_SSL

      ssl.client.auth=none

      ssl.keystore.location=/somefolder/kafka.server.keystore.jks

      ssl.keystore.password=test1234

      ssl.key.password=test1234

      ssl.truststore.location=/somefolder/kafka.server.truststore.jks

      ssl.truststore.password=test1234

      참고:

      비밀번호는 일반 텍스트로 server.properties에 저장되므로 파일 시스템 권한을 사용하여 파일에 대한 액세스를 제한하는 것이 좋습니다.

    3. server.properties 가 수정된 Kafka 브로커를 다시 시작하십시오.