مراجعة مستويات وصول المستخدم باستخدام Power BI باستخدام مثال Bitrix CMS (BUS)

صورة

تعرض هذه المقالة مثالًا على استخدام Power BI لتحليل وصول المستخدم على موقع يستخدم 1C-Bitrix.

المشكلة


بمرور الوقت ، يرتبط عدد متزايد من المستخدمين بتطوير موارد الإنترنت بطريقة أو بأخرى ، مع حقوق متقدمة أكثر من المستخدم العادي للموقع.

في هذا الصدد ، أصبح من الصعب بشكل متزايد السيطرة على الوصول إلى وظائف سرية. حسنًا ، إذا تمت كتابة القواعد التي تساعد على التحكم في الوصول بمستوى آمن إلى حد ما. ولكن غالبًا ما يحدث أن ينتقل الزملاء إلى وحدات أخرى ، أو يتابعون المراسيم :) أو يغادرون ، ويبقى الوصول.

بطبيعة الحال ، هذا يحمل تهديدات مختلفة: تسرب قاعدة العملاء ، جيدًا ، حتى التخريب ، إلخ.
كان عمر المشاريع التي أعمل بها بالفعل 10 سنوات. تحتوي قاعدة البيانات على مئات الآلاف من المستخدمين ، بما في ذلك المئات مع حقوق مميزة.

تعرض هذه المقالة مثالًا على كيفية تبسيط تدقيق المستخدمين لمختلف كائنات الموقع تحت سيطرة Bitrix CMS (BUS).

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

سيتم استخدام Power BI كأداة رئيسية لهذا (قليلاً من غرضه الرئيسي :)

من المفترض أن يكون القارئ معتادًا بالفعل على Power BI على مستوى أساسي ، ويعرف أساسيات SQL ، ويعرف أيضًا كيفية استخدام لوحة إدارة Bitrix. سيتم النظر في ميزات إمكانية الوصول القياسية في Bitrix.

عيوب لوحة إدارة Bitrix


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

أداء المسؤول:

  1. في قسم "مجموعات المستخدمين" في لوحة إدارة Bitrix ، هناك ميزة تنشئ استعلام SQL لتحديد جميع المجموعات بعدد المستخدمين. كل شيء جيد عندما تكون القاعدة صغيرة. ولكن مع وجود قاعدة بيانات لمئات الآلاف من المستخدمين ، مع وجود مئات مجموعات المستخدمين على خادم مخصص به ذاكرة وصول عشوائي سعتها 128 جيجابايت ، فإن فتح هذا القسم ببساطة يستغرق 8 ثوانٍ.
  2. يوجد أيضًا طلب في بطاقة المجموعة ، والتي تحدد لسبب ما جميع مجموعات المستخدمين ، بدلاً من تلقي البيانات فقط للواحد المحدد. خسارة في الانتظار 3 ثوانى.

سبل حل


عادة ما يكون هناك العديد من الحلول لهذه المشكلة.

  1. اكتب قواعد توفير الوصول إلى المواقع ومتابعتها بوضوح.
  2. إجراء دوريا تدقيقات الوصول.
  3. على أمل الأفضل وليس إضاعة موارد الشركة المحدودة.

هذه المادة سوف تنظر فقط في الطريقة الثانية.

المهام


  1. اختر الأدوات التي تسمح لك بالحصول بسرعة على البيانات على مستويات الوصول لكل مستخدم لديه حقوق ممتدة.
  2. قم بإعداد الأدوات بحيث تظهر بوضوح الصورة مع وصول ككل مع التفاصيل اللازمة والتفاعل.
  3. إجراء عمليات تدقيق الوصول.

الوصول إلى التخزين في Bitrix


يتيح لك Bitrix تكوين الحقوق بمرونة تامة من خلال مجموعات المستخدمين.
يتم تخزين إعدادات الوصول بشكل رئيسي في جداول MySQL. يتم تخزين بعض الإعدادات في الملفات. على سبيل المثال ، يتم تخزين الوصول إلى الملفات والمجلدات في ملفات .access.php.

تحليل وصول المستخدم ومجموعة المستخدم إلى:

  • كتل المعلومات
  • نماذج الويب مع مستوى الوصول
  • حالات نموذج الويب مع مستوى الوصول
  • أقسام الموقع
  • وحدات Bitrix مع مستويات الوصول

الأدوات


  1. يوفر Power BI Desktop ، الذي يسمح لك بتصور البيانات بشكل جيد ، الحصول على بيانات من مصادر عديدة (تقريبًا) من خارج الصندوق. في الواقع ، يمكن استبدال Power BI بـ Excel 2016 المعتاد والإصدارات الأحدث - تم تضمين PowerQuery بالفعل في تسليمه ، حيث يمكنك من خلاله تحديد جميع البيانات للتحليل. ومع ذلك ، يتيح لك Power BI عرض البيانات بشكل تفاعلي بناءً على علاقاتهم ، وهذا يتيح لك العثور بسرعة على التبعيات المخفية.
  2. مطلوب رابط MySQL لتكون قادرة على إنشاء استعلام من خلال Power BI إلى خادم الويب MySQL.
  3. كيتي أو معجون للنفق إلى MySql إذا كان الوصول إلى قاعدة البيانات مفتوحًا فقط من خلال SSH.

تم الحصول على مخطط الوصول التالي: Power BI → MySQL Connector → Kitty → MySQL.

السلطة BI


Power BI Desktop - يسمح لك بتصور البيانات بشكل جيد ، والحصول على بيانات من مصادر عديدة (تقريبًا) خارج الصندوق. في الواقع ، يمكن استبدال Power BI بـ Excel 2016 المعتاد والإصدارات الأحدث - تم تضمين PowerQuery بالفعل في تسليمه ، حيث يمكنك من خلاله تحديد جميع البيانات للتحليل. ومع ذلك ، يتيح لك Power BI عرض البيانات بشكل تفاعلي بناءً على علاقاتها ، وهذا يتيح لك العثور بسرعة على التبعيات المخفية ، وهو ما نحتاجه لمراجعات الوصول.

يمكنك تنزيله على الصفحة الرسمية .

الخلية موصل


انتقل إلى الصفحة . تحميل وتثبيت. في بعض الأحيان سيكون عليك إعادة تشغيل جهاز الكمبيوتر بعد التثبيت.

كيتي / المعجون


لتنفيذ استعلامات SQL في قاعدة بيانات Bitrix ، ستحتاج إلى تكوين النفق.

  1. أدخل خادم IP والمنفذ

    صورة
  2. نطرق اسم المستخدم وكلمة المرور على SSH

    صورة
  3. نجعل ميناء الشحن:

    صورة
  4. نحفظ الإعدادات المعدة للاستخدام في المستقبل في الملف الشخصي:

    صورة
  5. نبدأ.

يمكنك أيضًا تنزيل المعجون وتشغيله باستخدام الأمر:

putty.exe -ssh "USER@HOST" -pw "PASSWORD" -2 -v -P 22 -L 3306:127.0.0.1:3306 

بطبيعة الحال ، يجب تشغيل Kitty / Putty قبل تحديث البيانات في Power BI.

المستخدمين ومجموعات المستخدمين


كما في العديد من CMS ، تطبق Bitrix آلية لتحديد حقوق الوصول من خلال مجموعات المستخدمين.

إلغاء تحميل الكيانات من قاعدة البيانات في نموذج بيانات Power BI:

  • مجموعة
  • المستخدمين

... وكذلك العلاقات بين المجموعات والمستخدمين.

مجموعة


نحن نقتصر فقط على المجموعات النشطة.

يتم تخزين قائمة المجموعات في جدول b_group.

  1. إنشاء اتصال:

    صورة
  2. أدخل:

    1. في الخادم: المضيف المحلي: 3306 الحقل
    2. في قاعدة البيانات: حقل bitrix_db (اسم قاعدة البيانات التي يعمل Bitrix)
    3. استعلام SQL:

       SELECT id, timestamp_x, active, name, description, anonymous FROM b_group WHERE active = 'Y'; 

      صورة

  3. أدخل تسجيل الدخول وكلمة المرور إلى قاعدة البيانات وإرسال طلب:

    صورة

    صورة

    صورة
  4. إعطاء اسم مألوف على الفور للطلب:

    صورة
  5. نحن ندرج المجموعات في ورقة منفصلة في شكل جدول:

    صورة

ستكون طريقة استخراج البيانات وتقديمها مماثلة لاستعلامات أخرى متعلقة بقاعدة بيانات Bitrix.

المستخدمين


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

نحن نقصر أنفسنا على المستخدمين المنشطين فقط.

للقيام بذلك ، تحتاج إلى:

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

لنبدأ:

  1. اتصل بمحرر الاستعلام: الصفحة الرئيسية → تحرير الاستعلامات
  2. دعونا ننشئ رابطًا للطلب الأولي لـ "Group":

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

    صورة
  4. الآن نحصل على سطر يحتوي على معرفات المجموعة مفصولة بفواصل:
    • إضافة عمود مخصص: AddColumn → عام → Custom Column

      صورة
    • احذف جميع الأعمدة باستثناء المعرّف والتجميع:

      صورة
    • تجميع حسب عمود "التجميع":

      صورة

      صورة
    • أضف عمودًا آخر كما يلي:

      صورة
    • دعنا نوسع القائمة بحيث يتم فصل القيم بفواصل:

      صورة
    • والسقوط في الخلية الناتجة:

      صورة
    • يقوم Power BI بعد ذلك بتحويل الاستعلام إلى متغير يمكن استخدامه في استعلامات SQL الديناميكية:

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

    استعلام SQL:

     SELECT ug.user_id, ug.group_id FROM b_user_group ug JOIN b_group g ON g.id = ug.group_id JOIN b_user u ON u.id = ug.user_id WHERE g.ACTIVE = 'Y' AND u.ACTIVE = 'Y' AND ug.group_id IN (); 

    يجب استبدال XXX بمعرفات المجموعة ، مفصولة بفواصل.
  6. سوف نتصل بمصدر طلب التعديل واستبداله بما يلي:

     let sql = "SELECT ug.user_id, ug.group_id #(lf)FROM b_user_group ug #(lf)JOIN b_group g ON g.id = ug.group_id #(lf)JOIN b_user u ON u.id = ug.user_id #(lf)WHERE g.ACTIVE = 'Y' #(lf) AND u.ACTIVE = 'Y' #(lf) AND ug.group_id IN ("&#"ID "&");", Source = MySQL.Database("localhost:3306", "bitrix_db", [ReturnSingleDatabase=true, Query=sql, CreateNavigationProperties=false]) in Source 

  7. بعد ذلك ، يمكنك الحصول على التحذير التالي:

     Formula.Firewall: Query '-' (step 'Source') references other queries or steps, so it may not directly access a data source. Please rebuild this data combination. 

    للتخلص منه ، تحتاج إلى تغيير مستوى الخصوصية:

    صورة

    صورة

    بعد ذلك ، قم بتحديث الاستعلامات.
  8. نحن نصنع المتغير "معرف المستخدم" بنفس الطريقة التي تم بها "معرف المجموعة" (أي ، نقوم بعمل رابط من طلب المستخدمين ، إلخ). باستخدامه ، سنقوم بإنشاء استعلام SQL الذي يسمح لنا بتحديد المستخدمين الذين نحتاج للتحليل فقط. أولاً قم بإزالة مكررة user_id:

    صورة
  9. نقوم بإنشاء طلب لمجموعة مختارة من المستخدمين ، على غرار الطريقة التي يتم بها لـ "مجموعة المستخدم".

     SQL: SELECT id, last_name, NAME, email, date_register, last_login FROM b_user WHERE active = 'Y' AND id IN ( ); 

    سيحتاج XXX إلى استبدال معرفات المستخدم.

إقامة علاقات بين الطلبات


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

  • "مجموعة المستخدم" [group_id] → "المجموعات" [معرّف]
  • "User-group" [user_id] → "Users" [id]

صورة

وبالمثل ، سنربط الاستعلامات الأخرى.

تقرير المستخدم ومجموعة المستخدم


في علامة التبويب "التقارير" ، نعرض قائمة بالمستخدمين والمجموعات التي تستخدم جدول كعنصر مرئي.

من طلب "المستخدمون" ، حدد الحقول: اسم_الاسم ، الاسم ، اسم_الموقع ، البريد الإلكتروني.
من طلب "مجموعة المستخدم" ، حدد الحقل group_id.
لأن نظرًا لأننا قمنا بتعيين الاتصالات بين الطلبات ، فسيتمكن Power BI من استخدام الدالة التجميعية بشكل صحيح لحساب عدد المجموعات التي ينتمي إليها كل مستخدم على حدة.

صورة

دعنا نضيف جدولًا آخر بجانبه وحدد حقل الاسم من طلب المجموعة ، وحقل اسم المستخدم من طلب مجموعة المستخدم - اضبط مجموعة "العد (المميز)" لكي ترى عدد المستخدمين في المجموعة.

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

صورة

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

فيما يلي وصف لكيفية وضع الجداول المتبقية في التقرير العام لـ Power BI ، لأن يتم ذلك بطريقة مماثلة.

.access.php


في Bitrix ، يمكنك تعيين الوصول إلى المجلدات والملفات عن طريق تحديد أرقام المجموعات ومستوى الوصول المطلوب في ملفات .access.php.

مهمتنا هي تقليل البيانات من جميع ملفات .access.php المنتشرة حول خادم المشروع في طريقة عرض جدولية.

للقيام بذلك:

  1. نقوم بالبحث في جميع ملفات .access.php وحفظها من الخادم ، مع توفير المسارات إلى هذه الملفات.
    لقد استخدمت terminalka للبحث عن الملفات الموجودة ونسخها وأرشفتها. مثال الأوامر:

     find “BITRIX_PROJECT_DIR” -name '.access.php' -type f > “OUTPUT_DIR/.access.php.files.txt”&&tar cvfpz “OUTPUT_DIR/.access.php.files.tar” -T “OUTPUT_DIR/.access.php.files.txt”&&find “OUTPUT_DIR” -type d -exec chmod 775 {} \; && find “OUTPUT_DIR” -type f -exec chmod 775 {} \;&&find “OUTPUT_DIR” -type d -exec chown bitrix:bitrix {} \; && find “OUTPUT_DIR”/ -type f -exec chown bitrix:bitrix {} \; 

    هنا:

    • BITRIX_PROJECT_DIR - مجلد مع المشروع على Bitrix.
    • OUTPUT_DIR - المسار إلى المجلد الذي سيتم فيه وضع ملف .access.php.files.txt مع قائمة بالملحق .access.php ، بالإضافة إلى أرشيف .access.php.files.tar الذي يحتوي على نسخ من جميع الملفات التي تم العثور عليها .access.php.

    بطبيعة الحال ، إذا كان هناك العديد من المشاريع (يتم استخدام موقع متعدد المواقع) ، فإننا نختار مجلدًا يحتوي على جميع المشاريع.
  2. قم بتنزيل وفك ضغط أرشيف .access.php في مكان ما بجوار مشروع Power BI.
    كتبت ملف دفعي يقوم بذلك تلقائيًا: يتم تنفيذ التنزيل من خلال wget؛ من خلال 7zip - فك الضغط.

    ملف دفعي مثال:

    صورة

    ملف يحتوي على إعدادات لملف الدُفعات:

    صورة

قم الآن بإنشاء استعلام يلخص محتويات .access.php في نموذج جدول.

  1. للراحة ، قم بإنشاء معلمة تحتوي على المسار إلى المجلد الذي سنستخرج منه محتويات all .access.php

    صورة
  2. سنختار طلبًا من النوع "مجلد" واختر المعلمة الخاصة بنا كمسار:

    صورة
  3. توسيع مجال المحتوى:

    صورة

    XXXXXXX هو فاصل أعمدة ؛ تحتاج إلى عمود واحد بعد استيراد البيانات من جميع الملفات.
  4. بعد ذلك ، سيحذف Power BI العمود الذي نحتاجه ، والذي يحتوي على المسار إلى .access.php. لذلك ، نحتاج إلى تعديل الخطوة "إزالة الأعمدة الأخرى 1" ، وتحديد "مسار المجلد" فيها:

    صورة
  5. اترك الأعمدة: مسار المجلد والعمود 1.
  6. لإزالة المسار المطلق إلى الملف المحلي من "مسار المجلد" ، استخدم البديل:

    صورة
  7. تحتوي ملفات .access.php على إعدادات الوصول بالتنسيق:

     $PERM[""]["ID "] = "< >"; 

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

    صورة

    كما ترى في حقل معرّف المجموعة ، هناك "*" (وصول للجميع). لكي نتمكن من تحديد اتصال مع الطلبات الأخرى ، نحتاج إلى جعل هذا الحقل عددًا صحيحًا ، دون فقد المعلومات حول "*" (والتي تعني بالنسبة لجميع المجموعات). دعنا نقدم طلبين ، مثل "رابط" لطلب DotAccessPhp الأصلي:

    • سيحتوي أول DotAccessPhpForRels على معرفات مجموعة صحيحة فقط (نستخدم المرشح عن طريق إزالة * في عمود معرف المجموعة) - سنقوم بتوصيله مع بقية الطلبات:
      صورة
    • الثاني - DotAccessPhpForAll - فقط * (استخدم عامل التصفية).

مخطط اتصال:

صورة

لعرض البيانات ذات الصلة فقط عند تحديد ملف من DotAccessForRels في طرق العرض الأخرى ، قم بتغيير المعلمة "Cross filter direction" إلى Both:

صورة

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

كتل المعلومات


تحتاج إلى إلغاء تحميل قائمة كتل المعلومات وجدول روابط كتل المعلومات مع مجموعات.

سنقوم فقط بتحميل معلومات حول كتل المعلومات النشطة.

  1. نقوم بإنشاء طلب "Infoblocks". استعلام SQL:

     SELECT i.id, i.NAME '', i.TIMESTAMP_X ' ', GROUP_CONCAT(ist.SITE_ID SEPARATOR ', ') '' FROM b_iblock i JOIN b_iblock_site ist ON ist.IBLOCK_ID = i.id GROUP BY 1,2,3;   “-”: SELECT ig.iblock_id, ig.group_id, ig.permission FROM b_iblock_group ig JOIN b_group g ON g.id = ig.group_id JOIN b_iblock i ON i.ID = ig.IBLOCK_ID WHERE g.ACTIVE = 'Y' AND i.ACTIVE = 'Y'; 
  2. نقوم بتحديث مخطط الاتصال ، دون أن ننسى تغيير معلمة "اتجاه التصفية المتقاطعة" إلى كليهما:

    صورة

شكل


في حالة النماذج ، تُمنح حقوق مجموعات المستخدمين للنماذج نفسها وللحالات التي توجد فيها نتيجة تعبئة النموذج.

  1. إنشاء طلب لـ "النماذج":

     SELECT f.ID, f.name '', GROUP_CONCAT(f2s.SITE_ID SEPARATOR ', ') '' FROM b_form f JOIN b_form_2_site f2s ON f2s.FORM_ID = f.ID GROUP BY 1, 2 ORDER BY 2; 
  2. قم بإنشاء طلب "مجموعة النماذج":

     SELECT DISTINCT f2g.group_id, f2g.form_id, f2g.PERMISSION ' ' FROM b_form_2_site f2s JOIN b_form_2_group f2g ON f2g.FORM_ID = f2s.FORM_ID JOIN b_group g ON g.ID = f2g.group_ID WHERE g.ACTIVE = 'Y' ORDER BY 1, 2, 3; 
  3. نقوم بإنشاء طلب "حالة النماذج".

     SELECT fs.ID, fs.TITLE '', fs.form_id FROM b_form_status fs JOIN b_form f ON f.ID = fs.FORM_ID WHERE fs.ACTIVE = 'Y' AND EXISTS (SELECT f2s.FORM_ID FROM b_form_2_site f2s WHERE f2s.FORM_ID = f.ID LIMIT 1) ORDER BY 3, 2; 
  4. إنشاء طلب "حالات مجموعة النماذج"

     SELECT fs2g.status_id, fs2g.group_id, fs2g.PERMISSION '' FROM b_form_status_2_group fs2g JOIN b_form_status fs ON fs.ID = fs2g.STATUS_ID JOIN b_group g ON g.ID = fs2g.group_ID JOIN b_form f ON f.ID = fs2g.GROUP_ID JOIN b_form_2_site f2s ON f2s.FORM_ID = f.ID WHERE fs.ACTIVE = 'Y' AND (g.ACTIVE = 'Y') ORDER BY 1, 2, 3; 
  5. تحديث نظام الاتصال:

    صورة

وحدات


  1. نقوم بإنشاء طلب "مجموعة الوحدة النمطية".

     SELECT mg.MODULE_ID '', mg.group_id, mg.G_ACCESS '', t.LETTER, t.NAME FROM b_module_group mg JOIN b_group g ON g.id = mg.GROUP_ID LEFT JOIN b_task t ON t.MODULE_ID = mg.MODULE_ID AND t.BINDING = 'module' WHERE g.active = 'Y' AND mg.G_ACCESS = t.LETTER; 
  2. تحديث الاتصالات:

    صورة

اللوحة


نحن نقوم بتخصيص أنماط الجداول ، ونستخدم المساحة القابلة للاستخدام إلى الحد الأقصى.

يجب أن تكون النتيجة شيء مشابه لما يلي:

صورة

لوحة نتائج معدلة قليلاً (عدد العناصر في الجداول):

صورة

بالمناسبة ، من المريح أولاً تهيئة مظهر جدول واحد ، ثم قم ببساطة بتطبيق طريقة العرض الخاصة به على الجداول الأخرى باستخدام Home → Format Painter. تعمل هذه الوظيفة بنفس الطريقة كما في Word و Excel (التنسيق حسب العينة).

روابط الادارية


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

مثال لطلب المجموعة:

صورة

أضف عمودًا إلى العرض:

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

تقرير الملفات


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

صورة

أضاف هذا التقرير أيضًا روابط لتحرير جميع .access.php مباشرةً من خلال لوحة إدارة Bitrix.

النتائج


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

تشمل مزايا هذا النهج أيضًا القدرة على استكمال النموذج في Power BI بسرعة بمعلومات إضافية من Bitrix ، على سبيل المثال ، يريد شخص ما معرفة متى تم إنشاء .access.php وغيرهم.

الآن ، بعد بناء نموذج حقوق الوصول وتصوره في Power BI ، يكفي:

  1. انقر باستمرار على المستخدمين والمجموعات والنماذج والملفات وفي الوقت الحقيقي نرى جميع الاتصالات المتعلقة بالوصول ؛
  2. انتقل بسرعة إلى صفحات المسؤول اللازمة لإجراء تعديلات ؛
  3. قم بتحديث نموذج البيانات بأحدث بيانات Bitrix مباشرة في Power BI.

نتيجة لذلك ، تم إجراء تدقيق وإجراء تعديل في وصول المستخدم.

ملاحظة: يوجد في السوق وحدة نمطية مجانية "Access Control Center" ، لكنها محدودة للغاية ، والتعليق الأخير عليها يزيد عن 5 سنوات. ربما يعجب أحد الأشخاص بفكرة إنشاء مثل هذه اللوحة في Bitrix وسيقوم بتنفيذها كوحدة نمطية ...

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

PS3. شكرًا لزملائي لمساعدتي في إعداد هذا المقال: ألكسندر فورونكوف ، يفغيني شبوتشكين ، أليكسي تيتوف.

Source: https://habr.com/ru/post/ar457626/


All Articles