Consentire agli utenti di impersonare altri utenti
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.
| 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. |
| 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.
| 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. |
- 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.
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”}’