ESTE É UM CONTEÚDO EM DESENVOLVIMENTO E NÃO DEVE SER CONSIDERADO COMO VERSÃO FINAL!
Clique aqui para maiores informações

Ir para o final dos metadados
Ir para o início dos metadados

You are viewing an old version of this content. View the current version.

Comparar com o atual View Version History

« Anterior Versão 2 Próxima »

Até este ponto, foi realizada a configuração do servidor Kafka, de um producer e de um consumer. No entanto, ambos, com seus respectivos certificados, possuem acesso irrestrito a qualquer tópico, o que não corresponde ao comportamento desejado. Portanto, é necessário tornar o servidor mais restritivo.

Para isso, deve-se editar o arquivo config/kraft/server-ofb.properties e descomentar as últimas três linhas presentes no arquivo, de modo que as seguintes opções fiquem ativas:

authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:ANONYMOUS

As configurações acima estabelecem que:

  • O servidor Kafka passará a utilizar um autorizador;

  • Esse autorizador, por padrão, negará qualquer conexão que não tenha recebido permissão explícita;

  • O usuário ANONYMOUS será definido como superusuário para que o servidor consiga executar tarefas administrativas.

Após a edição das configurações, é necessário reiniciar o servidor Kafka para que as alterações sejam aplicadas.

Caso seja realizada uma tentativa de conexão como producer, o prompt > será aberto, mas ao enviar qualquer evento, ocorrerá um erro do tipo TOPIC_AUTHORIZATION_FAILED.

Da mesma forma, ao tentar se conectar como consumer, o prompt não ficará aguardando eventos.

Criando ACL para o producer

Com a confirmação de que as ACLs estão restringindo o acesso, deve-se habilitar o acesso do producer com base no subject de seu certificado.

Inicialmente, é necessário extrair o subject do certificado por meio do seguinte comando:

openssl x509 -in ssl/kafka-producer.crt -noout -subject -nameopt RFC2253

A resposta esperada será:

subject=CN=producer

O subject real corresponde à string sem o prefixo subject=, ou seja, CN=producer.

Para conceder permissão ao producer no tópico ssl_test_topic para o usuário com o certificado de subject CN=producer, execute-se o seguinte comando:

bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal "User:CN=producer" --producer --topic 'ssl_test_topic'

Após a execução do comando acima, será possível conectar-se novamente ao tópico como producer e enviar eventos utilizando o seguinte comando:

bin/kafka-console-producer.sh --bootstrap-server localhost:9094 --topic ssl_test_topic --producer.config config/producer.properties

Criando ACL para o consumer

Inicialmente é preciso extrair o subject do certificado, segue exemplo abaixo:

openssl x509 -in ssl/kafka-consumer.crt -noout -subject -nameopt RFC2253

A resposta deste comando deve ser:

subject=CN=consumer

O subject real é essa string porém sem o prefixo subject=, portanto no comando iremos usar apenas o restante (CN=consumer).

Para dar permissão como consumer no tópico ssl_test_topic para o usuário com o certificado com o subject CN=consumer, execute o comando abaixo:

bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --allow-principal "User:CN=consumer" --consumer --topic 'ssl_test_topic' --group '*'

O mesmo procedimento deve ser realizado para o consumer.

Inicialmente, deve-se extrair o subject do certificado com o seguinte comando:

bin/kafka-console-consumer.sh --bootstrap-server localhost:9095 --topic ssl_test_topic --consumer.config config/consumer.properties --from-beginning

Dessa forma, o acesso ao servidor Kafka estará devidamente controlado, garantindo a segurança na comunicação entre os componentes envolvidos.

  • Sem rótulos