الأدوار والأذونات: قواعد واضحة مع أمثلة تجارية
شرح الأدوار والأذونات مع أمثلة واضحة لتقرر ماذا يمكن للمالك، المدير، الموظف، والعميل رؤيته ولمنع تسريبات البيانات.

المشكلة الحقيقية: أشخاص يرون بيانات لا يجب أن يروها
«تسريب بيانات» في العمل غالبًا ما يبدو مملًا. وكيل دعم يفتح ملف عميل ويرى سجل المدفوعات بالكامل. عميل يدخل ويصادف ملاحظات داخلية مثل “عرض 20% إذا اشتكى” أو التكلفة الفعلية والهامش في فاتورة. لم يسرق أحد كلمة مرور؛ التطبيق ببساطة عرض الشيء الخطأ.
معظم التسريبات تحدث عن طريق الخطأ. تُضاف أذونات متأخرًا، تُطلق شاشة جديدة بسرعة، أو ينسخ شخص دورًا قديمًا كان "كافياً" للاختبار. ثم يتسبب تغيير صغير، مثل إضافة حقل جديد لجدول، بأن يصبح مرئيًا للجميع.
لهذا السبب يجب أن تكون الأدوار والأذونات جزءًا أساسيًا من التطبيق، لا خانة تُحاط في النهاية. تنتهي معظم الأعمال الصغيرة بنفس أربعة أنواع من الأدوار: Owner, Manager, Staff, وClient.
الهدف بسيط: كل شخص يجب أن يرى فقط ما يحتاجه لإنجاز عمله، ولا شيء أكثر. وهذا يشمل البيانات خلف الكواليس، ليس فقط الشاشات التي تتوقعها.
إذا كنت تبني بسرعة على منصة بلا كود مثل AppMaster، فالأمر يصبح أكثر أهمية. السرعة مفيدة، لكن تجعل من السهل أيضًا كشف ملاحظات خاصة أو قواعد تسعير أو سجلات عملاء آخرين عن طريق الخطأ إذا لم تُصمم الأذونات من البداية.
الأدوار، الأذونات، والنطاق: تعريفات بسيطة
الأدوار والأذونات هي القواعد التي تُقرر من يمكنه فعل ماذا داخل التطبيق.
- الدور هو تسمية وظيفية مثل Owner أو Manager أو Staff أو Client.
- الأذونات هي الإجراءات المحددة المسموح بها لذلك الدور.
مستوى الوصول هو النتيجة العملية لتلك القواعد. شخصان قد يكونان كلاهما "Staff"، لكن لأحدهما مستوى وصول أعلى لأنه يستطيع الموافقة على استرداد بينما الآخر لا يستطيع.
طريقة موثوقة لمنع الأخطاء هي البدء بأدنى صلاحية، ثم الإضافة فقط لما يحتاجه الشخص لعمله اليومي. إذا لم يكن الشخص يعدّل فواتير أبدًا، فلا تمنحه صلاحية التعديل "للاحتياط". من الأسهل إضافة صلاحية لاحقًا من التراجع عن تسريب بيانات.
معظم الأذونات تُختزل إلى مجموعة صغيرة من الإجراءات: عرض، إنشاء، تعديل، حذف، وبعض الإجراءات الأعلى خطورة مثل التصدير أو الموافقة.
النطاق يجيب عن سؤال مختلف: "على أي السجلات يمكنهم فعل ذلك؟" قد يُسمح لشخص بمشاهدة الفواتير، لكن فقط فواتيره الخاصة، وليس فواتير الجميع.
نماذج النطاق النموذجية:
- السجلات الخاصة بهم (العناصر التي أنشأوها أو المعينة لهم)
- الفريق أو الموقع (فرعهم، قسمهم، أو المشروع)
- الشركة بأكملها (كل السجلات عبر العمل)
ممثل مبيعات قد ينشئ ويرى عروضه الخاصة، لكنه لا يستطيع تصدير قائمة العملاء الكاملة. مدير مبيعات يمكنه رؤية عروض الفريق بالكامل والموافقة على الخصومات. المالك يمكنه رؤية كل شيء وتصدير تقارير للمحاسبة.
ما الذي يحتاجه المالكون والمديرون والموظفون والعملاء عادةً
تنتهي معظم التطبيقات بنفس أربع فئات من الأشخاص. التفاصيل تختلف، لكن النمط ثابت. إذا بدأت بأدوار وأذونات واضحة، تتجنب الكثير من لحظات "لماذا يمكنهم رؤية ذلك؟" لاحقًا.
المالكون عادةً يحتاجون رؤية كاملة عبر العمل. وهذا يشمل الفوترة، إعدادات الأمان (مثل قواعد كلمات المرور وMFA)، وتاريخ التدقيق لمراجعة من عدّل ماذا ومتى.
المديرون يحتاجون إدارة فريق بدون أن يكونوا مسؤولين كاملين. عادةً يحتاجون إشرافًا (رؤية كل شيء في قسمهم)، الموافقة على إجراءات (خصومات، استردادات، إجازات، تغييرات محتوى)، وقراءة التقارير. قد يحتاجون بعض إجراءات الإدارة المحدودة، مثل دعوة موظفين أو إعادة تعيين كلمة مرور، لكن ليس الوصول للفوترة أو ضوابط الأمان العامة.
الموظفون يجب أن يؤدوا العمل اليومي بسرعة وبمخاطرة منخفضة. الافتراضي الآمن هو "فقط ما هو معين لي". وكيل الدعم يرى تذاكرَه فقط، المُرسل يرى جداول اليوم فقط، ومندوب المبيعات يرى العملاء المحتملين المعينة له. يجب أن تكون التصديرات والتنزيلات الجماعية معطلة افتراضيًا وتُفعل فقط عند الحاجة الحقيقية.
العملاء يجب أن يروا سجلاتهم فقط، حتى لو شارك عدة أشخاص نفس الحساب. اسمح لهم بإجراءات محدودة (إنشاء طلبات، دفع فواتير، تحديث ملفهم)، لكن أبقِ الملاحظات الداخلية وتعليقات الموظفين والحالات الداخلية مخفية.
مجموعة افتراضية تعمل في كثير من الأعمال:
- Owner: كل شيء، بما في ذلك الفوترة، الأمان، وسجلات التدقيق
- Manager: بيانات الفريق، الموافقات، التقارير، إدارة مستخدمين محدودة
- Staff: السجلات المعينة فقط، لا تصدير جماعي، لا إعدادات إدارية
- Client: سجلاتهم فقط، لا ملاحظات داخلية، إجراءات محدودة
قسم الوصول بحسب نوع البيانات، وليس مجرد الشاشة
الكثير من الفرق تضبط الأدوار والأذونات حسب الشاشة: "الموظف يمكنه فتح صفحة الطلبات، العميل لا يمكنه." هذا مفيد، لكنه يفوت الخطر الحقيقي. نفس البيانات تظهر في البحث، التعليقات، الإشعارات، التصديرات، والمرفقات.
ابدأ بقائمة مجالات البيانات، وليس القوائم. المناطق عالية التأثير عادةً تشمل بيانات الاتصال بالعملاء، الطلبات وحالة التسليم، الفواتير وحالة الدفع، الرواتب وملاحظات الموارد البشرية، والملاحظات الداخلية أو التحليلات.
ثم قرر ماذا يمكن لكل دور أن يفعل مع كل نوع بيانات: عرض، إنشاء، تعديل، حذف، الموافقة، والمشاركة. هنا تهم قواعد مستوى الحقل. نفس الكائن غالبًا يحتاج عرضًا عامًا وعرضًا داخليًا.
مثال: الطلب قد يتضمن اسم العميل، عنوان التسليم، السعر، الهامش الداخلي، وملاحظة داخلية مثل "العميل كثير الشكوى، قدم خصمًا." يجب أن يرى العميل العنوان والحالة، لكن لا يرى الهامش أو الملاحظة الداخلية. قد يرى المدير كل الحقول بالإضافة إلى إمكانية الموافقة على الخصومات. قد يرى الموظف الحقول التي يحتاجها للتسليم، لكن ليس تفاصيل المالية.
الملفات والمرفقات تحتاج حذرًا إضافيًا. العقود، بطاقات الهوية، الإيصالات، واللقطات غالبًا ما تحتوي معلومات أكثر حساسية من حقول النموذج. عاملها كأذن منفصل: من يمكنه الرفع، من يمكنه التنزيل، ومن يمكنه معاينة الملفات. وقرر أيضًا إن كانت المرفقات ترث الوصول من السجل الأب (مثل الفاتورة) أم لها قواعد منفصلة.
أخيرًا، لا تعامل التصديرات والإجراءات الجماعية كأمر "ضمني" لمجرد أن دورًا يمكنه عرض قائمة. اجعلها صريحة: التصدير إلى CSV/PDF، تنزيل مرفقات جماعي، تغييرات حالة جماعية (الموافقة، الإلغاء، الاسترداد)، الرسائل الجماعية (إيميل/SMS/Telegram)، وإجراءات إدارية مثل إعادة تعيين السجلات.
مثال تجاري 1: تطبيق مبيعات وفوترة
تخيل عمل خدمة صغير: المالك يبيع مشاريع، المديرون يشرفون على الأعمال، الموظفون يؤدون العمل، والعملاء يوافقون على العروض ويدفعون الفواتير. أسرع طريقة لتجنب الأخطاء المحرجة هي الاتفاق على الأدوار والأذونات قبل أن يسجل أي شخص الدخول.
ابدأ بتفاصيل المال. قد تكون الأسعار مرئية لأشخاص أكثر من رؤية الربح. قاعدة شائعة: الموظفون يمكنهم رؤية ما يُطلب تحصيله، لكن ليس سبب اختيار السعر. فني قد يحتاج بنود الفاتورة لشرح العمل، لكنه لا يحتاج الهامش الداخلي، تكلفة المورد، أو الخصم الخاص الذي تم منحُه للفوز بالصفقة.
بيانات العميل نقطة ضعف أخرى. كثير من الفرق تريد أن يرى عدة أشخاص تفاصيل الاتصال (لكي يتصلوا بالشخص المناسب)، لكن قليلين فقط يجب أن يعدلوها. وإلا تحصل على استبدالات خاطئة مثل أن يتحول بريد الفوترة إلى بريد شخصي فتتوقف الفواتير عن الوصول إلى المحاسبة.
إعداد بسيط يعمل جيدًا:
- Owner: يرى كل شيء، بما في ذلك الهامش وتاريخ الخصومات، ويمكنه تغيير حالة الدفع
- Manager: يمكنه إنشاء عروض وفواتير، الموافقة على الخصومات، وتعديل جهات اتصال العملاء
- Staff: يمكنه عرض تفاصيل العملاء المعينة وبنود الفاتورة، لكن لا يمكنه تعديل قواعد التسعير أو رؤية الهامش
- Client: يمكنه رؤية عروضه وفواتيره فقط، ويمكنه الدفع أو طلب تغييرات
قم بتقييد الإجراءات عالية المخاطر. تعليم فاتورة بأنها مدفوعة، إصدار استرداد، أو تغيير طريقة دفع يجب أن يقتصر على المالك (أو دور مالية موثوق).
مثال تجاري 2: مكتب دعم مع ملاحظات داخلية
مكتب الدعم يبدو بسيطًا: العملاء يرسلون رسائل، فريقك يرد، والتذاكر تُغلق. تظهر المشاكل عندما يُعاد استخدام نفس واجهة التذكرة للجميع. إعداد خاطئ واحد، وقد يرى العملاء ملاحظات داخلية، علامات، أو حتى إحصاءات أداء الموظفين.
تخيل عمل تجارة إلكترونية صغير بصندوق دعم مشترك. التذكرة تتضمن رسالة العميل، تفاصيل الطلب، حالة الشحن، وملاحظات داخلية مثل "احتمال احتيال، تحقق من الهوية" أو "VIP، أعطِ أولوية." هذا السياق الداخلي يساعد الفريق، لكنه لا يجب أن يكون مرئيًا للعميل.
انقسام نظيف يحفظ البيانات الحساسة:
- Client: يرى رسائله، تحديثات الحالة العامة، والحل النهائي. لا يرى علامات داخلية ولا ملاحظات للموظفين.
- Staff agent: يرى رسائل العميل والبيانات اللازمة لحل المشكلة مثل تاريخ الطلب. يمكنه إضافة ملاحظات داخلية وعلامات.
- Manager: يرى كل ما يراه الموظف، بالإضافة إلى أدوات إعادة التعيين وتجاوزات اتفاقيات مستوى الخدمة.
- Owner/admin: يرى كل التذاكر عبر العمل وتقارير على مستوى عالٍ.
البيانات الشخصية الحساسة للعميل فخ آخر. غالبًا يحتاج الدعم رقم هاتف أو عنوانًا، لكن ليس في كل تذكرة. قاعدة جيدة: أظهر الحقول الحساسة فقط عندما يتطلب سير العمل ذلك. مثلاً، أظهر العنوان فقط بعد أن يختار الوكيل "مشكلة شحن"، ثم أعد إخفاءه عند إغلاق التذكرة.
احتفظ بالمقاييس الداخلية منفصلة عن تجربة العميل. أشياء مثل "الزمن للرد الأول"، "تقييم الوكيل"، أو "تصعيد للقسم القانوني" تنتمي لعرض الموظفين والمديرين فقط.
مثال تجاري 3: العمليات وتتبع التسليم
تخيل مستودعًا وفريق ميداني يديرون التسليم طوال اليوم. شخص يخطط المسارات، آخر يجمع السلعة، والسائق يكمل التوصيلات. إذا عرض تطبيقك تفاصيل خاطئة للأشخاص الخطأ، فالأمر لا يكون محرجًا فحسب — بل قد يكشف عناوين العملاء، الأسعار، أو ملاحظات داخلية.
ابدأ بفصل ما يحتاجه كل مجموعة يوميًا.
الموظفون (الجامعون والسائقون) عادةً يحتاجون واجهة مركزة ومهمة. يجب أن يفتح السائق التطبيق ويرى فقط مهام اليوم المعينة له، بترتيب الوقفات، تفاصيل الاتصال لتلك الوقفة، وإرشادات التسليم. لا ينبغي له تصفح قائمة العملاء الكاملة أو رؤية مهام مخصصة لسائقين آخرين. إذا غطّى وردية، يمكن للمدير إعادة تعيين مهمة بدلًا من منح وصول واسع.
المديرون يحتاجون الصورة التشغيلية الأوسع. يجب أن يروا جداول كل الفرق، تعداد المخزون، وما يجري خطأ الآن (تأخيرات، فشل التسليم، سلع متضررة، توقيعات مفقودة). كما يحتاجون أدوات لحل الاستثناءات: إعادة تعيين وقفة، تقسيم مسار، أو الموافقة على تعديل في المخزون.
العملاء يحتاجون أصغر واجهة: حالة تسليمهم فقط. يمكنهم تتبع ETA، رؤية إثبات التسليم، والحصول على تحديثات مثل "خرج للتوصيل" أو "متأخر". لا يجب أن يروا عملاء آخرين، خرائط مسارات اليوم بأكمله، أو ملاحظات استثناء داخلية.
طريقة بسيطة لفرض الأدوار هنا هي تحديد نطاق البيانات بحسب التعيين وحساب العميل. مثلاً، سجل مهمة تسليم يمكن قراءته فقط من قبل (1) الموظف المعين، (2) المديرون، و(3) العميل المرتبط بذلك الطلب.
خطوة بخطوة: كيفية تصميم الأدوار والأذونات
ابدأ بتسمية مجموعات المستخدمين بلغة بسيطة. "Owner"، "Manager"، "Staff"، و"Client" بداية جيدة، لكن فقط إذا تطابقت مع طريقة عمل عملك. لكل مجموعة، اكتب ما يعنيه النجاح بجملة واحدة، مثل "المديرون يمكنهم تكليف العمل ورؤية أداء الفريق دون رؤية الرواتب."
بعدها، ارسم خريطة الإجراءات لمناطق البيانات. لا تفكر بالشاشات أولًا؛ فكر بالبيانات الموجودة، وما الذي يمكن للناس فعله بها. شبكة بسيطة على ورق تكفي:
- ادرج أدوارك ومناطق البيانات (العملاء، الطلبات، الفواتير، التذاكر، التقارير).
- لكل دور، اكتب الإجراءات التي يحتاجها (عرض، إنشاء، تعديل، موافقة، تصدير).
- قرر النطاق لكل إجراء (خاص، فريق، أو الكل).
- عرّف "الفريق" بوضوح (فرع، منطقة، مشروع، أو مرؤوسين مباشرين).
- وضع علامة لأي عناصر "ممنوعة" (مثلاً، العملاء لا يرون الملاحظات الداخلية).
ثم اختبر المسودة باستخدام مهام حقيقية، لا تخمينات. مرّ عبر تدفقات شائعة مثل "إنشاء طلب"، "حل تذكرة"، و"تنزيل تقرير". إذا أجبرت مهمة ما على منح وصول واسع، فربما تحتاج إذنًا مفقودًا (مثل "عرض المجاميع" دون "التصدير").
أضف موافقات حيث تحدث تغييرات مالية أو حساسة. يمكن للموظف إعداد مسودة فاتورة، لكن يجب أن يوافق المدير أو يرسلها. يمكن للموظف تعديل عناوين التسليم، لكن تغيير تفاصيل بنكية يتطلب موافقة المالك.
أخطاء شائعة تسبب تسريبات بيانات بطريق الخطأ
معظم تسريبات البيانات في الفرق الصغيرة ليست هجمات. تحدث عندما يمنح التطبيق شخصًا صلاحية أكثر من اللازم. تفشل الأدوار والأذونات عندما تُضبط مرة واحدة ثم لا تُراجع.
نمط شائع هو منح شخص وصولاً إداريًا كاملًا "فقط لإعداد النظام". يمر الزخم، لكن يبقى الوصول. بعد أسابيع، يصدر ذلك الشخص قائمة عملاء كاملة للمساعدة في تقرير، وتجلس بيانات خاصة في جدول بيانات.
أخطاء تتكرر باستمرار:
- جعل "Admin" الدور الافتراضي لتجنب أسئلة الدعم
- السماح بتصديرات واسعة (عملاء، جهات اتصال، مدفوعات، فواتير) بدون حدود أو تدقيق
- مشاركة تسجيل دخول واحد عبر فريق الوردية، فلا يمكنك معرفة من شاهد أو عدّل ماذا
- تأمين الشاشات الرئيسية ونسيان الأبواب الجانبية مثل واجهات الجوال، ملفات PDF، إشعارات البريد، المرفقات، والنماذج المكتملة تلقائيًا
- عدم إغلاق الوصول عند المغادرة: الموظفون السابقون يحتفظون بالوصول إلى التطبيق أو البريد أو الجلسات المحفوظة على هواتفهم
الأبواب الجانبية هي الأكثر خداعًا. قد تمنع الموظفين من رؤية شاشة العقد، لكنك ما زلت ترسل لهم الملف كمرفق عبر البريد. أو تخطيط الجوال قد يعرض حقولًا إضافية كانت مخفية على سطح المكتب.
حل عملي هو معاملة التصدير والتنزيل كموافقة منفصلة، لا كحق "عرض" عادي. إذا كان دور يحتاج قائمة، امنحه عرضًا مُفلترًا بدلًا من التصدير الكامل.
فحوصات سريعة قبل دعوة مستخدمين حقيقيين
قبل دعوة مستخدمين حقيقيين، افترض أن شخصًا سيضغط زرًا خاطئًا، يشارك شاشة، أو ينزل ملفًا لا ينبغي له. بعض الفحوصات الآن يمكن أن تمنع تنظيفًا مؤلمًا لاحقًا.
ابدأ بالافتراضات الافتراضية. عند إنشاء مستخدم جديد، يجب أن يبدأ في أدنى دور تلقائيًا، بدون وصول للمال، التصدير، أو إعدادات الإدارة. إذا احتاج شخص مزيدًا، اجعل التغيير أمرًا مقصودًا.
بعدها، اختبر تجربة العميل كغريب. يجب ألا يرى العملاء إلا سجلاتهم حتى لو غيروا عناوين URL، بحثوا، أو فلتروا. اختبار سريع: سجل الدخول كعميل A وحاول العثور على عميل B بالاسم أو رقم الفاتورة أو رقم التذكرة.
خمس فحوصات سريعة تكشف معظم التسريبات:
- إخفاء الحقول الحساسة افتراضيًا (الرواتب، التكلفة/الهامش، هويات شخصية، الملاحظات الداخلية)
- تأمين التصديرات والإجراءات الجماعية
- إضافة موافقات حيث تكون الأخطاء مكلفة (استردادات، مدفوعات، تغييرات أدوار)
- التأكد من تطبيق النطاق في كل مكان (الشاشات، نتائج البحث، استجابات API)
- التأكد من وجود سجل تدقيق: من عدّل ماذا ومتى، بما في ذلك تحديثات الأدوار وإجراءات الدفع
قم بـ"اختبار الحادث العرضي". اطلب من زميل إنهاء مهمة حقيقية بحساب موظف، ثم حاول نفس المهمة بحساب عميل. إذا استطاع العميل رؤية التسعير الداخلي، تنزيل قوائم العملاء الكاملة، أو تنفيذ استرداد، فالأذونات واسعة جدًا.
سيناريو واقعي: تطبيق واحد يستخدمه الموظفون والعملاء
طلب شائع يبدأ هكذا: يريد العميل بوابة لـ"التحقق من الحالة"، لكن موظفيك يستخدمون نفس النظام لإدارة العمل. بدون أدوار وأذونات واضحة، قد تكشف البوابة الملاحظات الداخلية، طلبات عملاء آخرين، أو تسعيرًا خاصًا للموظفين.
تخيل شركة طباعة مخصصة. تمر الطلبات من عرض إلى إنتاج إلى تسليم إلى فاتورة، كلها داخل تطبيق واحد.
هذا ما يجب أن يراه كل دور خلال التدفق:
- Owner: كل شيء، بما في ذلك الربح، أداء الموظفين، وكل حسابات العملاء
- Manager: كل الطلبات لفريقهم، الملاحظات الداخلية، وإمكانية الموافقة على الخصومات والاستردادات
- Staff: فقط الطلبات المعينة لهم، الخطوة التالية التي يجب إكمالها، وتفاصيل الاتصال اللازمة لإنجاز العمل
- Client: فقط طلباتهم، حالة عالية المستوى (معتمد، في الإنتاج، مشحون)، إثبات التسليم، والفواتير المستحقة
حالتان غالبًا ما تكسران النموذج.
أولًا، يغطي مدير فريق آخر مؤقتًا. لا تحول صلاحيته إلى Owner. بدلًا من ذلك، أضف نطاقًا مؤقتًا، مثل وصول إلى طلبات الفريق ب لمدة 7 أيام. عند انتهاء التغطية، ينتهي الوصول.
ثانيًا، يطلب عميل VIP "مزيدًا من الشفافية." أعطه مزيدًا من السياق دون إضافة بيانات: اعرض جدولًا زمنيًا أوسعًا أو سلسلة رسائل مخصصة، لكن أبقِ الملاحظات الداخلية (مثل "العميل متأخر في الدفع" أو "إعادة طباعة بسبب خطأنا") خاصة بالموظفين.
تتغير المسؤوليات، لذا اعتبر الوصول شيئًا تُراجعه، لا تضبطه مرة واحدة. عندما يغيّر شخص دوره، تجنّب تراكم الأذونات. أزل ما لم يعد يحتاجه، ثم أضف أقل مجموعة لازمة للدور الجديد.
الخطوات التالية: ضع سياسة وصول واضحة وطبّقها
ابدأ صغيرًا. اختر تدفق عمل واحد مهم، مثل "إنشاء فاتورة وتحصيل دفعة" أو "تسجيل تذكرة دعم والرد عليها." عرّف الأدوار والأذونات لذلك التدفق أولًا، ثم وسّع.
ضع القواعد في جدول بسيط وتعامل معه كوثيقة حية: الدور، ما يمكنه فعله، ما لا يمكنه فعله، وأي حدود (مثل "سجلاتهم فقط" أو "موقعهم فقط"). عندما يسأل شخص "هل يرى الموظفون أرقام هواتف العملاء؟" يجب أن يجيب الجدول فورًا.
نشر عملي:
- صاغ الجدول لتدفقك الأول (Owner, Manager, Staff, Client)
- ربط كل قاعدة ببيانات محددة (بما في ذلك الحقول) وإجراءات محددة (عرض، تعديل، تصدير، حذف)
- أنشئ حسابات عرض لكل دور واختبر المهام الحقيقية من البداية للنهاية
- اطلق لمجموعة صغيرة ثم وسّع عندما لا تظهر مفاجآت
- راجع الوصول ربع سنويًا، وفورًا بعد تغييرات تنظيمية (مدير جديد، فريق جديد، مورد جديد)
إذا كنت تبني على AppMaster (appmaster.io)، يساعد التخطيط للأدوار جنبًا إلى جنب مع نموذج البيانات والمنطق التجاري حتى تُطبّق نفس القواعد باستمرار عبر تطبيق الويب، تطبيقات الجوال، ونقاط نهاية الـ API.
إذا رغبت، اكتب جدول الوصول الأول اليوم وجربه على تدفق واحد. تلك الخطوة الواحدة تمنع معظم تسريبات البيانات العرضية.
الأسئلة الشائعة
ابدأ بكتابة البيانات التي تخزنها (العملاء، الطلبات، الفواتير، الملاحظات الداخلية، الملفات)، ثم قرر من يجب أن يشاهد، ينشئ، يعدّل، يحذف، يوافق، أو يصدر كل نوع منها. ابدأ بأدنى صلاحية وأضف فقط ما يلزم للعمل اليومي.
الأذونات تحدد ما الإجراءات المسموح بها، بينما النطاق يحدد أي السجلات تنطبق عليها تلك الإجراءات. مثلاً، قد يُسمح لموظف برؤية الفواتير، لكن فقط الفواتير المعينة له أو المرتبطة بموقعه.
«Owner, Manager, Staff, Client» تغطي معظم الأعمال الصغيرة لأنها تتماشى مع طريقة تقسيم العمل والمخاطر عادةً. إذا كان فريقك أكثر تعقيدًا، أبقِ البنية نفسها وأضف أدوارًا خاصة مثل Finance أو Contractor بدلاً من جعل الجميع مسؤولين كاملين.
افتراض آمن: يمكن للعملاء عرض والتصرف في سجلاتهم فقط، لكن لا يمكنهم رؤية الملاحظات الداخلية، الحالات الداخلية، الهوامش، أو علامات خاصة بالموظفين. إذا طلب العميل مزيدًا من الوضوح، أضف سياقًا مثل جدول زمني بدلًا من كشف حقول خام إضافية.
فصل «ما الذي نحصّله» عن «لماذا السعر هكذا». يحتاج الموظف غالبًا لبنود الفاتورة والحالة، لكنه عادةً لا يحتاج رؤية الهامش، تكلفة المورد، تاريخ الخصومات، أو صلاحيات الدفع مثل تعليم فاتورة بأنها مدفوعة.
عامل التصديرات كأذن عالي المخاطر، لا كميزة تأتي تلقائيًا مع عرض قائمة. تحدث تسريبات كثيرة عندما يحمل شخص ما قائمة كاملة من العملاء أو تاريخ الفواتير إلى جدول بيانات دون وعي بمحتواها الحساس.
الشاشات ليست كافية لأن البيانات تظهر أيضًا في نتائج البحث، الإشعارات، ملفات PDF، التخطيطات المحمولة، المرفقات، واستجابات API. القاعدة الجيدة: أمّن طبقة البيانات وظهور الحقول أولًا، ثم ابنِ الشاشات فوق ذلك.
عامل المرفقات بقواعد منفصلة لأنها غالبًا ما تحتوي معلومات أكثر حساسية من حقول النماذج. قرر من يمكنه رفع، معاينة، أو تنزيل الملفات، وهل ترث الملفات صلاحيات السجل الأب (مثل الفاتورة) أم تحتاج إذنًا إضافيًا.
ابنِ عرضين لنفس التذكرة: عرض آمن للعميل بدون ملاحظات داخلية أو علامات أو مقاييس الموظفين، وعرض داخلي مع السياق الكامل. أظهر الحقول الحساسة فقط عندما يتطلبها سير العمل، حتى لا يرى الوكلاء العناوين أو المعرفات على كل تذكرة افتراضيًا.
أنشئ حسابات تجريبية لكل دور ونفّذ مهام حقيقية من البداية للنهاية، بما في ذلك حالات الحافة مثل البحث، التصفية، فتح المرفقات، وتوليد المستندات. جرّب أيضًا أن يحاول "العميل A العثور على العميل B" بالأسماء، المعرفات، أو عناوين URL للتأكد من تطبيق النطاق في كل مكان.


