Konfigurowanie produktu Apache Kafka w celu włączenia uwierzytelniania SASL

W tej sekcji opisano sposób włączania uwierzytelniania SASL przy użyciu produktu Apache Kafka bez uwierzytelniania klienta SSL.

Zanim rozpoczniesz

Jeśli uwierzytelnianie SASL jest używane z włączonym uwierzytelnianiem klienta, należy zapoznać się z informacjami znajdującymi się w sekcji Konfigurowanie produktu Apache Kafka w celu włączenia uwierzytelniania klienta.

  1. Upewnij się, że porty, które są używane przez serwer Kafka , nie są blokowane przez firewall.
  2. Aby włączyć uwierzytelnianie klientów między konsumentami Kafka (QRadar®) i brokerami Kafka , należy wygenerować klucz i certyfikat dla każdego brokera i klienta w klastrze. Certyfikaty muszą być również podpisywane przez ośrodek certyfikacji (CA).

Informacje o tym zadaniu

W poniższych krokach użytkownik generuje ośrodek CA, podpisuje z nim certyfikaty klienta i brokera, a następnie dodaje je do magazynów zaufanych certyfikatów brokera. Klucze i certyfikaty są również generowane przy użyciu narzędzia Java keytool i OpenSSL. Alternatywnie można użyć zewnętrznego ośrodka CA razem z wieloma CA, po jednym dla podpisywania certyfikatów brokera i innym dla certyfikatów klienta.

Procedura

  1. Wygeneruj magazyn zaufanych certyfikatów, magazyn kluczy, klucz prywatny i certyfikat ośrodka CA.
    Uwaga: W następujących komendach z odpowiednimi wartościami należy zastąpić następujące komendy: PASSWORD, VALIDITY, SERVER_ALIAS i CLIENT_ALIAS.
    1. Wygeneruj magazyn kluczy serwera.
      Uwaga:

      Nazwa zwykła (CN) certyfikatów brokera musi być zgodna z pełną nazwą domenową (FQDN) serwera/hosta. Klient konsumenta Kafka używany przez produkt QRadar porównuje CN z nazwą domeny DNS, aby upewnić się, że łączy się z poprawnym brokerem, a nie ze szkodliwym. Upewnij się, że podczas generowania magazynu kluczy serwera wprowadź wartość FQDN dla wartości CN/Imię i nazwisko .

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Przykład
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. Wygeneruj certyfikat ośrodka CA.
      Uwaga:

      Ten certyfikat ośrodka CA może być używany do podpisywania wszystkich certyfikatów brokera i klienta.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Przykład
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Utwórz magazyn zaufanych certyfikatów serwera i zaimportuj certyfikat CA.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Wygeneruj certyfikat serwera i podpisz go za pomocą ośrodka 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
      Przykład
      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. Zaimportuj certyfikat CA do magazynu kluczy serwera.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    6. Importowanie certyfikatu podpisanego serwera do magazynu kluczy serwera.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Przykład
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    7. Wyeksportuj certyfikat serwera do pliku binarnego DER.
      Uwaga: W komendzie keytool -exportcert domyślnie używany jest format DER. Umieść certyfikat w katalogu trusted_certificates/ dowolnej EP, która komunikuje się z systemem Kafka. Potrzebny jest certyfikat serwera dla każdego serwera startowego, który jest używany w konfiguracji. W przeciwnym razie program QRadar odrzuci uzgadnianie TLS z serwerem.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Przykład
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
  2. Skonfiguruj brokery Kafka na potrzeby uwierzytelniania klienta.
    1. Znajdź sekcję Ustawienia serwera gniazd , a następnie zmień listeners=PLAINTEXT://:<port> na listeners=SSL://:<PORT>.
    2. Dodaj następujące właściwości, aby wymusić zaszyfrowaną komunikację między brokerami i między brokerami i klientami. Dostosuj ścieżki, nazwy plików i hasła, tak jak ich potrzebujesz. Te właściwości to magazyn zaufanych certyfikatów i magazyn kluczy serwera server:

      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

      Uwaga:

      Ponieważ hasła są przechowywane w postaci zwykłego tekstu w server.properties, zaleca się, aby dostęp do tego pliku był ograniczony przez uprawnienia systemu plików.

    3. Zrestartuj brokery Kafka , które miały zmodyfikowaną server.properties .