Роли приложенийApplication Roles

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Роль приложения — это участник базы данных, позволяющий приложению выполняться со своими, подобными пользовательским, правами доступа.An application role is a database principal that enables an application to run with its own, user-like permissions. Роли приложений можно использовать для разрешения доступа к определенным данным только тем пользователям, которые подключены посредством конкретного приложения.You can use application roles to enable access to specific data to only those users who connect through a particular application. В отличие от ролей баз данных, роли приложений не содержат элементов и по умолчанию находятся в неактивном состоянии.Unlike database roles, application roles contain no members and are inactive by default. Роли приложений активируются с помощью процедуры sp_setapprole, которая требует указания пароля.Application roles are enabled by using sp_setapprole, which requires a password. Так как роли приложений являются участниками на уровне базы данных, они имеют доступ к другим базам данных только с разрешениями, предоставленными учетной записи пользователя guestв этих базах данных.Because application roles are a database-level principal, they can access other databases only through permissions granted in those databases to guest. Таким образом, любая база данных, в которой была отключена учетная запись пользователя guest , не будет доступна для ролей приложений в других базах данных.Therefore, any database in which guest has been disabled will be inaccessible to application roles in other databases.

В SQL ServerSQL Serverроли приложений не имеют доступ к метаданным уровня сервера, так как они не связаны с участником на уровне сервера.In SQL ServerSQL Server, application roles cannot access server-level metadata because they are not associated with a server-level principal. Чтобы отключить это ограничение, позволив тем самым ролям приложений получать доступ к метаданным уровня сервера, установите глобальный флаг 4616.To disable this restriction and thereby allow application roles to access server-level metadata, set the global flag 4616. Дополнительные сведения см. в разделах Флаги трассировки (Transact-SQL) и DBCC TRACEON (Transact-SQL).For more information, see Trace Flags (Transact-SQL) and DBCC TRACEON (Transact-SQL).

Соединение с ролью приложенияConnecting with an Application Role

Ниже представлены этапы процесса, при помощи которого роль приложения переключает контексты безопасности.The following steps make up the process by which an application role switches security contexts:

  1. Пользователь выполняет клиентское приложение.A user executes a client application.

  2. Клиентское приложение соединяется с экземпляром SQL ServerSQL Server в качестве пользователя.The client application connects to an instance of SQL ServerSQL Server as the user.

  3. Приложение выполняет хранимую процедуру sp_setapprole с использованием пароля, известного только этому приложению.The application then executes the sp_setapprole stored procedure with a password known only to the application.

  4. Если имя и пароль роли приложения достоверны, она становится активной.If the application role name and password are valid, the application role is enabled.

  5. На этом этапе соединение утрачивает разрешения пользователя и приобретает разрешения роли приложения.At this point the connection loses the permissions of the user and assumes the permissions of the application role.

Разрешения, полученные через роль приложения, действуют в течение всего соединения.The permissions acquired through the application role remain in effect for the duration of the connection.

В более ранних версиях SQL ServerSQL Serverединственным способом для пользователя вновь приобрести свой исходный контекст безопасности после активации роли приложения было отсоединение и повторное соединение с SQL ServerSQL Server.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. Начиная с версии SQL Server 2005 (9.x)SQL Server 2005 (9.x)процедура sp_setapprole имеет новый параметр, который создает файл cookie.Beginning with SQL Server 2005 (9.x)SQL Server 2005 (9.x), sp_setapprole has an option that creates a cookie. Этот файл содержит сведения о контексте до того, как роль приложения переходит в активное состояние.The cookie contains context information before the application role is enabled. Файл cookie может использоваться процедурой sp_unsetapprole для возврата сеанса в исходный контекст.The cookie can be used by sp_unsetapprole to revert the session to its original context. Сведения об этом новом параметре и пример см. в разделе sp_setapprole (Transact-SQL)в этих базах данных.For information about this new option and an example, see sp_setapprole (Transact-SQL).

Важно!

Параметр encrypt ODBC не поддерживается в SqlClient.The ODBC encrypt option is not supported by SqlClient. При передаче конфиденциальных сведений по сети следует пользоваться протоколом SSL или IPSec для шифрования канала.When you are transmitting confidential information over a network, use Secure Sockets Layer (SSL) or IPsec to encrypt the channel. Если необходимо сохранить учетные данные в клиентском приложении, следует зашифровать их при помощи функций API шифрования.If you must persist credentials in the client application, encrypt the credentials by using the crypto API functions. В SQL Server 2005 (9.x)SQL Server 2005 (9.x) и более поздних версиях параметр password хранится в виде одностороннего хэша.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) and later versions, the parameter password is stored as a one-way hash.

Создание роли приложения.Create an application role. Создание роли приложения и CREATE APPLICATION ROLE (Transact-SQL)Create an Application Role and CREATE APPLICATION ROLE (Transact-SQL)
Изменение роли приложения.Alter an application role. ALTER APPLICATION ROLE (Transact-SQL)ALTER APPLICATION ROLE (Transact-SQL)
Удаление роли приложения.Delete an application role. DROP APPLICATION ROLE (Transact-SQL)DROP APPLICATION ROLE (Transact-SQL)
Использование роли приложения.Using an application role. sp_setapprole (Transact-SQL)sp_setapprole (Transact-SQL)

См. также:See Also

Обеспечение безопасности SQL ServerSecuring SQL Server