Mascherata

Il mascheramento è un modo in cui un client può operare come un altro utente, con tutti i privilegi di quell'utente. Il mascheramento è una funzione potente. Usate il masquerading con cautela, come quando usate il comando 'root in UNIX o il comando 'su in Linux®.

La funzione di masquerading consente ai server delle applicazioni di eseguire l'autenticazione separatamente dal sistema. Inoltre, consente a un server di utilizzare una connessione al sistema Netezza Performance Server per un certo numero di utenti, continuando a registrare tali utenti con il sistema Netezza Performance Server.

In questo caso d'uso, la sicurezza del sistema è impostata in modo che gli utenti non accedano direttamente a un database Netezza Performance Server, ma lo facciano attraverso un'applicazione. L'applicazione consente a determinati utenti di accedere al database. Ogni utente del database ha un profilo di sicurezza associato, che determina quali informazioni possono essere accessibili.

Il sistema Netezza Performance Server non esegue l'autenticazione dell'utente, ma la lascia all'applicazione. Nel masquerading, un client utilizza l'applicazione per accedere al database come un altro utente (chiamato utente target), accedendo così al database con il profilo di sicurezza dell'utente target.

La mascheratura viene eseguita con il comando EXECUTE AS. Per utilizzare questo comando, è necessario disporre dei privilegi EXECUTE AS sull'utente di destinazione. Se si esegue il comando senza i privilegi richiesti, viene visualizzato un messaggio di errore.

Per eseguire EXECUTE AS, utilizzare la seguente sintassi, dove target-user-name è il nome di un utente esistente per il quale si dispone del privilegio EXECUTE AS:
EXECUTE AS target-user-name

Come spiegato in Controllo login utente, l'apertura di una connessione al database stabilisce una sessione e l'utente della sessione viene registrato. Il mascheramento cambia l'utente corrente nel contesto della sessione. I controlli successivi delle autorizzazioni utilizzano questo valore, mentre la funzione utente di sessione mostra ancora l'utente originale.

Il seguente esempio di comando avvia una sessione per l'utente John, con la password ABCD, e accede al database BIZ:
nzsql -u JOHN -pw ABCD -db BIZ
BIZ.SCM(JOHN)=>
John utilizza il comando EXECUTE AS per mascherarsi come utente Hank:
BIZ.SCM(JOHN)=> EXECUTE AS HANK;
EXECUTE AS
Per vedere qual è l'utente della sessione e quale l'utente corrente, eseguire i seguenti comandi:
BIZ(JOHN)=> SELECT session_user, current_user;
 SESSION_USER | CURRENT_USER
--------------+--------------
 JOHN         | HANK
(1 row)

Per invertire il comando EXECUTE AS, utilizzare il comando REVERT, che cambia l'utente corrente:

BIZ(JOHN)=> REVERT;
REVERT
BIZ(JOHN)=> SELECT session_user, current_user;
 SESSION_USER | CURRENT_USER
--------------+--------------
 JOHN         | JOHN
(1 row)