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

نظرة عامة

يمكن استخدام SET ROLE لتحديد نطاق الأذونات ديناميكيًا لحساب خدمة أثناء الجلسة. ويتم ذلك من خلال حصر الأذونات الفعلية للمستخدم في تلك التي تمنحها الأدوار المُفعَّلة فقط. ويوفّر هذا النهج عدة مزايا:
  • يمكن إسناد عدة أدوار إلى حسابات الخدمة، مع تفعيل الدور المطلوب فقط لاستعلام معيّن.
  • إذا تعرّض حساب الخدمة للاختراق، فلن يتمكن المهاجمون إلا من استخدام أذونات الدور النشط.
  • يمكن لحساب واحد تنفيذ مهام متنوعة من خلال تبديل الأدوار بدلًا من الحاجة إلى بيانات اعتماد منفصلة لكل مهمة.
  • يمكن تحديث الأذونات لفئة كاملة من حسابات الخدمة عبر تعديل دور واحد بدلًا من تحديث المستخدمين الأفراد.
  • يمكن للسجلات تتبّع الدور المحدد الذي كان نشطًا أثناء الاستعلام، مما يوفّر سياقًا أوضح لعمليات التدقيق الأمني.
عمليًا، عليك:
  1. تصميم أدوار تُحدِّد الحدود المسموح بها (read_only وmaintenance وما إلى ذلك)
  2. منحها إلى حساب الخدمة
  3. عند إنشاء الاتصال، اختيار الدور أو الأدوار النشطة عبر SET ROLE (أو معلمة الدور)، وبذلك تُقيَّد الإجراءات التي يمكن لتلك الجلسة تنفيذها

إعداد دور خدمة

1

منح الأدوار إلى حساب الخدمة

أولًا، أنشئ الأدوار بالامتيازات/الإعدادات التي تريدها، ثم امنحها لحساب الخدمة.
2

استخدام SET ROLE لتحديد حدود الجلسة

في بداية الجلسة، يختار حساب الخدمة الأدوار النشطة:
أو:
يُفعِّل SET ROLE الأدوار للمستخدم الحالي؛ وتكون الامتيازات الفعلية هي اتحاد جميع الأدوار النشطة، بالإضافة إلى أي امتيازات مُنحت مباشرةً للمستخدم.يمكنك أيضًا إلغاء تنشيط جميع الأدوار:
أو تنشيط عدة أدوار:
يمكن الاطلاع على الأدوار النشطة حاليًا عبر system.current_roles.
3

تعيين الأدوار الافتراضية لحساب الخدمة

لضمان أن يبدأ حساب الخدمة دائمًا في وضع مقيّد، قم بتكوين الأدوار الافتراضية:
أو
4

استخدام SET ROLE عبر HTTP / برمجيًا

إذا كان حساب الخدمة يتصل عبر HTTP، فلا يمكنك إرسال SET ROLE; SELECT … كعبارة متعددة. بدلًا من ذلك، مرّر الدور كمعلمة استعلام:
?role=… يعادل تنفيذ SET ROLE read_only_role قبل العبارة. وتتعامل معلمات الأدوار المتعددة كما لو أنها SET ROLE role 1, role 2.تعرض بعض برامج التشغيل (مثل ClickHouse Connect لـ بايثون) أيضًا إعدادًا للدور يُرسَل مع كل طلب، ويستخدمه الخادم بوصفه دور الجلسة.
آخر تعديل في ٢٣ يوليو ٢٠٢٦