Управление доступом и удостоверениями (компонент Service Broker)
Большинство приложений, работающих с компонентом Service Broker, задействуют более одного экземпляра SQL Server и выполняются в контексте безопасности участника базы данных, созданного специально для приложения. Желательно, чтобы эти участники базы данных обладали минимальными разрешениями, необходимыми для задач, выполняемых приложением.
Работая с участниками баз данных, созданными для приложений компонента Service Broker, учитывайте следующие факторы.
Компонент Service Broker выполняет удаленную авторизацию, когда удаленное приложение, работающее с компонентом Service Broker, подключается к экземпляру SQL Server и доставляет ему сообщение. Участник базы данных, для которого выполняется удаленная авторизация, должен иметь разрешение на подключение (CONNECT) к базе данных, где размещается служба вызывающей стороны, и разрешение на отправку (SEND) сообщений службе вызывающей стороны. Пользователь должен иметь сертификат, используемый для проверки подлинности. Нет никаких других правил, требующих, чтобы пользователь владел другими объектами, имел другие разрешения или мог входить в систему посредством другого механизма.
Чтобы участник базы данных мог начать диалог, он должен иметь разрешения на получение (RECEIVE) сообщений из очереди службы вызывающей стороны.
Участник базы данных, владеющий службой вызывающей стороны, должен иметь разрешение на отправление (SEND) сообщений целевой службе.
Чтобы участник базы данных мог отправлять сообщения службе, он должен иметь соответствующие этой службе разрешения SEND. В случае служб, размещенных в другом экземпляре, реализованный в компоненте Service Broker механизм обеспечения безопасности диалогов определяет участника базы данных в удаленном экземпляре. Дополнительные сведения см. в разделе Обеспечение безопасности диалогов компонента Service Broker. Обратите внимание, что при проверке разрешений SEND компонент Service Broker не учитывает членство в ролях Windows.
Пользователь, указанный в качестве пользователя хранимой процедуры активации, должен иметь разрешение на выполнение этой процедуры. Этот пользователь часто имеет разрешения, необходимые для выполнения инструкций процедуры. Тем не менее если сама хранимая процедура определена с предложением EXECUTE AS, содержащиеся в ней инструкции выполняются в контексте безопасности, определяемом хранимой процедурой. SQL Server сначала задает контекст безопасности, соответствующий пользователю очереди. После этого SQL Server выполняет хранимую процедуру, которая изменяет контекст безопасности на контекст пользователя процедуры.
Когда реализованный в компоненте Service Broker механизм обеспечения безопасности транспорта использует протокол SSPI, учетная запись службы, связанная с удаленной базой данных, должна иметь разрешение CONNECT в базе данных master и должна соответствовать имени входа. Таким образом, учетная запись, в контексте которой выполняется удаленный экземпляр SQL Server, должна иметь разрешение для входа на SQL Server с использованием проверки подлинности Windows. Других разрешений для имени входа или условий владения объектами каких-либо баз данных нет
См. также