Recette SQL IBM i (AS/400) · Sécurité
Les profils utilisateurs inutilisés depuis plus de 90 jours
Les profils utilisateurs actifs qui n'ont pas servi depuis plus de 90 jours : la première liste à produire pour un audit de sécurité IBM i.
Le besoin
Un compte inutilisé mais toujours actif est une porte ouverte : ancien salarié, prestataire parti, compte de test. Les auditeurs demandent cette liste en premier.
La requête
SELECT AUTHORIZATION_NAME, STATUS, USER_CLASS_NAME, LAST_USED_TIMESTAMP, PREVIOUS_SIGNON,
DAYS(CURRENT DATE) - DAYS(LAST_USED_TIMESTAMP) AS JOURS_SANS_UTILISATION
FROM QSYS2.USER_INFO
WHERE STATUS = '*ENABLED'
AND AUTHORIZATION_NAME NOT LIKE 'Q%'
AND LAST_USED_TIMESTAMP < CURRENT TIMESTAMP - 90 DAYS
ORDER BY LAST_USED_TIMESTAMP
FETCH FIRST 10 ROWS ONLY
QSYS2.USER_INFO donne une ligne par profil. LAST_USED_TIMESTAMP est la dernière utilisation du profil (connexion, travail soumis…). Les profils IBM (en Q) sont exclus.
Le résultat sur un IBM i 7.5
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| AUTHORIZATION_NAME Profil utilisateur | STATUS Statut | USER_CLASS_NAME Classe d'utilisateur | LAST_USED_TIMESTAMP Horodatage de dernière utilisation | PREVIOUS_SIGNON Horodatage de la connexion précédente | JOURS_SANS_UTILISATION Jours sans utilisation |
|---|---|---|---|---|---|
| PETIT | *ENABLED | *PGMR | 2026-01-23 00:00:00.000000 | 2025-11-13 15:39:43.000000 | 251 |
| UTIL186 | *ENABLED | *PGMR | 2026-01-25 00:00:00.000000 | 2026-01-25 14:47:06.000000 | 249 |
| UTIL180 | *ENABLED | *PGMR | 2026-02-06 00:00:00.000000 | 2026-02-06 16:31:02.000000 | 237 |
| BONNET | *ENABLED | *PGMR | 2026-03-02 00:00:00.000000 | 2026-03-02 09:04:21.000000 | 213 |
| UTIL158 | *ENABLED | *USER | 2026-03-04 00:00:00.000000 | 2026-03-04 14:31:00.000000 | 211 |
Chez nous, des profils d'apprenants n'ont pas servi depuis plus de 230 jours : exactement ce que la requête doit faire ressortir.
Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.
L'adapter à votre système
Pour les désactiver, générez les commandes : 'CHGUSRPRF USRPRF(' CONCAT AUTHORIZATION_NAME CONCAT ') STATUS(*DISABLED)', à relire avant de les lancer. USER_INFO_BASIC est plus rapide si vous n'avez besoin que des colonnes principales.