Aller au contenu

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

ValeurSignification
*NONEAucune 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'autorisationLes 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.