Consentire agli utenti di impersonare altri utenti

Nota: l'impersonificazione dell'utente non si riferisce all'ID utente STC. È necessario selezionare un ID utente regolare z/OS che sarà autorizzato a impersonare altri ID utente z/OS. La sezione seguente spiega come concedere le autorizzazioni necessarie a tale utente.
Nota: Questa è una funzione opzionale che può essere attivata se un client o un servizio lo richiede. Se abilitata, questa funzione non ha alcun impatto sui servizi. L'impersonificazione avviene solo se attivata dal chiamante.
Nota: La funzione Data Collector che aggiunge il supporto per Data Collector e Data Collector Service, richiede che un utente crei profili per conto di altri utenti. Per soddisfare questo requisito, concedere a questo utente l'accesso completo con sostituzione dell'identità.

Debug Profile Service supporta una funzione chiamata impersonificazione, che consente a un utente autenticato di agire per conto di un altro utente. Questo è simile al cambio di contesto, in cui l'ID utente protetto del server (come STCEQA) cambia il suo contesto di sicurezza in quello dell'utente autenticato. L'impersonificazione fa un ulteriore passo avanti, consentendo all'utente autenticato di cambiare il proprio contesto di sicurezza con un utente completamente diverso.

Questo concetto è simile a quello di surrogato, in cui a un utente viene concessa l'autorità di eseguire azioni per conto di un altro. L'impersonificazione è particolarmente utile negli scenari di automazione, dove un servizio può autenticarsi una volta e poi gestire le risorse per più utenti al di là della propria identità. Può essere utilizzato anche per scenari di gestione, in cui un singolo superutente può assistere nella creazione di risorse per altri utenti all'interno del proprio ambiente di sicurezza. Tutto questo richiede privilegi elevati che possono essere concessi all'utente autorizzato utilizzando i profili z/OS RACF.

Configurazione dell'autorizzazione

L'amministratore della sicurezza può configurare un profilo di classe FACILITY per controllare quali API e ID utente possono essere impersonati. La sintassi del nome del profilo segue questo formato:

EQADTOOL.IMPERSONATE.<API NAME>.<USER ID>
  • <API NAME> specifica l'API supportata a cui si applica l'impersonificazione.
  • <USER ID> identifica gli utenti che possono essere impersonati.
  • Generic characters (*) sono consentiti in entrambe le parti del nome del profilo per garantire tutti gli accessi.
Tabella 1. Valori del NOME API
Nome API Commento
DTCN Consente l'accesso alla gestione dei soli profili CICS.
DS Permette di gestire solo i profili non CICS.
IMSISO Permette di gestire solo l'isolamento di IMS.
* Garantisce l'accesso a tutte le API supportate.

Tabella 2. Valori dell'ID UTENTE
ID UTENTE Commento
UTENTE IBM Consente l'accesso per impersonare un utente specifico.
IBM* Permette di impersonare qualsiasi ID utente che inizia con IBM.
* Permette di impersonare tutti gli utenti.

Una volta definito il profilo di classe FACILITY, è necessario concedere l'accesso agli utenti autorizzati. La sintassi dell'accesso segue questo formato:

PERMIT EQADTOOL.IMPERSONATE.*.* CLASS(FACILITY) ID(<userid>) ACCESS(<access>)
  • <userid> specifica l'utente autorizzato a impersonare altri.
  • <access> definisce il livello di accesso concesso.
Tabella 3. RACF Mappatura degli accessi
RACF Accesso Metodo HTTP Commento
CONTROLLO INVIARE Permette di creare, leggere e modificare la risorsa.
LETTURA GET Permette di leggere la risorsa.
modifica ELIMINA Consente l'accesso completo, compresa la cancellazione.
AGGIORNA PUT Permette di leggere e modificare la risorsa.
Esempi:
  • Il comando seguente concede a IBMUSER l'accesso completo per impersonare qualsiasi utente per qualsiasi API supportata:
    RDEFINE FACILITY EQADTOOL.IMPERSONATE.** UACC(NONE) DATA(‘Debug Profile Service’)
    PERMIT EQADTOOL.IMPERSONATE.** CLASS(FACILITY) ID(IBMUSER) ACCESS(ALTER)
    SETROPTS RACLIST(FACILITY) REFRESH
    RLIST FACILITY EQADTOOL.IMPERSONATE.** ALL
    
  • Il comando seguente concede l'accesso di impersonificazione a IBMUSER per impersonare solo gli ID utente con prefisso USER1 e solo per l' API DTCN (profili CICS ).
    RDEFINE FACILITY EQADTOOL.IMPERSONATE.DTCN.USER1* UACC(NONE) DATA(‘Debug Profile Service’)
    PERMIT EQADTOOL.IMPERSONATE.DTCN.USER1* CLASS(FACILITY) ID(IBMUSER) ACCESS(ALTER)
    SETROPTS RACLIST(FACILITY) REFRESH
    RLIST FACILITY EQADTOOL.IMPERSONATE.DTCN.USER1* ALL
    

Innescare l'impersonificazione

Per richiedere l'impersonificazione, è necessario configurare correttamente l'autorizzazione RACF e quindi impostare l'intestazione X-Impersonate-User nella richiesta HTTP. Questa intestazione specifica l'ID utente che il server deve assumere quando elabora la richiesta.

Il client deve comunque autenticarsi utilizzando il token JWT o le credenziali Base64-encoded. L'impersonificazione sarà concessa solo se l'utente autenticato ha i permessi RACF appropriati per impersonare l'utente specificato per la data API.

Ad esempio, il seguente comando curl mostra come un utente autenticato (tramite JWT) possa tentare di impersonare USER123.To generare esempi curl basati sull'ambiente corrente, utilizzando l'endpoint Swagger UI explorer.
curl –X POST “https://<hostname>:<port>/api/v1/<API>...” \
  -H “Authorization: Bearer ...” \
  -H “X-Impersonate-User: USER123” \
  -H “Content-Type: application/json” \
  -d ‘{“key”: “value”}’