Aller au contenu

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.