Share via


Toepassingsrollen

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Een toepassingsrol is een database-principal waarmee een toepassing kan worden uitgevoerd met eigen, gebruikersachtige machtigingen. U kunt toepassingsrollen gebruiken om toegang tot specifieke gegevens in te schakelen voor alleen gebruikers die verbinding maken via een bepaalde toepassing. In tegenstelling tot databaserollen bevatten toepassingsrollen geen leden en zijn ze standaard inactief. Toepassingsrollen worden ingeschakeld met behulp van sp_setapprole, waarvoor een wachtwoord is vereist. Omdat toepassingsrollen een principal op databaseniveau zijn, hebben ze alleen toegang tot andere databases via machtigingen die in deze databases aan gast worden verleend. Daarom is elke database waarin gast is uitgeschakeld, niet toegankelijk voor toepassingsrollen in andere databases.

In SQL Server hebben toepassingsfuncties geen toegang tot metagegevens op serverniveau omdat ze niet zijn gekoppeld aan een principal op serverniveau. Als u deze beperking wilt uitschakelen en zo toepassingsrollen toegang wilt geven tot metagegevens op serverniveau, stelt u de globale traceringsvlag 4616 in met behulp van -T4616 of DBCC TRACEON (4616, -1). Als u deze traceringsvlag liever niet inschakelt, kunt u een door het certificaat ondertekende opgeslagen procedure gebruiken om toepassingsrollen de serverstatus te laten weergeven. Zie dit voorbeeldscript op GitHub voor voorbeeldcode.

Verbinding maken met een toepassingsrol

De volgende stappen vormen het proces waarmee een toepassingsrol overschakelt naar beveiligingscontexten:

  1. Een gebruiker voert een clienttoepassing uit.

  2. De clienttoepassing maakt verbinding met een instantie van SQL Server als de gebruiker.

  3. De toepassing voert vervolgens de sp_setapprole opgeslagen procedure uit met een wachtwoord dat alleen bekend is bij de toepassing.

  4. Als de naam en het wachtwoord van de toepassingsrol geldig zijn, is de toepassingsrol ingeschakeld.

  5. Op dit moment verliest de verbinding de machtigingen van de gebruiker en neemt het de machtigingen van de toepassingsrol aan.

De machtigingen die zijn verkregen via de toepassingsrol blijven van kracht voor de duur van de verbinding.

In eerdere versies van SQL Server is de enige manier om de oorspronkelijke beveiligingscontext van een gebruiker opnieuw te bepalen nadat een toepassingsrol is gestart om de verbinding met SQL Server te verbreken en opnieuw verbinding te maken. Vanaf SQL Server 2005 (9.x) heeft sp_setapprole een optie waarmee een cookie wordt aangemaakt. De cookie bevat contextinformatie voordat de toepassingsrol wordt ingeschakeld. De sp_unsetapprole opgeslagen procedure gebruikt vervolgens de cookie om de sessie terug te keren naar de oorspronkelijke context. Zie sp_setapprole (Transact-SQL) en sp_unsetapprole (Transaction-SQL) voor meer informatie over deze nieuwe optie en een voorbeeld.

Belangrijk

De odbc-versleutelingsoptie wordt niet ondersteund door SqlClient. Wanneer u vertrouwelijke informatie verzendt via een netwerk, gebruikt u Transport Layer Security (TLS), voorheen bekend als Secure Sockets Layer (SSL) of IPsec om het kanaal te versleutelen. Als u referenties in de clienttoepassing moet behouden, versleutelt u de referenties met behulp van de crypto-API-functies. In SQL Server 2005 (9.x) en latere versies wordt het parameterwachtwoord opgeslagen als een hash in één richting.

Opdracht Typologie
Maak een toepassingsrol. Maak een toepassingsrol en EEN TOEPASSINGSROL MAKEN (Transact-SQL)
Een toepassingsrol wijzigen. ROL VAN APPLICATIE WIJZIGEN (Transact-SQL)
Een toepassingsrol verwijderen. ROL VAN SOLLICITATIE LATEN VALLEN (Transact-SQL)
Een toepassingsrol gebruiken. sp_setapprole (Transact-SQL)

Zie ook

SQL Server- beveiligen