AnwendungsrollenApplication Roles

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Eine Anwendungsrolle ist ein Datenbankprinzipal, mit dem eine Anwendung mit eigenen Berechtigungen ausgeführt werden kann.An application role is a database principal that enables an application to run with its own, user-like permissions. 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.You can use application roles to enable access to specific data to only those users who connect through a particular application. Im Gegensatz zu Datenbankrollen enthalten Anwendungsrollen keine Mitglieder und sind standardmäßig inaktiv.Unlike database roles, application roles contain no members and are inactive by default. Anwendungsrollen können in beiden Authentifizierungsmodi verwendet werden.Application roles work with both authentication modes. Anwendungsrollen werden mit sp_setapproleaktiviert, wofür ein Kennwort erforderlich ist.Application roles are enabled by using sp_setapprole, which requires a password. 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.Because application roles are a database-level principal, they can access other databases only through permissions granted in those databases to guest. Anwendungsrollen anderer Datenbanken können daher auf keine Datenbank zugreifen, in der guest deaktiviert wurde.Therefore, any database in which guest has been disabled will be inaccessible to application roles in other databases.

In SQL ServerSQL Serverkönnen Anwendungsrollen nicht auf Metadaten auf Serverebene zugreifen, da sie nicht mit einem Prinzipal auf Serverebene verbunden sind.In SQL ServerSQL Server, application roles cannot access server-level metadata because they are not associated with a server-level principal. 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.To disable this restriction and thereby allow application roles to access server-level metadata, set the global flag 4616. Weitere Informationen finden Sie unter Ablaufverfolgungsflags (Transact-SQL) und DBCC TRACEON (Transact-SQL).For more information, see Trace Flags (Transact-SQL) and DBCC TRACEON (Transact-SQL).

Herstellen einer Verbindung mit einer AnwendungsrolleConnecting with an Application Role

Der Prozess, in dem eine Anwendungsrolle den Sicherheitskontext wechselt, besteht aus den folgenden Schritten:The following steps make up the process by which an application role switches security contexts:

  1. Ein Benutzer führt eine Clientanwendung aus.A user executes a client application.

  2. Die Clientanwendung stellt eine Verbindung mit einer Instanz von SQL ServerSQL Server als Benutzer her.The client application connects to an instance of SQL ServerSQL Server as the user.

  3. Die Anwendung führt dann die gespeicherte Prozedur sp_setapprole mit einem Kennwort aus, das nur der Anwendung bekannt ist.The application then executes the sp_setapprole stored procedure with a password known only to the application.

  4. Wenn der Name und das Kennwort der Anwendung gültig sind, wird die Anwendungsrolle aktiviert.If the application role name and password are valid, the application role is enabled.

  5. An diesem Punkt verliert die Verbindung die Berechtigungen des Benutzers und nimmt die Berechtigungen der Anwendungsrolle an.At this point the connection loses the permissions of the user and assumes the permissions of the application role.

Die über die Anwendungsrolle erhaltenen Berechtigungen bleiben für die Dauer der Verbindung wirksam.The permissions acquired through the application role remain in effect for the duration of the connection.

In früheren Versionen von SQL ServerSQL 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 ServerSQL Serverzu trennen und erneut eine Verbindung herzustellen.In earlier versions of SQL ServerSQL Server, the only way for a user to reacquire its original security context after starting an application role is to disconnect and reconnect to SQL ServerSQL Server. Seit SQL Server 2005 (9.x)SQL Server 2005 (9.x)besitzt sp_setapprole eine Option, die ein Cookie erstellt.Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), sp_setapprole has an option that creates a cookie. Das Cookie enthält die vor der Aktivierung der Anwendungsrolle gültigen Kontextinformationen.The cookie contains context information before the application role is enabled. Das Cookie kann von sp_unsetapprole zum Wiederherstellen des ursprünglichen Kontexts der Sitzung verwendet werden.The cookie can be used by sp_unsetapprole to revert the session to its original context. Weitere Informationen über diese neue Option sowie ein Beispiel finden Sie unter sp_setapprole (Transact-SQL)erteilt wurden.For information about this new option and an example, see sp_setapprole (Transact-SQL).

Wichtig

Die encrypt -Option von ODBC wird von SqlClientnicht unterstützt.The ODBC encrypt option is not supported by SqlClient. Wenn Sie vertrauliche Informationen über das Netzwerk übertragen, sollten Sie zum Verschlüsseln des Kanals SSL (Secure Sockets Layer) oder IPSec verwenden.When you are transmitting confidential information over a network, use Secure Sockets Layer (SSL) or IPsec to encrypt the channel. Wenn Sie Anmeldeinformationen innerhalb der Clientanwendung persistent speichern müssen, verschlüsseln Sie diese mit den CryptoAPI-Funktionen.If you must persist credentials in the client application, encrypt the credentials by using the crypto API functions. In SQL Server 2005 (9.x)SQL Server 2005 (9.x) und höheren Versionen wird der password -Parameter als unidirektionaler Hash gespeichert.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later versions, the parameter password is stored as a one-way hash.

Erstellen einer Anwendungsrolle.Create an application role. Erstellen einer Anwendungsrolle und CREATE APPLICATION ROLE (Transact-SQL)Create an Application Role and CREATE APPLICATION ROLE (Transact-SQL)
Ändern einer Anwendungsrolle.Alter an application role. ALTER APPLICATION ROLE (Transact-SQL)ALTER APPLICATION ROLE (Transact-SQL)
Löschen einer Anwendungsrolle.Delete an application role. DROP APPLICATION ROLE (Transact-SQL)DROP APPLICATION ROLE (Transact-SQL)
Verwenden einer Anwendungsrolle.Using an application role. sp_setapprole (Transact-SQL)sp_setapprole (Transact-SQL)

Weitere Informationen finden Sie unterSee Also

Sichern von SQL ServerSecuring SQL Server