Die Maskierung ist eine Möglichkeit für einen Client, als anderer Benutzer zu agieren, einschließlich aller Berechtigungen des betreffenden Benutzers. Die Maskierung ist ein leistungsfähiges Feature. Verwenden Sie die Maskierung mit derselben Vorsicht, mit der Sie den root-Befehl unter UNIX oder den su-Befehl unter Linux verwenden würden.
Mit dem Maskierungsfeature können Anwendungsserver die Authentifizierung getrennt von der IBM® Netezza-Appliance ausführen. Außerdem ermöglicht es einem Server, eine Verbindung zum Netezza-System für eine Reihe von Benutzern zu verwenden, während die Benutzer noch im Netezza-System erfasst werden.
In diesem Fall ist die Systemsicherheit so eingerichtet, dass Benutzer nicht direkt auf eine Netezza-Datenbank zugreifen, sondern über eine Anwendung. Die Anwendung erlaubt bestimmten Benutzern den Zugriff auf die Datenbank. Jeder Datenbankbenutzer hat ein zugeordnetes Sicherheitsprofil, das festlegt, auf welche Informationen er zugreifen kann.
Das Netezza-System führt die Benutzerauthentifizierung nicht aus, sondern überlässt dies der Anwendung. Bei der Maskierung verwendet ein Client die Anwendung, um als ein anderer Benutzer (der Zielbenutzer genannt wird) auf die Datenbank zuzugreifen. Er greift also mit dem Sicherheitsprofil des Zielbenutzers auf die Datenbank zu.
Die Maskierung wird über den EXECUTE AS-Befehl ausgeführt. Damit Sie diesen Befehl ausführen können, benötigen Sie EXECUTE AS-Berechtigung für den Zielbenutzer. Wenn Sie den Befehl ohne die erforderliche Berechtigung absetzen, wird eine Fehlernachricht angezeigt.
EXECUTE AS Zielbenutzername
Wie in Steuerung der Benutzeranmeldung erläutert, wird beim Öffnen einer Verbindung zur Datenbank eine Sitzung aufgebaut und der Sitzungsbenutzer wird aufgezeichnet. Die Maskierung ändert den aktuellen Benutzer im Sitzungskontext. Nachfolgende Berechtigungsprüfungen verwenden diesen Wert, während die Sitzungsbenutzerfunktion noch den ursprünglichen Benutzer anzeigt.
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)
Mit dem REVERT-Befehl können Sie den EXECUTE AS-Befehl aufheben, was dazu führt, dass der aktuelle Benutzer wieder zurückgesetzt wird:
BIZ(JOHN)=> REVERT;
REVERT
BIZ(JOHN)=> SELECT session_user, current_user;
SESSION_USER | CURRENT_USER
--------------+--------------
JOHN | JOHN
(1 row)