Anwendungsrollen

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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. Daher kann auf jede Datenbank, in der der Gast deaktiviert wurde, nicht auf Anwendungsrollen in anderen Datenbanken zugreifen.

In SQL Server können Anwendungsrollen nicht auf Metadaten auf Serverebene zugreifen, da sie keinem Prinzipal auf Serverebene zugeordnet sind. Um diese Einschränkung zu deaktivieren und anwendungsrollen den Zugriff auf Metadaten auf Serverebene zu ermöglichen, legen Sie das globale Ablaufverfolgungskennzeichnung 4616 mithilfe von -T4616 oder DBCC TRACEON (4616, -1). 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 eine Verbindung mit einer Instanz von SQL Server als Benutzer dar.

  3. Die Anwendung führt dann die sp_setapprole gespeicherte Prozedur 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 übernimmt die Berechtigungen der Anwendungsrolle.

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

In früheren Versionen von SQL Server besteht die einzige Möglichkeit für einen Benutzer, den ursprünglichen Sicherheitskontext nach dem Starten einer Anwendungsrolle erneut zu erhalten, darin, die Verbindung mit SQL Server zu trennen und erneut herzustellen. Ab SQL Server 2005 (9.x) sp_setapprole gibt es eine Option, mit der ein Cookie erstellt wird. 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ückzuverwenden. 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 das Parameterkennwort als unidirektionaler Hash gespeichert.

Aufgabe Typ
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)

Siehe auch

Sichern von SQL Server