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

المستخدم المسؤول

تتضمن خدمات ClickHouse Cloud مستخدمًا مسؤولًا باسم default يُنشأ عند إنشاء الخدمة. وتُحدَّد كلمة المرور عند إنشاء الخدمة، ويمكن لمستخدمي ClickHouse Cloud الذين لديهم دور Admin إعادة تعيينها. عند إضافة مستخدمين إضافيين لـ SQL إلى خدمة ClickHouse Cloud الخاصة بك، فسيحتاجون إلى اسم مستخدم وكلمة مرور لـ SQL. وإذا أردت منحهم امتيازات بمستوى إداري، فعيّن للمستخدمين الجدد الدور default_role. على سبيل المثال، لإضافة المستخدم clickhouse_admin:
عند استخدام SQL Console، لن تُنفَّذ عبارات SQL الخاصة بك باسم المستخدم default. وبدلًا من ذلك، ستُنفَّذ هذه العبارات باسم مستخدم يُسمّى sql-console:${cloud_login_email}، حيث يشير cloud_login_email إلى البريد الإلكتروني للمستخدم الذي يُشغّل الاستعلام حاليًا.يكون لدى مستخدمي SQL Console الذين يُنشَؤون تلقائيًا الدور default.

المصادقة بدون كلمة مرور

يتوفر دوران في SQL Console: sql_console_admin بأذونات مطابقة لـ default_role، وsql_console_read_only بأذونات للقراءة فقط. يُسنَد الدور sql_console_admin إلى مستخدمي Admin افتراضيًا، لذا لا يتغير شيء بالنسبة إليهم. ومع ذلك، يتيح الدور sql_console_read_only منح المستخدمين غير المشرفين حق وصول للقراءة فقط أو حق وصول كامل إلى أي مثيل. ويجب على مستخدم Admin تهيئة هذا الوصول. ويمكن تعديل الأدوار باستخدام الأمرين GRANT وREVOKE لتلائم متطلبات كل مثيل بشكل أفضل، كما ستُحفَظ أي تعديلات تُجرى على هذه الأدوار.

التحكم الدقيق في الوصول

يمكن أيضًا تهيئة وظيفة التحكم في الوصول هذه يدويًا بدقة على مستوى كل مستخدم. قبل إسناد أدوار sql_console_* الجديدة إلى المستخدمين، يجب إنشاء أدوار قاعدة البيانات الخاصة بمستخدمي SQL Console التي تطابق مساحة الاسم sql-console-role:<email>. على سبيل المثال:
عند اكتشاف دور مطابق، سيُسنَد إلى المستخدم بدلًا من الأدوار الافتراضية الجاهزة. يتيح ذلك إعدادات أكثر تعقيدًا للتحكم في الوصول، مثل إنشاء أدوار مثل sql_console_sa_role وsql_console_pm_role، ومنحها لمستخدمين محددين. على سبيل المثال:

اختبر امتيازات المسؤول

سجّل الخروج من المستخدم default ثم سجّل الدخول مرة أخرى باستخدام المستخدم clickhouse_admin. يجب أن ينجح كل ما يلي:

المستخدمون غير المشرفين

يجب أن يمتلك المستخدمون الامتيازات اللازمة، وألا يكونوا جميعًا من مستخدمي مسؤول. ويعرض باقي هذا المستند سيناريوهات توضيحية والأدوار المطلوبة.

التحضير

أنشئ الجداول والمستخدمين التالية لاستخدامها في الأمثلة.

إنشاء قاعدة بيانات وجدول وصفوف تجريبية

1

إنشاء قاعدة بيانات اختبار

2

إنشاء جدول

3

إدراج صفوف تجريبية في الجدول

4

التحقق من الجدول

استعلام
الاستجابة
5

إنشاء column_user

أنشئ مستخدمًا عاديًا سيُستخدم لتوضيح تقييد الوصول إلى أعمدة معيّنة:
6

إنشاء row_user

أنشئ مستخدمًا عاديًا سيُستخدم لتوضيح تقييد الوصول إلى الصفوف ذات القيم المعيّنة:

إنشاء الأدوار

باستخدام هذه المجموعة من الأمثلة:
  • سيتم إنشاء أدوار لامتيازات مختلفة، مثل الأعمدة والصفوف
  • سيتم منح الامتيازات لهذه الأدوار
  • سيتم إسناد المستخدمين إلى كل دور
تُستخدم الأدوار لتحديد مجموعات من المستخدمين ذوي امتيازات معيّنة، بدلًا من إدارة كل مستخدم على حدة.
1

أنشئ دورًا لتقييد مستخدمي هذا الدور بحيث لا يمكنهم رؤية سوى column1 في قاعدة البيانات db1 والجدول table1:

2

اضبط الامتيازات للسماح بعرض column1

3

أضف المستخدم column_user إلى الدور column1_users

4

أنشئ دورًا لتقييد مستخدمي هذا الدور بحيث لا يمكنهم رؤية إلا الصفوف المحددة، وفي هذه الحالة الصفوف التي تحتوي على A في column1 فقط

5

أضف row_user إلى الدور A_rows_users

6

أنشئ سياسة للسماح بعرض الصفوف التي تكون فيها قيمة column1 هي A فقط

7

اضبط امتيازات قاعدة البيانات والجدول

8

امنح أذونات صريحة للأدوار الأخرى حتى تظل قادرة على الوصول إلى جميع الصفوف

عند ربط سياسة بجدول، سيطبّق النظام هذه السياسة، ولن يتمكن من تنفيذ عمليات على الجدول إلا المستخدمون والأدوار المحددون فيها، بينما سيُمنع جميع الآخرين من تنفيذ أي عمليات. ولكي لا تُطبَّق سياسة الصفوف التقييدية على المستخدمين الآخرين، يجب تعريف سياسة أخرى تسمح للمستخدمين والأدوار الآخرين بالحصول على وصول عادي أو أنواع أخرى من الوصول.

التحقق

اختبار امتيازات الدور باستخدام مستخدم مقيّد بالأعمدة

1

سجّل الدخول إلى عميل ClickHouse باستخدام المستخدم clickhouse_admin

2

تحقّق من إمكانية الوصول إلى قاعدة البيانات والجدول وجميع الصفوف باستخدام المستخدم المسؤول.

3

سجّل الدخول إلى عميل ClickHouse باستخدام المستخدم column_user

4

اختبر SELECT باستخدام جميع الأعمدة

تم رفض الوصول لأن جميع الأعمدة طُلبت، بينما يملك المستخدم حق الوصول فقط إلى id وcolumn1
5

تحقّق من استعلام SELECT باستخدام الأعمدة المحددة والمسموح بها فقط:

اختبار امتيازات الدور باستخدام مستخدم مقيَّد على مستوى الصفوف

1

سجّل الدخول إلى عميل ClickHouse باستخدام row_user

2

اعرض الصفوف المتاحة

تحقّق من أنه لا يتم إرجاع سوى الصفَّين أعلاه، ويجب استبعاد الصفوف التي تحتوي على القيمة B في column1.

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

يمكن إسناد عدة أدوار إلى المستخدم للحصول على مجموعة الامتيازات المطلوبة. وعند استخدام عدة أدوار، يجمع النظام بينها لتحديد الامتيازات، بحيث تكون أذونات الأدوار في المحصلة تراكمية. على سبيل المثال، إذا كان role1 يتيح فقط تنفيذ SELECT على column1 وكان role2 يتيح تنفيذ SELECT على column1 وcolumn2، فسيكون لدى المستخدم حق الوصول إلى كلا العمودين.
1

باستخدام حساب مسؤول، أنشئ مستخدمًا جديدًا لتقييد الوصول حسب الصف والعمود مع أدوار افتراضية

2

أزل الامتيازات السابقة من الدور A_rows_users

3

اسمح للدور A_row_users بتنفيذ SELECT على column1 فقط

4

سجّل الدخول إلى عميل ClickHouse باستخدام row_and_column_user

5

اختبر باستخدام جميع الأعمدة:

6

اختبر باستخدام الأعمدة المسموح بها فقط:

استكشاف الأخطاء وإصلاحها

قد تتداخل الامتيازات أو تجتمع أحيانًا فتؤدي إلى نتائج غير متوقعة، ويمكن استخدام الأوامر التالية لحصر المشكلة باستخدام حساب مسؤول

عرض الامتيازات والأدوار الخاصة بمستخدم

عرض الأدوار في ClickHouse

عرض السياسات

الاطلاع على كيفية تعريف سياسة ما والامتيازات الحالية

أوامر نموذجية لإدارة الأدوار والسياسات والمستخدمين

تُستخدم الأوامر التالية من أجل:
  • حذف الامتيازات
  • حذف السياسات
  • إلغاء تعيين المستخدمين من الأدوار
  • حذف المستخدمين والأدوار
نفّذ هذه الأوامر باستخدام مستخدم مسؤول أو المستخدم default

سحب امتياز من دور

حذف سياسة

إزالة مستخدم من دور

حذف دور

حذف مستخدم

الملخص

استعرضت هذه المقالة أساسيات إنشاء مستخدمي SQL والأدوار، وقدّمت خطوات لتعيين الامتيازات للمستخدمين والأدوار وتعديلها. ولمزيد من التفاصيل حول كل منها، يُرجى الرجوع إلى أدلة المستخدم والوثائق المرجعية لدينا.
آخر تعديل في ٣ يوليو ٢٠٢٦