Révision des niveaux d'accÚs utilisateur à l'aide de Power BI à l'aide de l'exemple de Bitrix CMS (BUS)

image

L'article montre un exemple d'utilisation de Power BI pour analyser l'accÚs des utilisateurs sur un site exécutant 1C-Bitrix.

Le problĂšme


Au fil du temps, de plus en plus d'utilisateurs sont connectés au développement des ressources Internet d'une maniÚre ou d'une autre, avec des droits avancés que l'utilisateur moyen du site.

À cet Ă©gard, il devient de plus en plus difficile de contrĂŽler l'accĂšs aux fonctions confidentielles. Eh bien, si des rĂšgles sont Ă©crites qui aident Ă  contrĂŽler l'accĂšs Ă  un niveau plus ou moins sĂ©curisĂ©. Mais il arrive souvent que des collĂšgues dĂ©mĂ©nagent dans d'autres unitĂ©s, prennent des dĂ©crets :) ou partent, et l'accĂšs reste.

Naturellement, cela comporte différentes menaces: la fuite de la clientÚle, enfin, jusqu'au sabotage, etc.
L'ùge des projets avec lesquels je travaille a déjà 10 ans. La base de données compte des centaines de milliers d'utilisateurs, dont des centaines avec des droits privilégiés.

Cet article montre comment vous pouvez simplifier l'audit des utilisateurs vers divers objets de site sous le contrĂŽle de Bitrix CMS (BUS).

Le problÚme est que le panneau d'administration Bitrix ne fournit pas la possibilité d'obtenir une image complÚte avec les accÚs; Il est également désagréable de cliquer sur un tas de liens et d'attendre le chargement des pages d'administration.

Power BI sera utilisé comme outil principal pour cela (un peu hors de son objectif principal :)

Il est supposé que le lecteur est déjà familiarisé avec Power BI à un niveau de base, connaßt les bases de SQL et sait également comment utiliser le panneau d'administration Bitrix. Les fonctionnalités d'accessibilité standard de Bitrix seront prises en compte.

Inconvénients du panneau d'administration Bitrix


Il est impossible d'effectuer un audit dans le panneau d'administration standard pendant un temps acceptable en raison du manque d'une image cohérente avec les accÚs - données récapitulatives pour tous les modules / sections / blocs d'informations, etc., auxquels l'accÚs est accordé.

Performances administratives:

  1. Dans la section «Groupes d'utilisateurs» du panneau d'administration Bitrix, il existe une fonctionnalitĂ© qui gĂ©nĂšre une requĂȘte SQL pour sĂ©lectionner tous les groupes avec un dĂ©compte du nombre d'utilisateurs. Tout est bon quand la base est petite. Mais avec une base de donnĂ©es de centaines de milliers d'utilisateurs, avec des centaines de groupes d'utilisateurs sur un serveur dĂ©diĂ© avec 128 Go de RAM, ouvrir simplement cette section prend 8 secondes.
  2. Il existe également une demande dans la carte de groupe, qui pour une raison quelconque sélectionne tous les groupes d'utilisateurs, au lieu de recevoir des données uniquement pour celui sélectionné. Perte en attente 3 sec.

Des solutions


Il existe généralement plusieurs solutions au problÚme.

  1. Écrivez les rùgles d'accùs aux sites et suivez-les clairement.
  2. Effectuer périodiquement des audits d'accÚs.
  3. Espérant le meilleur et ne gaspillant pas les ressources limitées de l'entreprise.

Cet article ne considérera que la deuxiÚme méthode.

Les tĂąches


  1. Choisissez des outils qui vous permettront d'obtenir rapidement des données sur les niveaux d'accÚs de chaque utilisateur avec des droits étendus.
  2. Configurez les outils pour qu'ils montrent clairement l'image avec les accÚs dans leur ensemble avec les détails et l'interactivité nécessaires.
  3. Effectuer des audits d'accĂšs.

Accéder au stockage dans Bitrix


Bitrix vous permet de configurer les droits de maniĂšre assez flexible via des groupes d'utilisateurs.
Les paramÚtres d'accÚs sont stockés principalement dans des tables MySQL. Certains paramÚtres sont stockés dans des fichiers. Par exemple, les accÚs aux fichiers et aux dossiers sont stockés dans des fichiers .access.php.

L'analyse de l'accĂšs des utilisateurs et des groupes d'utilisateurs Ă :

  • blocs d'informations
  • formulaires Web avec niveau d'accĂšs
  • statuts de formulaire Web avec niveau d'accĂšs
  • sections du site
  • Modules Bitrix avec niveaux d'accĂšs

Les outils


  1. Power BI Desktop, qui vous permet de bien visualiser les donnĂ©es, rĂ©cupĂšre les donnĂ©es de nombreuses sources (presque) hors de la boĂźte. En fait, Power BI peut ĂȘtre remplacĂ© par Excel 2016 habituel et supĂ©rieur - PowerQuery est dĂ©jĂ  inclus dans sa livraison, Ă  travers lequel vous pouvez sĂ©lectionner toutes les donnĂ©es Ă  analyser. Cependant, Power BI vous permet d'afficher de maniĂšre interactive des donnĂ©es en fonction de leurs relations, ce qui vous permet de trouver rapidement des dĂ©pendances cachĂ©es.
  2. Le connecteur MySQL est requis pour pouvoir crĂ©er une requĂȘte via Power BI sur le serveur Web MySQL.
  3. Kitty ou Putty pour le tunneling vers MySql si l'accÚs à la base de données est ouvert uniquement via SSH.

Le schĂ©ma d'accĂšs suivant est obtenu: Power BI → Connecteur MySQL → Kitty → MySQL.

Power BI


Power BI Desktop - vous permet de bien visualiser les donnĂ©es, d'obtenir des donnĂ©es de nombreuses sources (presque) hors de la boĂźte. En fait, Power BI peut ĂȘtre remplacĂ© par Excel 2016 habituel et supĂ©rieur - PowerQuery est dĂ©jĂ  inclus dans sa livraison, Ă  travers lequel vous pouvez sĂ©lectionner toutes les donnĂ©es Ă  analyser. Cependant, Power BI vous permet d'afficher de maniĂšre interactive des donnĂ©es en fonction de leurs relations, ce qui vous permet de trouver rapidement des dĂ©pendances cachĂ©es, ce dont nous avons besoin pour les rĂ©visions d'accĂšs.

Vous pouvez le télécharger sur la page officielle .

Connecteur MySQL


Allez à la page . Téléchargez et installez. Parfois, vous devrez redémarrer votre PC aprÚs l'installation.

Kitty / mastic


Pour exĂ©cuter des requĂȘtes SQL sur la base de donnĂ©es Bitrix, vous devrez configurer le tunnel.

  1. Entrez l'IP et le port du serveur

    image
  2. Nous martelons le nom d'utilisateur et le mot de passe sur SSH

    image
  3. Nous faisons la redirection de port:

    image
  4. Nous enregistrons les paramÚtres définis pour une utilisation future dans le profil:

    image
  5. Nous commençons.

Vous pouvez également simplement télécharger Putty et l'exécuter avec la commande:

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

Naturellement, Kitty / Putty doit ĂȘtre en cours d'exĂ©cution avant de mettre Ă  jour les donnĂ©es dans Power BI.

Utilisateurs et groupes d'utilisateurs


Comme dans de nombreux CMS, Bitrix implémente un mécanisme de délimitation des droits d'accÚs via des groupes d'utilisateurs.

Déchargez des entités de la base de données dans le modÚle de données Power BI:

  • Les groupes
  • Les utilisateurs

... ainsi que les relations entre les groupes et les utilisateurs.

Les groupes


Nous nous limitons uniquement aux groupes actifs.

La liste des groupes est stockée dans la table b_group.

  1. Créez une connexion:

    image
  2. Entrez:

    1. dans le champ Serveur: localhost: 3306
    2. dans le champ Database: bitrix_db (nom de la base de données avec laquelle Bitrix travaille)
    3. RequĂȘte SQL:

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

      image

  3. Saisissez l'identifiant et le mot de passe de la base de données et envoyez une demande:

    image

    image

    image
  4. Donnez immédiatement un nom convivial à la demande:

    image
  5. Nous listons les groupes sur une feuille séparée sous forme de tableau:

    image

Cette mĂ©thode d'extraction et de prĂ©sentation des donnĂ©es sera similaire pour les autres requĂȘtes liĂ©es Ă  la base de donnĂ©es Bitrix.

Les utilisateurs


Déchargez maintenant tous les utilisateurs qui ont des droits avancés. Mais vous ne devez pas décharger les utilisateurs inclus uniquement dans des groupes qui ne leur accordent aucun droit supplémentaire, par exemple, "Tous les utilisateurs, y compris non enregistrés" (il convient de noter que la connexion de ce groupe avec les utilisateurs est stockée pour tous les utilisateurs enregistrés avant la version 12. Dans les versions plus récentes versions, le groupe est considéré comme systémique et ne stocke pas de données sur la communication avec les utilisateurs de la base de données).

Nous nous limitons aux utilisateurs activés uniquement.

Pour ce faire, vous avez besoin de:

  1. Sélectionnez tous les ID des groupes qui accordent des droits étendus. Cela est nécessaire pour économiser sur le trafic, car le nombre d'entrées dans b_user_group peut atteindre des millions selon la complexité du projet.
  2. Créer une demande dynamique de déchargement des liens Utilisateur - Groupe
  3. Déchargez les utilisateurs qui ont un lien de la clause 2.

Commençons:

  1. Appelez l'Ă©diteur de requĂȘtes: Accueil → Modifier les requĂȘtes
  2. Créons un lien vers la demande initiale de «Groupe»:

    image
  3. Renommez la nouvelle demande en «ID de groupe» et sélectionnez uniquement les groupes qui sont intéressants du point de vue de la sécurité.

    image
  4. Nous obtenons maintenant une ligne contenant les ID de groupe séparés par des virgules:
    • Ajouter une colonne personnalisĂ©e: AddColumn → GĂ©nĂ©ral → Colonne personnalisĂ©e

      image
    • Supprimer toutes les colonnes sauf l'ID et le regroupement:

      image
    • Regroupez par la colonne «Groupement»:

      image

      image
    • Ajoutez une autre colonne comme suit:

      image
    • DĂ©veloppons la liste pour que les valeurs soient sĂ©parĂ©es par des virgules:

      image
    • Et tomber dans la cellule rĂ©sultante:

      image
    • Power BI convertit ensuite la requĂȘte en une variable qui peut ĂȘtre utilisĂ©e dans les requĂȘtes SQL dynamiques:

      image
  5. Créons la demande "Groupe d'utilisateurs" contenant la relation de l'utilisateur avec le groupe, similaire à la façon dont cela se fait dans la section "Groupes".

    RequĂȘte 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 devra ĂȘtre remplacĂ© par des identifiants de groupe, sĂ©parĂ©s par des virgules.
  6. Nous appellerons la source de la demande de modification et la remplacerons par la suivante:

     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. AprĂšs cela, vous pouvez obtenir l'avertissement suivant:

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

    Pour vous en débarrasser, vous devez modifier le niveau de confidentialité:

    image

    image

    AprĂšs cela, mettez Ă  jour les requĂȘtes.
  8. Nous crĂ©ons la variable «User ID» de la mĂȘme maniĂšre que pour «Group ID» (c'est-Ă -dire que nous faisons un lien Ă  partir de la demande des utilisateurs, etc.). En l'utilisant, nous gĂ©nĂ©rerons une requĂȘte SQL qui nous permettra de sĂ©lectionner uniquement les utilisateurs dont nous avons besoin pour l'analyse. Tout d'abord, supprimez l'ID utilisateur en double:

    image
  9. Nous créons une demande pour une sélection d'utilisateurs, semblable à la façon dont cela se fait pour le «groupe d'utilisateurs».

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

    XXX devra remplacer les ID utilisateur.

Configuration des relations entre les demandes


Pour que Power BI filtre les donnĂ©es de maniĂšre interactive dans diffĂ©rentes vues, vous devez dĂ©finir des relations entre les requĂȘtes. Dans notre cas, nous devons connecter les champs:

  • "Groupe d'utilisateurs" [id_groupe] → "Groupes" [id]
  • "Groupe d'utilisateurs" [id_utilisateur] → "Utilisateurs" [id]

image

De mĂȘme, nous lierons d'autres requĂȘtes.

Rapport utilisateur et groupe d'utilisateurs


Dans l'onglet Rapports, nous affichons une liste d'utilisateurs et de groupes utilisant Table comme élément de visualisation.

Dans la demande «Utilisateurs», sélectionnez les champs: nom, nom, derniÚre connexion, email.
Dans la demande "User-group", sélectionnez le champ group_id.
Parce que Étant donnĂ© que nous avons attribuĂ© des connexions entre les demandes, Power BI pourra utiliser correctement la fonction d'agrĂ©gation Count pour compter le nombre de groupes auxquels appartient chaque utilisateur individuel.

image

Ensuite, ajoutez une autre table et sélectionnez le champ de nom dans la demande de groupe et le champ user_id dans la demande de groupe d'utilisateurs - définissez l'agrégation «Count (Distinct)» pour qu'il puisse voir le nombre d'utilisateurs dans le groupe.

Parce que Les requĂȘtes "Groupe" et "Utilisateur" sont connectĂ©es via une requĂȘte associative "Groupe d'utilisateurs", puis lorsque vous cliquez sur un utilisateur dans le tableau avec une liste de groupes, seuls les groupes auxquels appartient l'utilisateur sĂ©lectionnĂ© seront affichĂ©s. Et vice versa.

image

De cette façon, vous pouvez cliquer sur chaque utilisateur et voir à quels groupes il appartient, ou cliquer sur les groupes et voir quels utilisateurs font partie d'un groupe. Eh bien, prenez ensuite des décisions sur la modification de l'accÚs pour l'utilisateur.

Ce qui suit décrit comment placer les tables restantes dans le rapport général Power BI, car cela se fait de maniÚre similaire.

.access.php


Dans Bitrix, vous pouvez définir l'accÚs aux dossiers et aux fichiers en spécifiant les numéros de groupe et le niveau d'accÚs requis dans les fichiers .access.php.

Notre tùche consiste à réduire les données de tous les fichiers .access.php dispersés autour du serveur de projet dans une vue tabulaire.

Pour ce faire:

  1. Nous recherchons et archivons tous les fichiers .access.php Ă  partir du serveur, en sauvegardant les chemins d'accĂšs Ă  ces fichiers.
    J'ai utilisé terminalka pour rechercher, copier et archiver les fichiers trouvés. Exemple de commande:

     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 {} \; 

    Ici:

    • BITRIX_PROJECT_DIR - dossier avec le projet sur Bitrix.
    • OUTPUT_DIR - chemin d'accĂšs au dossier dans lequel le fichier .access.php.files.txt avec une liste des fichiers .access.php trouvĂ©s sera placĂ©, ainsi que l'archive .access.php.files.tar contenant des copies de tous les fichiers .access.php trouvĂ©s.

    Naturellement, s'il existe de nombreux projets (le multisite est utilisé), nous sélectionnons alors un dossier contenant tous les projets.
  2. Téléchargez et décompressez l'archive .access.php quelque part à cÎté du projet Power BI.
    J'ai écrit un fichier batch qui le fait automatiquement: le téléchargement est implémenté via wget; à travers 7zip - décompression.

    Exemple de fichier batch:

    image

    Fichier contenant les paramĂštres du fichier de commandes:

    image

CrĂ©ez maintenant une requĂȘte qui rĂ©sumera le contenu de tous les .access.php sous forme de tableau.

  1. Pour plus de commodité, créez un paramÚtre qui contiendra le chemin d'accÚs au dossier à partir duquel nous allons extraire le contenu de tous les .access.php

    image
  2. Nous allons sélectionner une demande de type "Dossier" et choisir notre paramÚtre comme chemin:

    image
  3. Développez le champ Contenu:

    image

    XXXXXXX est un séparateur de colonnes; vous avez besoin d'une colonne aprÚs l'importation des données de tous les fichiers.
  4. AprÚs cela, Power BI supprimera la colonne dont nous avons besoin, contenant le chemin d'accÚs à .access.php. Par conséquent, nous devons modifier l'étape «Supprimer les autres colonnes1», en sélectionnant «Chemin du dossier»:

    image
  5. Laissez les colonnes: Chemin du dossier et Colonne1.
  6. Pour supprimer le chemin absolu du fichier local du chemin du dossier, utilisez le remplacement:

    image
  7. Les fichiers .access.php contiennent des paramĂštres d'accĂšs au format:

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

    Notre tùche consiste à disperser les colonnes: chemin, ID de groupe, niveau d'accÚs. Cela se fait à l'aide de filtres, de séparation des colonnes (colonne divisée) et de colonnes personnalisées (colonne personnalisée).
  8. Le rĂ©sultat doit ĂȘtre le tableau suivant:

    image

    Comme vous pouvez le voir dans le champ ID de groupe, il y a «*» (accĂšs pour tout le monde). Afin de pouvoir spĂ©cifier une connexion avec d'autres requĂȘtes, nous devons rendre ce champ entier, sans perdre d'informations sur «*» (ce qui signifie pour tous les groupes). Faisons deux demandes, comme un «lien» vers la demande DotAccessPhp d'origine:

    • Le premier DotAccessPhpForRels ne contiendra que des identifiants de groupe entiers (nous utilisons le filtre en supprimant * dans la colonne ID de groupe) - nous le connecterons avec le reste des requĂȘtes:
      image
    • Le second - DotAccessPhpForAll - seulement * (utilisez le filtre).

Schéma de connexion:

image

Pour afficher uniquement les données associées lors de la sélection d'un fichier à partir de DotAccessForRels dans d'autres vues, changez le paramÚtre «Cross filter direction» en Both:

image

Pour les autres demandes qui seront ajoutĂ©es ci-dessous, cela doit Ă©galement ĂȘtre fait.

Blocs d'informations


Vous devez décharger la liste des blocs d'informations et le tableau des liens des blocs d'informations avec les groupes.

Nous ne téléchargerons que des informations sur les blocs d'informations actifs.

  1. Nous crĂ©ons la requĂȘte «Infoblocks». RequĂȘte 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. Nous mettons à jour le schéma de communication, sans oublier de changer le paramÚtre «Cross filter direction» en Both:

    image

Formulaires


Dans le cas des formulaires, les droits des groupes d'utilisateurs sont accordĂ©s Ă  la fois aux formulaires eux-mĂȘmes et aux statuts dans lesquels rĂ©side le rĂ©sultat du remplissage du formulaire.

  1. Créez une demande de «Formulaires»:

     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. Créez une demande "Groupe de formulaires":

     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. Nous créons la demande «Statut des formulaires».

     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. Créer une demande "Statuts de groupe de formulaires"

     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. Mise à jour du schéma de connexion:

    image

Modules


  1. Nous crĂ©ons une requĂȘte «Groupe de modules».

     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. Mise Ă  jour des communications:

    image

Tableau d'affichage


Nous personnalisons les styles de tables, utilisons l'espace utilisable au maximum.

Le rĂ©sultat devrait ĂȘtre quelque chose de semblable au suivant:

image

Un tableau de bord un peu modifié (nombre d'éléments dans les tableaux):

image

Soit dit en passant, il est pratique de configurer d'abord l'apparence d'une table, puis d'appliquer simplement sa vue Ă  d'autres tables Ă  l'aide de Accueil → Reproduire la mise en forme. Cette fonction agit de la mĂȘme maniĂšre que dans Word et Excel (Format par exemple).

Liens d'administration


Pour pouvoir accĂ©der rapidement au site et effectuer des rĂ©glages dans le panneau d'administration, vous pouvez ajouter une colonne personnalisĂ©e en langage DAX et en faire un type d '«URL Web». Pour ce faire, sĂ©lectionnez la colonne créée et attribuez le type appropriĂ© (ModĂ©lisation → PropriĂ©tĂ©s → CatĂ©gorie de donnĂ©es → URL Web).

Exemple pour une demande de groupe:

image

Ajoutez une colonne Ă  la vue:

image
Maintenant, vous pouvez simplement cliquer sur la cellule du tableau et accéder à la carte de groupe dans le panneau d'administration Bitrix.

Rapport sur les fichiers


Pour plus de commodité, vous pouvez créer un rapport distinct en y plaçant des tableaux concernant l'accÚs aux fichiers et aux sections de la ressource Internet:

image

Ce rapport a également ajouté des liens pour modifier tous les .access.php directement via le panneau d'administration Bitrix.

Résumé


Bitrix est un champion parmi les monstres cms avec des avantages et des inconvénients évidents, beau à l'extérieur et terrible à l'intérieur. Il ne dispose pas d'outils d'administration d'accÚs pratiques. Mais ce problÚme a été résolu à l'aide d'outils gratuits, sans attirer de temps précieux pour les programmeurs dans ce processus.

Les avantages de cette approche incluent également la possibilité de compléter rapidement le modÚle dans Power BI avec des informations supplémentaires de Bitrix, par exemple, quelqu'un veut savoir quand .access.php et d'autres ont été créés ou modifiés.

Maintenant, aprÚs la création du modÚle de droits d'accÚs et sa visualisation dans Power BI, il suffit:

  1. cliquez constamment sur les utilisateurs, les groupes, les formulaires, les fichiers et voyez en temps réel toutes les connexions concernant l'accÚs;
  2. accédez rapidement aux pages d'administration nécessaires pour apporter des modifications;
  3. Mettez à jour le modÚle de données avec les derniÚres données Bitrix directement dans Power BI.

En conséquence, une vérification a été effectuée et un ajustement a été apporté à l'accÚs des utilisateurs.

PS Sur le marchĂ©, il existe un module gratuit "Access Control Center", mais il est trĂšs limitĂ©, et le dernier commentaire a plus de 5 ans. Peut-ĂȘtre que quelqu'un aimera l'idĂ©e de construire un tel tableau de bord directement dans Bitrix et qu'il l'implĂ©mentera en tant que module ...

PS2. Si quelqu'un s'intéresse au sujet de l'utilisation de Power BI pour résoudre le problÚme de la recherche de dépendances cachées dans divers systÚmes comptables, écrivez dans les commentaires. J'écrirai ensuite quelques articles supplémentaires sur ce sujet.

PS3 Merci à mes collÚgues de m'avoir aidé à préparer cet article: Alexander Voronkov, Evgeny Shapochkin, Alexei Titov.

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


All Articles