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.
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.
nzsql -u JOHN -pw ABCD -db BIZ
BIZ.SCM(JOHN)=>
BIZ.SCM(JOHN)=> EXECUTE AS HANK;
EXECUTE AS
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)