دفتر المبرمج. حقوق الوصول إلى UPP. RLS. معلومات عامة والإعداد تقييد الوصول على مستوى السجل في 1 ثانية

يحتوي النظام الأساسي 1C:Enterprise 8 على آلية مدمجة لتقييد الوصول إلى البيانات على مستوى السجل. يمكنك قراءة معلومات عامة عنها هنا. باختصار، سيسمح لك RLS بتقييد الوصول إلى البيانات بناءً على شروط معينة في قيم الحقول. على سبيل المثال، يمكنك تقييد وصول المستخدم إلى المستندات اعتمادًا على قيمة السمة "المؤسسة". سيعمل بعض المستخدمين مع المستندات الخاصة بمؤسسة "شركة الإدارة"، والبعض الآخر مع مؤسسة "مصنع الألبان". كمثال.

تحضير

سنقوم بتنفيذ المثال في التكوين التجريبي لـ SCP 1.3. لنقم بإنشاء مستخدم "Storekeeper" ونضيف إليه الدور الذي يحمل نفس الاسم "Storekeeper".

لننتقل الآن مباشرةً إلى إعداد حقوق الوصول على مستوى السجل. دعنا ننتقل إلى واجهة "إدارة المستخدم". في القائمة الرئيسية، حدد "الوصول على مستوى السجل -> الخيارات". هنا، حدد المربع بجوار "تقييد الوصول على مستوى السجل حسب نوع الكائن"، وحدد "المؤسسات" في قائمة الكائنات.

وهكذا، قمنا بتمكين استخدام RLS. الآن تحتاج إلى تكوينه.

لم يتم تكوين التحكم في الوصول على مستوى السجل بشكل منفصل لكل مستخدم أو ملف تعريف إذن. تم تكوين RLS لمجموعات المستخدمين. دعونا نضيف مجموعة مستخدمين جديدة، نسميها "أصحاب المتاجر"

يُظهر تكوين المجموعة على الجانب الأيمن من النموذج قائمة بالمستخدمين الذين ينتمون إلى هذه المجموعة. دعونا نضيف المستخدم الذي أنشأناه سابقًا إلى القائمة. على اليسار يوجد جدول قيود الوصول. عند إعداد RLS، اخترنا أن الوصول سيكون محدودًا فقط حسب المؤسسة، لذلك نرى نوعًا واحدًا فقط من كائنات الوصول. انقر على زر "إعدادات الوصول". سيتم فتح معالجة إعداد حقوق الوصول للمجموعة الحالية.

دعونا نضيف منظمة "IPE "Entrepreneur" إلى قائمة كائنات الوصول للمجموعة. سيبقى نوع وراثة الحقوق دون تغيير. سنقوم بتعيين الحق في القراءة والكتابة لكائن الوصول. انقر فوق "موافق"، الإعدادات جاهزة. لقد قمنا للتو بتكوين RLS على مستوى المؤسسة.

ما يراه المستخدم

لنبدأ بتشغيل البرنامج ضمن المستخدم الذي تم إنشاؤه مسبقًا ونفتح دليل "المنظمات". هذا هو الشكل الذي ستبدو عليه القائمة بالنسبة لمستخدمنا وللمستخدم الذي يتمتع بالحقوق الكاملة:

كما نرى، يرى مستخدم صاحب المتجر مؤسسة واحدة فقط منحناها حق الوصول للقراءة. الأمر نفسه ينطبق على المستندات، على سبيل المثال، استلام البضائع والخدمات.

وبالتالي، لن يتمكن المستخدم من رؤية المؤسسات التي لم يتم تعيين حق الوصول لها فحسب، بل لن يتمكن أيضًا من قراءة/كتابة المستندات والكائنات الأخرى في قاعدة المعلومات التي تم تعيين حقوقها في دور "المؤسسة" يصف.

لقد نظرنا إلى أبسط مثال لإعداد RLS. سنتحدث في المقالة التالية عن تنفيذ آلية RLS في إصدار التكوين "Manufacturing Enterprise Management" 1.3.

جميع إعدادات حقوق المستخدم التي سنقوم بها في إطار هذه المقالة موجودة في القسم 1C 8.3 "الإدارة" - "إعدادات المستخدم والحقوق". تشبه هذه الخوارزمية في معظم التكوينات في النماذج المُدارة. سيتم استخدام برنامج 1C Accounting كمثال، ولكن إعداد الحقوق في البرامج الأخرى (1C UT 11، 1C ZUP 3، 1C ERP) يتم بنفس الطريقة تمامًا.

دعنا نذهب إلى قسم "المستخدمون" في نافذة الإعدادات. نرى هنا رابطين تشعبيين: "المستخدمون" و"إعدادات تسجيل الدخول". الأول منهم يسمح لك بالانتقال مباشرة إلى قائمة مستخدمي قاعدة المعلومات هذه. قبل إنشاء مستخدم جديد، دعونا نلقي نظرة على إعدادات تسجيل الدخول الممكنة (الارتباط التشعبي الموجود على اليمين).

في نموذج الإعدادات هذا، يمكنك تكوين مدى تعقيد كلمة المرور (7 أحرف على الأقل، والمحتوى الإلزامي لأنواع مختلفة من الأحرف، وما إلى ذلك). يمكنك أيضًا تحديد طول كلمة المرور ومدة صلاحيتها ومنع المستخدمين من تسجيل الدخول إلى البرنامج إذا لم يكونوا نشطين لفترة زمنية معينة.

يمكنك الآن المتابعة مباشرة لإضافة مستخدم جديد إلى 1C. ويمكن القيام بذلك عن طريق الضغط على زر "إنشاء"، كما هو موضح في الصورة أدناه.

بادئ ذي بدء، سنشير إلى الاسم الكامل - "ديمتري بتروفيتش أنتونوف"، واختيار فرد من الدليل المقابل. هنا يمكنك أيضًا الإشارة إلى القسم الذي يعمل فيه موظفنا.

تم استبدال اسم تسجيل الدخول "AntonovDP" تلقائيًا كاختصار للاسم الكامل "Dmitry Petrovich Antonov". لنقم بإعداد كلمة مرور ومصادقة 1C Enterprise. هنا يمكنك أيضًا الإشارة إلى ما إذا كان بإمكان هذا المستخدم تغيير كلمة المرور الخاصة به بشكل مستقل.

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

دعنا ننتبه إلى إعداد مهم آخر في بطاقة دليل المستخدم - "مسموح بتسجيل الدخول إلى البرنامج". إذا لم يتم تعيين التأخر، فلن يتمكن المستخدم ببساطة من إدخال قاعدة المعلومات هذه.

حقوق الوصول

بعد ملء جميع البيانات الموجودة في بطاقة المستخدم - ديمتري بتروفيتش أنتونوف، سنكتبها وننتقل إلى إعداد حقوق الوصول، كما هو موضح في الشكل أدناه.

تم فتح قائمة بملفات تعريف الوصول التي تم إدخالها مسبقًا في البرنامج أمامنا. حدد المربعات المطلوبة.

الوصول إلى ملفات تعريف المجموعة

يمكن تكوين ملفات تعريف مجموعة الوصول من المستخدم الرئيسي ونموذج إعداد الحقوق. انتقل إلى قسم "مجموعات الوصول" وانقر على الرابط التشعبي "ملفات تعريف مجموعة الوصول".

لنقم بإنشاء مجموعة جديدة من نموذج القائمة الذي يفتح. في القسم الجدولي في علامة التبويب "الإجراءات (الأدوار) المسموح بها"، حدد المربعات الخاصة بتلك الأدوار التي ستؤثر على حقوق الوصول للمستخدمين المدرجين في المجموعة التي نقوم بإنشائها. يتم إنشاء كل هذه الأدوار وتكوينها في أداة التهيئة. ولا يمكن تغييرها أو إنشاء أخرى جديدة من وضع المستخدم. يمكنك الاختيار فقط من القائمة الموجودة.

RLS: تقييد الوصول إلى مستوى السجل

يتيح لك تكوين الوصول إلى بيانات البرنامج في مناطق معينة بشكل أكثر مرونة. لتنشيطه، حدد المربع الذي يحمل نفس الاسم في نموذج إعدادات المستخدم والحقوق.

يرجى ملاحظة أن تمكين هذا الإعداد قد يؤثر سلبًا على أداء النظام. النقطة المهمة هي أن آلية RLS تعدل جميع الطلبات اعتمادًا على القيود الموضوعة.

دعنا ننتقل إلى ملف تعريف مجموعة الوصول "Test Group" الذي أنشأناه سابقًا. يوضح الشكل أدناه أنه بعد تمكين قيود الوصول على مستوى السجل، ظهرت علامة تبويب إضافية "قيود الوصول".

لنفترض أننا نريد أن يتمكن المستخدمون المعينون في مجموعة اختبار من الوصول إلى البيانات الخاصة بجميع المؤسسات في قاعدة المعلومات هذه، باستثناء تلك المحددة في ملف التعريف.

في الجزء العلوي من الجدول، سنضع قيود الوصول حسب المنظمة. في الجزء السفلي، سنوضح أن الوصول إلى البيانات (المستندات والأدلة وما إلى ذلك) لن يتم توفيره لمنظمة "Roga LLC".

مشكلة كلاسيكية: منح المستخدم حق الوصول إلى كائن ما، ولكن ليس لجميع العناصر/المستندات، ولكن لبعضها فقط.

على سبيل المثال، حتى يتمكن المدير من رؤية التقارير الخاصة بعملائه فقط.

أو يمكن أن يكون القيد "الكل ما عدا البعض".
أو أن التقييد ليس على الكتب المرجعية/الوثائق، ولكن لتسجيل البيانات

على سبيل المثال، حتى لا يتمكن المستخدمون من استخراج بيانات المدفوعات للشركاء باستخدام أي تقرير.

في جوهره، يعد هذا إعدادًا دقيقًا ومرنًا للغاية لـ "ما يمكن لهذا المستخدم رؤيته وما لا يحتاج إلى تخمينه".

لماذا RLS؟

تتطلب معظم التطبيقات أن يقوم مستخدمون مختلفون بتعيين مستويات مختلفة للوصول إلى المعلومات في قاعدة البيانات.

في التكوينات، تكون كائنات بيانات التعريف الخاصة - الأدوار - مسؤولة عن حقوق الوصول المحتملة إلى البيانات. يتم تعيين دور واحد أو أكثر لكل مستخدم لقاعدة المعلومات. وهي تحدد ما إذا كانت العمليات على كائنات بيانات وصفية محددة ممكنة (القراءة والكتابة والنشر وما إلى ذلك).

ولكن هذا ليس كل شيء.

غالبا ما يكون ذلك ضروريا ليس فقط فتح/رفض الوصول إلى كائن معين، ولكن تقييد الوصول إلى جزء من البيانات الموجودة فيه.

لا يمكن حل هذه المشكلة باستخدام الأدوار وحدها.- لهذا الغرض، تم تنفيذ آلية لتقييد الوصول على مستوى السجل (RLS).

تمثل القيود الشروط التي بموجبها سيتم السماح بإجراء على البيانات (القراءة والكتابة وما إلى ذلك). – بهذه الطريقة يمكنك تقييد الوصول ليس إلى الكائن ككل، ولكن فقط إلى جزء من بياناته.

حول RLS - بمزيد من التفاصيل: 8 مقاطع فيديو وملف PDF

وبما أن هذه مهمة إدارية شائعة في 1C، فإننا نقترح الاطلاع على مواد أكثر تفصيلاً:

تقييد الوصول إلى البيانات باستخدام الأدوار

يشرح هذا الفيديو كيفية تقييد الوصول إلى البيانات باستخدام الأدوار. تم التوضيح أن الأدوار تحد من الوصول إلى نوع من كائنات قاعدة المعلومات (دليل منفصل، ولكن ليس عناصر محددة من الدليل).

حدود مستوى السجل (RLS)

يتحدث هذا الفيديو عن آلية قيود الوصول على مستوى السجل (RLS)، عندما يمكنك تكوين الوصول ليس إلى الدليل بأكمله ككل، ولكن إلى عناصره الفردية، اعتمادًا على تلك المخزنة في قاعدة بيانات المعلومات. يتم تحديد قيود مماثلة في الأدوار.

تنفيذ قيود الوصول على مستوى السجل لدليل المقاولين

يشرح هذا الفيديو كيفية إعداد وصول المدير فقط إلى الأطراف المقابلة الخاصة بهم المعينة لهم في التكوين التجريبي للتطبيق المُدار.

كيف تعمل قيود الوصول على مستوى السجل المنخفض

يشرح هذا الفيديو كيفية تحويل النظام الأساسي للاستعلامات المقدمة إلى خادم DBMS للتنفيذ عندما تكون هناك قيود على الوصول على مستوى السجل.

تطبيق قيود الوصول المتعددة على مستوى السجل معًا

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

فرض القيود باستخدام طريقة ALL

يصف هذا الفيديو الطريقة الأولى لفرض القيود على مستوى السجل - طريقة الكل. في هذه الحالة، إذا كان التحديد يتضمن سجلات تم تقييد الوصول إليها، فسيتم عرض رسالة خطأ.

فرض القيود باستخدام الطريقة المسموح بها

يصف هذا الفيديو الطريقة الأولى لفرض قيود على مستوى السجل - الطريقة المسموح بها. في هذه الحالة، سيتم تضمين فقط تلك السجلات التي يتمتع المستخدم بحقوق الوصول إليها في التحديد.

فيما يلي بعض المواضيع من الدورة:

  • تثبيت وتحديث منصة 1C:Enterprise 8 – يدوي وتلقائي لنظامي التشغيل Windows وLinux
  • بداية تلقائيةلأداء العمليات الروتينية
  • تحديث التكوينات من وضع المستخدم
  • تحديث التكوينات غير القياسية. كيفية تجنب المشاكل عند التحديثالتكوينات القياسية المعدلة
  • إنشاء الخاصة بك تسليم ملفات cfu
  • أدوات BSP: النماذج الخارجية، ومعالجة ملء الوثائق، الخ.
  • الاستخدام DBMS PostgreSQL مجاني
  • التثبيت والإطلاق كتلة الخادم 1ج: المؤسسة 8
  • فائدة الإدارةلإعداد مجموعة وخوادم عاملة
  • إعدادات RLSباستخدام مثال UPP 1.3 وERP 2
  • ماذا تفعل إذا البيانات في أمن المعلومات تالفة
  • إعدادات تبادل البياناتبين التكوينات
  • منظمة تطوير المجموعة
  • الإعداد والاستخدام مفاتيح حماية الأجهزة
  • تراخيص البرامج 1C: التثبيت والربط بالمعدات الخارجية

على أي حال، في مرحلة ما، سيتعين عليك نشر 1C، وتكوين الحجوزات، وحقوق الوصول، وأوضاع التشغيل المختلفة، واختبار سلامة قواعد البيانات، وضمان تشغيل الخوادم، وما إلى ذلك.

ومن الأفضل أن تفعل ذلك على الفور.

حتى لا يحدث ذلك لاحقا "...! حسنا ماذا...! خاصة بك...!" – وغيرها من عبارات الندم :)

غالبًا ما تكون هناك حاجة لتقييد الوصول إلى البيانات جزئيًا. على سبيل المثال، عندما يجب على المستخدم رؤية المستندات من مؤسسته فقط. في مثل هذه الحالات، تستخدم 1C آلية لتقييد الوصول على مستوى السجل (ما يسمى RLS - مستوى السجل الآمن).

على سبيل المثال، لنفترض أننا نواجه المهمة التالية. تحتفظ المؤسسة بمحاسبة متعددة الشركات وينتمي كل طرف مقابل ومستخدم قاعدة بيانات إلى مؤسسة معينة. من الضروري توفير الوصول إلى دليل "الأطراف المقابلة" بحيث يمكن لكل مستخدم عرض وتحرير وإضافة المقاولين لمنظمته فقط.

لحل المشكلة سوف نستخدم منصة 1C:Enterprise 8.2. لنقم بإنشاء تكوين جديد في الخصائص التي سيتم فيها تحديد خيار "التطبيق المُدار" باعتباره وضع التشغيل الرئيسي.

بعد ذلك، سنقوم بإنشاء دليل "المنظمات" ودليلين آخرين - "الأطراف المقابلة" و"المستخدمون" مع "المنظمة" المطلوبة. بالإضافة إلى الأدلة، سنحتاج إلى معلمتين للجلسة - "المؤسسة" و"المستخدم" (من الأنواع المناسبة). يتم تعيين قيم هذه المعلمات عند بدء جلسة التكوين ويتم تخزينها حتى تنتهي. إنها قيم هذه المعلمات التي سنستخدمها عند إضافة شروط تقييد الوصول على مستوى السجل.

يتم ضبط معلمات الجلسة في وحدة خاصة – "وحدة الجلسة"

سنصف في هذه الوحدة الإجراء المحدد مسبقًا "إعداد معلمات الجلسة" والذي سنسمي فيه وظيفة الوحدة العامة المعدة مسبقًا "الحقوق الكاملة". يعد هذا ضروريًا نظرًا لخصائص قاعدة البيانات التي تعمل في وضع التطبيق المُدار، عندما لا يمكن تنفيذ جزء من كود البرنامج إلا على جانب الخادم (لن أطيل في شرح هذه المبادئ بالتفصيل في هذه المقالة).

الكود 1C v 8.x الإجراء إعداد معلمات الجلسة (المعلمات المطلوبة)
FullPermissions.SetSessionParameters();
نهاية الإجراء

في خصائص وحدة "الحقوق الكاملة"، يجب عليك تحديد مربعات الاختيار "الخادم" و"خادم الاتصال" و"المميز" (يعني الأخير أنه سيتم تنفيذ إجراءات ووظائف هذه الوحدة دون التحكم في حقوق الوصول). سيبدو نص الوحدة كما يلي:

الكود 1C v 8.x وظيفة تحديدCurrentUser()
TechUser = Directory.Users.FindByName(UserName(), True);
عودة مستخدم التقنية؛
وظيفة النهاية

الإجراء SetSessionParameters () تصدير
CurrentUser = DefineCurrentUser();
CurrentOrganization = Directory.Organizations.EmptyLink();
إذا كانت القيمة معبأ (المستخدم الحالي) ثم
CurrentOrganization = CurrentUser.Organization;
إنهاء إذا؛
SessionParameters.User = CurrentUser;
SessionParameters.Organization = CurrentOrganization;
نهاية الإجراء

تصدير FunctionSessionParameterSet(ParameterName).
قيمة الإرجاع مليئة(SessionParameters[ParameterName]);
وظيفة النهاية

دور الوظيفة متاح لتصدير المستخدم (اسم الدور).
return RoleAvailable(RoleName);
وظيفة النهاية

في وحدة التطبيق المُدارة، سنتحقق من وجود مستخدم التكوين في دليل "المستخدمين" (للتبسيط، سنبحث عنه بالاسم) ونغلق النظام إذا لم يتم العثور عليه. يعد ذلك ضروريًا للتأكد من ملء معلمات الجلسة.

الإجراء Code 1C v 8.x قبل بدء تشغيل النظام (فشل)
// سوف نتحقق من وجود الجميع باستثناء المسؤول في دليل "المستخدمين".
إذا لم يكن FullRights.RoleAvailableToUser("FullRights") إذن
إذا لم يكن FullRights.SessionParameterSet("User") إذن
تحذير("المستخدم """ + UserName() + """ غير موجود في الدليل!");
رفض = صحيح؛
يعود؛
إنهاء إذا؛
إنهاء إذا؛
نهاية الإجراء

الآن يمكننا المتابعة مباشرة إلى وصف قيود الوصول. للقيام بذلك، قم بإنشاء دور "المستخدم" وانتقل إلى علامة التبويب "قوالب التقييد"، حيث نضيف قالبًا جديدًا "AccountsReadingChange" مع نص القالب التالي: حيث المنظمة = المنظمة #Parameter(1)


يعد نص نمط القيد امتدادًا للغة الاستعلام. على عكس الطلب العادي، يجب أن يحتوي نص القيد بالضرورة على شرط "أين". يتم استخدام قيم معلمات الجلسة التي تحمل الاسم نفسه كقيم معلمات الطلب (في حالتنا "&المؤسسة"). بناء مثل #Parameter(1) يعني أن النظام في هذا المكان سيستبدل النص الذي تم تمريره كمعلمة أولى حيث يتم استخدام القالب. باستخدام النموذج المقدم، سيتم فحص كل إدخال في الجدول (في حالتنا، سيكون هذا هو دليل "الأطراف المقابلة"). بالنسبة للسجلات التي تتطابق قيمة سمة "المؤسسة" الخاصة بها مع تلك المحددة في معلمة الجلسة المقابلة، سيتم استيفاء الشرط الموضح في القالب. بهذه الطريقة، ستكون هذه السجلات متاحة للقراءة أو التحرير أو الإضافة (اعتمادًا على أي من هذه الحقوق ينطبق عليها القالب). سأوضح ما ورد أعلاه باستخدام مثالنا.

دعنا ننتقل إلى علامة التبويب "الحقوق" في دور "المستخدم" ونفتح قائمة الحقوق في دليل "الأطراف المقابلة". سوف نستخدم قالب تقييد "AccountsReadingChange" لحقوق "القراءة" و"التغيير" و"الإضافة".

للحصول على حق "القراءة"، سنستخدم قالبًا يحتوي على المعلمة "OR ThisGroup". في هذه الحالة، سيتم السماح لمستخدمي هذا الدور بقراءة ليس فقط عناصر دليل "الحسابات" الخاص بمؤسستهم، ولكن أيضًا جميع مجموعات هذا الدليل.

#CounterpartiesReadChange("OR ThisGroup")

نظرًا لأنه عند إضافة عناصر دليل جديدة، يقرأ النظام ضمنيًا التفاصيل المحددة مسبقًا (وهذا ضروري، على سبيل المثال، للترقيم)، فمن الضروري ضمان قراءة هذه الحقول دون عوائق. للقيام بذلك، قم بإضافة سطر إضافي يحتوي على نص تقييد فارغ إلى جدول تقييد الوصول إلى البيانات وقم بإدراج الحقول التي تنطبق عليها هذه القاعدة - الرابط، إصدار البيانات، الأصل، الكود.

وهكذا، تم حل مهمة تقييد الوصول على مستوى السجل. لن يتمكن المستخدمون الذين لديهم قيود حالية من الوصول إلا لعرض البيانات وتحريرها لمؤسستهم.