le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Autore Comunità Lewei (forum.lwops.cn) Xu Yuan
Quando si costruiscono moderni sistemi distribuiti, garantire la sicurezza della trasmissione dei dati è fondamentale. Apache Kafka e Zookeeper, comuni code di messaggi distribuiti e servizi di coordinamento, forniscono il meccanismo di autenticazione SSL (Secure Sockets Layer) per migliorare la sicurezza durante la trasmissione dei dati.
Questo articolo introdurrà in dettaglio l'intero processo dalla generazione di un certificato SSL alla configurazione del server e del client per garantire che i dati siano completamente protetti durante la trasmissione.
1. Configura la password dell'account Kafka:
1. Innanzitutto, devi modificare il file di configurazione di Kafka: vim /asop/kafka/kafka_2.11-2.1.0/config/server.properties
broker.id=0
ascoltatori=SASL_PLAINTEXT://:9092
ascoltatori pubblicizzati=SASL_PLAINTEXT://10.176.31.137:9092
numero.di.thread.di.rete=3
numero.io.thread=8
socket.invia.buffer.byte=102400
socket.ricevi.buffer.byte=102400
socket.richiesta.max.byte=104857600
log.dirs=/asop/kafka/log
num.partizioni=1
num.thread.di.recupero.per.dir.dati=1
offset.argomento.fattore.replicazione=1
transazione.stato.log.fattore.replicazione=1
transazione.stato.log.min.isr=1
log.retention.hours=168
segmento di registro byte=1073741824
log.retention.check.intervallo.ms=300000
zookeeper.connect=localhost:2181
zookeeper.timeout.connessione.ms=6000
gruppo.iniziale.riequilibrio.ritardo.ms=0
#Protocollo di autenticazione utilizzato
security.inter.broker.protocol=SASL_PLAINTEXT
#meccanismoSASL
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Classe per completare l'autenticazione
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Se non viene trovata alcuna configurazione ACL (lista di controllo accessi), è consentita qualsiasi operazione.
consenti.tutti.se.nessuno.acl.trovato=falso
#È necessario abilitare l'impostazione del super amministratore e impostare l'utente visitatore come super amministratore.
super.users=Utente:visitatore
2. In secondo luogo, crea un file di verifica dell'accesso per il server. Puoi nominare il file in base alle tue preferenze, ad esempio vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf segue
Server Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule richiesto
nome utente="visitatore"
password=“qaz@123”
user_visitor="qaz@123";
};
3. Quindi modifica la directory di installazione di Kafka vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh e aggiungi le variabili nella parte superiore del file
esporta KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
4. Successivamente, crea un file di verifica dell'accesso per il consumatore e il produttore. Puoi nominare il file in base alle tue preferenze, ad esempio kafka_client_jaas.conf. Il contenuto del file è il seguente (se si tratta di accesso al programma, come accesso springboot , non è necessario configurarlo)
vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf
Cliente Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule richiesto
nome utente="visitatore"
password="qaz@123";
};
5. Aggiungere le seguenti configurazioni rispettivamente a consumer.properties e Producer.properties:
vim /asop/kafka/kafka_2.11-2.1.0/config/consumer.properties
vim /asop/kafka/kafka_2.11-2.1.0/config/producer.properties
sicurezza.protocollo=SASL_PLAINTEXT
sasl.mechanism=PLAIN
6. Modifica le directory di installazione di Kafka bin/kafka-console-producer.sh e bin/kafka-console-consumer.sh e aggiungi le variabili nella parte superiore dei file.
vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh
vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh
esporta KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf"
7. Avviare rispettivamente zookeeper e kafka A questo punto, la configurazione della verifica dell'accesso dell'utente kafka lato server è completata (chiudere prima kafka e poi chiudere zookeeper).
Arresta il servizio Kafka
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Avvia il servizio kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Arresta il servizio zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh arresta /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Avvia il servizio zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh avvia /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
8. Crea e visualizza temi
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh --broker-list 10.176.31.137:9092 --topic cmdb --producer-property security.protocol=SASL_PLAINTEXT --producer-property sasl.mechanism=PLAIN
ricevere messaggi
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server 10.176.31.137:9092 --topic cmdb --from-beginning --consumer-property security.protocol=SASL_PLAINTEXT --consumer-property sasl.mechanism=PLAIN
2. Configura la password dell'account ssal per zk e kafka:
Server {
org.apache.kafka.common.security.plain.PlainLoginModule richiesto
nome utente="admin"
password="admin@12"
user_kafka="kafka@123";
};
Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
1.2 Configurare il file /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
zookeeper.sasl.client=true
Zookeeper.sasl.client è impostato su true per abilitare l'autenticazione del client In caso contrario, il nome utente configurato in zoo_jaas.conf non funzionerà. Il client può comunque connettersi senza un file jaas, ma con WARNNING.
1.3 Importare pacchetti di dipendenze
Poiché la classe di verifica delle autorizzazioni utilizzata è: org.apache.kafka.common.security.plain.PlainLoginModule, sono richiesti i pacchetti jar relativi a Kafka. Crea una nuova cartella zk_sasl_lib come segue: Copia i seguenti pacchetti jar dalla directory kafka/lib a. zookeeper lib e la directory zk_sasl_lib appena creata:
client-kafka-2.4.1.jar
lz4-java-1.6.0.jar
il file slf4j-api-1.7.28.jar
il file slf4j-log4j12-1.7.28.jar
snappy-java-1.1.7.3.jar
mkdir /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/kafka-clients-2.1.0.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/lz4-java-1.5.0.jar /asop/zk/zookeeper-3.4.13/lib/
il file /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-api-1.7.25.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-log4j12-1.7.25.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/snappy-java-1.1.7.2.jar /asop/zk/zookeeper-3.4.13/lib/
cp /asop/kafka/kafka_2.11-2.1.0/libs/kafka-clients-2.1.0.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
il file di configurazione del programma è:
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-api-1.7.25.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/slf4j-log4j12-1.7.25.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
cp /asop/kafka/kafka_2.11-2.1.0/libs/snappy-java-1.1.7.2.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
chmod 755 -R /asop/zk/zookeeper-3.4.13/zk_sasl_lib/
chmod 755 -R /asop/zk/zookeeper-3.4.13/zk_sasl_lib/
1.4 Modificare il file zkEnv.sh/asop/zk/zookeeper-3.4.13/bin/zkEnv.sh
Prima della modifica: in caso contrario, aggiungerlo direttamente
esporta SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
Dopo la modifica:
per jar in /asop/zk/zookeeper-3.4.13/zk_sasl_lib/*.jar;
Fare
PERCORSO DI CLASSE=" barattolo : barattolo:sìR:PERCORSO DI CLASSE”
Fatto
esporta SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf "
Basta riavviare il servizio Zookeeper
Arresta il servizio zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh arresta /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Avvia il servizio zookeeper-3.4.13
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh avvia /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
Server Kafka {
org.apache.kafka.common.security.plain.PlainLoginModule richiesto
nome utente="visitatore"
password=“qaz@123”
user_visitor="qaz@123";
};
Cliente{
org.apache.kafka.common.security.plain.PlainLoginModule richiesto
nome utente="kafka"
password="kafka@123";
};
KafkaServer.username、KafkaServer.password 为 broker 内部通信的用户名密码,同上
KafkaServer.user_xxx dove xxx deve essere coerente con il nome utente configurato in KafkaServer.username e anche la password deve essere coerente
KafkaServer.user_producer e KafkaServer.user_consumer si preparano per l'ACL successivo, in modo che consumatori e produttori utilizzino account diversi e gli account consumatore possano solo consumare dati e gli account produttore possano solo produrre dati.
Client.username e Client.password inseriscono la password dell'account registrato in Zookeeper, che viene utilizzata per la comunicazione tra broker e zookeeper (se zookeeper non è configurato con SASL, può essere ignorato. Se zookeeper.sasl.client è false, può anche essere ignorato. Basta includerlo. Il registro è il seguente)
[29-06-2021 17:14:30,204] WARN Configurazione SASL non riuscita: javax.security.auth.login.LoginException: Nessuna sezione di configurazione JAAS denominata 'Client' è stata trovata nel file di configurazione JAAS specificato: '/Users/wjun/env/kafka/config/kafka_server_jaas.conf'. Continuerà la connessione al server Zookeeper senza autenticazione SASL, se il server Zookeeper lo consente. (org.apache.zookeeper.ClientCnxn)
2.2 Modificare il file server.properties
broker.id=0
ascoltatori=SASL_PLAINTEXT://:9092
ascoltatori pubblicizzati=SASL_PLAINTEXT://192.168.157.198:9092
numero.di.thread.di.rete=3
numero.io.thread=8
socket.invia.buffer.byte=102400
socket.ricevi.buffer.byte=102400
socket.richiesta.max.byte=104857600
log.dirs=/asop/kafka/log
num.partizioni=1
num.thread.di.recupero.per.dir.dati=1
offset.argomento.fattore.replicazione=1
transazione.stato.log.fattore.replicazione=1
transazione.stato.log.min.isr=1
log.retention.hours=168
segmento di registro byte=1073741824
log.retention.check.intervallo.ms=300000
zookeeper.connect=127.0.0.1:2181
zookeeper.timeout.connessione.ms=6000
gruppo.iniziale.riequilibrio.ritardo.ms=0
#Protocollo di autenticazione utilizzato
security.inter.broker.protocol=SASL_PLAINTEXT
#meccanismoSASL
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
#Classe per completare l'autenticazione
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
#Se non viene trovata alcuna configurazione ACL (lista di controllo accessi), è consentita qualsiasi operazione.
consenti.tutti.se.nessuno.acl.trovato=falso
#È necessario abilitare l'impostazione del super amministratore e impostare l'utente visitatore come super amministratore.
super.users=Utente:visitatore
Dove localhost deve essere modificato in un indirizzo IP
super.users configura il superutente, che non viene influenzato dalle successive configurazioni ACL.
2.3 Modificare lo script di avvio
Modificare il file kafka-server-start.sh per caricarlo nel file kafka_server_jaas.conf/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh
prima di fissare:
se [ “x$KAFKA_HEAP_OPTS” = “x” ]; allora
esporta KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
per me
Dopo la modifica:
(Aggiungi prima questa riga alla prima riga. Se ce l'hai già, non è necessario aggiungerla.) export KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11- 2.1.0/config/kafka_server_jaas.conf "
se [ “x$KAFKA_HEAP_OPTS” = “x” ]; allora
esporta KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
per me
Imposta le regole ACL per il guardiano dello zoo
/asop/zk/zookeeper-3.4.13/bin/zkCli.sh #Entra nella modalità riga di comando di zk
addauth digest admin:admin@12 #Cambia utente di accesso (il super amministratore è nel file di configurazione zk/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf)
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa #(Imposta l'IP e la password dell'account utente a cui è possibile accedere. admin è l'amministratore definito nel file di configurazione zk sopra e l'utente Kafka è /asop L'utente zk della connessione kafka definito nel file /kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf (sotto Client))
addauth digest kafka:kafka@123 #Passa all'utente kafka e imposta nuovamente acl
impostaAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa
Nota: se si desidera aggiungere un IP nella whitelist, l'utente deve aggiungerlo sulla base originale, altrimenti verrà sovrascritto.
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa,auth:admin:admin@12:cdrwa,ip:1.1.1.1
È necessario ripristinare le autorizzazioni, eseguire senza impostare acl
setAcl / mondo:chiunque:cdrwa
Basta riavviare il servizio Kafka
Arresta il servizio Kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
Avvia il servizio kafka
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -daemon /asop/kafka/kafka_2.11-2.1.0/config/server.properties
A questo punto la configurazione dell'autenticazione SSL di kafka e zookeeper è completata. Per ulteriori competenze sul funzionamento e sulla manutenzione, prestare attenzione alla comunità Lewei. Per ulteriori domande sul funzionamento e sulla manutenzione, lasciare un messaggio.