نظرة عامة
- يمكن إسناد عدة أدوار إلى حسابات الخدمة، مع تفعيل الدور المطلوب فقط لاستعلام معيّن.
- إذا تعرّض حساب الخدمة للاختراق، فلن يتمكن المهاجمون إلا من استخدام أذونات الدور النشط.
- يمكن لحساب واحد تنفيذ مهام متنوعة من خلال تبديل الأدوار بدلًا من الحاجة إلى بيانات اعتماد منفصلة لكل مهمة.
- يمكن تحديث الأذونات لفئة كاملة من حسابات الخدمة عبر تعديل دور واحد بدلًا من تحديث المستخدمين الأفراد.
- يمكن للسجلات تتبّع الدور المحدد الذي كان نشطًا أثناء الاستعلام، مما يوفّر سياقًا أوضح لعمليات التدقيق الأمني.
- تصميم أدوار تُحدِّد الحدود المسموح بها (read_only وmaintenance وما إلى ذلك)
- منحها إلى حساب الخدمة
- عند إنشاء الاتصال، اختيار الدور أو الأدوار النشطة عبر
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 لـ بايثون) أيضًا إعدادًا للدور يُرسَل مع كل طلب، ويستخدمه الخادم بوصفه دور الجلسة.