Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Роль приложения — это участник базы данных, позволяющий приложению выполняться со своими, подобными пользовательским, правами доступа. Роли приложений можно использовать для разрешения доступа к определенным данным только тем пользователям, которые подключены посредством конкретного приложения. В отличие от ролей баз данных, роли приложений не содержат элементов и по умолчанию находятся в неактивном состоянии. Роли приложений активируются с помощью процедуры sp_setapprole, которая требует указания пароля. Так как роли приложений являются участниками на уровне базы данных, они имеют доступ к другим базам данных только с разрешениями, предоставленными учетной записи пользователя guestв этих базах данных. Таким образом, любая база данных, в которой гость отключена, недоступна для ролей приложений в других базах данных.
В SQL Server роли приложений не могут получить доступ к метаданным уровня сервера, так как они не связаны с субъектом уровня сервера. Чтобы отключить это ограничение и разрешить ролям приложений доступ к метаданным уровня сервера, задайте глобальный флаг трассировки 4616 с помощью -T4616 или DBCC TRACEON (4616, -1). Если вы предпочитаете не включать этот флаг трассировки, можно использовать хранимую процедуру, подписанную сертификатом, чтобы разрешить ролям приложений просматривать состояние сервера. Пример кода см. в этом примере скрипта на GitHub.
Подключиться с использованием роли приложения
Ниже представлены этапы процесса, при помощи которого роль приложения переключает контексты безопасности.
Пользователь выполняет клиентское приложение.
Клиентское приложение подключается к экземпляру SQL Server в качестве пользователя.
Затем приложение выполняет
sp_setapproleхранимую процедуру с паролем, известным только для приложения.Если имя роли приложения и пароль верны, роль приложения активируется.
На этом этапе соединение утрачивает права пользователя и принимает на себя права роли приложения.
Разрешения, полученные через роль приложения, действуют в течение всего соединения.
В более ранних версиях SQL Server для пользователя единственный способ повторно получить исходный контекст безопасности после запуска роли приложения — отключиться от SQL Server и снова подключиться к нему. Начиная с SQL Server 2005 (9.x), sp_setapprole есть параметр, который создает файл cookie. Файл cookie содержит информацию о контексте до включения роли приложения. Затем хранимая sp_unsetapprole процедура использует файл cookie для возврата сеанса в исходный контекст. Сведения об этом новом параметре и примере см. в статьях sp_setapprole (Transact-SQL) и sp_unsetapprole (Transaction-SQL).
Внимание
Параметр encrypt ODBC не поддерживается в SqlClient. При передаче конфиденциальных сведений по сети следует пользоваться протоколом TLS (ранее — SSL) или IPSec для шифрования канала. Если необходимо сохранить учетные данные в клиентском приложении, следует зашифровать их при помощи функций API шифрования. В SQL Server 2005 (9.x) и более поздних версиях параметр password сохраняется в виде однонаправленного хэша.
Связанные задачи
| Задача | Тип |
|---|---|
| Создайте роль приложения. | Создать роль приложения и CREATE APPLICATION ROLE (Transact-SQL) |
| Изменение роли приложения. | ALTER APPLICATION ROLE (Transact-SQL) |
| Удалить роль приложения. | DROP APPLICATION ROLE (Transact-SQL) |
| Использование роли приложения. | sp_setapprole (Transact-SQL) |