مقدمة
Apache Kafka يدعم مجموعة متنوعة من بروتوكولات الأمان وإجراءات المصادقة لضمان أن فقط الموظفين والتطبيقات المخولين فقط يمكنهم الاتصال بالمجموعة. في التكوين الافتراضي، يسمح Kafka بالوصول للجميع ولكنه لا يحتوي على فحوصات أمان مفعلة. بينما يكون ذلك مفيدًا للاستكشاف والتطوير، يجب تأمين تفريغات الإنتاج بشكل صحيح قبل العرض للعالم الخارجي. أيضًا، يجب مراقبة هذه البيئات لضمان العمل السلس ومنع الفشل المحتمل.
في هذا الدليل، ستقوم بتقوية تثبيت Kafka الخاص بك عن طريق تكوين تشفير حركة الاتصال TLS والمصادقة SASL لتوفير جرس اسم المستخدم وسياسة تسجيل الدخول. ستتعلم كيفية تكوين النصائح المقدمة للمنتج والمستهلك للاتصال بمجموعة مؤمنة. ثم، ستتعلم كيفية تصدير مقاييس Kafka وتصورها في Grafana. ستتعلم أيضًا كيفية الوصول إلى نقاط مجموعة الخاصة بك والمواضيع من خلال واجهة الويب السهلة الاستخدام والمقدمة من AKHQ.
المتطلبات السابقة
لإكمال هذا الدليل، ستحتاج إلى:
- أقلامة تحتوي على حد أدنى 4 جيجابايت من الذاكرة و2 معالجات. في حالة خادم Ubuntu، اتبع التعليمات لإعداد الخادم بفضل إعداد الخادم الأساسي
- Apache Kafka مثبت ومهيأ على أقلامتك. للحصول على التعليمات، اتبع دليل مقدمة إلى Kafka. يجب عليك الانتهاء من الخطوة 1 والخطوة 2</diy6 فقط
- فهم كيفية التعامل لـ Java بالمفاتيح والشهادات. للمزيد من المعلومات، زر دليل أساسيات Java Keytool: العمل مع مستودعات المفاتيح في Java
- Grafana مثبت على خادمك أو جهازك المحلي. من فضلك زر دليل كيفية تثبيت وتأمين Grafana على Ubuntu للحصول على التعليمات. تحتاج فقط إلى الانتهاء من الخطوات الأولى أربعة.
- اسم مجموعة مسجل بالكامل يشير إلى أقلامتك. سيستخدم هذا الدليل
your_domain
على مر الحياة وسيشير إلى نفس اسم المجموعة كمتطلب Grafana. يمكنك شراء اسم مجموعة على Namecheap، أو الحصول على واحد مجاني على Freenom، أو استخدام مسجل المجموعة لأختيارك.
خطوة 1 – ت配置 Kafka مع البرمجيات الأمنية
في إعداداتها الافتراضية، تسمح كافكا للجميع بالاتصال بها بدون تحقيق مصدر ال solicitud. هذا يعني أن مجموعتك قابلة للوصول بالفعل للجميع. بينما تكون ذلك جيدا للتجربة، لأنه يخفض عبء المعدات المحلية والتثبيتات الخاصة، التكوينات الإنتاجية والمعروفة للعملاء والتي توجه إلى المجموعة يتوجب تفعيل ميزات الأمن لمنع الوصول الغير مسموح به.
في هذه الخطوة، ستقوم بتكوين مضيف كافكا خاصتك لاستخدام التشفير TLS للتواصل بين المضيف والمستهلكين. ستقوم أيضًا بإنشاء SASL كإطار التحقق للمعرفة خلال الاتصال بالمجموعة.
توليد شهادة TLS وأسواقها
لتوليد الشهادات والمفاتيح المطلوبة لتكوين TLS، ستستخدم 脚本 من مجموعة أدوات أمن برنامج Confluent. أولاً، ستقم بتعميلها إلى مجلد المهملات الخاص بك بتنفيذ الأوامر التالية:
تحرك إليها:
السكربت الذي ستستخدمه يُدعى kafka-generate-ssl-automatic.sh
، ويتطلب منك تزويدين بمتغيرات بيئية تحتوي على البلد، والولاية، والمنظمة، والمدينة. هذه المعلمات تُستخدم لإنشاء الشهادات، ولكن محتواها لا يهم. ستحتاج أيضًا لتزويد باسم رمز، والذي يُستخدم لتأمين مستودع الثقة والمفاتيح الجافية التي سيتم إنشاؤها.
قم بتشغيل الأوامر التالية لإعداد المتغيرات البيئية المطلوبة، مع استبدال your_tls_password
بالقيمة التي ترغب فيها:
لاحظ أن PASSWORD
يجب أن يكون على الأقل ستة أحرفًا.
قم بمنح السكربت الأذونات التنفيذية عن طريق تشغيل:
ثم، قم بتنفيذه لإنشاء الملفات المطلوبة:
سيكون هناك الكثير من الإخراج. عند الانتهاء، قم بإدراج الملفات في الدليل:
يجب أن يكون الإخراج مشابهًا لهذا:
ستلاحظ أن الشهادة، ومستودع الثقة، ومفتاح التخزين تم إنشاؤها بنجاح.
تكوين Kafka لتشغيل TLS و SASL
الآن بما أنك تمتلك الملفات اللازمة لتمكين التشفير بـ TLS، ستقوم بتكوين Kafka لاستخدامها والتحقق من المستخدمين باستخدام SASL.
سوف تقوم بتعديل الملف server.properties
وهو في config/kraft
في ال directorio de instalación. قمت بتنسيقه في kafka
في دراجتك الشخصية كجزء من الأولويات الأساسية. تحويل إليه عن طريق التشغيل:
فتح الملف الأساسي للتعديل:
nano config/kraft/server.properties
إيجاد السطور التالية:
قم بتعديلها لتبدو مثل هذه، و تحويل PLAINTEXT
إلى BROKER
:
ومن ثم إيجاد السطور listener.security.protocol.map
:
تخزين BROKER
بـ SASL_SSL
بإبدال تعريف التوجيه إلى القيمة:
هنا، قمت بإضافة تعريف للاختصار BROKER
الذي أستخدمته في المستمعين ووصلته إلى SASL_SSL
، وهو يعني أن الTLS (الاسم السابق للTLS) والSASL سيستعملان.
من ثم، تحرك إلى نهاية الملف وأضف الأخطاء التالية:
أولاً تحددت المواقع والكلمات السرية للمخزونات المنتجة للثقة والمخزونات المفاتيح. أضفت ما يتمثل في ما يلي:
أخيرًا، أضفت الStandardAuthorizer
كفصيل المصرحين، التي تفحص تلك المعلومات ضد ملف تكوين سوف تقوم بإنشائه قريبًا. وأضفت ما يتمثل في ما يلي:
أتذكر أن عليك أستبدال your_tls_password
بكلمة المرور التي أعطيتها لل脚本 في القسم السابق، ومن ثم حفظ وغلق الملف.
قمت ب配置 Kafka، سيتوجب عليك إنشاء ملف يحدد المعاملات المسموحة للاتصال. Kafka يدعم (JAAS)، الخدمة اليابانية للتحقق والتسمية، إطار لتنفيذ الأعمال التعقيدية للتحقق، ويقبل تعريفات المعاملات في تشكيل JAAS.
سوف تقوم بتخزينها في ملف يدعى kafka-server-jaas.conf
في config/kraft
. قم بتشغيله وفتحه للتحرير بتنفيذ:
أضف ال行هذه التالية:
يحددون username
و password
المعاملات الرئيسية التي يستخدم للتواصل بين المراسلين في المجموعة عندما يوجد عدد من النقاط. خط ال user_admin
يحدد مستخدمًا يدعى admin
بمرور admin
، ويمكنه الاتصال بالمراسل من الخارج. حفظ وغلق الملف عندما ينتهي ذلك.
Kafka يحتاج إلى معرفة ملف kafka-server-jaas.conf
لأنه يتكافؤ مع التكوين الرئيسي. سيتوجب عليك تعديل تكوين خدمة kafka
systemd وتمرير مرجع له. قم بتنفيذ أوامر التحكم لتتوافر الخدمة للتحرير:
باستخدام --full
، ستحصل على حصة في محتويات الخدمة بأكملها. ابحث عن خط ExecStart
:
أضف خط تلقائيًا فوقه ليبدو كهذا:
بهذا، تقوم بتعيين المعلمة java.security.auth.login.config
في التكوين إلى مسار ملف تكوين JAAS، مما يفصلها عن تكوين Kafka الرئيسي. بعد انتهائك، احفظ الملف وأغلقه. أعد تحميل تعريف الخدمة عن طريق تشغيل:
ثم، أعد تشغيل Kafka:
لقد قمت الآن بتكوين كل من تشفير TLS والمصادقة SASL لتثبيت Kafka الخاص بك، وستتعلم الآن كيفية الاتصال به باستخدام السكربتات الكونسول المقدمة.
الخطوة 2 – الاتصال بالمجموعة المؤمنة
في هذه الخطوة، ستتعلم كيفية الاتصال بمجموعة Kafka مؤمنة باستخدام ملفات تكوين JAAS المقدمة مع السكربتات الكونسول.
تستخدم السكربتات المقدمة للتلاعب بالمواضيع وإنتاج واستهلاك الرسائل أيضًا جافاً داخليًا، وبالتالي تقبل تكوين JAAS يتضمن مواقع مستودعات الثقة والمفاتيح، بالإضافة إلى بيانات اعتماد SASL.
ستخزن تلك التكوين في ملف يُدعى client-jaas.conf
في دليل المنزل الخاص بك. أنشئه وافتحه للتحرير:
أضف الأسطر التالية:
ومثلما حدث من قبل، تضع البروتوكول على SASL_SSL
وتقدم المسارات وكلمة المرور للمتجه والمخزون الموثوق للمؤلفات التي قمت بإنشائها. ثم تضع آلية SASL على PLAIN
وتقدم المعلومات الشخصية للمستخدم admin
. تتبع بوضوح تعويض ssl.endpoint.identification.algorithm
المادة لتجنب مشاكل الاتصال، لأن الscript الأولي يضع اسم الجهة المستخدمة للماكينة التي يتم تشغيلها كنقطة الشهادة التي قد لا تكون صحيحة.
أستبدل your_tls_password
بالقيمة الصحيحة، ثم أنقر وإغلاق الملف.
لتأتي هذا الملف إلى الscripts، يمكنك استخدام المادة --command-config
. حاول إنشاء موضوع جديد في المجموعة بواسطة أوامر التالية:
ينبغي أن تنجز الأمر بنجاح:
لتتأكد من أنه تم إنشاؤه، قم بتشغيل جميع المواضيع في المجموعة بواسطة:
سيظهر أن new_topic
موجود:
في هذه المرحلة قمت ب配置 Kafka الخاص بك لاستخدام التشفير TLS للتدخلات وSASL للتحقق مع مزيد من تواليف مع إسم المستخدم وكلمة مرور. سوف تتعلم الآن كيفية تصدير معدات مختلفة من Kafka من خلال JMX باستخدام Prometheus.
الخطوة 3 – مراقبة معدات JMX Kafka باستخدام Prometheus
في هذا القسم ستستخدم بروميثيوس لجمع معدات كافكا وجعلها قابلة للبحث في غرافانا. وهذا يتطلب تعيين مصدر JMX المتعدد لكافكا وربطه ببروميثيوس.
[التوسعات التنظيمية للجافا (JMX) هي إطار توظيفي للتطبيقات الجافايية التي تسمح للمطورين بجمع المعدات العامة والخاصة عن تشغيل التطبيق في تنظيم معين خلال الوقت الحالي. ولأن كافكا مكتوبة بواسطة الجافا، فهي تدعم البروتوكول JMX وتكشف عن معداتها الخاصة من خلاله، مثل حالة المواضيع والمضيفين.
تكييف كافكا وبروميثيوس
قبل أن تستمر، سيتوجب عليك تثبيت بروميثيوس. على آلات Ubuntu، يمكنك استخدام apt
. ويتم تحديث المتاجر بالقيام بتلك الأجراء:
ثم، تثبيت بروميثيوس:
للأنظمة الأخرى، يرجى تتبع التعليمات التعميمية على الموقع الرسمي.
عندما يتم تثبيته، ستحتاج إلى إضافة مكتبة مصدر JMX لـ Prometheus إلى تثبيت Kafka الخاص بك. انتقل إلى صفحة الإصدارات واختر أحدث إصدار يحتوي على javaagent
في الاسم. في وقت كتابتي، كان أحدث الإصدار المتاح هو 0.20.0
. استخدم الأمر التالي لتنزيله إلى الدليل libs/
حيث مثبت Kafka:
ستتم الآن قراءة مكتبة مصدر JMX بواسطة Kafka.
قبل تفعيل المصدر، تحتاج إلى تحديد ما هي المقاييس التي سيتم تقديمها إلى Prometheus، وستخزن هذه الإعدادات في ملف يسمى jmx-exporter.yml
تحت config/
من تثبيت Kafka. يوفر مشروع مصدر JMX تكوين افتراضي مناسب، لذا ا運行 الأمر التالي لتخزينه كـ jmx-exporter.yml
تحت config/
من تثبيت Kafka الخاص بك:
التالي، لتفعيل المصدر، ستحتاج إلى تعديل خدمة Kafka systemd. ستحتاج إلى تعديل المتغير البيئي KAFKA_OPTS
لتشمل المصدر وتكوينه. ا運行 الأمر التالي لتحرير الخدمة:
قم بتعديل سطر Environment
لأن يبدو كما يلي:
هنا، تستخدم جزء -javaagent
لتهيئة مصدر JMX بتكوينه.
احفظ الملف وأغلقه عند انتهائك، ثم أعد تشغيل Kafka باستخدام:
بعد دقيقة، تحقق من تشغيل مصدر JMX عن طريق التحقق مما إذا كان يستخدم المنفذ 7075
:
هذا السطر يظهر أن المنفذ 7075
قيد الاستخدام من قبل عملية Java التي تم إطلاقها بواسطة خدمة Kafka، والتي تشير إلى مصدر JMX.
ستقوم الآن بتكوين Prometheus لمراقبة المقاييس JMX المصادرة. ملف التكوين الرئيسي له موجود في /etc/prometheus/prometheus.yml
، لذا افتحه للتحرير:
ابحث عن الأسطر التالية:
تحت scrape_configs
، الذي يحدد أي نقاط انتها Prometheus يجب مراقبتها، أضف قسمًا جديدًا لاستكشاف مقاييس Kafka:
kafka
作业有一个目标,指向JMX导出器端点。
请记得用你的域名替换 your_domain
,然后保存并关闭文件。接着,运行以下命令重启Prometheus:
在你的浏览器中,导航到你的域的 9090
端口。你将访问Prometheus UI。在 Status 下,点击 Targets 以列出作业:
请注意,Prometheus已经接受了 kafka
作业并开始抓取其指标。现在你将学习如何在Grafana中访问它们。
استعلام مقاييس في جرافانا
كجزء من الشروط الأساسية، لقد قمت بتثبيت جرافانا على حجرتك وتمكنت من عرضها على your_domain
. انتقل إليها في متصفحك، وتحت الاتصالات في الشريط الجانبي، اضغط على إضافة اتصال جديد، ثم أدخل بروميثيوس في حقل البحث.
اضغط على بروميثيوس، ثم انقر على زر إضافة مصدر بيانات جديد في الزاوية السماوية اليمنى. سيطلب منك تعبئة عنوان حالة من بروميثيوس:
أدخل http://your_domain_name:9090
، استبدل باسم النطاق الخاص بك الفعلي، ثم انتقل إلى الأسفل واضغط على حفظ واختبار. يجب أن تتلقى رسالة نجاح:
تم إضافة اتصال بروميثيوس إلى جرافانا. اضغط على استكشاف في الشريط الجانبي، وسيطلب منك اختيار مقياس. يمكنك كتابة kafka_
لإدراج جميع المقاييس ذات الصلة بالمجموعة، كما هو موضح:
على سبيل المثال، اختر مقياس kafka_log_log_size
، الذي يظهر حجم السجل الداخلي على القرص لكل تقسيم، ثم اضغط على تشغيل الاستعلام في الزاوية السماوية اليمنى. سترى الأحجام الناتجة عبر الوقت لكل المواضيع المتاحة:
في هذه الخطوة، قمت بإعداد تصدير مقاييس JMX التي توفرها كافكا وتكوين بروميثيوس لجمعها. ثم، قمت بالاتصال به من خلال جرافانا وتشغيل استعلام على مقاييس كافكا. الآن ستتعلم كيفية إدارة مجموعة كافكا باستخدام واجهة الويب.
الخطوة 4 – إدارة مجموعات كافكا باستخدام AKHQ
في هذه الخطوة، ستتعلم كيفية إعداد واستخدام AKHQ، تطبيق واجهة الويب لإدارة مجموعات كافكا. يتيح لك ذلك الحصول على قائمة وتحرير المواضيع، والأجزاء، ومجموعات المستهلكين ومعاملات الإعداد، بالإضافة إلى إنتاج واستهلاك الرسائل من المواضيع من موقع واحد.
ستخزن البرنامج التنفيذي وتكوينه في دليل يُدعى akhq
. قم بإنشائه في دليل المنزل الخاص بك عن طريق تشغيل:
انتقل إليه:
في متصفحك، اذهب إلى صفحة الإصدارات الرسمية واستنسخ الرابط إلى ملف JAR للإصدار الأحدث. في وقت كتابتي، كانت الإصدار الأحدث هي 0.24.0
. قم بتشغيل الأمر التالي لتنزيله إلى دليل المنزل الخاص بك:
لقد قمت الآن بتنزيل AKHQ، وأنت جاهز لتعريف تكوينه للاتصال بمجموعتك. ستخزن ذلك في ملف يُدعى akhq-config.yml
. قم بإنشائه وفتحه للتعديل عن طريق تشغيل:
أضف الأسطر التالية:
هذه هي تكوين أساسي لـ AKHQ، يحدد مجموعة واحدة عند localhost:9092
مع المعلمات اللازمة لـ SASL و TLS. يتم دعم مجموعات متعددة بشكل متزامن أيضًا لأنك يمكنك تحديد عدداً كبيراً من الاتصالات كما تريد. هذا يجعل AKHQ متعددة الاستخدامات لإدارة Kafka. عند الانتهاء، احفظ الفايل وأغلقه.
ثم، ستحتاج إلى تحديد خدمة systemd
لتشغيل AKHQ في الخلفية. يمكن بدء وإيقاف وإعادة تشغيل خدمات systemd
بشكل متسق.
ستخزن تكوين الخدمة في ملف يحمل الاسم code-server.service
، في الدليل /lib/systemd/system
، حيث يخزن systemd خدماته. أنشئه باستخدام محرر النصوص الخاص بك:
أضف الأسطر التالية:
أولاً تحديد وصف الخدمة. ثم، في قسم [Service]
، تحدد نوع الخدمة (simple
يعني أن الأمر يجب أن يتم تنفيذه ببساطة) وتقدم الأمر الذي سيتم تشغيله. كما تحدد أن المستخدم الذي يتم تشغيله به هو kafka
وأن يتم إعادة تشغيل الخدمة تلقائيًا إذا انتهت.
في قسم [Install]
، تأمر systemd ببدء هذه الخدمة عندما تتمكن من تسجيل الدخول إلى الخادم الخاص بك. احفظ وأغلق الملف عند الانتهاء منه.
حمل تكوين الخدمة عن طريق تشغيل:
ابدأ خدمة AKHQ عن طريق تشغيل الأمر التالي:
ثم، تحقق من أنها بدأت بشكل صحيح عن طريق مراقبة حالتها:
يجب أن يكون الناتج كما يلي:
AKHQ الآن يعمل في الخلفية. بشكل افتراضي، يتم فتحه على المنفذ 8080
. في متصفحك، انتقل إلى عنوان النطاق الخاص بك مع ذلك المنفذ للوصول إليه. سترى العرض الافتراضي، يعرض قائمة المواضيع:
يمكنك النقر المزدوج على الصف المرافق للموضوع في الجدول للوصول إليه والحصول على منظور مفصل:
AKHQ يمكنك من رؤية الرسائل في الموضوع، بالإضافة إلى الأقسام، مجموعات المستهلكين، وتكوينها. يمكنك أيضًا تفريغ الموضوع أو نسخه باستخدام الأزرار في الجانب الأيمن السفلي.
لأن الموضوع new_topic
فارغ، اضغط على الزر إنتاج للموضوع، الذي سيفتح واجهة اختيار المعلمات للرسالة الجديدة:
AKHQ سيملأ اسم الموضوع تلقائيًا لك. في حقل القيمة، أدخل Hello World!
، ثم اضغط على إنتاج. سيتم إرسال الرسالة إلى Kafka، وستراها في تبويب البيانات:
لأن محتوى الرسالة قد يكون كبيرًا جدًا، AKHQ يعرض فقط السطر الأول. لرؤية الرسالة الكاملة، اضغط على المنطقة المظلمة بعد الصف لإكشافها.
في الشريط الجانبي الأيسر، يمكنك أيضًا عرض قائمة المزودين في الكلاستر عن طريق النقر على العقد. حاليًا، يتكون الكلاستر من عقدة واحدة فقط:
النقر المزدوج على عقدة سيفتح تكوينها، مما يمكنك من تغيير أي من الإعدادات عن بُعد:
وبمجرد تمكينك عن التغييرات، يمكنك تطبيقها بالضغط على زر 更新配置 في الأسفل اليمنى. بمثابة المماثلة، يمكنك مشاهدة وتعديل تكوينات أي من المواضيع بالوصول إليها وانتقالإلى لوحة Configs.
في هذا القسم، قمت بإنشاء AKHQ، تطبيق شبكي يوفر واجهة إستخدام سهلة لإدارة ومراقبة نوات Kafka ومواضيعها عن بعد. يسمح لك بإنتاج واستهلاك الرسائل في المواضيع وتحديث ما يتمتع بالمادة التكوينية للمواضيع والنوات بشكل مباشر.
ختام
في هذا التورية، أنت قمت بتأمين تثبيتك الخاص ب Kafka بإعداد TLS للتشفير و SASL للتحقق بواسطة المستخدمين. أيضًا، قمت بإعداد تصدير المؤشرات باستخدام Prometheus وتخيلها في Grafana. بعد ذلك، تعلمت كيفية استخدام AKHQ، تطبيق لإدارة قبالات Kafka.
أخذ المؤلف Apache Software Foundation للتبرع كجزء من برنامج Write for DOnations..
Source:
https://www.digitalocean.com/community/developer-center/how-to-secure-and-monitor-kafka