Mascarade
Le masquage est un moyen pour un client de fonctionner comme un autre utilisateur, avec tous les privilèges de cet utilisateur. Le masquage est une fonction puissante. Utilisez le masquage avec prudence, comme vous le feriez en utilisant la commande " root sous UNIX ou la commande " su sous Linux®.
La fonction de masquage permet aux serveurs d'application de procéder à l'authentification séparément du système. Il permet également à un serveur d'utiliser une connexion au système Netezza Performance Server pour un certain nombre d'utilisateurs tout en continuant à enregistrer ces utilisateurs avec le système Netezza Performance Server.
Dans ce cas d'utilisation, la sécurité du système est configurée de manière à ce que les utilisateurs n'accèdent pas directement à une base de données Netezza Performance Server, mais qu'ils le fassent par le biais d'une application. L'application permet à certains utilisateurs d'accéder à la base de données. Chaque utilisateur de la base de données a un profil de sécurité associé, qui détermine les informations auxquelles il peut accéder.
Le système Netezza Performance Server n'effectue pas l'authentification de l'utilisateur, mais laisse cette tâche à l'application. Dans le masquage, un client utilise l'application pour accéder à la base de données en tant qu'autre utilisateur (appelé utilisateur cible), accédant ainsi à la base de données avec le profil de sécurité de l'utilisateur cible.
Le masquage s'effectue à l'aide de la commande EXECUTE AS. Pour utiliser cette commande, vous devez disposer des privilèges EXECUTE AS sur l'utilisateur cible. Si vous exécutez la commande sans disposer des privilèges requis, un message d'erreur s'affiche.
EXECUTE AS target-user-name
Comme expliqué dans Contrôle de connexion de l'utilisateur, l'ouverture d'une connexion à la base de données établit une session, et l'utilisateur de la session est enregistré. Le masquage modifie l'utilisateur actuel dans le contexte de la session. Les contrôles d'autorisation ultérieurs utilisent cette valeur, tandis que la fonction d'utilisateur de session continue d'afficher l'utilisateur d'origine.
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)
Pour annuler la commande EXECUTE AS, utilisez la commande REVERT, qui rétablit l'utilisateur actuel :
BIZ(JOHN)=> REVERT;
REVERT
BIZ(JOHN)=> SELECT session_user, current_user;
SESSION_USER | CURRENT_USER
--------------+--------------
JOHN | JOHN
(1 row)