Apache Kafka-তে SASL (Simple Authentication and Security Layer) এবং ACL (Access Control Lists) নিরাপত্তা ব্যবস্থাপনা নিশ্চিত করার জন্য ব্যবহৃত হয়। SASL ব্যবহার করে আপনি Kafka ক্লাস্টারের মধ্যে ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ অথেনটিকেশন (authentication) প্রতিষ্ঠা করতে পারেন, এবং ACL ব্যবহারের মাধ্যমে আপনি বিভিন্ন ক্লায়েন্টকে নির্দিষ্ট টপিক বা কনজিউমার গ্রুপে অনুমতি দিতে পারেন।
SASL কী এবং এর কনফিগারেশন
SASL (Simple Authentication and Security Layer) হল একটি অথেনটিকেশন ফ্রেমওয়ার্ক, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে নিরাপদ অথেনটিকেশন ব্যবস্থাপনা নিশ্চিত করে। এটি Kafka-এর মধ্যে নিরাপদ কানেকশন তৈরি করতে সহায়তা করে এবং বিভিন্ন অথেনটিকেশন মেকানিজম সাপোর্ট করে, যেমন: PLAIN, SCRAM, GSSAPI (Kerberos)।
Kafka ক্লাস্টারে SASL কনফিগার করতে হলে আপনাকে কিছু নির্দিষ্ট স্টেপ অনুসরণ করতে হবে:
1. Kafka Broker কনফিগারেশন:
Kafka Broker-এর কনফিগারেশন ফাইলে (যেমন server.properties) SASL-এ আধারিত নিরাপত্তা সেটআপ করতে হবে।
এখানে একটি উদাহরণ দেয়া হল, যেখানে SASL/PLAIN অথেনটিকেশন ব্যবহৃত হচ্ছে:
# Enable SASL authentication
security.inter.broker.protocol=SASL_PLAINTEXT
listeners=SASL_PLAINTEXT://0.0.0.0:9093
listener.security.protocol.map=SASL_PLAINTEXT:SASL_PLAINTEXT
listener.name.sasl_plaintext.plain.sasl.mechanism=PLAIN
advertised.listeners=SASL_PLAINTEXT://your-kafka-broker:9093
sasl.enabled.mechanisms=PLAIN
এই কনফিগারেশনটি ব্যবহারের মাধ্যমে Kafka Broker নির্ধারণ করে যে এটি SASL_PLAINTEXT প্রোটোকল ব্যবহার করবে এবং PLAIN মেকানিজম দ্বারা অথেনটিকেশন করবে।
2. Kafka Consumer এবং Producer কনফিগারেশন:
Kafka Consumer এবং Producer-এ SASL কনফিগারেশন করতে হবে। উদাহরণস্বরূপ:
Kafka Producer কনফিগারেশন:
bootstrap.servers=your-kafka-broker:9093
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="your-username" \
password="your-password";
Kafka Consumer কনফিগারেশন:
bootstrap.servers=your-kafka-broker:9093
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="your-username" \
password="your-password";
এখানে username এবং password প্রতিটি প্রডিউসার এবং কনজিউমার অ্যাক্সেসের জন্য নির্ধারিত।
ACL (Access Control Lists) কী এবং এর কনফিগারেশন
ACL (Access Control Lists) হল একটি নিরাপত্তা ব্যবস্থা, যা Kafka-তে নির্দিষ্ট ব্যবহারকারী (user) বা গ্রুপকে নির্দিষ্ট অ্যাক্সেস অনুমতি (permissions) দেয়, যেমন কোনো নির্দিষ্ট টপিক বা কনজিউমার গ্রুপে পাঠানো (produce) বা গ্রহণ (consume) করার অনুমতি। Kafka ACL ব্যবহারে আপনি সহজেই নিয়ন্ত্রণ করতে পারবেন যে কে কি অ্যাক্সেস পাবে।
1. Kafka Broker কনফিগারেশন:
Kafka-তে ACL কনফিগার করতে হলে, আপনার authorizer.class.name কনফিগারেশনটি kafka.security.auth.SimpleAclAuthorizer এ সেট করতে হবে।
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin
এখানে super.users দিয়ে অ্যাডমিন ইউজারের অ্যাক্সেস কনফিগার করা হচ্ছে।
2. ACL তৈরি করা:
Kafka ACL তৈরি করার জন্য kafka-acls.sh স্ক্রিপ্ট ব্যবহার করা হয়। নিচে কিছু উদাহরণ দেয়া হল:
- Producers (পাঠানো): নির্দিষ্ট একটি টপিকে প্রডিউসার অ্যাক্সেস দিতে:
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:producer --operation Write --topic my-topic
- Consumers (গ্রহণ করা): নির্দিষ্ট একটি টপিক থেকে কনজিউমার অ্যাক্সেস দিতে:
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:consumer --operation Read --topic my-topic
- Admin (অ্যাডমিন): টপিক তৈরি বা ডিলিট করতে অ্যাডমিন অ্যাক্সেস দেয়া:
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:admin --operation All --topic my-topic
3. ACL চেক করা:
আপনি আপনার ACL কনফিগারেশন চেক করতে পারেন:
kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list
এটি সমস্ত অ্যাক্সেস কন্ট্রোল শো করবে, যেগুলি বর্তমানে Kafka ক্লাস্টারে সক্রিয়।
SASL এবং ACL-এ Best Practices
- পাসওয়ার্ড এবং ইউজার ম্যানেজমেন্ট:
- পাসওয়ার্ড শক্তিশালী হওয়া উচিত এবং বিভিন্ন স্কিমা (PLAIN, SCRAM, etc.) ব্যবহার করে নিরাপদ অথেনটিকেশন ব্যবস্থা তৈরি করুন।
- ইউজারদের জন্য নির্দিষ্ট এবং প্রয়োজনীয় অ্যাক্সেস অধিকার প্রদান করুন। যেমন, least privilege principle অনুসরণ করুন।
- SASL মেকানিজমের নির্বাচন:
- PLAIN সহজ হলেও কম নিরাপদ হতে পারে, তাই প্রযোজ্য হলে SCRAM বা GSSAPI (Kerberos) ব্যবহার করা উত্তম।
- ACL রোলবেসড এক্সেস কন্ট্রোল:
- নির্দিষ্ট ব্যবহারকারী বা গ্রুপকে কেবলমাত্র প্রয়োজনীয় টপিক বা রিসোর্সে অ্যাক্সেস দিন। যেমন, producers কে কেবল পাঠানোর (Write) অনুমতি দিন এবং consumers কে কেবল গ্রহণ (Read) করার অনুমতি দিন।
- লগিং এবং মনিটরিং:
- SASL এবং ACL কনফিগারেশনের মাধ্যমে আপনার Kafka ক্লাস্টারের নিরাপত্তা মনিটর করুন। সম্ভাব্য নিরাপত্তা ঝুঁকি শনাক্ত করতে নিয়মিত লগ চেক করুন।
সারাংশ
SASL এবং ACL ব্যবহার করে Kafka-তে শক্তিশালী অথেনটিকেশন এবং অথরাইজেশন ব্যবস্থা তৈরি করা সম্ভব। SASL দ্বারা ক্লায়েন্ট ও সার্ভারের মধ্যে নিরাপদ অথেনটিকেশন প্রক্রিয়া বাস্তবায়ন করা যায়, এবং ACL ব্যবহারের মাধ্যমে আপনি নির্দিষ্ট ইউজার বা গ্রুপের জন্য নির্দিষ্ট টপিক বা রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করতে পারেন। নিরাপত্তা ব্যবস্থার এই কনফিগারেশনগুলি Kafka ক্লাস্টারের নিরাপত্তা বৃদ্ধি করতে এবং ডেটার অখণ্ডতা বজায় রাখতে সহায়তা করে।
Read more