OPALE - parametrage - Gestion des droits d'accès sur les objets MAPPING

Différence entre versions

De MappingDoc
(Exemple 4)
 
(23 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 5 : Ligne 5 :
 
==Quelques commandes AS400 à connaitre sur la gestions des droits==
 
==Quelques commandes AS400 à connaitre sur la gestions des droits==
  
DSPOBJAUT''' : Permet d'afficher les autorisations sur les objets<br>
+
'''DSPOBJAUT''' : Permet d'afficher les autorisations sur les objets<br>
 
  DSPOBJAUT OBJ(OPALE1017/'''MAPCPYSPLF''') OBJTYPE('''*PGM''')<br>
 
  DSPOBJAUT OBJ(OPALE1017/'''MAPCPYSPLF''') OBJTYPE('''*PGM''')<br>
 
--> Affiche les autorisation du programme MAPCPYSPLF de la bib OPALE1017<br>
 
--> Affiche les autorisation du programme MAPCPYSPLF de la bib OPALE1017<br>
Ligne 14 : Ligne 14 :
  
 
'''WRKUSRPRF''' : Permet de modifier les profils utilisateurs<br>
 
'''WRKUSRPRF''' : Permet de modifier les profils utilisateurs<br>
WRKUSRPRF USRPRF(JDIEU)
+
WRKUSRPRF USRPRF(JDIEU)
 
--> Permet de voir et modifier les attributs du profil utilisateur JDIEU<br>
 
--> Permet de voir et modifier les attributs du profil utilisateur JDIEU<br>
  
 +
==Traitements MAPPING==
 +
Pour garantir le bon fonctionnement de l'application MAPPING, il faut s'assurer que les utilisateurs exécutant les différents jobs de traitements aient bien accès aux ressources nécessaires (commandes, programmes, etc)<br>
  
==Traitements MAPPING==
+
Il y a plusieurs façon d'invoquer des traitements dans MAPPING :
Pour garantir le bon fonctionnement de l'application MAPPING, il faut s'assurer que les utilisateurs exécutant les différents jobs de traitements aient bien accès aux ressources nécessaires. (commande, programme, etc)
 
Il y a plusieurs façon d'invoquer des traitement dans MAPPING :
 
  
 
*De manière interactive en ligne de commande
 
*De manière interactive en ligne de commande
Ligne 27 : Ligne 27 :
  
 
===De manière interactive en ligne de commande===
 
===De manière interactive en ligne de commande===
Cette façon est souvent utilisée lors des tests manuels. L'utilisateur invoquant la commande est l'utilisateur avec lequel vous êtes connecté.
+
Cette façon est souvent utilisée lors des tests manuels. L'utilisateur invoquant la commande est l'utilisateur avec lequel vous êtes connecté (à l'exception des envois d'emails).
 +
 
 
Cet utilisateur devra alors avoir accès aux ressources.
 
Cet utilisateur devra alors avoir accès aux ressources.
  
 
===Avec l'utilisation de CL programmes===
 
===Avec l'utilisation de CL programmes===
Cette façon est parfois utilisée en production. Les commandes MAPPING sont alors inclus directement dans les programmes CL des clients générant notamment les spooled files.
+
Cette façon est parfois utilisée par nos clients. Les commandes MAPPING sont alors inclues directement dans les programmes CL des clients générant notamment les spooled files.
 
L'utilisateur exécutant les commandes MAPPING sera alors l'utilisateur soumettant le travail. (celui-ci dépend de la configuration des traitements du client)
 
L'utilisateur exécutant les commandes MAPPING sera alors l'utilisateur soumettant le travail. (celui-ci dépend de la configuration des traitements du client)
  
Ligne 41 : Ligne 42 :
 
==Fonctionnement des droits sur les objets IBM-i==
 
==Fonctionnement des droits sur les objets IBM-i==
 
===Valeurs par défaut à l'installation de MAPPING IBM-i===
 
===Valeurs par défaut à l'installation de MAPPING IBM-i===
Lors de l'installation de MAPPING IBM-i, des valeurs de droits par défaut sont présentes sur les différents objets MAPPING. (programmes, commandes,etc)
+
Lors de l'installation de MAPPING IBM-i, des valeurs de droits par défaut sont présentes sur les différents objets MAPPING. (programmes, commandes, etc...)
 +
 
 
Pour les besoin de rédaction de cette présente documentation, nous allons prendre pour exemple le programme de génération de PDF via la commande MAPCPYSPLF. La commande '''MAPCPYSPLF''' exécute en fait 3 programmes : '''MAPCPYSPLF''', '''MAP_815UCS''' et '''MAP_XPS'''
 
Pour les besoin de rédaction de cette présente documentation, nous allons prendre pour exemple le programme de génération de PDF via la commande MAPCPYSPLF. La commande '''MAPCPYSPLF''' exécute en fait 3 programmes : '''MAPCPYSPLF''', '''MAP_815UCS''' et '''MAP_XPS'''
  
Ligne 53 : Ligne 55 :
 
   <span style="color:#46FF33;background-color:black">'''QPGMR'''                  '''*ALL'''</span>       
 
   <span style="color:#46FF33;background-color:black">'''QPGMR'''                  '''*ALL'''</span>       
  
Nous voyons que pour le programme '''MAPCPYSPLF''' (et pour tous les autres) par défaut, l'utilisateur '''QPGMR''' a tous les droits '''*ALL''' et que tous les autres '''*PUBLIC''' ( soit les autres que celui listé en dessous ( soit dans notre cas QPGMR)) ont les droits de modifications '''*CHANGE'''
+
DSPOBJAUT OBJ(OPALE1017/'''MAP_815UCS''') OBJTYPE('''*PGM''')
 +
 
 +
                          <span style="color:white;background-color:black">Droits</span> 
 +
  <span style="color:white;background-color:black">Utilisat    Groupe      sur objet</span>
 +
  <span style="color:#46FF33;background-color:black">'''*PUBLIC'''                '''*CHANGE'''</span> 
 +
  <span style="color:#46FF33;background-color:black">'''QPGMR'''                  '''*ALL'''</span> 
 +
 +
DSPOBJAUT OBJ(OPALE1017/'''MAP_XPS''') OBJTYPE('''*PGM''')
 +
 
 +
                          <span style="color:white;background-color:black">Droits</span> 
 +
  <span style="color:white;background-color:black">Utilisat    Groupe      sur objet</span>
 +
  <span style="color:#46FF33;background-color:black">'''*PUBLIC'''                '''*CHANGE'''</span> 
 +
  <span style="color:#46FF33;background-color:black">'''QPGMR'''                  '''*ALL'''</span> 
 +
 
 +
DSPOBJAUT OBJ(OPALE1017/'''MAPCPYSPLF''') OBJTYPE('''*CMD''')
 +
 
 +
                          <span style="color:white;background-color:black">Droits</span> 
 +
  <span style="color:white;background-color:black">Utilisat    Groupe      sur objet</span>
 +
  <span style="color:#46FF33;background-color:black">'''*PUBLIC'''                '''*CHANGE'''</span> 
 +
  <span style="color:#46FF33;background-color:black">'''QPGMR'''                  '''*ALL'''</span> 
 +
 
 +
Nous voyons que pour ces objets par défaut, l'utilisateur '''QPGMR''' a tous les droits '''*ALL''' et que tous les autres '''*PUBLIC''' ( soit les autres que celui listé en dessous ( soit dans notre cas QPGMR)) ont les droits de modifications '''*CHANGE'''
  
 
===Quels impacts il y a sur les traitements du robot MAPPING===
 
===Quels impacts il y a sur les traitements du robot MAPPING===
  
MAPPING a un robot (Sous système scannant des spooled files dans des OUTQs monitorées) qui permet l'automatisation des traitements.
+
MAPPING a un robot (Sous système scannant des fichiers spool dans des OUTQs monitorées) qui permet l'automatisation des traitements.
 
Chaque évènement arrivant dans une des OUTQs monitorés fait l'objet d'un traitement par l'intermédiaire de différents jobs.  
 
Chaque évènement arrivant dans une des OUTQs monitorés fait l'objet d'un traitement par l'intermédiaire de différents jobs.  
 
A l'exception de la commande MAPSNDMAIL, tous ces jobs sont exécutés par l'utilisateur système '''MAPPING''' (utilisateur créé à l'installation de MAPPING IBM-i)
 
A l'exception de la commande MAPSNDMAIL, tous ces jobs sont exécutés par l'utilisateur système '''MAPPING''' (utilisateur créé à l'installation de MAPPING IBM-i)
Ligne 63 : Ligne 86 :
 
Par conséquent, il faut s'assurer que l'utilisateur MAPPING ait bien les droits d'exécution sur les objets MAPPING (Exemple du MAPCPYSPLF ci-dessus)
 
Par conséquent, il faut s'assurer que l'utilisateur MAPPING ait bien les droits d'exécution sur les objets MAPPING (Exemple du MAPCPYSPLF ci-dessus)
  
Pour étayer cela, prenons les exemples ci-dessous :
+
Pour étayer cela, prenons les exemples ci-dessous.
 +
 
  
 
====Exemple 1====
 
====Exemple 1====
  
MAPPING en classe utilisateur *USER sans droits spéciaux avec *PUBLIC en *CHANGE  et QPGMR en *ALL
+
MAPPING en classe utilisateur *USER sans droits spéciaux avec *PUBLIC en *CHANGE  et QPGMR en *ALL.
 +
 
 
Prenons pour exemple l'exécution du programme MAPCPYSPLF avec le paramétrage droits/Autorisations suivant :
 
Prenons pour exemple l'exécution du programme MAPCPYSPLF avec le paramétrage droits/Autorisations suivant :
  
 
Utilisateur MAPPING :
 
Utilisateur MAPPING :
*Classe utilisateur : *USER
+
 
*Droit spéciaux : *NONE
+
*Classe utilisateur : '''*USER'''
 +
*Droit spéciaux : '''*NONE'''
  
 
Programme MAPCPYSPLF :  
 
Programme MAPCPYSPLF :  
 +
 
*PUBLIC        *CHANGE
 
*PUBLIC        *CHANGE
 +
 
QPGMR          *ALL  
 
QPGMR          *ALL  
  
 
Le fonctionnement des droits fonctionne comme ci-après :
 
Le fonctionnement des droits fonctionne comme ci-après :
  
#est ce que l'utilisateur MAPPING a t'il les droits sur le programme MAPCPYSPLF?
+
#Est ce que l'utilisateur MAPPING a les droits sur le programme MAPCPYSPLF?
  
 
Pour répondre à cette question, exécutons la commande ci-dessous :
 
Pour répondre à cette question, exécutons la commande ci-dessous :
Ligne 91 : Ligne 119 :
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *ALL</span>
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *ALL</span>
  
L'utilisateur MAPPING fait dans ce cas parti du ''''*PUBLIC'''', de ce fait, il a le droit à ''''*CHANGE''''
+
L'utilisateur MAPPING fait dans ce cas parti du '<nowiki/>'''*PUBLIC'<nowiki/>''', de ce fait, il a le droit à '<nowiki/>'''*CHANGE''''
 
   
 
   
 
  *CHANGE  
 
  *CHANGE  
Ligne 101 : Ligne 129 :
  
 
'''De ce fait la création du PDF ne posera pas de problème via le Robot.'''
 
'''De ce fait la création du PDF ne posera pas de problème via le Robot.'''
 
  
 
====Exemple 2====
 
====Exemple 2====
Ligne 110 : Ligne 137 :
  
 
Utilisateur MAPPING :
 
Utilisateur MAPPING :
*Classe utilisateur : *USER
+
 
*Droit spéciaux : *NONE
+
*Classe utilisateur : '''*USER'''
 +
*Droit spéciaux : '''*NONE'''
  
 
Programme MAPCPYSPLF :  
 
Programme MAPCPYSPLF :  
 +
 
*PUBLIC        *EXCLUDE
 
*PUBLIC        *EXCLUDE
 +
 
QPGMR          *ALL  
 
QPGMR          *ALL  
  
 
Le fonctionnement des droits est comme cela :
 
Le fonctionnement des droits est comme cela :
  
#Est ce que l'utilisateur MAPPING a t'il les droits sur programme MAPCPYSPLF?
+
#Est ce que l'utilisateur MAPPING a les droits sur programme MAPCPYSPLF?
  
 
Pour répondre à cette question, exécutons la commande ci-dessous :
 
Pour répondre à cette question, exécutons la commande ci-dessous :
Ligne 130 : Ligne 160 :
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *ALL</span>
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *ALL</span>
  
L'utilisateur MAPPING fait dans ce cas parti du ''''*PUBLIC'''', de ce fait, il a le droit à ''''*EXCLUDE''''
+
L'utilisateur MAPPING fait dans ce cas partie du '<nowiki/>'''*PUBLIC'<nowiki/>''', de ce fait, il a le droit à '<nowiki/>'''*EXCLUDE''''
 
   
 
   
 
       *EXCLUDE  
 
       *EXCLUDE  
Ligne 136 : Ligne 166 :
 
         sur l'existence et sur la gestion de l'objet.
 
         sur l'existence et sur la gestion de l'objet.
  
On pourrait donc croire que le Robot ne puisse pas exécuter le programme MAPCPYSPLF, mais en fait il le pourra car dans le cas où l'utilisateur l'exécutant (dans le cas du Robot, l'utilisateur MAPPING) n'a pas les droits pour l'exécuter, le système IBM-i l'exécutera également avec les droits de son propriétaire. Le propriétaire des programmes MAPPING étant l'utilisateur QPGMR, alors son exécution se fera avec ses droits.
+
On ''pourrait donc croire que le Robot ne puisse pas exécuter le programme MAPCPYSPLF'', '''mais''' en fait il le pourra car dans le cas où l'utilisateur l'exécutant (dans le cas du Robot, l'utilisateur MAPPING) n'a pas les droits pour l'exécuter, le système IBM-i l'exécutera également avec les droits de son propriétaire. Le propriétaire des programmes MAPPING étant l'utilisateur QPGMR, alors son exécution se fera avec ses droits.
 
Dans notre exemple avec les droits '''*ALL'''
 
Dans notre exemple avec les droits '''*ALL'''
  
Ligne 142 : Ligne 172 :
  
 
'''De ce fait la création du PDF ne posera pas de problème via le Robot.'''
 
'''De ce fait la création du PDF ne posera pas de problème via le Robot.'''
 
  
  
Ligne 152 : Ligne 181 :
  
 
Utilisateur MAPPING :
 
Utilisateur MAPPING :
*Classe utilisateur : *USER
+
 
*Droit spéciaux : *NONE
+
*Classe utilisateur : '''*USER'''
 +
*Droit spéciaux : '''*NONE'''
  
 
Programme MAPCPYSPLF :  
 
Programme MAPCPYSPLF :  
 +
 
*PUBLIC        *EXCLUDE
 
*PUBLIC        *EXCLUDE
 +
 
QPGMR          *EXCLUDE  
 
QPGMR          *EXCLUDE  
  
 
Le fonctionnement des droits est comme cela :
 
Le fonctionnement des droits est comme cela :
  
#Est ce que l'utilisateur MAPPING a t'il les droits sur programme MAPCPYSPLF?
+
#Est ce que l'utilisateur MAPPING a les droits sur programme MAPCPYSPLF?
  
 
Pour répondre à cette question, exécutons la commande ci-dessous :
 
Pour répondre à cette question, exécutons la commande ci-dessous :
Ligne 172 : Ligne 204 :
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *EXCLUDE</span>
 
   <span style="color:#46FF33;background-color:black">QPGMR                  *EXCLUDE</span>
  
L'utilisateur MAPPING fait dans ce cas parti du ''''*PUBLIC'''', de ce fait, il a le droit à ''''*EXCLUDE''''
+
L'utilisateur MAPPING fait dans ce cas parti du '<nowiki/>'''*PUBLIC'<nowiki/>''', de ce fait, il a le droit à '<nowiki/>'''*EXCLUDE''''
 
   
 
   
 
       *EXCLUDE  
 
       *EXCLUDE  
Ligne 180 : Ligne 212 :
 
Tout comme dans l'exemple 2 ci-dessus, le système va essayer d'exécuter le programme MAPCPYSPLF avec l'utilisateur MAPPING. Celui-ci fait parti de *PUBLIC qui est en *EXCLUDE, de ce fait, il ne pourra pas l'exécuter. Ensuite le système va essayer de l'exécuter avec l'utilisateur propriétaire du programme à exécuter (MAPCPYSPLF) qui est QPGMR, mais celui-ci est également en *EXCLUDE
 
Tout comme dans l'exemple 2 ci-dessus, le système va essayer d'exécuter le programme MAPCPYSPLF avec l'utilisateur MAPPING. Celui-ci fait parti de *PUBLIC qui est en *EXCLUDE, de ce fait, il ne pourra pas l'exécuter. Ensuite le système va essayer de l'exécuter avec l'utilisateur propriétaire du programme à exécuter (MAPCPYSPLF) qui est QPGMR, mais celui-ci est également en *EXCLUDE
  
'''De ce fait la création du PDF sera impossible via le Robot. Un message d'erreur apparaitra dans les logs du robot MAPPING : Erreurs trouvées dans la commande'''
+
'''De ce fait la création du PDF sera <u>impossible</u> via le Robot. Un message d'erreur apparaitra dans les logs du robot MAPPING : Erreurs trouvées dans la commande'''
 
 
  
  
Ligne 188 : Ligne 219 :
 
La valeur permettant d'exécuter n'importe quel programme même si l'utilisateur n'a pas les droits dessus est la valeur '''*ALLOBJ'''
 
La valeur permettant d'exécuter n'importe quel programme même si l'utilisateur n'a pas les droits dessus est la valeur '''*ALLOBJ'''
  
Si l'utilisateur '''MAPPING''' a ce droit spéciaux, alors peu importe ses droits sur les objets, il pourra les exécuter et il n'y aura plus de problème de droits avec le Robot. (De ce fait,avec les droits spéciaux *ALLOBJ, l'exécution de la commande MAPCPYSPLF de l'exemple 4 serait alors possible )
+
Si l'utilisateur '''MAPPING''' a ce droit spéciaux, alors peu importe ses droits sur les objets, il pourra les exécuter et il n'y aura plus de problème de droits avec le Robot. (De ce fait, avec les droits spéciaux '''*ALLOBJ''', l'exécution de la commande MAPCPYSPLF de l'exemple 3 serait alors possible )
  
 
<u>Remarque sur le passage d'un utilisateur en *ALLOBJ</u>: <br>
 
<u>Remarque sur le passage d'un utilisateur en *ALLOBJ</u>: <br>
 
'''Avantage''' : Plus facile car on ne se pose plus de question sur la gestion des droits<br>
 
'''Avantage''' : Plus facile car on ne se pose plus de question sur la gestion des droits<br>
 
'''Inconvénient''' : Donne accès à tous les objets sur système, ce qui peut être dangereux.
 
'''Inconvénient''' : Donne accès à tous les objets sur système, ce qui peut être dangereux.
 +
  
 
===Cas particulier de l'envoi d'emails via la commande MAPSNDMAIL===
 
===Cas particulier de l'envoi d'emails via la commande MAPSNDMAIL===
 +
Nous avons vu plus haut que toute commande invoquée par le Robot MAPPING été exécutée avec l'utilisateur MAPPING.
 +
Nous avons également vu qu'il y avait une exception qui est la commande MAPSNDMAIL (à l'étape de l'envoi d'emails)
 +
 +
En effet la commande MAPSNDMAIL est quant à elle invoquée par l'utilisateur ayant lancé le travail MAPSMTP :
 +
 +
Soit via le menu MAPPING e-Mail / Démarrage de la gestion des mails, soit via la commande STRMAPMAIL.
 +
 +
L'utilisateur lançant ce job devra respecter les mêmes contraintes que l'utilisateur MAPPING afin que les mails puissent être envoyé via le Robot MAPPING. (avoir accès au programme d'envoi d'emails '''MAP_031P1''')
 +
 +
Les envois de PDFs par emails via la commande MAPSNDMAIL se passent comme ceci :
 +
 +
*La commande MAPCPYSPLF (avec les 3 programmes MAPCPYSPLF, MAP_815UCS et MAP_XPS) sont exécutées pour la création du fichier PDF. (Et non directement par MAPPING comme dans le cas de génération de PDF sans envoi d'email)
 +
 +
--> Ces programmes sont exécutés avec en premier l'utilisateur propriétaire du spool à envoyer, et si celui-ci n'a pas les droits, avec l'utilisateur MAPPING et si celui-ci n'a pas non plus les droits avec le propriétaire des programmes (QPGMR)
 +
 +
*Une fois le PDF généré, l'envoi d'email se fera via le programme MAP_031P1 et sera <u>exécuté avec l'utilisateur qui a démarré le job MAPSMTP</u>
 +
 +
-->Celui-ci doit bien avoir accès au programme MAP_031P1 (comme vu dans les exemples d'avant)
 +
 +
==Démarrage/Arrêt du Robot MAPPING==
 +
#L'utilisateur voulant démarrer le robot MAPPING (STRRBT) devra obligatoirement avoir le droit spécial '''*JOBCTL'''.
 +
#Il devra également avoir les droits en '''*USE''' sur la description de sous-système (DSPOBJAUT OBJ(BIB/MAPSxxxx) OBJTYPE(*SBSD)
 +
#Il devra aussi avoir les droits en '''*EXECUTE''' sur la bibliothèque contenant cette description (DSPOBJAUT OBJ(LIB) OBJTYPE(*LIB))
  
 
==Conclusion==
 
==Conclusion==
Nous pouvons tirer plusieurs conclusion :
+
Nous pouvons tirer plusieurs conclusions :
 +
 
 
#Dans le cas d'utilisation du Robot, le profil utilisateur exécutant les traitement sera toujours (à l'exception de la commande MAPSNDMAIL) '''MAPPING'''
 
#Dans le cas d'utilisation du Robot, le profil utilisateur exécutant les traitement sera toujours (à l'exception de la commande MAPSNDMAIL) '''MAPPING'''
 
#Peu importe la classe utilisateur du profil exécutant le traitement
 
#Peu importe la classe utilisateur du profil exécutant le traitement
#Sans droit spéciaux, les droits d'un objet (programme, commande, etc) IBM-i sont affichés grâce la commande '''DSPOBJAUT''' ou modifiés à la commande ''''GRTOBJAUT'''
+
#Sans droit spéciaux, les droits d'un objet (programme, commande, etc) IBM-i sont affichés grâce la commande '''DSPOBJAUT''' ou modifiés à la commande '''GRTOBJAUT'''
 
#Le droit spécial '''*ALLOBJ''' donné à un utilisateur bypasse ces restrictions de droits et donne accès à l'exécution sur tous les objets
 
#Le droit spécial '''*ALLOBJ''' donné à un utilisateur bypasse ces restrictions de droits et donne accès à l'exécution sur tous les objets
 +
#Dans les envois en PDF, il y a 2 niveaux de droits :
 +
*1er niveau sur la création du PDF : Avec dans l'ordre le profil ayant créé le spool à envoyer ou l'utilisateur MAPPING ou l'utilisateur propriétaire des programme QPGMR
 +
*2ième niveau pour l'envoi : L'utilisateur exécutant le programme d'envoi d'emails (MAP_C31P1) est celui ayant lancé le MAPSMTP
 +
#Démarrage du Robot MAPPING : Droit spécial *JOBCTL

Version actuelle datée du 8 octobre 2020 à 16:04

Introduction

Cette documentation explique la gestion des droits d'accès sur les objets MAPPING IBM-i.
Cette documentation explique notamment les droits minimum nécessaire au bon fonctionnement du robot MAPPING

Quelques commandes AS400 à connaitre sur la gestions des droits

DSPOBJAUT : Permet d'afficher les autorisations sur les objets

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*PGM)

--> Affiche les autorisation du programme MAPCPYSPLF de la bib OPALE1017

GRTOBJAUT : Permet de modifier les autorisations sur les objets

GRTOBJAUT OBJ(MAPCPYSPLF) OBJTYPE(*PGM) USER(QPGMR) AUT(*EXCLUDE)

--> Passe l'utililisateur QPGMR en *EXCLUDE sur l'objet programme MAPCPYSPLF de la bib OPALE1017

WRKUSRPRF : Permet de modifier les profils utilisateurs

WRKUSRPRF USRPRF(JDIEU)

--> Permet de voir et modifier les attributs du profil utilisateur JDIEU

Traitements MAPPING

Pour garantir le bon fonctionnement de l'application MAPPING, il faut s'assurer que les utilisateurs exécutant les différents jobs de traitements aient bien accès aux ressources nécessaires (commandes, programmes, etc)

Il y a plusieurs façon d'invoquer des traitements dans MAPPING :

  • De manière interactive en ligne de commande
  • Avec l'utilisation de CL programmes
  • A l'aide du Robot MAPPING

De manière interactive en ligne de commande

Cette façon est souvent utilisée lors des tests manuels. L'utilisateur invoquant la commande est l'utilisateur avec lequel vous êtes connecté (à l'exception des envois d'emails).

Cet utilisateur devra alors avoir accès aux ressources.

Avec l'utilisation de CL programmes

Cette façon est parfois utilisée par nos clients. Les commandes MAPPING sont alors inclues directement dans les programmes CL des clients générant notamment les spooled files. L'utilisateur exécutant les commandes MAPPING sera alors l'utilisateur soumettant le travail. (celui-ci dépend de la configuration des traitements du client)

Traitements via le Robot MAPPING

Il est tout à fait possible également d'utiliser le Robot MAPPING pour automatiser les traitements. L'utilisateur invoquant les commandes (à l'exception de la commande MAPSNDMAIL) sera alors l'utilisateur système MAPPING. (profil créé et paramétré lors de l'installation de MAPPING IBM-i)

Cet utilisateur devra alors avoir accès aux ressources.

Fonctionnement des droits sur les objets IBM-i

Valeurs par défaut à l'installation de MAPPING IBM-i

Lors de l'installation de MAPPING IBM-i, des valeurs de droits par défaut sont présentes sur les différents objets MAPPING. (programmes, commandes, etc...)

Pour les besoin de rédaction de cette présente documentation, nous allons prendre pour exemple le programme de génération de PDF via la commande MAPCPYSPLF. La commande MAPCPYSPLF exécute en fait 3 programmes : MAPCPYSPLF, MAP_815UCS et MAP_XPS

Nous allons vérifier les autorisations données par défaut à ces objets lors de l'installation de MAPPING.

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*PGM)
                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *CHANGE   
  QPGMR                   *ALL      
DSPOBJAUT OBJ(OPALE1017/MAP_815UCS) OBJTYPE(*PGM)
                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *CHANGE   
  QPGMR                   *ALL  

DSPOBJAUT OBJ(OPALE1017/MAP_XPS) OBJTYPE(*PGM)

                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *CHANGE   
  QPGMR                   *ALL  

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*CMD)

                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *CHANGE   
  QPGMR                   *ALL  

Nous voyons que pour ces objets par défaut, l'utilisateur QPGMR a tous les droits *ALL et que tous les autres *PUBLIC ( soit les autres que celui listé en dessous ( soit dans notre cas QPGMR)) ont les droits de modifications *CHANGE

Quels impacts il y a sur les traitements du robot MAPPING

MAPPING a un robot (Sous système scannant des fichiers spool dans des OUTQs monitorées) qui permet l'automatisation des traitements. Chaque évènement arrivant dans une des OUTQs monitorés fait l'objet d'un traitement par l'intermédiaire de différents jobs. A l'exception de la commande MAPSNDMAIL, tous ces jobs sont exécutés par l'utilisateur système MAPPING (utilisateur créé à l'installation de MAPPING IBM-i)

Par conséquent, il faut s'assurer que l'utilisateur MAPPING ait bien les droits d'exécution sur les objets MAPPING (Exemple du MAPCPYSPLF ci-dessus)

Pour étayer cela, prenons les exemples ci-dessous.


Exemple 1

MAPPING en classe utilisateur *USER sans droits spéciaux avec *PUBLIC en *CHANGE et QPGMR en *ALL.

Prenons pour exemple l'exécution du programme MAPCPYSPLF avec le paramétrage droits/Autorisations suivant :

Utilisateur MAPPING :

  • Classe utilisateur : *USER
  • Droit spéciaux : *NONE

Programme MAPCPYSPLF :

  • PUBLIC *CHANGE

QPGMR *ALL

Le fonctionnement des droits fonctionne comme ci-après :

  1. Est ce que l'utilisateur MAPPING a les droits sur le programme MAPCPYSPLF?

Pour répondre à cette question, exécutons la commande ci-dessous :

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*PGM)
                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *CHANGE   
  QPGMR                   *ALL

L'utilisateur MAPPING fait dans ce cas parti du '*PUBLIC', de ce fait, il a le droit à '*CHANGE'

*CHANGE 
        Permet toutes les opérations sur l'objet, à l'exception de 
        celles réservées au propriétaire ou contrôlées par les droits 
        sur l'existence et sur la gestion de l'objet.

Cette autorisation lui permet donc d'exécuter la commande MAPCPYSPLF (et les 2 autres programmes associés qui ont les mêmes autorisations).

De ce fait la création du PDF ne posera pas de problème via le Robot.

Exemple 2

MAPPING en classe utilisateur *USER sans droits spéciaux avec *PUBLIC en *EXCLUDE et QPGMR en *ALL

Prenons pour exemple l'exécution du programme MAPCPYSPLF avec le paramétrage droits/Autorisations suivant :

Utilisateur MAPPING :

  • Classe utilisateur : *USER
  • Droit spéciaux : *NONE

Programme MAPCPYSPLF :

  • PUBLIC *EXCLUDE

QPGMR *ALL

Le fonctionnement des droits est comme cela :

  1. Est ce que l'utilisateur MAPPING a les droits sur programme MAPCPYSPLF?

Pour répondre à cette question, exécutons la commande ci-dessous :

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*PGM)
                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *EXCLUDE   
  QPGMR                   *ALL

L'utilisateur MAPPING fait dans ce cas partie du '*PUBLIC', de ce fait, il a le droit à '*EXCLUDE'

     *EXCLUDE 
        Interdit toute opération sur l'objet.  
        sur l'existence et sur la gestion de l'objet.

On pourrait donc croire que le Robot ne puisse pas exécuter le programme MAPCPYSPLF, mais en fait il le pourra car dans le cas où l'utilisateur l'exécutant (dans le cas du Robot, l'utilisateur MAPPING) n'a pas les droits pour l'exécuter, le système IBM-i l'exécutera également avec les droits de son propriétaire. Le propriétaire des programmes MAPPING étant l'utilisateur QPGMR, alors son exécution se fera avec ses droits. Dans notre exemple avec les droits *ALL

Cette autorisation lui permet donc d'exécuter la commande MAPCPYSPLF (et les 2 autres programmes associés qui ont les mêmes autorisations).

De ce fait la création du PDF ne posera pas de problème via le Robot.


Exemple 3

MAPPING en classe utilisateur *USER sans droits spéciaux avec *PUBLIC en *EXCLUDE et QPGMR en *EXCLUDE

Prenons pour exemple l'exécution du programme MAPCPYSPLF avec le paramétrage droits/Autorisations suivant :

Utilisateur MAPPING :

  • Classe utilisateur : *USER
  • Droit spéciaux : *NONE

Programme MAPCPYSPLF :

  • PUBLIC *EXCLUDE

QPGMR *EXCLUDE

Le fonctionnement des droits est comme cela :

  1. Est ce que l'utilisateur MAPPING a les droits sur programme MAPCPYSPLF?

Pour répondre à cette question, exécutons la commande ci-dessous :

DSPOBJAUT OBJ(OPALE1017/MAPCPYSPLF) OBJTYPE(*PGM)
                         Droits  
  Utilisat    Groupe      sur objet 
  *PUBLIC                 *EXCLUDE   
  QPGMR                   *EXCLUDE

L'utilisateur MAPPING fait dans ce cas parti du '*PUBLIC', de ce fait, il a le droit à '*EXCLUDE'

     *EXCLUDE 
        Interdit toute opération sur l'objet.  
        sur l'existence et sur la gestion de l'objet.

Tout comme dans l'exemple 2 ci-dessus, le système va essayer d'exécuter le programme MAPCPYSPLF avec l'utilisateur MAPPING. Celui-ci fait parti de *PUBLIC qui est en *EXCLUDE, de ce fait, il ne pourra pas l'exécuter. Ensuite le système va essayer de l'exécuter avec l'utilisateur propriétaire du programme à exécuter (MAPCPYSPLF) qui est QPGMR, mais celui-ci est également en *EXCLUDE

De ce fait la création du PDF sera impossible via le Robot. Un message d'erreur apparaitra dans les logs du robot MAPPING : Erreurs trouvées dans la commande


Exemple 4

Il est tout à fait possible de surcharger les autorisations vues précédemment (vu dans le DSPOBJAUT) en attribuant des droits spéciaux sur le profil MAPPING. La valeur permettant d'exécuter n'importe quel programme même si l'utilisateur n'a pas les droits dessus est la valeur *ALLOBJ

Si l'utilisateur MAPPING a ce droit spéciaux, alors peu importe ses droits sur les objets, il pourra les exécuter et il n'y aura plus de problème de droits avec le Robot. (De ce fait, avec les droits spéciaux *ALLOBJ, l'exécution de la commande MAPCPYSPLF de l'exemple 3 serait alors possible )

Remarque sur le passage d'un utilisateur en *ALLOBJ:
Avantage : Plus facile car on ne se pose plus de question sur la gestion des droits
Inconvénient : Donne accès à tous les objets sur système, ce qui peut être dangereux.


Cas particulier de l'envoi d'emails via la commande MAPSNDMAIL

Nous avons vu plus haut que toute commande invoquée par le Robot MAPPING été exécutée avec l'utilisateur MAPPING. Nous avons également vu qu'il y avait une exception qui est la commande MAPSNDMAIL (à l'étape de l'envoi d'emails)

En effet la commande MAPSNDMAIL est quant à elle invoquée par l'utilisateur ayant lancé le travail MAPSMTP :

Soit via le menu MAPPING e-Mail / Démarrage de la gestion des mails, soit via la commande STRMAPMAIL.

L'utilisateur lançant ce job devra respecter les mêmes contraintes que l'utilisateur MAPPING afin que les mails puissent être envoyé via le Robot MAPPING. (avoir accès au programme d'envoi d'emails MAP_031P1)

Les envois de PDFs par emails via la commande MAPSNDMAIL se passent comme ceci :

  • La commande MAPCPYSPLF (avec les 3 programmes MAPCPYSPLF, MAP_815UCS et MAP_XPS) sont exécutées pour la création du fichier PDF. (Et non directement par MAPPING comme dans le cas de génération de PDF sans envoi d'email)

--> Ces programmes sont exécutés avec en premier l'utilisateur propriétaire du spool à envoyer, et si celui-ci n'a pas les droits, avec l'utilisateur MAPPING et si celui-ci n'a pas non plus les droits avec le propriétaire des programmes (QPGMR)

  • Une fois le PDF généré, l'envoi d'email se fera via le programme MAP_031P1 et sera exécuté avec l'utilisateur qui a démarré le job MAPSMTP

-->Celui-ci doit bien avoir accès au programme MAP_031P1 (comme vu dans les exemples d'avant)

Démarrage/Arrêt du Robot MAPPING

  1. L'utilisateur voulant démarrer le robot MAPPING (STRRBT) devra obligatoirement avoir le droit spécial *JOBCTL.
  2. Il devra également avoir les droits en *USE sur la description de sous-système (DSPOBJAUT OBJ(BIB/MAPSxxxx) OBJTYPE(*SBSD)
  3. Il devra aussi avoir les droits en *EXECUTE sur la bibliothèque contenant cette description (DSPOBJAUT OBJ(LIB) OBJTYPE(*LIB))

Conclusion

Nous pouvons tirer plusieurs conclusions :

  1. Dans le cas d'utilisation du Robot, le profil utilisateur exécutant les traitement sera toujours (à l'exception de la commande MAPSNDMAIL) MAPPING
  2. Peu importe la classe utilisateur du profil exécutant le traitement
  3. Sans droit spéciaux, les droits d'un objet (programme, commande, etc) IBM-i sont affichés grâce la commande DSPOBJAUT ou modifiés à la commande GRTOBJAUT
  4. Le droit spécial *ALLOBJ donné à un utilisateur bypasse ces restrictions de droits et donne accès à l'exécution sur tous les objets
  5. Dans les envois en PDF, il y a 2 niveaux de droits :
  • 1er niveau sur la création du PDF : Avec dans l'ordre le profil ayant créé le spool à envoyer ou l'utilisateur MAPPING ou l'utilisateur propriétaire des programme QPGMR
  • 2ième niveau pour l'envoi : L'utilisateur exécutant le programme d'envoi d'emails (MAP_C31P1) est celui ayant lancé le MAPSMTP
  1. Démarrage du Robot MAPPING : Droit spécial *JOBCTL