Rappel
C’est la possibilité d’avoir accès à une ressource momentanément en passant par un programme qui s’exécutera avec les droits du propriétaire et non celui de l’utilisateur en cours.
Mise en oeuvre
Pour créer un programme adoptant.
C’est le paramètre USRPRF(*OWNER) dans les commandes qui génèrent un programme.
Vous pouvez également utiliser la commande CHGPGM pour modifier ce paramètre.
Dans tous les cas vous devez avoir au minimum le droit *USE sur le profil propriétaire.
Vous héritez également des droits spéciaux, comme *SPLCTL
Exemple :
Un exemple classique c’est le changement de mot de passe par un exploitant qui n’a pas le droit *SECADM dans les paramètres de son profil
Soit le programme suivant chgusrpwd compiler avec propriétaire qsecofr et le paramètre USRPRF(*OWNER)
PGM PARM(&USR)
DCL VAR(&USR) TYPE(CHAR) LEN(10) CHGUSRPRF USRPRF(&USR) PASSWORD('#password$') + PWDEXP(YES) STATUS(*ENABLED)
MONMSG MSGID(CPF2204) EXEC(SNDUSRMSG MSG('Profil,' +
*BCAT &USER BCAT 'inéxistant') + MSGTYPE(INFO))
ENDPGM
l’utilisateur peut rendre le mot de passe sans avoir le droit *SECADM, en
tapant ==>call chgusrpwd (‘NOMPROFIL’)
Sur un programme, vous avez un deuxième paramètre c’est USEADPAUT(*YES)
c’est est ce qu’on hérite des droits du programme appelant qui lui peut être en adoption de droit (par exemple call qcmd …)
Avantages :
Si vous maîtrisez bien, c’est un moyen de dire, aucun de mes utilisateurs n’a le droit sur ma base de données, mais il obtient le droit en utilisant mon applicatif, on pense aux accès par ODBC par exemple !
Inconvénients :
Ça peut être une « back door » pour des individus mal intentionnés.
Analyse et suivi :
La commande DSPPGMADP permet de mettre dans un fichier les programmes adoptants et ensuite vous pouvez interroger ce fichier.
2 valeurs systèmes influent sur l’adoption de droit.
QALWOBJRST
*ALWSYSSTT
Permet aux programmes, programmes de service et modules ayant un attribut état-hérité d’être restaurés. Lorsque le paramètre de la valeur système
QFRCCVNRST entraîne la conversion de l’objet, celui-ci passe à état-utilisateur.
*ALWPGMADP
Les programmes et programmes de service disposant de l’attribut d’adoption sont restaurés.
Cette valeur contrôle les restaurations d’objets sur votre partition
La deuxiéme valeur système
QUSEADPAUT
Elle indique si vous avez le droit de créer des programmes qui héritent des droits adoptés, c’est le paramètre USEADPAUT(*YES)
*NONE
Tous les utilisateurs du système on le droit de créer des utilisateurs qui héritent des droits du programme appelant.
nom d’une liste d’autorisation par convention souvent, QUSEADPAUT et seul les utilisateurs inscrits à cette liste et disposant de *use sur celle ci auront le droit de créer ou de modifier des programmes pour demander un héritage de droit.
Limites
Attention, vous héritez également des droits spéciaux , *SECADM par exemple
Attention, L’héritage de droit et la valeur par défaut USEADPAUT(*YES)
L’adoption de droit, ne fonctionne pas sur l’IFS qui est régie par un mode unix
Conclusion
Il est important de bien comprendre les mécanismes d’adoption de droit, soit pour les utiliser dans votre application, soit pour les contrôler et les administrer.