الانتقال إلى المحتوى الرئيسي
لا تسري هذه الصفحة على ClickHouse Cloud. ويُنفَّذ الإجراء الموضَّح هنا تلقائيًا في خدمات ClickHouse Cloud.
يوفّر هذا الدليل إعدادات بسيطة ومحدودة لتهيئة ClickHouse لاستخدام شهادات OpenSSL للتحقق من صحة الاتصالات. ولأغراض هذا العرض التوضيحي، تُنشأ شهادة ومفتاح لمرجع شهادات (CA) موقَّعين ذاتيًا، إلى جانب شهادات للعُقد، بحيث يمكن إنشاء الاتصالات باستخدام الإعدادات المناسبة.
يُعد تنفيذ TLS معقدًا، وهناك العديد من الخيارات التي ينبغي مراعاتها لضمان نشر آمن ومتين بالكامل. هذا دليل عملي أساسي يتضمن أمثلة أساسية على تهيئة TLS. استشر فريق PKI/الأمن لديك لإنشاء الشهادات الصحيحة لمؤسستك.راجع هذا الدليل العملي الأساسي حول استخدام الشهادات للحصول على نظرة عامة تمهيدية.
1

إنشاء عملية نشر لـ ClickHouse

أُعدّ هذا الدليل باستخدام Ubuntu 20.04، وتم تثبيت ClickHouse على المضيفات التالية باستخدام حزمة DEB (عبر apt). اسم النطاق هو marsnet.local:
راجع البدء السريع لمزيد من التفاصيل حول كيفية تثبيت ClickHouse.
2

أنشئ شهادات TLS

يُستخدم الاعتماد على الشهادات الموقَّعة ذاتيًا لأغراض العرض التوضيحي فقط، ولا ينبغي استخدامها في بيئة الإنتاج. يجب إنشاء طلبات الشهادات بحيث تُوقَّع من المؤسسة ويجري التحقق منها باستخدام سلسلة CA التي ستُضبط في الإعدادات. ومع ذلك، يمكن استخدام هذه الخطوات لتهيئة الإعدادات واختبارها، ثم استبدالها بالشهادات الفعلية التي ستُستخدم.
  1. أنشئ مفتاحًا سيُستخدم لمرجع CA الجديد:
  2. أنشئ شهادة CA جديدة موقَّعة ذاتيًا. سينشئ الأمر التالي شهادة جديدة ستُستخدم لتوقيع شهادات أخرى باستخدام مفتاح CA:
احفظ نسخة احتياطية من المفتاح وشهادة CA في موقع آمن خارج العنقود. بعد إنشاء شهادات العُقد، يجب حذف المفتاح من عُقد العنقود.
  1. تحقّق من محتويات شهادة CA الجديدة:
  2. أنشئ طلب شهادة (CSR) وولِّد مفتاحًا لكل عقدة:
  3. باستخدام CSR وCA، أنشئ أزواجًا جديدة من الشهادات والمفاتيح:
  4. تحقّق من الشهادات من حيث subject وissuer:
  5. تأكّد من إمكانية التحقق من الشهادات الجديدة باستخدام شهادة CA:
3

أنشئ واضبط دليلاً لتخزين الشهادات والمفاتيح.

يجب تنفيذ ذلك على كل عقدة. استخدم الشهادات والمفاتيح المناسبة على كل مضيف.
  1. أنشئ مجلدًا داخل دليل يمكن لـ ClickHouse الوصول إليه على كل عقدة. نوصي باستخدام دليل الإعدادات الافتراضي (مثل /etc/clickhouse-server):
  2. انسخ شهادة CA وشهادة العقدة والمفتاح الخاص المقابل لكل عقدة إلى دليل certs الجديد.
  3. حدّث المالك والأذونات للسماح لـ ClickHouse بقراءة الشهادات:
4

تهيئة البيئة بمجموعات أساسية باستخدام ClickHouse Keeper

في بيئة النشر هذه، تُستخدم إعدادات ClickHouse Keeper التالية في كل عقدة. سيكون لكل خادم معرّفه الخاص <server_id>. (مثلاً، <server_id>1</server_id> للعقدة chnode1، وهكذا دواليك.)
المنفذ الموصى به لـ ClickHouse Keeper هو 9281. ومع ذلك، يمكن تهيئة هذا المنفذ وتعيينه إلى قيمة أخرى إذا كان مستخدمًا بالفعل من قِبل تطبيق آخر في البيئة.للحصول على شرح كامل لجميع الخيارات، تفضّل بزيارة https://clickhouse.com/docs/operations/clickhouse-keeper/
  1. أضف ما يلي ضمن الوسم <clickhouse> في ملف config.xml الخاص بخادم ClickHouse
بالنسبة إلى بيئات الإنتاج، يُوصى باستخدام ملف إعدادات منفصل بصيغة .xml في الدليل config.d. لمزيد من المعلومات، يُرجى زيارة https://clickhouse.com/docs/operations/configuration-files/
عندما يكون ClickHouse Keeper مضمّنًا في ClickHouse server (كما هو موضح أعلاه)، فإنه يستخدم إعداد OpenSSL الخاص بالخادم والمُعرَّف في قسم OpenSSL ضمن تهيئة واجهات TLS على عقد ClickHouse. وإذا كنت تُشغّل ClickHouse Keeper كعملية مستقلة، فيجب إضافة قسم <openSSL> إلى ملف إعداد Keeper مع إعدادات شهادة CA وشهادة/مفتاح العقدة نفسها. راجع تهيئة OpenSSL لـ ClickHouse Keeper المستقل أدناه لمزيد من التفاصيل.
  1. قم بإلغاء التعليق وتحديث إعدادات Keeper على جميع العُقد، ثم اضبط العلامة <secure> على 1:
  2. حدِّث وأضِف إعدادات العنقود التالية إلى chnode1 وchnode2. سيُستخدم chnode3 لاستكمال النصاب لـ ClickHouse Keeper.
في هذا الإعداد، تم تكوين cluster مثالي واحد فقط. يجب إما إزالة عناقيد الاختبار النموذجية، أو تحويلها إلى تعليقات، أو إذا كان هناك cluster موجود بالفعل قيد الاختبار، فيجب تحديث المنفذ وإضافة الخيار <secure>. ويجب تعيين <user و<password> إذا كان المستخدم default قد جرى تكوينه في الأصل بكلمة مرور أثناء التثبيت أو في ملف users.xml.
يُنشئ ما يلي مجموعةً (cluster) بنسخة مكررة (replica) واحدة لكل شريحة (shard) موزَّعة على خادمَين (خادم على كل عقدة).
  1. حدّد قيم الماكرو لتتمكن من إنشاء جدول ReplicatedMergeTree للاختبار. على chnode1:
    على العقدة chnode2:
5

تكوين واجهات TLS على عُقد ClickHouse

تُكوَّن الإعدادات التالية في ملف config.xml الخاص بخادم ClickHouse
  1. عيّن اسم العرض لعملية النشر (اختياري):
  2. اضبط ClickHouse للاستماع على المنافذ الخارجية:
  3. كوّن منفذ https وعطّل منفذ http على كل عقدة:
  4. كوّن منفذ TCP الآمن لـ ClickHouse Native وعطّل المنفذ الافتراضي غير الآمن على كل عقدة:
  5. كوّن منفذ interserver https وعطّل المنفذ الافتراضي غير الآمن على كل عقدة:
  6. كوّن OpenSSL باستخدام الشهادات والمسارات
يجب تحديث كل اسم ملف ومسار ليتطابقا مع العقدة التي يُجرى تكوينهما عليها. على سبيل المثال، حدّث قيمة <certificateFile> إلى chnode2.crt عند التكوين على المضيف chnode2.
لمزيد من المعلومات، تفضّل بزيارة هذه الصفحة
  1. اضبط TLS لـ gRPC على كل عقدة:
    لمزيد من المعلومات، تفضّل بزيارة https://clickhouse.com/docs/interfaces/grpc/
  2. اضبط clickhouse client على عقدة واحدة على الأقل لاستخدام TLS في الاتصالات ضمن ملف config.xml الخاص به (يوجد افتراضيًا في /etc/clickhouse-client/):
  3. عطّل منافذ المحاكاة الافتراضية لكلٍّ من MySQL وPostgreSQL:
6

الاختبار

  1. شغِّل جميع العقد، واحدةً تلو الأخرى:
  2. تأكّد من أن المنافذ الآمنة تعمل وفي وضع الاستماع، ويجب أن يكون الإخراج مشابهًا لهذا المثال على كل عقدة:
  3. تحقق من حالة ClickHouse Keeper لن تعمل أوامر الأحرف الأربعة (4lW) المعتادة باستخدام echo بدون TLS، وإليك كيفية استخدام هذه الأوامر مع openssl.
    • ابدأ جلسة تفاعلية باستخدام openssl
  • أرسِل أوامر 4LW ضمن جلسة OpenSSL
  1. شغِّل عميل ClickHouse باستخدام الخيار --secure ومنفذ TLS:
  2. سجّل الدخول إلى واجهة Play عبر واجهة https على https://chnode1.marsnet.local:8443/play.
سيعرض المتصفح شهادةً غير موثوق بها، لأن الوصول إليه يتم من محطة عمل ولأن الشهادات غير موجودة في مخازن شهادات CA الجذرية على جهاز العميل. عند استخدام شهادات صادرة عن جهة عامة أو عن CA مؤسسية، ينبغي أن تظهر على أنها موثوق بها.
  1. أنشئ جدولًا مكرّرًا:
  2. أضِف صفّين إلى chnode1:
  3. تحقق من النسخ المتماثل من خلال عرض الصفوف على chnode2:

تهيئة OpenSSL لـ ClickHouse Keeper المستقل

عند تشغيل ClickHouse Keeper كعملية مستقلة (بدلاً من تضمينه داخل ClickHouse server)، يجب تهيئة شهادات OpenSSL وإعداداته بشكل منفصل في ملف تهيئة Keeper. ومن دون ذلك، لن يتمكن Keeper من إنشاء اتصالات آمنة لاتصال العميل (tcp_port_secure) أو لتنفيذ تكرار Raft بين عُقد Keeper. أضف قسم <openSSL> التالي إلى ملف تهيئة ClickHouse Keeper المستقل على كل عقدة:
يجب تحديث كل اسم ملف بحيث يطابق العقدة التي تُجرى عليها التهيئة. على سبيل المثال، حدِّث الإدخال <certificateFile> ليكون chnode2.crt عند التهيئة على المضيف chnode2.
يُستخدم القسم <server> لاستقبال اتصالات العملاء الواردة عبر منفذ Keeper الآمن (tcp_port_secure). ويُستخدم القسم <client> للاتصالات الصادرة بين عُقد Keeper أثناء النسخ المتماثل باستخدام Raft.
تستخدم مسارات الشهادات أعلاه ‎/etc/clickhouse-keeper/certs/‎، وهو المسار المعتاد لتثبيتات Keeper المستقلة. إذا ثبّتَّ Keeper في مسار مختلف، فعدّل ذلك وفقًا لذلك. أمّا الشهادات نفسها فهي نفسها التي أُنشئت في الخطوة 2.

أوضاع التحقق في OpenSSL ومعالِجات الشهادات

يوفّر الإعداد <openSSL> عدة خيارات لكلٍّ من <verificationMode> و<invalidCertificateHandler>، تتحكّم في الطريقة التي يتحقق بها ClickHouse من شهادات TLS. وتنطبق هذه الإعدادات على clickhouse-server وclickhouse-client وClickHouse Keeper المستقل.

أوضاع التحقق

اضبط <verificationMode> داخل القسم <server> أو <client> في <openSSL>:

معالجات الشهادات غير الصالحة

عيّن <invalidCertificateHandler> داخل القسم <server> أو <client> ضمن <openSSL>. يحدّد هذا المعالج ما يحدث عند فشل التحقق من الشهادة. على جانب الخادم، يتحكم في كيفية التعامل مع شهادات العميل غير الصالحة. وعلى جانب العميل، يتحكم في كيفية التعامل مع شهادات الخادم غير الصالحة.

مثال: تعطيل التحقق من الشهادة

يؤدي تعطيل التحقق من الشهادة إلى إزالة عمليات التحقق من هوية TLS ويعرّض الاتصالات لهجمات الرجل في الوسط. استخدم هذا الإعداد فقط في بيئات التطوير أو الاختبار المعزولة.
لتجاوز التحقق من الشهادة بالكامل (على سبيل المثال، عند استخدام شهادات موقّعة ذاتيًا في بيئة اختبار)، اضبط verificationMode على none واستخدم AcceptCertificateHandler. بالنسبة إلى clickhouse-client، يمكنك أيضًا استخدام الخيار --accept-invalid-certificate في واجهة سطر الأوامر، والذي يطبّق كلا الإعدادين تلقائيًا. clickhouse-client (/etc/clickhouse-client/config.xml):
clickhouse-server (config.xml أو ملف في config.d/). لا يزال قسم <server> يتطلب مسارات الشهادة والمفتاح الخاص، لأن الخادم يجب أن يقدّم شهادته الخاصة إلى العملاء، حتى عندما لا يتحقق من شهاداتهم:
ClickHouse Keeper المستقل (ملف تهيئة Keeper):

الملخص

ركّزت هذه المقالة على إعداد بيئة ClickHouse باستخدام TLS. ستختلف الإعدادات بحسب المتطلبات في بيئات الإنتاج؛ فعلى سبيل المثال، مستويات التحقق من الشهادات، والبروتوكولات، وخوارزميات التشفير، وغيرها. لكن ينبغي أن تكون لديك الآن فكرة واضحة عن الخطوات اللازمة لتهيئة الاتصالات الآمنة وتنفيذها.
آخر تعديل في ٢٩ يونيو ٢٠٢٦