انتحال شخصية المستخدم
التصرف نيابة عن أي مستخدم للحصول على الدعم وتصحيح الأخطاء دون طلب كلمة المرور الخاصة به. يقتصر على 10 دقائق، وتدقيقها بدقة في سجلات الأمن.
ما هو انتحال الشخصية؟
يسمح انتحال شخصية المستخدم للمسؤول أو مهندس الدعم بإنشاء رمز مميز لحامل قصير العمر يعمل كمستخدم محدد. يتيح ذلك إعادة إنتاج أخطاء العملاء، أو التحقق من أذونات سياسة RLS، أو استكشاف مشكلات البيانات وإصلاحها دون طلب بيانات الاعتماد.
يضمن انتحال الشخصية في Aurabase ثلاثة مبادئ أمنية أساسية:
- عمر قصير: رموز الانتحال صالحة لمدة تتراوح بين 1 و600 ثانية (10 دقائق كحد أقصى، والافتراضي 300 ثانية). لا تتضمن أبدًا رمزًا مميزًا للتحديث.
- إسناد الممثل الصريح: يحمل رمز الوصول المُصدر مطالبة RFC 8693
actالقياسية التي تشير إلى من بدأ الجلسة. - التدقيق قبل الإصدار: يتم تسجيل الإجراء في
auth_audit_logمع الممثل والسبب والمدة والمستخدم المستهدف قبل يتم إنشاء الرمز المميز على الإطلاق. إذا فشل إدراج السجل، فلن يتم إصدار أي رمز مميز.
RFC 8693 هيكل المطالبة بالقانون
يتم توقيع رمز انتحال الشخصية باستخدام مفتاح ES256 النشط للمشروع ويتوافق مع تنسيق رمز وصول المستخدم القياسي، مع كائن act (ممثل) إضافي:
sub: هوية المستخدم الذي يتم انتحال شخصيته. يتم تقييم Postgres RLS (auth.uid()) إلى هذه القيمة.act.sub: هوية المشغل الذي أنشأ الرمز المميز (على سبيل المثال، معرف مستخدم وحدة التحكم أوservice_role).
نقطة نهاية المشرف
يتطلب انتحال الشخصية تصريح المسؤول عبر مفتاح service_role أو عامل لديه الدور admin.
هيئة الطلب
| الميدان | اكتب | مطلوب | الوصف |
|---|---|---|---|
reason | سلسلة | خياري | مبرر المسجلة في سجلات الأمن. مطلوب للحسابات المستهدفة المميزة (admin/owner). |
ttl_seconds | رقم | اختياري | عمر الرمز المميز بالثواني (من 1 إلى 600، الافتراضي 300). |
allow_privileged | منطقية | اختياري | يجب ضبطه على true إذا كان المستخدم المستهدف لديه دور admin أو owner. |
الاستجابة (200 OK)
TypeScript SDK
استخدم authAdmin.impersonate() مع عميل Aurabase الذي تم تكوينه باستخدام المفتاح service_role:
الحسابات المميزة وسجلات التدقيق
حراسة الحسابات المميزة
تمثل الحسابات المستهدفة التي تمتلك أدوارًا إدارية (مثل role = 'admin' أو role = 'owner' أو app_metadata.roles التي تحتوي على 'admin') أهدافًا عالية القيمة. لمنع رفع الامتيازات بشكل غير مقصود:
- يجب عليك تمرير
allow_privileged: trueبشكل صريح. - يجب توفير سلسلة
reasonغير فارغة. - إذا فشل أي من التحققين، فسترفض الواجهة الخلفية الطلب باستخدام
403 Forbidden.
سجل التدقيق الأمني
يتم إدراج كل حدث انتحال في جدول auth_audit_log الخاص بالمستأجر:
- الإجراء:
admin_impersonation - معرف المستخدم: معرف المستخدم المستهدف
- البيانات التعريفية: كائن JSON يحتوي على
{ "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false }
يكون هذا المسار مرئيًا في Studio › المصادقة › سجلات التدقيق ويمكن إعادة توجيهه إلى أدوات SIEM عبر مصارف قاعدة البيانات.