Anwendungsrollen

Eine Anwendungsrolle ist ein Datenbankprinzipal, mit dem eine Anwendung mit eigenen Privilegien ausgeführt werden kann. Sie können Anwendungsrollen verwenden, um den Zugriff auf bestimmte Daten nur den Benutzern zu gewähren, 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_setapprole aktiviert, 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 guest erteilt wurden. Anwendungsrollen anderer Datenbanken können daher auf keine Datenbank zugreifen, in der guest deaktiviert wurde.

In SQL Server 2005 kö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 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 Server bestand die einzige Möglichkeit für einen Benutzer, seinen ursprünglichen Sicherheitskontext nach Aktivierung einer Anwendungsrolle zurückzuerhalten, darin, die Verbindung mit SQL Server zu trennen und erneut eine Verbindung herzustellen. In SQL Server 2005 bietet sp_setapprole eine neue Option, mit der ein Cookie erstellt wird, das Kontextinformationen enthält, bevor die Anwendungsrolle aktiviert wird. Das Cookie kann von sp_unsetapprole zum Wiederherstellen des ursprünglichen Kontexts der Sitzung verwendet werden. Weitere Informationen über diese neue Option sowie ein Beispiel finden Sie unter sp_setapprole (Transact-SQL).

ms190998.security(de-de,SQL.90).gifSicherheitshinweis:
Die encrypt-Option von Microsoft ODBC wird von SqlClient nicht unterstützt. Wenn Sie geheime Daten über das Netzwerk übertragen, sollten Sie zum Verschlüsseln des Kanals SSL (Secure Sockets Layer) oder IPSec verwenden. Wenn Sie Anmeldeinformationen innerhalb der Clientanwendung verwalten müssen, verschlüsseln Sie diese mit den CryptoAPI-Funktionen. In SQL Server 2005 wird der Parameter password als unidirektionaler Hash gespeichert.

Siehe auch

Konzepte

Grundlegendes zum Wechseln des Kontexts

Andere Ressourcen

sp_setapprole (Transact-SQL)
CREATE APPLICATION ROLE (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005