Freigeben über


Anwendungsrollen

Eine Anwendungsrolle ist ein Datenbankprinzipal, mit dem eine Anwendung mit eigenen Berechtigungen ausgeführt werden kann. Sie können Anwendungsrollen verwenden, um den Zugriff auf bestimmte Daten nur den Benutzern zu ermöglichen, die über eine bestimmte Anwendung eine Verbindung herstellen. Im Gegensatz zu Datenbankrollen enthalten Anwendungsrollen keine Mitglieder und sind standardmäßig inaktiv. Anwendungsrollen können in beiden Authentifizierungsmodi verwendet werden. Anwendungsrollen werden mit sp_setapproleaktiviert, wofür ein Kennwort erforderlich ist. Da es sich bei Anwendungsrollen um einen Prinzipal auf Datenbankebene handelt, können sie auf andere Datenbanken nur über die Berechtigungen zugreifen, die in diesen Datenbanken dem Konto guesterteilt wurden. Anwendungsrollen anderer Datenbanken können daher auf keine Datenbank zugreifen, in der guest deaktiviert wurde.

In SQL Serverkönnen Anwendungsrollen nicht auf Metadaten auf Serverebene zugreifen, da sie nicht mit einem Prinzipal auf Serverebene verbunden sind. Sie können diese Einschränkung deaktivieren und dabei den Anwendungsrollen den Zugriff auf Metadaten auf Serverebene ermöglichen, indem Sie das globale Flag 4616 festlegen. Weitere Informationen finden Sie unter Ablaufverfolgungsflags (Transact-SQL) und DBCC TRACEON (Transact-SQL)..

Herstellen einer Verbindung mit einer Anwendungsrolle

Der Prozess, in dem eine Anwendungsrolle den Sicherheitskontext wechselt, besteht aus den folgenden Schritten:

  1. Ein Benutzer führt eine Clientanwendung aus.

  2. Die Clientanwendung stellt eine Verbindung mit einer Instanz von SQL Server als Benutzer her.

  3. Die Anwendung führt dann die gespeicherte Prozedur sp_setapprole mit einem Kennwort aus, das nur der Anwendung bekannt ist.

  4. Wenn der Name und das Kennwort der Anwendung gültig sind, wird die Anwendungsrolle aktiviert.

  5. An diesem Punkt verliert die Verbindung die Berechtigungen des Benutzers und nimmt die Berechtigungen der Anwendungsrolle an.

Die über die Anwendungsrolle erhaltenen Berechtigungen bleiben für die Dauer der Verbindung wirksam.

In früheren Versionen von SQL Serverbestand die einzige Möglichkeit für einen Benutzer, seinen ursprünglichen Sicherheitskontext nach dem Starten einer Anwendungsrolle zurückzuerhalten, darin, die Verbindung mit SQL Serverzu trennen und erneut eine Verbindung herzustellen. Ab SQL Server 2005 verfügt sp_setapprole über eine Option, die ein Cookie erstellt. Das Cookie enthält die vor der Aktivierung der Anwendungsrolle gültigen Kontextinformationen. Das Cookie kann von sp_unsetapprole zum Wiederherstellen des ursprünglichen Kontexts der Sitzung verwendet werden. Informationen zu dieser neuen Option und ein Beispiel finden Sie unter sp_setapprole (Transact-SQL).

Wichtig

Die encrypt -Option von ODBC wird von SqlClientnicht unterstützt. Wenn Sie vertrauliche Informationen über das Netzwerk übertragen, sollten Sie zum Verschlüsseln des Kanals SSL (Secure Sockets Layer) oder IPSec verwenden. Wenn Sie Anmeldeinformationen innerhalb der Clientanwendung persistent speichern müssen, verschlüsseln Sie diese mit den CryptoAPI-Funktionen. In SQL Server 2005 und höheren Versionen wird das Parameterkennwort als unidirektionalen Hash gespeichert.

Erstellen einer Anwendungsrolle. Erstellen einer Anwendungsrolle und CREATE APPLICATION ROLE (Transact-SQL)
Ändern einer Anwendungsrolle. ALTER APPLICATION ROLE (Transact-SQL)
Löschen einer Anwendungsrolle. DROP APPLICATION ROLE (Transact-SQL)
Verwenden einer Anwendungsrolle. sp_setapprole (Transact-SQL)

Weitere Informationen

Sichern von SQL Server