ماهية جلسة الدعم
- بوابة الجلسة، وهي واجهة برمجة تطبيقات موثّقة مضمّنة في troubleshooter، تتضمن نقاط النهاية
enableوdisableوstatus. يتطلب كل استدعاء للبوابة رمز معرّف OIDC قصير العمر، على أن يكون بريده الإلكتروني مدرجًا في قائمة السماح للمشغّلين لديك. - ملف الجلسة المحلي في عمليات التثبيت على أجهزة Linux VM، ويُكتب مباشرةً على المضيف باستخدام صلاحيات root.
kubectl port-forward (يمر النفق عبر TLS الخاص بخادم API) أو عبر Ingress ينهي TLS باستخدام شهادة صادرة عن CA.
تختار سياسة جلستك، بما في ذلك قائمة السماح للمشغّلين، أثناء clicklink clctl init.
تمكين الجلسات وتعطيلها
- Kubernetes
- Linux VM
تستمع البوابة على المنفذ 8443 في حاوية pod الخاصة بـ troubleshooter. إذا كان لديك وصول إلى الكتلة، فصِل إليها عبر إعادة توجيه المنفذ؛ إذ يمر النفق عبر TLS الخاص بخادم API في Kubernetes:بعد ذلك، في طرفية أخرى، فعّل جلسة:تحقّق من حالتها أو أنهِها بالطريقة نفسها:يجب أن تكون هوية OIDC الخاصة بالمستدعي ضمن قائمة السماح للمشغّل؛ إذ يتلقى المستدعون غير المصادَق عليهم أو غير المدرجين استجابة 401 أو 403، وتُسجَّل المحاولة. إذا كنت تفضّل عدم اشتراط بيانات اعتماد الكتلة، فيمكن لـ chart إتاحة البوابة عبر Ingress اختياري ينهي TLS باستخدام شهادة صادرة عن CA؛ راجع الإعدادات.
انتهاء صلاحية الجلسة
session enable --duration ضبط أي مدة تصل إلى 24 ساعة. عند انتهاء صلاحية الجلسة أو فور تشغيل session disable، تتوقف أداة troubleshooter عن قبول الأوامر. تعطيل الجلسة هو مسار الإلغاء الفوري: لا يتطلب إعادة تشغيل أو تنسيقًا مع ClickHouse.
قائمة السماح بالمشغّلين
- Kubernetes: اضبط
clctl.gateway.allowedOperatorsفي طبقة values الخاصة بك. تُضمَّن القائمة في ConfigMap تعيد البوابة قراءته كل 30 ثانية، لذا يؤدي تغيير values وتشغيلhelm upgradeإلى تدوير قائمة السماح دون إعادة تشغيل pod. - Linux VM: توجد قائمة السماح في
/etc/clicklink/allowed-operators.txt، ويكتبهاclicklink clctl initباستخدام عناوين البريد الإلكتروني للمشغّلين التي توفرها.
ما يمكن للمشغّلين فعله أثناء الجلسة
- استعلامات SQL للقراءة فقط على مجموعاتك باستخدام المستخدم
pcm_troubleshooter، والمقيّد بقائمة سماح صريحة للجداول. تشمل قائمة السماح الافتراضية جداولsystemفي ClickHouse، مثلsystem.partsوsystem.mergesوsystem.replicasوsystem.metricsوsystem.settings؛ بينما يُحظر الوصول إلىsystem.query_logوsystem.text_logدون أي استثناء، لذا لا يغادر سجل الاستعلامات مطلقًا. تشمل قائمة السماح الافتراضية أيضًاsystem.processes، حيث يعرض العمودqueryنص العبارات التي تكون قيد التنفيذ في تلك اللحظة؛ أزِله من قائمة سماح جداول الجلسة (troubleshooter.allowedTablesفي تراكب Helm، وtroubleshooter.allowed_tablesفي ملف تهيئة VM) إذا كان يجب ألا يظهر نص الاستعلامات المباشرة مطلقًا خلال أي جلسة. لا يملك المستخدم سوى صلاحياتSELECTعلى مستوى كل جدول، ولا يملك أي صلاحيات للكتابة أو DDL أو الإدارة. - طرق عرض Kubernetes للقراءة فقط على كل عملية نشر تم توفيرها (ترتبط حزم الوصول بحسابات خدمة Kubernetes على كلا هدفي التثبيت): الأوامر
getوlistوwatchعلى pods وسجلات pods والخدمات وconfigmaps والأحداث وPersistentVolumeClaims وعمليات النشر وstatefulsets وreplicasets في مساحات الأسماء الممنوحة. ومن دون حزمة تم توفيرها، يرفض troubleshooter أوامر من نوع kubectl تمامًا.
exec أو delete أو patch، لذا لا يمكن للمشغّلين فتح shell داخل pods لديك أو تغيير أي شيء عبر الموصل. تتوفر القائمة الكاملة للصلاحيات وRBAC في مرجع نموذج الامتيازات.
سجل التدقيق
/var/log/clicklink/troubleshoot-audit.log على شكل كائن JSON واحد في كل سطر (NDJSON). يسجّل الحقل submitted_by الهوية المرتبطة بكل إدخال، ويعتمد ذلك على مصدر الإدخال: إذ تتضمن استدعاءات البوابة البريد الإلكتروني الذي يؤكده الرمز المميز المتحقق منه، وليس قيمة يقدّمها العميل مطلقًا؛ وتسجّل تغييرات الجلسة التي تُجرى محليًا على جهاز VM مستخدم المضيف الذي استدعاها؛ بينما تسجّل الأوامر المنفذة أثناء الجلسة هوية المؤسسة المنقولة عبر قناة الأوامر المُصادَق عليها. يبدو إدخال تمكين جلسة عبر البوابة كما يلي:
clctl.session.enable وclctl.session.disable وclctl.session.status، ويُسجَّل الخيار --reason عند التفعيل بوصفه command_text؛ كما تُسجَّل الأوامر التي تُنفَّذ أثناء الجلسة بالمخطط نفسه. يميّز status بين الاستدعاءات الناجحة ومحاولات unauthorized وforbidden وrate_limited، لذا يظهر الوصول المرفوض في السجل أيضًا.
على جهاز افتراضي، اقرأ الملف مباشرةً باستخدام clicklink clctl troubleshoot audit tail. في Kubernetes، يوجد السجل داخل pod أداة troubleshooter، ولا تحتوي صورة الحاوية على shell، لذا استدعِ القارئ المدمج في الملف التنفيذي عبر kubectl exec:
إخفاء المعلومات الحساسة
/etc/clicklink/redaction-patterns.yaml؛ ويستبدل الإدخال الذي يحمل الاسم نفسه لنمط مضمّن ذلك النمط. يرفض البرنامج الخفي بدء التشغيل إذا كان ملف الأنماط غير صالح، ويتحقق clicklink clctl preflight منه، لذا يفشل إعداد إخفاء المعلومات الحساسة المعطّل بشكل واضح بدلًا من تمرير البيانات بصمت.
- المعمارية: جميع الاتصالات التي ينشئها الموصل وتدفق البيانات المرتبط بالجلسات.
- التهيئة: إعدادات البوابة وقائمة السماح وإخفاء المعلومات الحساسة.
- الأسئلة الشائعة: أسئلة موجزة حول الإلغاء والتدقيق وخروج البيانات.