[z/OS]

Sicurezza della coda di messaggi non recapitabili

Considerazioni speciali si applicano alla coda di messaggi non recapitabili, poiché molti utenti devono essere in grado di inserirvi messaggi, ma l'accesso per richiamare i messaggi deve essere strettamente limitato. È possibile ottenere ciò applicando diverse autorizzazioni RACF® alla coda di messaggi non recapitabili e a una coda alias.

I messaggi non recapitati possono essere inseriti in una coda speciale denominata coda di messaggi non recapitabili. Se si dispone di dati sensibili che potrebbero finire su questa coda, è necessario considerare le implicazioni di sicurezza di questo perché non si desidera che utenti non autorizzati richiamino questi dati.

È necessario consentire a ciascuno dei seguenti elementi di inserire messaggi nella coda di messaggi non recapitabili:
  • Programmi applicativi.
  • Lo spazio di indirizzo dell'iniziatore di canali e qualsiasi ID utente MCA. (Se il profilo RESLEVEL non è presente o è definito in modo che gli ID utente del canale vengano controllati, l'ID utente del canale ha anche bisogno dell'autorizzazione per inserire i messaggi nella coda di messaggi non recapitabili).
  • CKTI, l'iniziatore di task CICS® fornito da CICS.
  • CSQQTRMN, il controllo trigger IBM® MQfornito IMS .
L'unica applicazione che può richiamare i messaggi dalla coda di messaggi non recapitabili deve essere un'applicazione 'speciale' che elabora tali messaggi. Tuttavia, si verifica un problema se si fornisce alle applicazioni l'autorizzazione RACF UPDATE alla coda di messaggi non recapitabili per MQPUT , poiché possono richiamare automaticamente i messaggi dalla coda utilizzando le chiamate MQGET . Non è possibile disabilitare la coda di messaggi non recapitabili per le operazioni get perché, in tal caso, nemmeno le applicazioni 'speciali' potrebbero richiamare i messaggi.

Una soluzione a questo problema consiste nell'impostare un accesso a due livelli alla coda di messaggi non recapitabili. CKTI, le transazioni dell'agente del canale dei messaggi o lo spazio di indirizzo dell'iniziatore del canale e le applicazioni 'speciali' hanno accesso diretto; altre applicazioni possono accedere alla coda dei messaggi non recapitabili solo tramite una coda alias. Questo alias è definito per consentire alle applicazioni di inserire messaggi nella coda di messaggi non recapitabili, ma di non ricevere messaggi da essa.

Questo è il modo in cui potrebbe funzionare:
  1. Definire la coda di messaggi non instradabili reale con gli attributi PUT (ENABLED) e GET (ENABLED), come mostrato nell'esempio thlqual.SCSQPROC(CSQ4INYG).
  2. Concedere l'autorità RACF UPDATE per la coda di messaggi non recapitabili ai seguenti ID utente:
    • Gli ID utente con cui vengono eseguiti CKTI e gli MCA o lo spazio di indirizzo dell'iniziatore di canali.
    • Gli ID utente associati all'applicazione di elaborazione della coda di messaggi non instradabili 'speciale'.
  3. Definire una coda alias che si risolva nella coda di messaggi non recapitabili reale, ma fornire alla coda alias questi attributi: PUT (ENABLED) e GET (DISABLED). Assegnare alla coda alias un nome con la stessa radice del nome della coda di messaggi non recapitabili ma accodare i caratteri ". PUT" a questa radice. Ad esempio, se il nome della coda di messaggi non recapitabili è hlq.DEAD.QUEUE, il nome della coda alias è hlq.DEAD.QUEUE.PUT.
  4. Per inserire un messaggio nella coda di messaggi non instradabili, un'applicazione utilizza la coda alias. Ecco cosa deve fare la tua applicazione:
    • Richiamare il nome della coda di messaggi non recapitabili reale. A tale scopo, apre l'oggetto gestore code utilizzando MQOPEN ed emette un MQINQ per ottenere il nome della coda di messaggi non recapitabili.
    • Creare il nome della coda alias accodando i caratteri '.PUT' a questo nome, in tal caso, hlq.DEAD.QUEUE.PUT.
    • Aprire la coda alias, hlq.DEAD.QUEUE.PUT.
    • Inserire il messaggio nella coda di messaggi non instradabili reale emettendo un comando MQPUT rispetto alla coda alias.
  5. Fornire l'ID utente associato all'autorizzazione RACF UPDATE dell'applicazione all'alias, ma nessun accesso (autorizzazione NONE) alla coda di messaggi non recapitabili reale. Questo vuol dire che:
    • L'applicazione può inserire i messaggi nella coda di messaggi non recapitabili utilizzando la coda alias.
    • L'applicazione non può richiamare i messaggi dalla coda di messaggi non recapitabili utilizzando la coda alias perché la coda alias è disabilitata per operazioni di acquisizione.

    L'applicazione non può richiamare alcun messaggio dalla coda di messaggi non instradabili reale perché dispone dell'autorità RACF corretta.

La Tabella 1 riepiloga l'autorizzazione RACF richiesta per i vari partecipanti a questa soluzione.
Tabella 1. RACF autorizzazione alla coda di messaggi non recapitabili e al relativo alias
ID utente associato Coda di messaggi non instradabili reale (hlq.DEAD.QUEUE) Coda di messaggi non recapitabili alias (hlq.DEAD.QUEUE.PUT)
Spazio di indirizzo dell'iniziatore di canali o MCA e CKTI AGGIORNA Nessuna
Applicazione 'Speciale' (per l'elaborazione della coda di messaggi non recapitabili) AGGIORNA Nessuna
ID utente applicazione scritti dall'utente Nessuna AGGIORNA

Se si utilizza questo metodo, l'applicazione non può determinare la lunghezza massima del messaggio (MAXMSGL) della coda di messaggi non recapitabili. Ciò si verifica perché l'attributo MAXMSGL non può essere richiamato da una coda alias. Pertanto, l'applicazione deve presumere che la lunghezza massima del messaggio sia 100 MB, la dimensione massima supportata da IBM MQ for z/OS® . La coda di messaggi non recapitabili reale deve essere definita anche con un attributo MAXMSGL di 100 MB.

Nota: i programmi applicativi scritti dall'utente normalmente non utilizzano l'autorizzazione utente alternativa per inserire i messaggi nella coda di messaggi non recapitabili. Ciò riduce il numero di ID utente che hanno accesso alla coda di messaggi non recapitabili.