Valeur système IBM i (AS/400) · Sécurité
QUSEADPAUT
Qui peut créer des programmes à droits adoptés
Limite aux membres d'une liste d'autorisation la création ou la modification de programmes qui utilisent les droits adoptés par leurs appelants (USEADPAUT(*YES)).
À quoi elle sert
Un programme peut adopter les droits de son propriétaire, et ces droits adoptés se propagent aux programmes appelés si ceux-ci ont l'attribut USEADPAUT(*YES). QUSEADPAUT décide qui a le droit de créer, modifier ou mettre à jour un programme ou un programme de service avec cet attribut.
C'est un garde-fou contre l'élévation de privilèges : un développeur qui peut positionner cet attribut peut faire hériter son programme des droits d'un programme appelant privilégié. L'auditeur et le responsable sécurité s'en soucient en priorité.
Les valeurs possibles
| Valeur | Signification |
|---|---|
*NONE | Aucune restriction : tout utilisateur ayant les droits nécessaires sur le programme peut créer, modifier ou mettre à jour un programme avec USEADPAUT(*YES). |
nom de liste d'autorisation | Les utilisateurs ayant au moins le droit *USE sur cette liste peuvent créer, modifier ou mettre à jour des programmes avec USEADPAUT(*YES). Le droit ne peut pas provenir d'un droit adopté. Si l'utilisateur n'a pas ce droit, un message de diagnostic est envoyé et le programme est créé avec USEADPAUT(*NO). Si la liste n'existe pas, l'opération tentée n'aboutit pas et un message est envoyé (exception : QPRCRTPG avec *NOADPAUT dans le modèle d'option réussit même sans la liste). |
Prise en compte : Immédiate. Il faut les droits spéciaux *ALLOBJ et *SECADM, et la valeur peut être verrouillée par les outils de service (SST/DST).
La valeur recommandée
Créer une liste d'autorisation avec *PUBLIC à *EXCLUDE, y inscrire en *USE uniquement les personnes de confiance (responsable sécurité, équipe de déploiement), puis la référencer dans QUSEADPAUT. La documentation IBM recommande cette approche pour les environnements de production.
La valeur livrée, *NONE, est donc à durcir.
La changer
CRTAUTL AUTL(USEADPLST) AUT(*EXCLUDE)
ADDAUTLE AUTL(USEADPLST) USER(MONPROFIL) AUT(*USE)
CHGSYSVAL SYSVAL(QUSEADPAUT) VALUE(USEADPLST)
Pour lire la valeur actuelle et celle de la livraison, en SQL :
SELECT SYSTEM_VALUE_NAME, SYSTEM_VALUE, SHIPPED_DEFAULT_VALUE
FROM QSYS2.SYSTEM_VALUE_INFO
WHERE SYSTEM_VALUE_NAME = 'QUSEADPAUT'
Le piège
La valeur n'agit que sur les créations et modifications futures : les programmes déjà créés avec USEADPAUT(*YES) ne sont pas touchés. Il faut donc inventorier et corriger l'existant à part. Une liste d'autorisation inexistante bloque les opérations concernées.