كيفية إصلاح INSUFFICIENT_ACCESS_OR_READONLY في عمليات نشر Salesforce

لا يملك المستخدم الذي يشغّل النشر أو تحميل البيانات صلاحية الإنشاء أو التعديل أو الحذف على الكائن أو الحقل الذي تتم الكتابة إليه.

يظهر أثناء: عمليات DML وقت التشغيل، في تحميلات البيانات، واستدعاءات API، واختبارات Apex

المعنى

يعني INSUFFICIENT_ACCESS_OR_READONLY أن الملف الشخصي أو مجموعة الصلاحيات الخاصة بالمستخدم المُشغِّل لا تمنح مستوى الوصول الذي تحتاجه العملية، وغالبًا ما يكون ذلك أمان مستوى الحقل أو صلاحيات CRUD على الكائن في المؤسسة الهدف. يختلف هذا عن INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY، الذي يتعلق بسجل مُشار إليه بدلاً من الكائن الذي تتم الكتابة إليه مباشرة.

هذه هي حالة الكائن المباشر: السجل أو الحقل الذي تكتب إليه عبارة DML هو ما يفتقر المستخدم المُشغِّل إلى الوصول إليه، وليس سجلًا ذا صلة يُلامَس أثناء العملية.

التشخيص

الأسباب الشائعة

ملف مستخدم التكامل أو النشر يفتقر إلى صلاحية الكائن
يملك ملف مستخدم API أو CI وصولًا للقراءة فقط أو لا يملك أي وصول على الكائن، غالبًا لأن نطاقه ضُيّق عمدًا لأسباب أمنية.
أمان مستوى الحقل يخفي الحقل عن ذلك الملف الشخصي
صلاحية الكائن موجودة، لكن حقلًا معينًا مضبوط على غير مرئي أو للقراءة فقط بالنسبة لملف المستخدم المُشغِّل أو مجموعة صلاحياته.
لم يتم نشر مجموعة الصلاحيات أو تخصيصها في المؤسسة الهدف
توجد مجموعة صلاحيات تمنح الوصول المطلوب في نظام التحكم بالمصدر، لكن لم يتم نشرها وتخصيصها لمستخدم النشر في المؤسسة الهدف.

الحل

  1. امنح صلاحيات الكائن والحقل لمستخدم النشر
    حدّث ملف مستخدم النشر أو التكامل أو مجموعة صلاحياته لتشمل صلاحيات CRUD المطلوبة على الكائن وأمان مستوى الحقل.
  2. انشر مجموعات الصلاحيات المفقودة وخصّصها
    أدرج ميتاداتا مجموعة الصلاحيات ضمن النشر وتأكد من تخصيصها للمستخدم المُشغِّل في المؤسسة الهدف، وليس فقط في المصدر.
    sf org assign permset --name Integration_Data_Access --target-org myOrgAlias
  3. استخدم مستخدم تكامل مخصصًا بمجموعة صلاحيات ثابتة
    وحّد وصول النشر وواجهة API على مستخدم ومجموعة صلاحيات مصممين خصيصًا لذلك بدلاً من حساب مسؤول فردي قابل للتغيير.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يدير Serpent مجموعات الصلاحيات التي يخصصها لمستخدمي CI والتكامل لكل مؤسسة، بحيث تظهر فجوات الوصول بين البيئات كعائق أمام المهمة بدلاً من فشل تشغيل خط الأنابيب. راجع مكتبة أخطاء نشر Salesforce.

تتبع الموافقات والتدقيق في Serpent

الوقاية

انشر تخصيص مجموعة الصلاحيات جنبًا إلى جنب مع مجموعة الصلاحيات نفسها
أدرج ميتاداتا PermissionSetAssignment ضمن نفس النشر الذي يتضمن مجموعة الصلاحيات الجديدة، بحيث يصل الوصول فعليًا إلى المؤسسة الهدف، وليس التعريف فقط.
راجع وصول مستخدم التكامل عند إطلاق أي حقل جديد
أضف مراجعة أمان مستوى الحقل لمجموعة صلاحيات مستخدم التكامل الثابت كبند في قائمة التحقق عند كل تغيير في المخطط، وليس كفكرة لاحقة.
لا تشارك بيانات دخول مسؤول شخصية أبدًا في التكاملات المجدولة
الحسابات الشخصية تُعطَّل، وتتغير إعدادات المصادقة المتعددة العوامل، وتُعاد تعيين كلمات المرور؛ يتجنب مستخدم تكامل مخصص بمجموعة صلاحيات مُدارة أنماط الفشل الثلاثة جميعها.
أسئلة شائعة

أسئلة شائعة حول INSUFFICIENT_ACCESS_OR_READONLY

لماذا ينجح نفس النشر لأحد المسؤولين لكنه يفشل لمستخدم CI؟
يملك مستخدم CI أو التكامل دائمًا تقريبًا ملفًا شخصيًا أضيق وأكثر تقييدًا من المسؤول. قارن وصوله على مستوى الكائن والحقل بما يكتب إليه النشر فعليًا.
هل تتجاوز مجموعة الصلاحيات إعداد ملف شخصي أكثر تقييدًا؟
بالنسبة لصلاحيات الكائن والحقل، نعم؛ يمكن لمجموعة الصلاحيات منح وصول إضافي يتجاوز الملف الشخصي، لكنها لا تستطيع منح أكثر مما تسمح به حدود ترخيص المؤسسة وميزاتها الإجمالية.
هل تعني كلمة READONLY في اسم الخطأ أن الحقل هو حقل صيغة (formula)؟
ليس بالضرورة. عادةً ما تعني أن أمان مستوى الحقل (Field-Level Security) للمستخدم مضبوط على القراءة فقط لحقل عادي قابل للتعديل، رغم أنها يمكن أن تنطبق أيضًا على حقول غير قابلة للكتابة فعليًا مثل حقول الصيغ.

ابدأ مجانًا. بدون بطاقة ائتمان، وبدون تثبيت، وبدون التزام.

الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.