Listagem de Chaves com klist
O comando klist pode ser usado para listar as chaves presentes no arquivo keytab. Aqui está um exemplo:
[root@servidor krb5kdc]# klist -t -e -k kafka.keytab
Keytab name: FILE:kafka.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
1 2022-01-17T14:08:11 kafka/servidor@DOMINIO.EXAMPLE (aes256-cts-hmac-sha1-96)
1 2022-01-17T14:08:11 kafka/servidor@DOMINIO.EXAMPLE (aes128-cts-hmac-sha1-96)
1 2022-01-17T14:08:11 kafka/servidor@DOMINIO.EXAMPLE (des3-cbc-sha1)
Este comando exibe os detalhes dos principais registrados no arquivo kafka.keytab.
Configuração do Zookeeper com SASL
Para habilitar a autenticação SASL no Zookeeper, você precisa configurar o arquivo jaas.conf. Abaixo está um exemplo modificado:
Server {
org.apache.zookeeper.server.auth.KerberosLoginModule required
useKeyTab=true
keyTab="/caminho/para/zk-server.keytab"
storeKey=true
useTicketCache=false
principal="zk-servidor/host.example.com";
};
No código acima, substitua os caminhos e nomes conforme necessário. Certifique-se de que o principal (principal) corresponda ao nome do host na sua infraestrutura.
Habilitando Requisição SASL no Zookeeper
Adicione ou modifique a seguinte linha no arquivo de configuração do Zookeeper:
sessionRequireClientSASLAuth=true
Essa confiugração obriga os clientes a passarem pela autenticação SASL antes de acessarem o Zookeeper.
Exemplo de Script Java para Conexão Segura
Aqui está um exemplo simplificado de como conectar-se ao Zookeeper usando SASL em Java:
import java.io.IOException;
import org.apache.zookeeper.ZooKeeper;
public class SecureZooKeeperConnection {
public static void main(String[] args) throws IOException, InterruptedException {
String connectString = "host.example.com:2181";
int sessionTimeout = 3000;
System.setProperty("java.security.auth.login.config", "/caminho/para/jaas.conf");
System.setProperty("zookeeper.sasl.client", "true");
ZooKeeper zk = new ZooKeeper(connectString, sessionTimeout, event -> {});
System.out.println("Conectado ao Zookeeper!");
Thread.sleep(10000); // Mantém a conexão ativa por 10 segundos
zk.close();
}
}
Este script demonstra como configurar uma conexão segura com o Zookeeper utilizando propriedades de segurança.
Configurando ACLs no Zookeeper
Você pode definir permissões específicas para nós no Zookeeper usando o comando addAcl:
addAcl /meu_no sasl:usuario/meu_host@DOMINIO.EXAMPLE:cdrwa
Isto concede privilégios completos (cdrwa) ao usuário especificado.