Skip to main content
عند تشغيل SET ROLE في ClickHouse Cloud SQL Console، قد يبدو أن الدور يتغير لاستعلام واحد ثم يعود إلى حالته السابقة في الاستعلام التالي. استخدم دور SQL Console مخصصًا لكل مستخدم عندما تحتاج الأذونات إلى الاستمرار عبر الاستعلامات والجلسات.

الأعراض

قد تلاحظ واحدًا أو أكثر مما يلي:
  • بعد تشغيل SET ROLE sql_console_developer، تستمر الاستعلامات اللاحقة في التنفيذ باستخدام sql_console_read_only.
  • تختلف نتائج currentRoles وenabledRoles وdefaultRoles من استعلام إلى آخر.
  • لا يؤدي تشغيل SET ROLE مع استعلام آخر إلى الاحتفاظ بالدور المحدد باستمرار.
  • يعرض SHOW GRANTS الأدوار المتوقعة، لكن أذوناتها غير مفعّلة.
يمكنك فحص المستخدم الحالي والأدوار باستخدام:

سبب حدوث ذلك

ترسل SQL Console الاستعلامات عبر اتصالات HTTP عديمة الحالة إلى خدمة ClickHouse Cloud تضم عدة نُسخ متماثلة. ولا يُضمن أن تستخدم الاستعلامات المتتالية الاتصال نفسه أو النسخة المتماثلة نفسها. يغيّر SET ROLE الأدوار المفعّلة للجلسة الحالية، لكنه لا يحفظ حالة الجلسة هذه لطلبات SQL Console اللاحقة. لذلك، قد يُنفَّذ استعلام لاحق من دون الدور الذي فعّله طلب سابق. لهذا السبب، لا تستخدم SET ROLE كآلية دائمة للتحكم في الوصول في SQL Console.

آلية عمل أدوار مستخدمي SQL Console

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

تهيئة الأذونات الدائمة

نفّذ العبارات التالية بصفتك مستخدمًا لديه امتيازات إدارية على الخدمة، مثل مستخدم SQL Console لديه دور sql_console_admin أو مستخدم آخر لديه امتياز ACCESS MANAGEMENT.
1

إنشاء الدور المخصص

ينشئ المثال التالي دورًا مخصصًا باسم sql_console_developer ويمنحه أذونات على my_database:
sql_console_developer دورٌ مستخدم في المثال، وليس دورًا مضمّنًا في ClickHouse Cloud. يمكنك بدلًا من ذلك استخدام دور مخصص موجود يتضمن الأذونات التي يحتاج إليها المستخدم.
2

إنشاء دور SQL Console لكل مستخدم

أنشئ دورًا يتضمن اسمه عنوان البريد الإلكتروني الكامل للمستخدم:
تُعد علامات backticks مطلوبة لأن اسم الدور يحتوي على أحرف خاصة.
3

منح الدور المخصص

امنح الدور المطلوب لدور SQL Console الخاص بالمستخدم:
يمكنك منح أدوار متعددة عند الحاجة:
4

بدء جلسة جديدة في SQL Console

اطلب من المستخدم تسجيل الخروج ثم تسجيل الدخول مجددًا إلى SQL Console، أو تحديث علامة تبويب المتصفح. في الجلسة الجديدة، يطبّق ClickHouse Cloud ‏sql-console-role:user@example.com على ‏sql-console:user@example.com، ولا يلزم تنفيذ عبارة SET ROLE.تحقق من الأدوار النشطة:
يجب أن تتضمن النتائج الأذونات الممنوحة عبر sql-console-role:user@example.com.

تجنب تعديل الأدوار المُدارة

لا تعدّل sql_console_admin أو sql_console_read_only لمنح أذونات مخصصة. يدير ClickHouse Cloud هذه الأدوار المضمنة. استخدم بدلاً من ذلك sql-console-role:<email> لتعيين أذونات لكل مستخدم. للاطلاع على أمثلة عامة لإدارة الأدوار، راجع استعلامات شائعة لإدارة الوصول.
آخر تعديل في ١٤ أغسطس ٢٠٢٦