Wenn sich Benutzer bei einer Anwendung für DriverManager.getConnection(String Benutzername, String Kennwort) oder DataSource.getConnection() authentifizieren müssen und die Anwendung SQL-Anweisungen dynamisch ausführt, müssen die Benutzer über die erforderlichen Zugriffsrechte für die Datenbankobjekte verfügen, auf die die Anweisungen verweisen. Andernfalls können Sie keine SQL-Anweisungen für diese Objekte ausführen.
Wenn eine Anwendung diese Methoden verwendet und SQL-Anweisungen statisch ausführt, müssen Benutzer über das Zugriffsrecht EXECUTE für die Pakete verfügen, die die SQL-Anweisungen enthalten. Wenn ein Benutzer über das Zugriffsrecht EXECUTE für ein Paket verfügt, kann der Benutzer alle SQL-Anweisungen ausführen, die in diesem Paket enthalten sind. Ein Benutzer kann beispielsweise über Zugriffsrechte für lediglich ein Datenbankobjekt verfügen, auf das eine Gruppe von SQL-Anweisungen verweist. Wenn Sie diese SQL-Anweisungen in ein Paket zusammen mit anderen Anweisungen binden und dem Benutzer das Zugriffsrecht EXECUTE für das Paket erteilen, kann der Benutzer daraufhin alle Anweisungen im Paket ausführen und nicht nur die Anweisungen, die auf das Datenbankobjekt verweisen, für das der Benutzer ursprünglich Zugriffsrechte hatte.
Daher muss entweder der Eigner der Anwendung oder der Datenbankadministrator während der Installation der Anwendung festlegen, ob allen Benutzern, die bereits über die erforderlichen Zugriffsrechte zum dynamischen Ausführen von SQL-Anweisungen verfügen, das Zugriffsrecht EXECUTE für die erforderlichen Pakete erteilt werden soll. Wenn der Eigner oder Datenbankadministrator den aktuellen Benutzern das Zugriffsrecht EXECUTE erteilen, können einige Benutzer möglicherweise SQL-Anweisungen ausführen, die sie zuvor nicht ausführen konnten. Wenn der Eigner oder der Datenbankadministrator einem Benutzer das Zugriffsrecht EXECUTE nicht erteilt, kann dieser Benutzer die SQL-Anweisungen, die er zuvor ausführen konnte, nicht mehr ausführen.
Wenn mehrere Anwendungen dasselbe Datenquellenobjekt verwenden und die Benutzerauthentifizierung erfordern, kann ein Benutzer, der die SQL-Anweisungen für eine dieser Anwendungen ausführen konnte, möglicherweise die SQL-Anweisungen von allen Anwendungen ausführen, die diese Datenquelle verwenden. Heimtückische Benutzer könnten eine neue Anwendung erstellen, die die Clientoptimierung verwendet, um alle SQL-Anweisungen, die von allen Anwendungen ausgegeben werden, die dieses Datenquellenobjekt gemeinsam nutzen, statisch auszuführen. Wenn einzelne Benutzer nur Zugriff auf bestimmte Anwendungen oder auf bestimmtes SQL innerhalb der Anwendungsgruppe haben sollen, muss diese Sicherheitsstufe daher vom Anwendungsserver oder von einem anderen Container gehandhabt werden.
Für diese Anwendungen wird die Berechtigung vom Anwendungsserver oder von einem anderen Behälter verwaltet. Benutzer, die Zugriff auf eine Anwendung haben, können diese unabhängig davon verwenden, ob SQL-Anweisungen dynamisch oder statisch ausgeführt werden.
Nachdem Sie die Anwendung konfiguriert haben, sodass sie für die Clientoptimierung ausgeführt werden kann, und die SQL-Anweisungen gebunden haben, können Sie dem Benutzer, der im Datenquellenobjekt angegeben ist, Zugriffsrechte für Datenbankobjekte entziehen. Sie können demselben Benutzer auch das Zugriffsrecht EXECUTE für die DB2-Pakete der Anwendung erteilen. Daher können alle Benutzer mit Zugriff auf die Anwendung alle SQL-Anweisungen ausführen, die in diesen Paketen enthalten sind.