Configurando o Apache Kafka para ativar a Autenticação SASL

Essa tarefa discute como ativar a Autenticação SASL com o Apache Kafka sem a Autenticação de cliente SSL.

Antes de iniciar

Se você estiver usando a Autenticação SASL com Autenticação do Cliente ativada, consulte Configurando o Apache Kafka para ativar a Autenticação do Cliente.

  1. Assegure-se de que as portas que são usadas pelo servidor Kafka não estejam bloqueadas por um firewall.
  2. Para ativar a autenticação de cliente entre os consumidores Kafka (QRadar) e um broker do Kafka , uma chave e um certificado para cada broker e cliente no cluster devem ser gerados. Os certificados também precisam ser assinados por uma autoridade de certificação (CA).

Sobre esta tarefa

Nas etapas a seguir, você gera uma CA, assina os certificados de cliente e de broker com ela e a inclui nos armazenamentos confiáveis do broker. Você também gera as chaves e os certificados usando o keytool Java e o OpenSSL. Como alternativa, uma autoridade de certificação externa pode ser usada junto com várias autoridades de certificação, uma para assinar certificados do broker e outra para certificados de cliente.

Procedimento

  1. Gerar o armazenamento confiável, o keystore, a chave privada e o certificado de autoridade de certificação.
    Nota: Substituir SENHA, VALIDADE, SERVER_ALIAS e CLIENT_ALIAS nos comandos a seguir com valores apropriados.
    1. Gerar keystore do Servidor.
      Observação:

      O nome comum (CN) dos certificados do broker deve corresponder ao nome completo do domínio (FQDN) do servidor/host. O cliente consumidor do Kafka que é usado pelo QRadar compara o CN com o nome de domínio do DNS para assegurar que ele esteja se conectando ao broker correto em vez de um malicioso Certifique-se de inserir o FQDN para o valor CN/First and Last name ao gerar o keystore do Servidor.

      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS
       -validity VALIDITY -genkey
      Exemplo
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -validity 365 -genkey
    2. Gerar Certificado de CA.
      Observação:

      Esse certificado de autoridade de certificação pode ser usado para assinar todos os certificados do broker e do cliente.

      openssl req -new -x509 -keyout ca-key -out ca-cert -days VALIDITY
      Exemplo
      openssl req -new -x509 -keyout ca-key -out ca-cert -days 365
    3. Crie o armazenamento confiável do Servidor e importe o certificado de autoridade de certificação.
      keytool -keystore kafka.server.truststore.jks -alias CARoot
       -import -file ca-cert
    4. Gere um Certificado do Servidor e assine-o usando a autoridade de certificação.
      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
      Exemplo
      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. Importe o certificado de autoridade de certificação para o keystore do Servidor.
      keytool -keystore kafka.server.keystore.jks -alias CARoot
       -import -file ca-cert
    6. Importe o Certificado do Servidor Assinado para o keystore do Servidor.
      keytool -keystore kafka.server.keystore.jks -alias SERVER_ALIAS -import
       -file cert-signed
      Exemplo
      keytool -keystore kafka.server.keystore.jks -alias server.hostname
       -import -file cert-signed
    7. Exporte o Certificado do Servidor para o arquivo DER binário.
      Nota: O comando keytool -exportcert usa o formato DER por padrão. Coloque o certificado no diretório trusted_certificates/ de qualquer EP que se comunica com Kafka. É necessário ter o certificado do servidor para cada servidor de autoinicialização que você usa na configuração. Caso contrário, QRadar rejeitará o handshake TLS com o servidor.
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       SERVER_ALIAS -file SEVER_ALIAS.der
      Exemplo
      keytool -exportcert -keystore kafka.server.keystore.jks -alias
       server.hostname -file server.hostname.der
  2. Configure brokers Kafka para Autenticação de Cliente.
    1. Encontre a seção Configurações do Servidor Socket e então altere listeners=PLAINTEXT://:<port> para listeners=SSL://:<PORT>.
    2. Inclua as propriedades a seguir para forçar a comunicação criptografada entre brokers e entre os brokers e os clientes. Ajuste os caminhos, os nomes de arquivos e as senhas, conforme necessário. Essas propriedades são o armazenamento confiável e o keystore do servidor:

      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

      Observação:

      Como as senhas são armazenadas em texto sem formatação no server.properties, é aconselhável que o acesso ao arquivo seja restrito por meio de permissões do sistema de arquivos.

    3. Restart os intermediários Kafka que tiveram seus server.properties modificados.