प्रौद्योगिकी साझेदारी

kafka तथा zookeeper कृते SSL प्रमाणीकरणपाठ्यक्रमः

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

लेखक Lewei समुदाय (forum.lwops.cn) Xu Yuan
आधुनिकवितरितप्रणालीनां निर्माणकाले दत्तांशसञ्चारस्य सुरक्षां सुनिश्चितं करणं महत्त्वपूर्णम् अस्ति । अपाचे काफ्का तथा जूकीपर, लोकप्रियवितरितसन्देशपङ्क्तयः समन्वयसेवाः च इति रूपेण, आँकडासंचरणस्य समये सुरक्षां वर्धयितुं SSL (Secure Sockets Layer) प्रमाणीकरणतन्त्रं प्रदास्यन्ति
अयं लेखः SSL प्रमाणपत्रस्य जननात् आरभ्य सर्वरं क्लायन्ट् च विन्यस्तुं यावत् सम्पूर्णप्रक्रियायाः विस्तरेण परिचयं करिष्यति यत् संचरणकाले आँकडा पूर्णतया सुरक्षिता भवति इति सुनिश्चितं भवति

1. काफ्का खाता गुप्तशब्दं विन्यस्तं कुर्वन्तु:
1. प्रथमं, भवद्भिः kafka विन्याससञ्चिकां परिवर्तयितुं आवश्यकम्: vim /asop/kafka/kafka_2.11-2.1.0/config/server.properties

दलाल.आईडी=0
श्रोतारः=SASL_PLAINTEXT://:9092
advertized.listeners=SASL_PLAINTEXT://10.176.31.137:9092
num.network.threads=3
num.io.threads=8
सॉकेट.प्रेषण.बफर.बाइट = 102400
सॉकेट.प्राप्ति.बफर.बाइट = 102400
सॉकेट.अनुरोध.अधिकतम.बाइट = 104857600
log.dirs=/asop/kafka/लॉग्स
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
लेनदेन.स्थिति.लॉग.प्रतिकृति.कारक=1
लेनदेन.स्थिति.लॉग.मिन.इसर=1
log.retention.hours=168
log.segment.bytes = 1073741824
log.retention.check.interval.ms = 300000
zookeeper.connect=स्थानीयमेजबान:2181
zookeeper.connection.timeout.ms = 6000
समूह.प्रारम्भिक.पुनः संतुलन.विलम्ब.एमएस = 0

# प्रमाणीकरण प्रोटोकॉल प्रयुक्त
security.inter.broker.protocol=SASL_PLAINTEXT
# SASLmechanism
sasl.enabled.mechanisms=सादा
sasl.mechanism.inter.broker.protocol=सादा
प्रमाणीकरणं सम्पूर्णं कर्तुं #वर्गः
authorizer.class.name = काफ्का.सुरक्षा.प्रमाणीकरण.SimpleAclAuthorizer
#यदि ACL (access control list) विन्यासः न लभ्यते तर्हि किमपि कार्यं अनुमतम् अस्ति ।
allow.everyone.if.no.acl.found=असत्यम्
#भवद्भिः सुपर एडमिनिस्ट्रेटरस्य सेटिंग् सक्षमं कृत्वा विजिटर उपयोक्तारं सुपर एडमिनिस्ट्रेटर इति सेट् कर्तव्यम् ।
super.users=उपयोक्ता:आगन्तुकः

2. द्वितीयं, सर्वरस्य कृते प्रवेशसत्यापनसञ्चिकां रचयन्तु, यथा vim /asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf इति सञ्चिकायाः ​​नामकरणं कर्तुं शक्नुवन्ति अनुवर्तते

काफ्कासर्वर { .
org.apache.kafka.common.security.plain.PlainLoginModule आवश्यकम्
username=“आगन्तुक” २.
password=“काज@१२३” २.
उपयोक्ता_आगन्तुक = “काज @ 123”;
};

3. ततः kafka संस्थापननिर्देशिकां vim /asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh परिवर्त्य सञ्चिकायाः ​​उपरि चरं योजयन्तु

निर्यात KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf"
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
4. तदनन्तरं उपभोक्तुः उत्पादकस्य च कृते प्रवेशसत्यापनसञ्चिकां रचयन्तु, यथा kafka_client_jaas.conf सञ्चिकायाः ​​सामग्रीः निम्नलिखितरूपेण भवति (यदि एषा प्रोग्राम-प्रवेशः अस्ति, यथा springboot-प्रवेशः , तस्य विन्यासस्य आवश्यकता नास्ति)
vim /asop/kafka/kafka_2.11-2.1.0/config/काफ्का_ग्राहक_जास.कॉन्फ

काफ्काग्राहक { .
org.apache.kafka.common.security.plain.PlainLoginModule आवश्यकम्
username=“आगन्तुक” २.
password=“काज @ 123”;
};

5. क्रमशः consumer.properties तथा producer.properties इत्यत्र निम्नलिखितविन्यासान् योजयन्तु:
vim /asop/kafka/kafka_2.11-2.1.0/विन्यास/उपभोक्ता.गुण
vim /asop/kafka/kafka_2.11-2.1.0/विन्यास/उत्पादक.गुण

security.protocol=SASL_PLAINTEXT
sasl.mechanism=सादा

6. kafka संस्थापननिर्देशिकाः bin/kafka-console-producer.sh तथा bin/kafka-console-consumer.sh इत्येतयोः परिवर्तनं कुर्वन्तु, सञ्चिकानां उपरि चरं योजयन्तु ।
विम /आसोप/काफ्का/काफ्का_२.११-२.१.०/बिन/कफ्का-कन्सोल्-उत्पादक.श
विम /आसोप/काफ्का/कफ्का_२.११-२.१.०/बिन/कफ्का-कन्सोल्-उपभोक्ता.श

निर्यात KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_client_jaas.conf"अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
7. क्रमशः zookeeper तथा kafka आरभत अस्मिन् बिन्दौ सर्वर-पक्षीय kafka उपयोक्तृप्रवेशसत्यापनविन्यासः सम्पन्नः भवति (प्रथमं kafka बन्दं कुर्वन्तु ततः zookeeper बन्दं कुर्वन्तु) ।

सेवा काफ्का बंद करें
/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -डेमन /asop/kafka/kafka_2.11-2.1.0/config/server.properties

सेवा कफ्का आरभत
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -डेमन /asop/kafka/kafka_2.11-2.1.0/config/server.properties

सेवा zookeeper-3.4.13 निष्क्रियं कुर्वन्तु
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh स्टॉप /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
सेवा zookeeper-3.4.13 आरभत
/ asop / zk / zookeeper-3.4.13 / bin / zkServer.sh आरंभ / asop / zk / zookeeper-3.4.13 / conf / zoo.cfg

8. विषयान् रचयन्तु, पश्यन्तु च

/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-producer.sh --दलाल-सूची 10.176.31.137:9092 --विषय cmdb --उत्पादक-संपत्ति security.protocol=SASL_PLAINTEXT --producer- गुण sasl.mechanism=PLAIN
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
सन्देशान् प्राप्नुवन्ति

/asop/kafka/kafka_2.11-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server 10.176.31.137:9092 --विषय cmdb --प्रारम्भतः --उपभोक्ता-गुण सुरक्षा.प्रोटोकॉल= SASL_PLAINTEXT --उपभोक्ता-गुण sasl.mechanism=PLAINअत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

2. zk तथा kafka कृते ssal खाता गुप्तशब्दं विन्यस्यताम्:

  1. चिडियाघरपालक विन्यास SASL
    1.1 नूतनं zoo_jaas.conf सञ्चिकां रचयन्तु
    zoo_jaas.conf सञ्चिकायाः ​​सञ्चिकानामस्य मार्गस्य च विशेषा आवश्यकता नास्ति

सर्वर { .
org.apache.kafka.common.security.plain.PlainLoginModule आवश्यकम्
उपयोक्तृनाम=“प्रशासक”
password=“प्रशासक@१२” २.
user_kafka=“काफ्का@123”;
};

    Server.username、Server.password为 Zookeeper 内部通信的用户名和密码,因此保证每个 zk 节点该属性一致即可
    Server.user_xxx 中 xxx 为自定义用户名,用于 zkClient 连接所使用的用户名和密码,即为 kafka 创建的用户名
  • 1
  • 2

1.2 /asop/zk/zookeeper-3.4.13/conf/zoo.cfg सञ्चिकां विन्यस्यताम्
authProvider.1=org.apache.zookeeper.server.auth.SASLAप्रमाणीकरणप्रदाता
requireClientAuthScheme = ससल
jaasLoginRenew = 3600000
zookeeper.sasl.client=सत्यम्

Zookeeper.sasl.client इत्येतत् क्लायन्ट् प्रमाणीकरणं सक्षमं कर्तुं सत्यं सेट् कृतम् अस्ति अन्यथा, zoo_jaas.conf इत्यस्मिन् विन्यस्तं उपयोक्तृनाम अद्यापि कार्यं न करिष्यति, परन्तु WARNNING इत्यनेन सह ।

१.३ निर्भरतासङ्कुलानाम् आयातम्
यतः प्रयुक्तः अनुमतिसत्यापनवर्गः अस्ति: org.apache.kafka.common.security.plain.PlainLoginModule, kafka-सम्बद्धाः jar-सङ्कुलाः आवश्यकाः सन्ति यथा निम्नलिखितरूपेण zk_sasl_lib इति पुटं रचयन्तु: kafka/lib निर्देशिकातः निम्नलिखित-जार-सङ्कुलानाम् प्रतिलिपिं कुर्वन्तु zookeeper lib तथा नवनिर्मितं zk_sasl_lib निर्देशिका:

कफ्का-ग्राहक-२.४.१.जार
lz4-java-1.6.0.jar
स्ल्फ४ज-अपि-१.७.२८.जर
slf4j-log4j12-1.7.28.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/
cp /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
cp /asop/kafka/kafka_2.11-2.1.0/libs/lz4-java-1.5.0.jar /asop/zk/zookeeper-3.4.13/zk_sasl_lib
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 zkEnv.sh सञ्चिकां परिवर्तयन्तु/asop/zk/zookeeper-3.4.13/bin/zkEnv.sh
परिवर्तनात् पूर्वं : यदि न तर्हि प्रत्यक्षतया योजयन्तु

निर्यात SERVER_JVMFLAGS=“-Xmx${ZK_SERVER_HEAP}m $सर्वर_JVMFLAGS”

परिवर्तनानन्तरं : १.

/asop/zk/zookeeper-3.4.13/zk_sasl_lib/*.jar इत्यस्मिन् jar कृते;
करोतु
क्लासपाथ=“ २. जार : जार: .जा:कक्षापाथ” २.
कृतम्‌

निर्यात SERVER_JVMFLAGS=" -Djava.security.auth.login.config=/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf "

केवलं Zookeeper सेवां पुनः आरभत

सेवा zookeeper-3.4.13 निष्क्रियं कुर्वन्तु
/asop/zk/zookeeper-3.4.13/bin/zkServer.sh स्टॉप /asop/zk/zookeeper-3.4.13/conf/zoo.cfg
सेवा zookeeper-3.4.13 आरभत
/ asop / zk / zookeeper-3.4.13 / bin / zkServer.sh आरंभ / asop / zk / zookeeper-3.4.13 / conf / zoo.cfg

  1. कक्फा SASL विन्यस्यताम्
    2.1 नूतनं kafka_server_jaas.conf सञ्चिकां रचयन्तु
    kafka_server_jaas.conf सञ्चिकानामस्य भण्डारणमार्गस्य च आवश्यकता नास्ति

काफ्कासर्वर { .
org.apache.kafka.common.security.plain.PlainLoginModule आवश्यकम्
username=“आगन्तुक” २.
password=“काज@१२३” २.
उपयोक्ता_आगन्तुक = “काज @ 123”;
};
ग्राहिका{
org.apache.kafka.common.security.plain.PlainLoginModule आवश्यकम्
उपयोक्तृनाम=“काफ्का”
password=“काफ्का@123”;
};

    KafkaServer.username、KafkaServer.password 为 broker 内部通信的用户名密码,同上
  • 1

KafkaServer.user_xxx यत्र xxx KafkaServer.username इत्यस्मिन् विन्यस्तस्य उपयोक्तृनाम्ना सह सङ्गतं भवितुमर्हति, गुप्तशब्दः अपि सङ्गतः भवितुमर्हति
KafkaServer.user_producer तथा KafkaServer.user_consumer अनन्तरं ACL कृते सज्जतां कुर्वन्ति, येन उपभोक्तारः उत्पादकाः च भिन्नलेखानां उपयोगं कुर्वन्ति, उपभोक्तृलेखाः केवलं आँकडानां उपभोगं कर्तुं शक्नुवन्ति, तथा च उत्पादकलेखाः केवलं आँकडानां उत्पादनं कर्तुं शक्नुवन्ति
Client.username तथा Client.password Zookeeper इत्यस्मिन् पञ्जीकृतं खातागुप्तशब्दं पूरयन्ति, यस्य उपयोगः दलालस्य zookeeper इत्यस्य च मध्ये संचारार्थं भवति (यदि zookeeper SASL इत्यनेन विन्यस्तं नास्ति तर्हि तस्य अवहेलना कर्तुं शक्यते। यदि zookeeper.sasl.client मिथ्या अस्ति तर्हि कर्तुं शक्नोति also be ignored. केवलं तत् समावेशयन्तु।

[2021-06-29 17:14:30,204] WARN SASL विन्यासः विफलः: javax.security.auth.login.LoginException: निर्दिष्टे JAAS विन्याससञ्चिकायां 'Client' इति नाम्ना कोऽपि JAAS विन्यासखण्डः न प्राप्तः: '/Users/wjun/env /काफ्का/विन्यास/काफ्का_सर्वर_जास.कॉन्फ'। SASL प्रमाणीकरणं विना Zookeeper सर्वरेण सह संयोजनं निरन्तरं करिष्यति, यदि Zookeeper सर्वरः तस्य अनुमतिं ददाति । (org.apache.zookeeper.ClientCnxn) इति .

2.2 server.properties सञ्चिकां परिवर्तयन्तु
दलाल.आईडी=0
श्रोतारः=SASL_PLAINTEXT://:9092
विज्ञापित.श्रोतारः=SASL_PLAINTEXT://192.168.157.198:9092
num.network.threads=3
num.io.threads=8
सॉकेट.प्रेषण.बफर.बाइट = 102400
सॉकेट.प्राप्ति.बफर.बाइट = 102400
सॉकेट.अनुरोध.अधिकतम.बाइट = 104857600
log.dirs=/asop/kafka/लॉग्स
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
लेनदेन.स्थिति.लॉग.प्रतिकृति.कारक=1
लेनदेन.स्थिति.लॉग.मिन.इसर=1
log.retention.hours=168
log.segment.bytes = 1073741824
log.retention.check.interval.ms = 300000
zookeeper.connect = 127.0.0.1:2181
zookeeper.connection.timeout.ms = 6000
समूह.प्रारम्भिक.पुनः संतुलन.विलम्ब.एमएस = 0

# प्रमाणीकरण प्रोटोकॉल प्रयुक्त
security.inter.broker.protocol=SASL_PLAINTEXT
# SASLmechanism
sasl.enabled.mechanisms=सादा
sasl.mechanism.inter.broker.protocol=सादा
प्रमाणीकरणं सम्पूर्णं कर्तुं #वर्गः
authorizer.class.name = काफ्का.सुरक्षा.प्रमाणीकरण.SimpleAclAuthorizer
#यदि ACL (access control list) विन्यासः न लभ्यते तर्हि किमपि कार्यं अनुमतम् अस्ति ।
allow.everyone.if.no.acl.found=असत्यम्
#भवद्भिः सुपर एडमिनिस्ट्रेटरस्य सेटिंग् सक्षमं कृत्वा विजिटर उपयोक्तारं सुपर एडमिनिस्ट्रेटर इति सेट् कर्तव्यम् ।
super.users=उपयोक्ता:आगन्तुकः

यत्र localhost इत्येतत् IP-सङ्केतं परिवर्तयितुं आवश्यकम् अस्ति

super.users सुपर उपयोक्तारं विन्यस्यति, यत् अनन्तरं ACL विन्यासैः प्रभावितं न भवति ।

2.3 स्टार्टअप स्क्रिप्ट् परिवर्तयन्तु
kafka-server-start.sh सञ्चिकां kafka_server_jaas.conf सञ्चिकायां/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh इत्यस्मिन् लोड् कर्तुं परिवर्तयन्तु

निश्चयात् पूर्वं : १.

if [ “x $ KAFKA_HEAP_OPTS” = “x” ]; तदा
निर्यात KAFKA_HEAP_OPTS=“-Xmx1G -Xms1G”
fi

परिवर्तनानन्तरं : १.
(प्रथमं प्रथमपङ्क्तौ एतां पङ्क्तिं योजयन्तु। यदि भवतां समीपे पूर्वमेव अस्ति, तर्हि भवतः एतत् योजयितुं आवश्यकता नास्ति।) export KAFKA_OPTS=" -Djava.security.auth.login.config=/asop/kafka/kafka_2.11- 2.1.0/config/kafka_server_jaas.conf " इति ।
if [ “x $ KAFKA_HEAP_OPTS” = “x” ]; तदा
निर्यात KAFKA_HEAP_OPTS=“-Xmx1G -Xms1G -Djava.security.auth.login.config=/asop/kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf”
fi

zookeeper कृते ACL नियमाः सेट् कुर्वन्तु
/asop/zk/zookeeper-3.4.13/bin/zkCli.sh #zk इत्यस्य आदेशपङ्क्तिविधिं प्रविशतु

addauth digest admin:admin@12 # प्रवेश उपयोक्तारं स्विच कुर्वन्तु (सुपर प्रशासकः zk विन्याससञ्चिकायां/asop/zk/zookeeper-3.4.13/conf/zoo_jaas.conf इत्यस्मिन् अस्ति)

setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa #(IP तथा उपयोक्तृलेखगुप्तशब्दं सेट् कुर्वन्तु यत् प्रवेशं कर्तुं शक्यते। admin उपरि zk विन्याससञ्चिकायां परिभाषितः प्रशासकः अस्ति, तथा च Kafka उपयोक्ता is /asop /kafka/kafka_2.11-2.1.0/config/kafka_server_jaas.conf सञ्चिकायां (Client इत्यस्य अधः) परिभाषितः kafka connection zk उपयोक्ता)

addauth digest kafka:kafka@123 # kafka user इत्यत्र स्विच कृत्वा पुनः acl सेट् कुर्वन्तु
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa

नोटः- यदि भवान् श्वेतसूची-IP योजयितुम् इच्छति अथवा उपयोक्त्रेण मूल-आधारेण तत् योजयितव्यम्, अन्यथा तत् अधिलिखितं भविष्यति ।
setAcl / ip:127.0.0.1:cdrwa,auth:kafka:kafka@123:cdrwa,auth:admin:admin@12:cdrwa,ip:1.1.1.1

अनुमतिः पुनः स्थापयितुं आवश्यकता अस्ति, acl सेट् विना चालयन्तु
setAcl / विश्व:कोऽपि:cdrwa

केवलं काफ्का सेवां पुनः आरभत

सेवा काफ्का बंद करें
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-stop.sh -डेमन /asop/kafka/kafka_2.11-2.1.0/config/server.properties

सेवा कफ्का आरभत
#/asop/kafka/kafka_2.11-2.1.0/bin/kafka-server-start.sh -डेमन /asop/kafka/kafka_2.11-2.1.0/config/server.properties

अस्मिन् क्षणे kafka तथा zookeeper इत्येतयोः SSL प्रमाणीकरणविन्यासः सम्पन्नः भवति । अधिकसञ्चालन-रक्षण-कौशलस्य कृते कृपया लेवी-समुदायस्य विषये ध्यानं दत्तव्यम् अधिक-सञ्चालन-रक्षण-प्रश्नानां कृते कृपया सन्देशं त्यजन्तु।