Il diritto *PUBLIC di un oggetto, se non impostato esplicitamente, viene ereditato dalla libreria e in ultima istanza dal valore di sistema QCRTAUT, il cui valore predefinito è *CHANGE.
La conseguenza è che su un sistema mai revisionato il diritto pubblico è tipicamente più ampio di quanto risulti da qualsiasi decisione documentata. Il perimetro non è stato ampliato: non è mai stato ristretto.
Questo perimetro è indipendente dalla sicurezza a menu, che vincola l'accesso interattivo 5250 e non le interfacce che raggiungono il database direttamente: su cui si può intervenire dagli exit point.
Fotografare la situazione
La vista è QSYS2.OBJECT_PRIVILEGES, che restituisce una riga per ogni utente autorizzato a un oggetto: le stesse informazioni di DSPOBJAUT, in forma interrogabile.
La distribuzione per libreria, da eseguire per prima perché è aggregata e restituisce poche righe:
SELECT OBJECT_AUTHORITY, COUNT(*) AS QUANTI
FROM QSYS2.OBJECT_PRIVILEGES
WHERE SYSTEM_OBJECT_SCHEMA = 'PRODLIB'
AND AUTHORIZATION_NAME = '*PUBLIC'
GROUP BY OBJECT_AUTHORITY
ORDER BY QUANTI DESC;
L'elenco degli oggetti non esclusi, da eseguire dopo aver visto i numeri:
SELECT SYSTEM_OBJECT_NAME, OBJECT_TYPE, OBJECT_AUTHORITY
FROM QSYS2.OBJECT_PRIVILEGES
WHERE SYSTEM_OBJECT_SCHEMA = 'PRODLIB'
AND AUTHORIZATION_NAME = '*PUBLIC'
AND OBJECT_AUTHORITY <> '*EXCLUDE'
ORDER BY SYSTEM_OBJECT_NAME;
Misurare l'uso reale
Il diritto concesso non indica il diritto utilizzato. Senza quel dato ogni restrizione è un'ipotesi, e la verifica avviene in produzione.
La raccolta delle autorizzazioni registra ogni controllo di diritto effettivamente eseguito, con il diritto richiesto e quello che sarebbe stato sufficiente. Si attiva per profilo:
CHGAUTCOL USRPRF(MARIO) AUTCOLRPY(*ALL)
STRAUTCOL TYPE(*USRPRF) USRPRF(MARIO)
Va lasciata attiva per un ciclo di lavoro completo, comprensivo delle elaborazioni periodiche: una chiusura contabile utilizza oggetti che nel resto del mese non vengono aperti. Poi:
SELECT SYSTEM_OBJECT_SCHEMA, SYSTEM_OBJECT_NAME, OBJECT_TYPE,
CURRENT_AUTHORITY, REQUIRED_AUTHORITY
FROM QSYS2.AUTHORITY_COLLECTION
WHERE AUTHORIZATION_NAME = 'MARIO';
CURRENT_AUTHORITY è il diritto che il profilo aveva in quel momento, REQUIRED_AUTHORITY quello minimo che l'operazione avrebbe richiesto. Le due colonne affiancate quantificano il margine di restrizione su base documentale, senza doverlo ricostruire altrove.
Serve un diritto elevato per leggerla. La vista richiede
*ALLOBJe*SECADM, oppure l'autorizzazione alla funzioneQIBM_DB_SECADM. Senza, risponde[SQL0443] *ALLOBJ AND *SECADM AUTHORITY, OR QIBM_DB_SECADM FUNCTION USAGE IS REQUIRED.
Esempio: leggere il margine di restrizione
I valori che seguono sono illustrativi, servono a mostrare come si legge il confronto.
Distribuzione del diritto pubblico su una libreria, dalla prima query:
OBJECT_AUTHORITY QUANTI
*CHANGE 418
*USE 36
*EXCLUDE 7
Quattrocentodiciotto oggetti modificabili da chiunque. Il dato da solo non dice quanti lo siano per necessità.
Dopo un mese di raccolta sullo stesso perimetro:
SYSTEM_OBJECT_NAME OBJECT_TYPE CURRENT_AUTHORITY REQUIRED_AUTHORITY
ARTICOLI *FILE *CHANGE *USE
CLIENTI *FILE *CHANGE *USE
MOVMAG *FILE *CHANGE *CHANGE
LISTINI *FILE *CHANGE *USE
Delle quattro tabelle effettivamente utilizzate dal profilo, tre richiedono solo *USE: la lettura. Una sola scrive. Il diritto pubblico *CHANGE su ARTICOLI, CLIENTI e LISTINI eccede l'uso rilevato e può scendere a *USE senza che nessuna operazione osservata ne risenta.
Gli oggetti che non compaiono affatto nella raccolta sono la seconda informazione utile: nel periodo osservato quel profilo non li ha aperti. Non è una prova che non servano mai (un programma annuale non compare in un mese) ma circoscrive l'analisi a un elenco molto più corto di quello di partenza.
Sequenza di intervento
Prima il diritto predefinito delle librerie. Modificare QCRTAUT o il diritto della libreria non altera gli oggetti esistenti: si applica a quelli creati successivamente. È l'intervento a rischio nullo sull'esistente e interrompe l'ampliamento progressivo del perimetro.
Poi gli oggetti con contenuto qualificato. Retribuzioni, dati personali, contabilità. Un insieme ristretto di oggetti trattati correttamente ha un valore superiore a un intervento esteso condotto senza dati sull'uso.
Liste di autorizzazione invece di diritti individuali. Un oggetto collegato a una lista si amministra modificando la lista; un insieme ampio di diritti individuali non è amministrabile in modo verificabile.
Diritto adottato (USRPRF(*OWNER)) per le operazioni che richiedono più diritto di quello assegnato all'utente. È il meccanismo previsto per non dover ampliare il diritto pubblico dell'oggetto.
Il presupposto: livello di sicurezza
Quanto sopra presuppone QSECURITY a 40 o 50. Al livello 30 e inferiori esistono percorsi che non passano dal controllo dei diritti, e la restrizione di *PUBLIC non è quindi vincolante.
Da IBM i 7.5 il livello 20 non è più impostabile: i sistemi che vi si trovano lo mantengono dopo l'aggiornamento, ma non è più un valore raggiungibile.
Su quali versioni funziona
QSYS2.OBJECT_PRIVILEGES è disponibile da parecchi rilasci. QSYS2.AUTHORITY_COLLECTION è arrivata con IBM i 7.3 per i profili utente ed è stata estesa agli oggetti con 7.4. QCRTAUT, le liste di autorizzazione e il diritto adottato non hanno vincoli di rilascio.
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati