Сертификаты и компонент Service Broker

В этом разделе описано, как в SQL Server используются сертификаты при удаленном обеспечении безопасности компонента Service Broker. Удаленное обеспечение безопасности компонентом Service Broker охватывает операции с участием более одного экземпляра SQL Server, в ходе которых обеспечивается безопасность диалогов или транспорта.

Обзор

Реализованные в компоненте Service Broker средства удаленного обеспечения безопасности сопоставляют операцию, запущенную вне экземпляра SQL Server, с участником базы данных SQL Server. Затем выполнение операции продолжается в контексте безопасности этого участника базы данных с обычными проверками разрешений SQL Server. Например, при обработке сообщения в ходе диалога, защищенного механизмом обеспечения безопасности диалогов, компонент Service Broker по данным, содержащимся в сообщении, идентифицирует участника базы данных удаленной стороны диалога. Затем SQL Server проверяет, имеются ли у этого участника разрешения на подключение к базе данных, где размещается целевая служба, и разрешение на отправление сообщений этой службе.

SQL Server использует сертификаты с целью проверки идентификационных данных удаленной базы данных и идентификации участника локальной базы данных для операции. Таким образом, установка сертификата в экземпляре SQL Server является выражением доверия к базе данных, содержащей закрытый ключ сертификата. Устанавливая сертификаты и создавая привязки удаленных служб, будьте внимательны.

Примечание по безопасностиПримечание по безопасности

Устанавливайте сертификаты, полученные только из доверенных источников. Не распространяйте закрытые ключи.

Чтобы проверить идентификационные данные удаленного сервера, SQL Server должен получить сведения, которые можно расшифровать с применением открытого ключа сертификата, принадлежащего участнику локальной базы данных. Если SQL Server может успешно расшифровать данные, это означает, что удаленная база данных содержит закрытый ключ, соответствующий открытому ключу локального сертификата. Как только SQL Server проверит идентификационные данные удаленной базы данных, база данных может пользоваться разрешениями участника локальной базы данных.

Чтобы можно было задействовать механизм обеспечения безопасности транспорта, каждая база данных должна доверять другой базе данных. Этот механизм может использовать или сертификаты, или проверку подлинности Windows. Дополнительные сведения об обеспечении безопасности транспорта см. в разделе Безопасность транспорта компонента Service Broker.

При обеспечении безопасности диалогов вызывающая сторона должна считать целевую сторону доверенной и иметь возможность проверки ее идентификационных данных. Однако цель диалога может принимать соединения вызывающей стороны, не предоставляющие идентификационные данные. В этом случае службам вызывающей стороны назначается роль public в базе данных, где размещается целевая служба. При обеспечении безопасности диалогов всегда используются сертификаты. Дополнительные сведения об обеспечении безопасности транспорта см. в разделе Обеспечение безопасности диалогов компонента Service Broker.

В SQL Server не реализованы автоматизированные методы настройки безопасности компонента Service Broker при помощи сертификатов.

Требования к сертификатам

Чтобы сертификат мог использоваться для обеспечения безопасности компонента Service Broker, он должен отвечать следующим требованиям.

  • Модуль ключа должен быть менее 2048.

  • Общая длина сертификата должна быть менее 32 КБ.

  • Должно быть указано имя субъекта.

  • Должны быть указаны даты, определяющие срок действия сертификата.

  • Длина ключа должна быть кратной 64 бит.

Сертификат с собственной подписью, созданный при помощи инструкции CREATE CERTIFICATE языка Transact-SQL, соответствует указанным требованиям. Сертификат, загружаемый из файла, может им не соответствовать.

При сохранении сертификата в SQL Server он должен быть зашифрован с применением главного ключа базы данных. Компонент Service Broker не может использовать сертификаты, которые зашифрованы только паролем. Главный ключ базы данных должен быть зашифрован с применением ключа службы экземпляра. В противном случае компонент Service Broker не сможет открыть главный ключ.

Чтобы SQL Server мог воспользоваться сертификатом для начала диалога, сертификат должен быть помечен как ACTIVE FOR BEGIN_DIALOG. По умолчанию сертификаты помечаются как активные для начала диалогов. Однако, обновляя для службы конфигурацию безопасности, можно временно отключить сертификат. Дополнительные сведения см. в разделах Инструкция CREATE CERTIFICATE (Transact-SQL) и ALTER CERTIFICATE (Transact-SQL).