Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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. Этот файл содержит сведения о контексте до того, как роль приложения переходит в активное состояние. Затем хранимая sp_unsetapprole процедура использует файл cookie для возврата сеанса в исходный контекст. Сведения об этом новом параметре и примере см. в статьях sp_setapprole (Transact-SQL) и sp_unsetapprole (Transaction-SQL).
Внимание
Параметр encrypt ODBC не поддерживается в SqlClient. При передаче конфиденциальных сведений по сети следует пользоваться протоколом TLS (ранее — SSL) или IPSec для шифрования канала. Если необходимо сохранить учетные данные в клиентском приложении, следует зашифровать их при помощи функций API шифрования. В SQL Server 2005 (9.x) и более поздних версиях пароль параметра хранится как односторонняя хэш.
Связанные задачи
| Задача | Тип |
|---|---|
| Создание роли приложения. | Создание роли приложения и CREATE APPLICATION ROLE (Transact-SQL) |
| Изменение роли приложения. | ИЗМЕНИТЬ РОЛЬ ПРИЛОЖЕНИЯ (Transact-SQL) |
| Удаление роли приложения. | УДАЛИТЬ РОЛЬ ПРИЛОЖЕНИЯ (Transact-SQL) |
| Использование роли приложения. | sp_setapprole (Transact-SQL) |