Maskieren

Das Maskieren bietet einem Client die Möglichkeit, als ein anderer Benutzer mit allen dessen Berechtigungen zu agieren. Das Maskieren ist ein sehr leistungsfähiges Feature. Verwenden Sie Masquerading mit Vorsicht, wie Sie es auch bei der Verwendung des Befehls ' root in UNIX oder des Befehls ' su in Linux® tun würden.

Die Masquerading-Funktion ermöglicht es Anwendungsservern, die Authentifizierung getrennt vom System durchzuführen. Außerdem kann ein Server eine Verbindung zum Netezza Performance Server für eine Reihe von Benutzern verwenden und diese Benutzer dennoch mit dem Netezza Performance Server aufzeichnen.

In diesem Anwendungsfall ist die Systemsicherheit so eingerichtet, dass die Benutzer nicht direkt auf eine Netezza Performance Server zugreifen, sondern dies über eine Anwendung tun. Die Anwendung ermöglicht bestimmten Benutzern den Zugriff auf die Datenbank. Jedem Datenbankbenutzer ist ein Sicherheitsprofil zugeordnet, das bestimmt, auf welche Informationen er zugreifen kann.

Das Netezza Performance Server führt keine Benutzerauthentifizierung durch, sondern überlässt diese Aufgabe der Anwendung. Bei der Maskierung verwendet ein Client die Anwendung, um als ein anderer Benutzer (als Zielbenutzer bezeichnet) und somit mit dem Sicherheitsprofil dieses Zielbenutzers auf die Datenbank zuzugreifen.

Das Maskieren geschieht mit dem Befehl EXECUTE AS. Um diesen Befehl verwenden zu können, benötigen Sie EXECUTE AS-Berechtigungen für den Zielbenutzer. Wenn Sie den Befehl ohne die erforderliche Berechtigung absetzen, wird eine Fehlernachricht angezeigt.

Verwenden Sie zur Ausführung von EXECUTE AS die folgende Syntax, wobei Name des Zielbenutzers für den Namen eines vorhandenen Benutzers steht, für den Sie die Berechtigung EXECUTE AS haben:
EXECUTE AS target-user-name

Wie in der Steuerung der Benutzeranmeldung erläutert, wird durch das Öffnen einer Verbindung zur Datenbank eine Sitzung aufgebaut, und der Benutzer der Sitzung wird aufgezeichnet. Das Maskieren ändert den aktuellen Benutzer im Sitzungskontext. Nachfolgende Berechtigungsprüfungen verwenden diesen Wert, während die Sitzungsbenutzerfunktion weiterhin den ursprünglichen Benutzer anzeigt.

Das folgende Befehlsbeispiel beginnt eine Sitzung für den Benutzer John mit dem Kennwort ABCD, der auf die Datenbank BIZ zugreift:
nzsql -u JOHN -pw ABCD -db BIZ
BIZ.SCM(JOHN)=>
John verwendet den Befehl EXECUTE AS, um sich als der Benutzer Hank zu maskieren:
BIZ.SCM(JOHN)=> EXECUTE AS HANK;
EXECUTE AS
Führen Sie die folgenden Befehle aus, um zu sehen, welches der Sitzungsbenutzer und welches der aktuelle Benutzer ist:
BIZ(JOHN)=> SELECT session_user, current_user;
 SESSION_USER | CURRENT_USER
--------------+--------------
 JOHN         | HANK
(1 row)

Um den Befehl EXECUTE AS umzukehren, verwenden Sie den Befehl REVERT, der den aktuellen Benutzer zurückändert:

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