Teilen über


Anwendungsrollen

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

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 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 Server können Anwendungsrollen nicht auf Metadaten auf Serverebene zugreifen, da sie nicht mit einem Prinzipal auf Serverebene verbunden sind. Um diese Einschränkung zu deaktivieren und damit Anwendungsrollen den Zugriff auf Metadaten auf Serverebene zu ermöglichen, legen Sie das globale Ablaufverfolgungsflag 4616 mit -T4616 oder DBCC TRACEON (4616, -1) fest. Wenn Sie dieses Ablaufverfolgungskennzeichnung lieber nicht aktivieren möchten, können Sie eine vom Zertifikat signierte gespeicherte Prozedur verwenden, um Anwendungsrollen das Anzeigen des Serverstatus zu ermöglichen. Beispielcode finden Sie in diesem Beispielskript auf GitHub.

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 als Benutzer eine Verbindung zu einer Instanz von SQL Server 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 dem Starten einer Anwendungsrolle zurückzuerhalten, darin, die Verbindung mit SQL Server zu trennen und erneut eine Verbindung herzustellen. Ab SQL Server 2005 (9.x) verfügt sp_setapprole über eine Option, die ein Cookie erstellt. Das Cookie enthält die vor der Aktivierung der Anwendungsrolle gültigen Kontextinformationen. Die sp_unsetapprole gespeicherte Prozedur verwendet dann das Cookie, um die Sitzung in den ursprünglichen Kontext zurückzusetzen. Informationen zu dieser neuen Option und einem Beispiel finden Sie unter sp_setapprole (Transact-SQL) und sp_unsetapprole (Transaction-SQL).

Wichtig

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

Aufgabe type
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