Настройка безопасности диалогов для уведомлений о событиях
Область применения: SQL Server
Безопасность диалогового окна Service Broker должна быть настроена для уведомлений о событиях, отправляющих сообщения в брокер служб на удаленном сервере. Безопасность диалогов должна быть настроена вручную в соответствии с моделью полной безопасности диалогового окна Service Broker. Модель полной безопасности включает шифрование и дешифрование сообщений, посылаемых на удаленный сервер и принимаемых с этого сервера. Хотя уведомления о событиях посылаются в одном направлении, другие сообщения, например ошибки, возвращаются в противоположном направлении.
Настройка безопасности диалога для уведомлений о событиях
Процесс, необходимый для реализации безопасности диалога для уведомлений о событиях, описан в последующих шагах. Эти шаги включают в себя действия, которые должны предприниматься как на исходном сервере, так и на целевом сервере. Исходным сервером является сервер, на котором создаются уведомления о событиях. Целевым сервером является сервер, получающий сообщение уведомления о событии. Действия в каждом шаге как для исходного, так и для целевого сервера должны быть завершены перед переходом к следующему шагу.
Внимание
Все сертификаты должны создаваться с допустимыми датами начала и окончания.
Шаг 1. Задайте номер порта TCP и имя целевой службы.
Задайте порт TCP, через который как исходный, так и целевой серверы будут получать сообщения. Необходимо также определить имя целевой службы.
Шаг 2. Настройте шифрование и совместное использование сертификата для проверки подлинности на уровне базы данных.
Как на исходном, так и на целевом серверах выполните следующие действия.
Исходный сервер | Целевой сервер |
---|---|
Выберите или создайте базу данных, в которой будут содержаться уведомление о событии и главный ключ. | Выберите или создайте базу данных, в которой будет содержаться главный ключ. |
Если для базы данных-источника не существует главного ключа, создайте главный ключ. Главный ключ необходим как в исходной, так и в целевой базах данных для защиты их соответствующих сертификатов. | Если для целевой базы данных не существует главного ключа, создайте главный ключ. |
Создайте имя входа и соответствующую учетную запись пользователя для базы данных-источника. | Создайте имя входа и соответствующую учетную запись пользователя для целевой базы данных. |
Создайте сертификат , владельцем которого является пользователь базы данных-источника. | Создайте сертификат, владельцем которого является пользователь целевой базы данных. |
Создайте резервную копию сертификата в файле, доступ к которому может иметь целевой сервер. | Создайте резервную копию сертификата в файле, доступ к которому может иметь исходный сервер. |
Создайте учетную запись пользователя, задав пользователя для целевой базы данных, а также указав WITHOUT LOGIN. Этот пользователь будет владеть сертификатом целевой базы данных, который должен быть создан из файла резервной копии. Пользователь не должен быть сопоставлен с входным именем, т.к. единственной целью этого пользователя является владение сертификатом целевой базы данных, созданным на следующем шаге 3. | Создайте учетную запись пользователя, задав пользователя для базы данных-источника, а также указав WITHOUT LOGIN. Этот пользователь будет владеть сертификатом базы данных-источника, который должен быть создан из файла резервной копии. Пользователь не должен быть сопоставлен с входным именем, т.к. единственной целью этого пользователя является владение сертификатом базы данных-источника, созданным на следующем шаге 3. |
Шаг 3. Сделайте общими сертификаты и предоставьте разрешения для проверки подлинности на уровне базы данных.
Как на исходном, так и на целевом серверах выполните следующие действия.
Исходный сервер | Целевой сервер |
---|---|
Создайте сертификат из файла резервной копии целевого сертификата, задав в качестве владельца пользователя целевой базы данных. | Создайте сертификат из файла резервной копии исходного сертификата, задав в качестве владельца пользователя базы данных-источника. |
Предоставьте разрешение для создания уведомления о событии пользователю базы данных-источника. Дополнительные сведения об этом разрешении см. в статье CREATE EVENT NOTIFICATION (Transact-SQL). | Предоставьте пользователю целевой базы данных разрешение REFERENCES на существующий контракт https://schemas.microsoft.com/SQL/Notifications/PostEventNotification Service Broker. |
Создайте привязку удаленной службы к целевой службе и задайте учетные данные пользователя целевой базы данных. Привязка удаленной службы обеспечивает то, что при помощи открытого ключа в сертификате, владельцем которого является пользователь базы данных-источника, будет осуществляться проверка подлинности сообщений, посылаемых на целевой сервер. | Предоставьте разрешения 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 имя_сертификата) и имя сертификата, выполняющего проверку подлинности. | Создайте конечную точку и задайте согласованный номер порта TCP, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE имя_сертификата) и имя сертификата, выполняющего проверку подлинности. |
Создайте имя входаи задайте входное имя целевого сервера. | Создайте имя входа и задайте входное имя исходного сервера. |
Предоставьте разрешение CONNECT на конечную точку для входного имени целевого средства проверки подлинности. | Предоставьте разрешение CONNECT на конечную точку для входного имени исходного средства проверки подлинности. |
Создайте учетную запись пользователяи задайте входное имя целевого средства проверки подлинности. | Создайте учетную запись пользователя и задайте входное имя исходного средства проверки подлинности. |
Шаг 5. Сделайте общими сертификаты для проверки подлинности на уровне сервера и создайте уведомление о событии.
Как на исходном, так и на целевом серверах выполните следующие действия.
Исходный сервер | Целевой сервер |
---|---|
Создайте сертификат из файла резервной копии целевого сертификата, задав в качестве владельца пользователя целевого средства проверки подлинности. | Создайте сертификат из файла резервной копии исходного сертификата, задав в качестве владельца пользователя исходного средства проверки подлинности. |
Переключитесь на базу данных-источник, на которой необходимо создать уведомление о событии, и если еще вы не подключены в качестве пользователя исходной базы данных, выполните это подключение. | Переключитесь на целевую базу данных для получения сообщений с уведомлениями о событиях. |
Создайте уведомление о событиии задайте идентификатор компонента broker service целевой базы данных. |
См. также
GRANT (Transact-SQL)
СЕРТИФИКАТ BACKUP (Transact-SQL)
sys.databases (Transact-SQL)
Иерархия средств шифрования
Реализация уведомлений о событиях
CREATE MASTER KEY (Transact-SQL)
CREATE LOGIN (Transact-SQL)
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЯ (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
GRANT (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE EVENT NOTIFICATION (Transact-SQL)