Безопасность диалога для уведомлений о событиях
Безопасность диалога компонента Service Broker должна быть настроена для уведомлений о событиях, посылающих сообщения компоненту Service Broker на удаленном сервере. Безопасность диалога должна настраиваться вручную согласно модели полной безопасности диалога компонента Service Broker. Дополнительные сведения см. в подразделе «Полная безопасность» раздела Обеспечение безопасности диалогов компонента Service Broker. Модель полной безопасности включает шифрование и дешифрование сообщений, посылаемых на удаленный сервер и принимаемых с этого сервера. Хотя уведомления о событиях посылаются в одном направлении, другие сообщения, например ошибки, возвращаются в противоположном направлении.
Настройка безопасности диалога для уведомлений о событиях
Процесс, необходимый для реализации безопасности диалога для уведомлений о событиях, описан в последующих шагах. Эти шаги включают в себя действия, которые должны предприниматься как на исходном сервере, так и на целевом сервере. Исходным сервером является сервер, на котором создаются уведомления о событиях. Целевым сервером является сервер, получающий сообщение уведомления о событии. Действия в каждом шаге как для исходного, так и для целевого сервера должны быть завершены перед переходом к следующему шагу.
Важно! |
---|
Все сертификаты должны создаваться с допустимыми датами начала и окончания. |
Шаг 1. Задайте номер порта TCP и имя целевой службы.
Задайте порт TCP, через который как исходный, так и целевой серверы будут получать сообщения. Необходимо также определить имя целевой службы.
Шаг 2. Настройте шифрование и совместное использование сертификата для проверки подлинности на уровне базы данных.
Как на исходном, так и на целевом серверах выполните следующие действия.
Исходный сервер |
Целевой сервер |
---|---|
Выберите или создайте базу данных, в которой будут содержаться уведомление о событии и главный ключ. |
Выберите или создайте базу данных, в которой будет содержаться главный ключ. |
Если для базы данных-источника не существует главного ключа, создайте главный ключ. Главный ключ необходим как в исходной, так и в целевой базах данных для защиты их соответствующих сертификатов. |
Если для целевой базы данных не существует главного ключа, создайте главный ключ. |
Создайте имя входа и соответствующую учетную запись пользователя для базы данных-источника. |
Создайте имя входа и соответствующую учетную запись пользователя для целевой базы данных. |
Создайте сертификат, владельцем которого является пользователь базы данных-источника. |
Создайте сертификат, владельцем которого является пользователь целевой базы данных. |
Создайте резервную копию сертификата в файле, доступ к которому может иметь целевой сервер. |
Создайте резервную копию сертификата в файле, доступ к которому может иметь исходный сервер. |
Создайте учетную запись пользователя, задав пользователя для целевой базы данных, а также указав WITHOUT LOGIN. Этот пользователь будет владеть сертификатом целевой базы данных, который должен быть создан из файла резервной копии. Пользователь не должен быть сопоставлен с входным именем, т.к. единственной целью этого пользователя является владение сертификатом целевой базы данных, созданным на следующем шаге 3. |
Создайте учетную запись пользователя, задав пользователя для базы данных-источника, а также указав WITHOUT LOGIN. Этот пользователь будет владеть сертификатом базы данных-источника, который должен быть создан из файла резервной копии. Пользователь не должен быть сопоставлен с входным именем, т.к. единственной целью этого пользователя является владение сертификатом базы данных-источника, созданным на следующем шаге 3. |
Шаг 3. Сделайте общими сертификаты и предоставьте разрешения для проверки подлинности на уровне базы данных.
Как на исходном, так и на целевом серверах выполните следующие действия.
Сервер-источник |
Целевой сервер |
---|---|
Создайте сертификат из файла резервной копии целевого сертификата, задав в качестве владельца пользователя целевой базы данных. |
Создайте сертификат из файла резервной копии исходного сертификата, задав в качестве владельца пользователя базы данных-источника. |
Предоставьте разрешение для создания уведомления о событии пользователю базы данных-источника. Дополнительные сведения об этом разрешении см. в разделе CREATE EVENT NOTIFICATION (Transact-SQL). |
Предоставьте разрешение REFERENCES пользователю целевой базы данных на существующий контракт компонента Service Broker для уведомлений о событиях. https://schemas.microsoft.com/SQL/Notifications/PostEventNotification. |
Создайте привязку удаленной службы к целевой службе и задайте учетные данные пользователя целевой базы данных. Привязка удаленной службы обеспечивает то, что при помощи открытого ключа в сертификате, владельцем которого является пользователь базы данных-источника, будет осуществляться проверка подлинности сообщений, посылаемых на целевой сервер. |
Предоставьте разрешения CREATE QUEUE, CREATE SERVICE и CREATE SCHEMA пользователю целевой базы данных. |
Если вы еще не подключены к базе данных в качестве пользователя целевой базы данных, выполните это теперь. |
|
Создайте очередь для приема сообщений с уведомлениями о событиях и создайте службу для доставки сообщений. |
|
Предоставьте разрешение SEND на целевую службу пользователю базы данных-источника. |
|
Предоставьте целевому серверу идентификатор компонента service broker базы данных-источника. Этот идентификатор может быть получен по запросу столбца service_broker_guid представления каталога sys.databases. Для уведомления о событии на уровне сервера используйте идентификатор компонента service broker базы данных msdb. |
Предоставьте исходному серверу идентификатор компонента service broker целевой базы данных. |
Шаг 4. Создайте маршруты и установите проверку подлинности на уровне сервера.
Как на исходном, так и на целевом серверах выполните следующие действия.
Сервер-источник |
Целевой сервер |
---|---|
Создайте маршрут к целевой службе и задайте идентификатор компонента service broker целевой базы данных, а также согласованный номер порта TCP. |
Создайте маршрут к исходной службе и задайте идентификатор компонента service broker базы данных-источника, а также согласованный номер порта TCP. Для задания исходной службы используйте следующую поставляемую службу: https://schemas.microsoft.com/SQL/Notifications/EventNotificationService. |
Переключитесь на базу данных master для настройки проверки подлинности на уровне сервера. |
Переключитесь на базу данных master для настройки проверки подлинности на уровне сервера. |
Если для базы данных master не существует главного ключа, создайте главный ключ. |
Если для базы данных master не существует главного ключа, создайте главный ключ. |
Создайте сертификат, выполняющий проверку подлинности базы данных. |
Создайте сертификат, выполняющий проверку подлинности базы данных. |
Создайте резервную копию сертификата в файле, доступ к которому может иметь целевой сервер. |
Создайте резервную копию сертификата в файле, доступ к которому может иметь исходный сервер. |
Создайте конечную точку и задайте согласованный номер порта TCP, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) и имя сертификата, выполняющего проверку подлинности. |
Создайте конечную точку и задайте согласованный номер порта TCP, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) и имя сертификата, выполняющего проверку подлинности. |
Создайте имя входа и задайте входное имя целевого сервера. |
Создайте имя входа и задайте входное имя исходного сервера. |
Предоставьте разрешение CONNECT на конечную точку для входного имени целевого средства проверки подлинности. |
Предоставьте разрешение CONNECT на конечную точку для входного имени исходного средства проверки подлинности. |
Создайте учетную запись пользователя и задайте входное имя целевого средства проверки подлинности. |
Создайте учетную запись пользователя и задайте входное имя исходного средства проверки подлинности. |
Шаг 5. Сделайте общими сертификаты для проверки подлинности на уровне сервера и создайте уведомление о событии.
Как на исходном, так и на целевом серверах выполните следующие действия.
Сервер-источник |
Целевой сервер |
---|---|
Создайте сертификат из файла резервной копии целевого сертификата, задав в качестве владельца пользователя целевого средства проверки подлинности. |
Создайте сертификат из файла резервной копии исходного сертификата, задав в качестве владельца пользователя исходного средства проверки подлинности. |
Переключитесь на базу данных-источник, на которой необходимо создать уведомление о событии, и если еще вы не подключены в качестве пользователя исходной базы данных, выполните это подключение. |
Переключитесь на целевую базу данных для получения сообщений с уведомлениями о событиях. |
Создайте уведомление о событии и задайте идентификатор компонента broker service целевой базы данных. |
См. также