ESTE É UM CONTEÚDO EM DESENVOLVIMENTO E NÃO DEVE SER CONSIDERADO COMO VERSÃO FINAL!
Clique aqui para maiores informações
Configuração de ACL's
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;
A configuração abaixo é apenas um exemplo e deve ser comparada com a política de segurança vigente em sua empresa:
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:
Criando ACL para o consumer
Inicialmente é preciso extrair o subject do certificado, segue exemplo abaixo:
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:
O mesmo procedimento deve ser realizado para o consumer.
Inicialmente, deve-se extrair o subject do certificado com o seguinte comando:
Dessa forma, o acesso ao servidor Kafka estará devidamente controlado, garantindo a segurança na comunicação entre os componentes envolvidos.
Related content
ESTE É UM CONTEÚDO EM DESENVOLVIMENTO E NÃO DEVE SER CONSIDERADO COMO VERSÃO FINAL!
Clique aqui para maiores informações