Cegid XRP Ultimate  |  
I3   Actualisé le 06/10/2022
Fondations
La sécurité

Objectif
La sécurité
   Sécurité sur les transactions, les indicateurs et les services
      Marche à suivre
      Conseils
      Droits d'accès pour les enchaînements dynamiques
La confidentialité
   Confidentialité sur les données
      Principe
      Fonctionnement
      Mise en place dans l'interface utilisateur
      Mise en place technique
      Contraintes techniques
      Utilitaire associé à la confidentialité
      Transactions associées à la confidentialité

Objectif

    Pour chaque utilisateur, il est possible de mettre en place une sécurité.
Cette dernière est possible à plusieurs niveaux distincts :
          - la sécurité sur les transactions ;
          - la sécurité sur les indicateurs ;
          - la sécurité sur les services ;
          - les droits d'accès sur les tables ;
          - la confidentialité d'accès sur les données ;
          - les droits des utilisateurs ;
          - les droits d'accès sur tous les paramètres.

   Ces éléments ont la même finalité : définir l'environnement de travail de chaque utilisateur.

   Pour faciliter la définition de la sécurité des organisations gérant un nombre important d'établissements, un paramétrage (GTETM), permet la propagation automatique des règles de sécurité définies sur un établissement dit « modèle » sur d'autres établissements dits « cibles ».

   Remarque
   La mise en place de la sécurité est facultative et son absence n'influe pas sur le bon fonctionnement de Cegid XRP Ultimate. Cependant, il faut savoir que sans elle et par défaut, tous les utilisateurs ont la possibilité de tout faire dans n'importe quelle transaction et sur toutes les données.

   De plus les formules sont indépendantes, l'une peut exister sans l'autre et vice versa.
Leur définition peut s'effectuer avant ou après le démarrage des applications.

La sécurité

Sécurité sur les transactions, les indicateurs et les services
   L'objectif de cette fonctionnalité est de définir les transactions, les indicateurs et les services auxquels ont accès les utilisateurs selon les tâches respectives de chacun au sein de l'entreprise.

   La mise en place de ces droits d'accès peut donc se présenter sous la forme d'une question :

   Qui fait quoi, où et quand ?

   Pour répondre et bien définir la sécurité du système, il est recommandé d'analyser les quatre critères suivants :

   Qui ?
Il s'agit de référencer toutes les personnes physiques ou bien des profils fonctionnels. Seules les personnes physiques seront susceptibles de se connecter au système : ce sont les utilisateurs.

   Quoi ?
Un utilisateur ou un profil fonctionnel peut n'avoir accès qu'à un certain nombre de programmes, d'indicateurs ou de services. Pour ce faire :
         - les transactions sont regroupées en "famille" : ce sont les fonctions.
Lors de l'enregistrement d'une transaction dans une fonction, il est possible de limiter les actions à réaliser dans la transaction (sélection, création, modification ou suppression) ;
          - les indicateurs sont donnés directement à un utilisateur ou à un profil. Il n'y a pas de limitation d'action. L'utilisateur voit ou ne voit pas l'indicateur ;
          - les services sont également donnés directement à un utilisateur ou à un profil. Il n'y a pas de limitation d'action. L'utilisateur a accès ou non au service.

   Où ?
Il s'agit de référencer des ensembles physiques de postes de travail sur lesquels les utilisateurs peuvent accéder à Cegid XRP Ultimate : ce sont les groupes de postes.

   Quand ?
Il s'agit de définir des périodes d'utilisation (période de validité) : ce sont les vacations. Elles sont attribuées notamment :
        - à un groupe de postes ;
        - à un utilisateur ou profil fonctionnel ;
        - à une transaction.
Une fois sa durée de vacation écoulée, un élément n'est plus utilisable.

   L'ensemble des informations ci-dessus peut être résumé par le schéma suivant :

   Marche à suivre
   Pour la mise en place de cette sécurité, l'ordre de définition des données est le suivant :
     1.    Définition des vacations (facultatif).
     2.    Définition des groupes de postes (facultatif).
     3.    Définition des fonctions.
     4.    Définition des transactions et de leurs droits par fonction (particularité des enchaînements dynamiques).
     5.    Définition des indicateurs par utilisateur ou profil.
     6.    Définition des services par utilisateur ou profil.
     7.    Définition des profils fonctionnels avec association aux fonctions.
     8.    Délégation des droits des profils vers les utilisateurs individuels.
     9.    Association des fonctions par utilisateur/profil et établissement.
    10.    Définition des établissements autorisés par utilisateur (nécessaire si la valeur testée 1 du paramètre AUTGTI occurrence AUTSEC vaut "O").
    11.    Définition des établissements modèles / sécurité (géré si la valeur testée 2 du paramètre AUTGTI occurrence AUTSEC vaut "O").
    12.    Edition pour contrôle du paramétrage (facultative).
    13.    Génération des droits d'accès par utilisateur.
    14.   Liste des droits générés (facultative).
    15.   Activation de la sécurité dans GGLO pour la variable SYSSEC.

   Conseils
   1 - Les vacations et groupes de postes :
Pour certains éléments de la sécurité, on doit obligatoirement préciser une vacation et un groupe de postes, on peut également faire en sorte qu'ils soient "transparents".
Il existe une vacation "*" qui représente tous les mois, tous les jours, toutes les heures et une fourchette d'années très large, elle ne génère plus de contrainte de temps. Il en est de même pour le groupe de postes "*" qui est automatiquement composé de tous les postes de travail.

   Attention : lors de l'appel d'une transaction par un utilisateur, on vérifie que l'instant et le poste de la demande sont respectivement à l'intersection de toutes les vacations et de tous les groupes de postes, pour déterminer si l'utilisateur a le droit d'accès ou non.

   Exemple :
    Vacation 1 donne accès de 8h00 à 12h00.
    Vacation 2 donne accès de 14h00 à 19h00.
    Si ces deux vacations sont utilisées pour des données concernant le même utilisateur, ce dernier ne pourra plus accéder au menu.

   Il est donc conseillé de manipuler les vacations et groupes de postes en ayant bien réfléchi au résultat à obtenir.

   2 - Cumul des droits
Différents droits peuvent être donnés à une même transaction suivant la fonction dans laquelle elle se trouve. Si un même utilisateur a droit à plusieurs fonctions contenant la même transaction, le cumul des droits de cette transaction est donné à l'utilisateur.

   Exemple :
   Fonction 1 donne accès à une transaction en Sélection et Modification
   Fonction 2 donne accès à la même transaction en Sélection et Insertion
   Un utilisateur ayant :
         - la fonction 1 aura accès à la transaction en Sélection et Modification
         - la fonction 2 aura accès à la transaction en Sélection et Insertion
         - la fonction 1 et la fonction 2 aura accès à la transaction en Sélection, Insertion et Modification

   3 - Fonction commune
Penser à faire une fonction commune qui contiendra toutes les transactions nécessaires mais non appelables directement depuis le menu (exemple : formes sélections, critères de sélections, ...)

   Droits d'accès pour les enchaînements dynamiques
   Marche à suivre :

    * Donner les droits sur la transaction xxIEDE :
                  - pour les achats SAIEDE ;
                  - pour les ventes SVIEDE ;
                  - pour la gestion de production QAIEDE.
                  - pour la maintenance QMIEDEM et QMIEDEN

    * Rechercher les transactions sur lesquelles il faut donner les droits à l'aide des transactions suivantes  :
          - dans le cas des commandes, faire une recherche dans les étapes par classes : GETCA (pour les achats) et GETCV (pour les ventes) sur la classe de commandes ;
          - dans le cas des ordres, faire une recherche dans GETCP (pour la gestion de production) sur la classe d'ordres ;
          - dans le cas des ordres de maintenance dans GETCM pour les classes d'interventions dans GETCN.
          - dans le cas de regroupement de commandes ou d'ordres (ex. : liste, facture...), faire une recherche dans GETCA, GETCV, GETCP, GETCM ou GETCN (en fonction de l'application) sur la plus petite des classes de commandes ou d'ordres et d'interventions ;
          - si le regroupement ne contient pas d'élément (ex. : liste vide...), faire une recherche dans les étapes : GETPA (achats), GETPV (ventes) ou GETPP (gestion de production), GETPM et GETPN pour la maintenance.

    * Donner les droits dans le paramétrage de la sécurité sur les transactions associées :
          - au mnémonique d'appel ;
          - au mnémonique des critères (bouton "Procédure").

La confidentialité

Confidentialité sur les données

   Principe
   L'activation de la confidentialité peut être globale ou à l'utilisateur ou à un groupe d'utilisateurs (profil).

   La confidentialité permet de gérer une sécurité pour 30 entités distinctes :

   Données communes :
                - les établissements ;
                - les tiers ;
                - les comptes ;
                - les journaux ;
                - les CGR ;
                - les postes comptables.

   Budgétaire :
                - les buts de budget.

   Achat/Vente/Stock :
                - les articles ;
                - les dépôts ;
                - les classes de commandes achats ;
                - les classes de marchés ;
                - les classes de commandes de ventes ;
                - les classes de mouvements de stocks.

   Production :
                - les classes d'ordres ;
                - les chemins ;
                - les articles.

   Maintenance :
                - les classes d'ordres ;
                - les classes de demandes d'interventions ;
                - les équipements.

   Projets :
                - les classes de projets ;
                - les types de tâche ;
                - les types d'avancement ;
                - les types de phase.

   Temps et Activités :
                - les classes de temps ;
                - les intervenants ;
                - les chantiers.

   XRM :
                - les contacts.

   Planification :
                - les classes des tâches de planning.

   Notes de frais :
                - les classes de frais ;
                - les natures de dépense.

   Par exemple, la confidentialité aux CGR permet de rendre inaccessibles :
                - les écritures et les mouvements associés ;
                - les commandes achats et leurs lignes correspondantes ;
                - les commandes de ventes et leurs lignes ;
                - les mouvements de stocks
imputés à des CGR rendus confidentiels.

   Toutes les données contenant une entité confidentielle sont invisibles, non utilisables, non consultables et non éditables dans toutes les transactions d'exploitation de Cegid XRP Ultimate :
                - Gestion, Consultation et Edition des écritures ;
                - Consultation des mouvements et des cumuls comptables ;
                - Gestion, Consultation et Edition des pièces ;
                - Gestion, Consultation et Edition des lignes budgétaires ;
                - Gestion, Consultation et Edition des commandes achats, ventes ;
                - Gestion, Consultation et Edition des mouvements de stocks ;
                - Gestion, Consultation et Edition des inventaires ;
                - Gestion, Consultation et Edition des nomenclatures, planifications et ordonnancements de production ;
                - Gestion, Consultation et Edition des temps et des éléments qui leurs sont liés.

   Plus généralement, tout enregistrement contenant une donnée confidentielle est rendu invisible. Si au moins un des enregistrements détails (mouvement ou ligne) est confidentiel, l'en-tête l'est aussi (écritures, mouvements).

   Attention, dans des transactions de structures, la confidentialité n'est volontairement pas gérée. Par exemple, dans la gestion des journaux, un utilisateur n'a accès qu'à certains journaux mais peut voir l'ensemble des comptes qui sont éventuellement associés aux journaux. Il en est de même dans la gestion des articles ou un utilisateur a une vision partielle des articles et une vision totale des comptes.

   Fonctionnement
   1. Affectation d'une clé de confidentialité pouvant aller de 1 à 4000 pour les enregistrements d'une entité qui sont confidentiels. Les tailles des clés sont définies dans la gestion de modification des entités confidentielles et elles sont modifiables si besoin.
2. Application du code confidentialité aux données
    Soit par la gestion de création/modification correspondante
    Soit en utilisant des utilitaires dédiés pour mettre à jour un code confidentialité à un ensemble.
3. Attribuer aux utilisateurs des clés autorisées par entité.
4. Un utilisateur pourra accéder à une entité si la clé de cette dernière fait partie de la liste des clés qui lui sont attribuées.
5. Les données dont la clé est nulle ou 0 sont accessibles par tous les utilisateurs. Vous pouvez ainsi mettre en place la confidentialité uniquement sur les entités que vous souhaitez.
Exemple : Un utilisateur "A" a une clé "100" pour l'entité "Compte". L'utilisateur "A" aura alors accès à tous les comptes n'ayant pas de code confidentialité + tous les comptes ayant le code 0 + tous ceux ayant le code "100".

   Mise en place dans l'interface utilisateur
   1. Définir les entités dont la confidentialité est gérée et le nombre de clés à gérer par entité dans la transaction de modification de la confidentialité.
2. Définir les clés confidentielles gérées par entités.
3. Définir les clés pour les entités confidentielles dans les transactions gérant ces entités.
4. Lancer l'utilitaire de recalcul des tables de travail : GTUCNF.
5. Définir les utilisateurs ayant la confidentialité active et ceux qui ne l'ont pas dans les droits de l'utilisateur. Pour cela, il faut jouer avec le droit de confidentialité de l'utilisateur et la variable globale SYSCNF.
6. Définir les utilisateurs ayant la confidentialité gérée par profil.
7. Attribuer des codes par entité aux utilisateurs et aux profils.
8. Si des utilisateurs ont la confidentialité gérée au profil :
    - définir les délégations entre les profils et les utilisateurs ;
    - lancer le traitement TCNF pour affecter les codes aux utilisateurs ayant la confidentialité gérée au profil.

   Mise en place technique
   Il faut tout d'abord définir le nombre maximum de clés que l'on souhaite gérer par entité.
Pour cela il faut :
- faire une demande auprès de Cegid qui validera la faisabilité ou non de la demande (trop de clés demandées ==> limites du SGBD) ;
- suite à cette demande, Cegid renverra un fichier licence (license.sql) et un fichier de symboles (SYMNB.syc) ;
- sur site il faudra :
             o Mettre en place les fichiers envoyés ;
             o Lancer le release.sh avec l'option 'c' qui permettra de :
                    * construire le fichier de symbole ;
                    * générer le plan gti_cnf.pln permettant de mettre à jour toutes les tables et de recompiler toutes les procédures touchées en fonction des applications présentes sur le site ;
                    * lancer le plan gti_cnf.pln ;
                    * mettre à jour les valeurs 1 du paramètre AUTCNF avec la taille gérée dans la table.
             o Dans l'interface utilisateur, modifier la taille gérée pour les entités correspondantes.

   De plus, la confidentialité est mise en oeuvre au travers de vues. La majorité de ces vues sont simples car associées à des tables ou peu d'entités sont présentes.
Mais pour certaines tables, cette mise en oeuvre nécessite l'utilisation d'une table de stockage des codes de confidentialité ( nom de la table = table origine + wc    => ocecrwc).
Ces tables de travail sont mises à jour dès que la globale SYSCNF est activée ou qu'au moins un utilisateur a la confidentialité active.
Ces tables peuvent ne pas être mises à jour. Pour cela, elles sont listées comme occurrence du paramètre MAJCNF et la valeur testée 1 doit être à N.

   Sous Oracle, il est possible d'utiliser des vues spécifiques client. Pour cela, il faut modifier le symbole correspondant au public synonyme et recompiler le script du public synonym.
Exemple :
Pour modifier la vue oetieci par oetie_spe :
          - Mettre oetie_spe dans la valeur du symbole syn_oetiec ;
          - Faire un plan avec la ligne suivante : ode syn csoetiec.obj
          - Lancer un gtuvalid.exe pour revalider tous les objets invalides.

   Contraintes techniques
   - Si le nombre de clés demandé est inférieur à la valeur actuelle, il faut vérifier au préalable que le nombre géré est bien inférieur au nombre demandé. Pour cela, dans la transaction MCNF, vérifier et éventuellement modifier la taille gérée pour l'entité.

   - Le nombre maximum de clés gérées pour une entité est de 4000. Mais il n'est pas possible de gérer les 4000 clés pour toutes les entités. En effet dans ce cas, on atteint les limites des SGBD.

   - La confidentialité ne peut être mise en oeuvre que si les tables de travail utilisées ont été pré-taillées et si l'espace pour les accueillir a été prévu (Taille généralement non négligeable).
Ces tables de travail contenant une image des codes d'accès, une modification de ces codes au niveau des entités n'est pas répercutée. Pour mettre à jour ces tables de travail, il existe un utilitaire.

   Utilitaire associé à la confidentialité
   Pour recalculer les tables de travail lors :
       - de la mise en place initiale ;
       - suite à une modification de la valeur des clés dans les entités ;
       - suite à une désactivation momentanée de la confidentialité
un utilitaire de recalcul global de ces tables existe : GTUCNF

   Cet utilitaire qui peut être long à l'exécution :
       - doit être lancé avec la confidentialité activée.
       - ne doit pas être lancé en concurrence avec des accès aux tables concernées.

   Transactions associées à la confidentialité
   Les transactions utiles à la gestion de la confidentialité sont :

   * La gestion des modifications des entités confidentielles : elle permet de définir les entités confidentielles gérées et de modifier la taille gérée par entité.

   * La gestion des clés de confidentialité : elle a pour but d'associer un libellé à chaque clé confidentielle.

   * La consultation de l'historique des modifications des clés des entités confidentielles..

   * La gestion des droits utilisateurs pour activer la confidentialité à l'utilisateur.

   * La gestion des variables globales pour activer la confidentialité de manière globale.

   * La gestion de la confidentialité par utilisateur pour associer des clés de confidentialités soit à un profil soit à un utilisateur individuel sur une entité.

   * La gestion de la confidentialité par entité pour donner des utilisateurs à des entités sur des clés.

   * Le traitement de génération des codes de confidentialités qui met à jour les associations entité, clé et utilisateur individuel. Il est utilisé quand nous décidons de gérer les clés de confidentialités au profil. Comme pour la sécurité, ce traitement suit la hiérarchie de délégation entre profil et utilisateur pour mettre la clé de l'entité à l'utilisateur final.