الانتقال إلى المحتوى الرئيسي
يدعم ClickHouse إدارة التحكم في الوصول استنادًا إلى نموذج RBAC. كيانات الوصول في ClickHouse: يمكنك تهيئة كيانات الوصول باستخدام: نوصي باستخدام سير العمل المعتمد على SQL. تعمل طريقتا التهيئة كلتاهما في الوقت نفسه، لذا إذا كنت تستخدم ملفات تهيئة الخادم لإدارة الحسابات وحقوق الوصول، فيمكنك الانتقال بسلاسة إلى سير العمل المعتمد على SQL.
لا يمكنك إدارة كيان الوصول نفسه باستخدام طريقتَي التهيئة كلتيهما في الوقت نفسه.
إذا كنت تبحث عن إدارة مستخدمي ClickHouse Cloud console، فيُرجى الرجوع إلى هذه الصفحة
لعرض جميع المستخدمين والأدوار وملفات التعريف وما إلى ذلك، وكذلك جميع الامتيازات الممنوحة لها، استخدم عبارة SHOW ACCESS.

نظرة عامة

يوفّر خادم ClickHouse افتراضيًا حساب المستخدم default، ولا يُسمح لهذا الحساب باستخدام التحكم في الوصول وإدارة الحسابات المعتمدَين على SQL، لكنه يملك جميع الحقوق والأذونات. ويُستخدم حساب المستخدم default في كل الحالات التي لا يكون فيها اسم المستخدم محددًا، مثلًا عند تسجيل الدخول من العميل أو في الاستعلامات الموزعة. وفي معالجة الاستعلامات الموزعة، يُستخدم حساب المستخدم default إذا لم يحدّد إعداد الخادم أو العنقود الخاصيتين user and password. إذا كنت قد بدأت للتو في استخدام ClickHouse، فضع في اعتبارك السيناريو التالي:
  1. فعّل التحكم في الوصول وإدارة الحسابات المعتمدَين على SQL للمستخدم default.
  2. سجّل الدخول إلى حساب المستخدم default وأنشئ جميع المستخدمين المطلوبين. ولا تنسَ إنشاء حساب مسؤول (GRANT ALL ON *.* TO admin_user_account WITH GRANT OPTION).
  3. قيّد الأذونات للمستخدم default، وعطّل له التحكم في الوصول وإدارة الحسابات المعتمدَين على SQL.

خصائص الحل الحالي

  • يمكنك منح أذونات لقواعد البيانات والجداول حتى إن لم تكن موجودة.
  • إذا حُذف جدول، فلن تُسحب الامتيازات المرتبطة به. وهذا يعني أنه حتى إذا أنشأت لاحقًا جدولًا جديدًا بالاسم نفسه، فستظل جميع الامتيازات سارية. ولسحب الامتيازات المرتبطة بالجدول المحذوف، عليك تنفيذ الاستعلام REVOKE ALL PRIVILEGES ON db.table FROM ALL، على سبيل المثال.
  • لا توجد إعدادات لمدة صلاحية الامتيازات.

حساب مستخدم

حساب المستخدم هو كيان وصول يتيح تخويل شخص ما في ClickHouse. ويحتوي حساب المستخدم على:
  • معلومات التعريف.
  • الامتيازات التي تحدد نطاق الاستعلامات التي يمكن للمستخدم تنفيذها.
  • المضيفون المسموح لهم بالاتصال بخادم ClickHouse.
  • الأدوار المعيّنة والدور الافتراضي.
  • الإعدادات والقيود المُطبَّقة عليها افتراضيًا عند تسجيل دخول المستخدم.
  • ملفات تعريف الإعدادات المعيّنة.
يمكن منح الامتيازات لحساب مستخدم باستخدام استعلام GRANT أو من خلال تعيين الأدوار. ولسحب الامتيازات من مستخدم، يوفّر ClickHouse استعلام REVOKE. ولسرد امتيازات مستخدم، استخدم العبارة SHOW GRANTS. استعلامات الإدارة:

تطبيق الإعدادات

يمكن تهيئة الإعدادات بطرق مختلفة: لحساب مستخدم، وفي الأدوار الممنوحة له، وفي ملفات تعريف الإعدادات. عند تسجيل دخول المستخدم، إذا كان إعداد ما مهيّأً لكيانات وصول مختلفة، فستُطبَّق قيمة هذا الإعداد وقيوده على النحو التالي (من الأعلى إلى الأدنى أولوية):
  1. إعدادات حساب المستخدم.
  2. إعدادات الأدوار الافتراضية لحساب المستخدم. إذا كان إعداد ما مهيّأً في بعض الأدوار، فسيكون ترتيب تطبيق الإعداد غير محدد.
  3. الإعدادات من ملفات تعريف الإعدادات المعيّنة لمستخدم أو لأدواره الافتراضية. إذا كان إعداد ما مهيّأً في بعض ملفات التعريف، فسيكون ترتيب تطبيق الإعداد غير محدد.
  4. الإعدادات المطبقة على الخادم بأكمله افتراضيًا أو من ملف التعريف الافتراضي.

الدور

الدور هو حاوية لكيانات الوصول يمكن منحها إلى حساب مستخدم. يحتوي الدور على: استعلامات الإدارة: يمكن منح الامتيازات إلى الدور باستخدام استعلام GRANT. ولسحب الامتيازات من دور، يوفّر ClickHouse استعلام REVOKE.

سياسة الصفوف

‏سياسة الصفوف هي عامل تصفية يحدّد الصفوف المتاحة لمستخدم أو Role. وتحتوي سياسة الصفوف على عوامل تصفية لجدول معيّن، بالإضافة إلى قائمة بالأدوار و/أو المستخدمين الذين ينبغي أن تنطبق عليهم سياسة الصفوف هذه.
لا تكون سياسات الصفوف ذات جدوى إلا إذا كانت لديك صلاحية readonly فقط. فإذا كان بإمكانك تعديل table أو نسخ partitions بين tables، فإن ذلك يُلغي القيود التي تفرضها سياسات الصفوف.
استعلامات الإدارة:

ملف تعريف الإعدادات

ملف تعريف الإعدادات هو مجموعة من الإعدادات. ويحتوي على إعدادات وقيود، بالإضافة إلى قائمة بالأدوار و/أو المستخدمين الذين يُطبَّق عليهم هذا الملف. استعلامات الإدارة:

الحصة

تحدّ الحصة من استخدام الموارد. راجع الحصص. تتضمن الحصة مجموعة من الحدود لفترات زمنية معيّنة، بالإضافة إلى قائمة بالأدوار و/أو المستخدمين الذين ينبغي أن يستخدموا هذه الحصة. استعلامات الإدارة:

تمكين التحكم في الوصول وإدارة الحسابات المعتمدين على SQL

  • أنشئ دليلاً لتخزين ملفات التهيئة. يخزّن ClickHouse تهيئات كيانات التحكم في الوصول في المجلد المحدد في مَعلَمة إعداد الخادم access_control_path.
  • فعّل التحكم في الوصول وإدارة الحسابات المعتمدين على SQL لحساب مستخدم واحد على الأقل. يكون التحكم في الوصول وإدارة الحسابات المعتمدان على SQL معطّلين افتراضيًا لجميع المستخدمين. تحتاج إلى تهيئة مستخدم واحد على الأقل في ملف التهيئة users.xml، وتعيين قيم الإعدادات access_management وnamed_collection_control وshow_named_collections وshow_named_collections_secrets إلى 1.

تعريف مستخدمي SQL والأدوار

إذا كنت تستخدم ClickHouse Cloud، فيُرجى الرجوع إلى إدارة الوصول إلى Cloud.
توضح هذه المقالة أساسيات تعريف مستخدمي SQL والأدوار، وتطبيق هذه الامتيازات والأذونات على قواعد البيانات والجداول والصفوف والأعمدة.

تمكين وضع مستخدم SQL

  1. فعِّل وضع مستخدم SQL في ملف users.xml ضمن المستخدم <default>:
المستخدم default هو المستخدم الوحيد الذي يتم إنشاؤه عند إجراء تثبيت جديد، وهو أيضًا الحساب المستخدم افتراضيًا للاتصال بين العقد.في بيئة production، يُنصح بتعطيل هذا المستخدم بعد تهيئة الاتصال بين العقد باستخدام مستخدم SQL مسؤول، وبعد ضبط الاتصال بين العقد باستخدام <secret> وبيانات اعتماد العنقود و/أو بيانات اعتماد بروتوكول HTTP وبروتوكول النقل الخاصة بالاتصال بين العقد، لأن الحساب default يُستخدم لهذا الغرض.
  1. أعد تشغيل العقد لتطبيق التغييرات.
  2. شغِّل عميل ClickHouse:

تعريف المستخدمين

  1. أنشئ حساب مسؤول في SQL:
  2. امنح المستخدم الجديد كامل الصلاحيات الإدارية

أذونات ALTER

تهدف هذه المقالة إلى تزويدك بفهم أوضح لكيفية تحديد الأذونات، وكيف تعمل الأذونات عند استخدام عبارات ALTER للمستخدمين ذوي الامتيازات. تنقسم عبارات ALTER إلى عدة فئات، بعضها هرمي وبعضها الآخر ليس كذلك، ويجب تحديده صراحةً. مثال على إعداد DB وtable وUSER
  1. باستخدام مستخدم Admin، أنشئ مستخدمًا نموذجيًا
  1. أنشئ قاعدة بيانات تجريبية
  1. أنشئ جدولًا للعينة
  1. أنشئ مستخدم مسؤول تجريبيًا لمنح الامتيازات وسحبها
لمنح الأذونات أو سحبها، يجب أن يمتلك المستخدم المسؤول امتياز WITH GRANT OPTION. على سبيل المثال:
لتنفيذ GRANT أو REVOKE للامتيازات، يجب أن يكون المستخدم ممتلكًا لهذه الامتيازات مسبقًا.
منح الامتيازات أو سحبها التسلسل الهرمي لـ ALTER:
  1. منح امتيازات ALTER لمستخدم أو دور
إن استخدام GRANT ALTER on *.* TO my_user يؤثر فقط في أوامر ALTER TABLE وALTER VIEW على المستوى الأعلى، أما عبارات ALTER الأخرى فيجب منحها أو revokeها بشكل منفصل. على سبيل المثال، منح امتياز ALTER الأساسي:
مجموعة الامتيازات الناتجة:
سيؤدي ذلك إلى منح جميع الأذونات ضمن ALTER TABLE وALTER VIEW في المثال أعلاه، لكنه لن يمنح بعض أذونات ALTER الأخرى مثل ALTER ROW POLICY (ارجع إلى التسلسل الهرمي وسترى أن ALTER ROW POLICY ليس تابعًا لـ ALTER TABLE أو ALTER VIEW). ويجب منح هذه الأذونات أو إلغاؤها صراحةً. إذا كانت هناك حاجة إلى مجموعة فرعية فقط من أذونات ALTER، فيمكن منح كل إذن منها بشكل منفصل، وإذا كانت لذلك الإذن امتيازات فرعية فستُمنح تلقائيًا أيضًا. على سبيل المثال:
تُعيَّن الامتيازات كما يلي:
يمنح هذا أيضاً الصلاحيات الفرعية التالية:
  1. إلغاء امتيازات ALTER من المستخدمين والأدوار
تعمل عبارة REVOKE بطريقة مشابهة لعبارة GRANT. إذا مُنح مستخدم/دور صلاحيةً فرعية، فيمكنك إما سحب تلك الصلاحية الفرعية مباشرةً، أو سحب الصلاحية ذات المستوى الأعلى التي تنبثق منها. على سبيل المثال، إذا مُنحت للمستخدم صلاحية ALTER ADD COLUMN
يمكن إلغاء الصلاحية بشكل منفرد:
أو يمكن سحبها من أيٍّ من المستويات الأعلى (سحب جميع الصلاحيات الفرعية لـ COLUMN):
إضافي يجب أن تُمنح الصلاحيات من قِبَل مستخدم يمتلك WITH GRANT OPTION والصلاحيات ذاتها في آنٍ واحد.
  1. لمنح مستخدم Admin صلاحيةً، والسماح له أيضًا بإدارة مجموعة من الصلاحيات فيما يلي مثال:
يمكن للمستخدم الآن منح أو سحب ALTER COLUMN وجميع الامتيازات الفرعية. الاختبار
  1. أضِف امتياز SELECT
  1. أضِف للمستخدم امتياز إضافة عمود
  1. سجّل الدخول باستخدام المستخدم محدود الصلاحيات
  1. اختبر إضافة عمود
  1. اختبر حذف عمود
  1. اختبار alter admin من خلال منح هذا الإذن
  1. سجّل الدخول باستخدام حساب المستخدم alter admin
  1. امنح امتيازًا فرعيًا
  1. اختبر منح امتياز لا يملكه مستخدم alter admin، وليس امتيازًا فرعيًا ضمن الامتيازات الممنوحة لمستخدم admin.
الملخص تتبع امتيازات ALTER بنية هرمية عند استخدام ALTER مع الجداول والعروض، لكنها لا تكون كذلك مع تعليمات ALTER الأخرى. يمكن تعيين الأذونات على مستوى تفصيلي أو عبر تجميع الأذونات، كما يمكن سحبها بالطريقة نفسها. يجب أن يمتلك المستخدم الذي يمنح الامتيازات أو يسحبها WITH GRANT OPTION لكي يعيّن الامتيازات للمستخدمين، بما في ذلك المستخدم المنفّذ نفسه، ويجب أيضًا أن يكون الامتياز نفسه ممنوحًا له مسبقًا. ولا يمكن للمستخدم المنفّذ سحب امتيازاته الخاصة إذا لم يكن يمتلك بنفسه امتياز WITH GRANT OPTION.
آخر تعديل في ١ يوليو ٢٠٢٦