Recette SQL IBM i (AS/400) · Sécurité
Les objets d'une bibliothèque accessibles à *PUBLIC en modification
Les objets d'une bibliothèque que tout le monde (*PUBLIC) peut modifier ou supprimer : droits *ALL ou *CHANGE donnés à *PUBLIC.
Le besoin
Un fichier ou une zone de données en *PUBLIC *CHANGE peut être modifié par n'importe quel utilisateur. Dans une bibliothèque de production, c'est à corriger.
La requête
SELECT SYSTEM_OBJECT_SCHEMA, SYSTEM_OBJECT_NAME, OBJECT_TYPE, AUTHORIZATION_NAME, OBJECT_AUTHORITY
FROM QSYS2.OBJECT_PRIVILEGES
WHERE SYSTEM_OBJECT_SCHEMA = 'QGPL'
AND AUTHORIZATION_NAME = '*PUBLIC'
AND OBJECT_AUTHORITY IN ('*ALL', '*CHANGE')
ORDER BY OBJECT_TYPE, SYSTEM_OBJECT_NAME
QSYS2.OBJECT_PRIVILEGES donne une ligne par droit (objet, profil, niveau de droit). On garde ceux de *PUBLIC au niveau *ALL ou *CHANGE.
Le résultat sur un IBM i 7.5
Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :
| SYSTEM_OBJECT_SCHEMA Bibliothèque système de l'objet | SYSTEM_OBJECT_NAME Nom système de l'objet | OBJECT_TYPE Type de l'objet | AUTHORIZATION_NAME Profil utilisateur | OBJECT_AUTHORITY Droits sur l'objet |
|---|---|---|---|---|
| QGPL | CLS1 | *CLS | *PUBLIC | *CHANGE |
| QGPL | MLA001CLS | *CLS | *PUBLIC | *CHANGE |
| QGPL | DATAME003 | *DTAARA | *PUBLIC | *CHANGE |
| QGPL | MYDATAAREA | *DTAARA | *PUBLIC | *CHANGE |
| QGPL | QPWFS_MSGI | *DTAARA | *PUBLIC | *CHANGE |
Dans QGPL, la bibliothèque commune, on trouve des programmes CL et des zones de données créés avec le droit public par défaut *CHANGE.
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
Remplacez QGPL par votre bibliothèque. Pour corriger, générez 'GRTOBJAUT OBJ(' CONCAT … CONCAT ') USER(*PUBLIC) AUT(*USE)' et relisez avant d'exécuter.