Поделиться через


Как сконфигурировать целевые службы для анонимного обеспечения безопасности диалога (Transact-SQL)

SQL Server обеспечивает безопасность любого диалога со службой, для которой, в базе данных, обслуживающей инициировавший диалог служб, имеется привязка удаленной службы. Если в привязке удаленной службы указан параметр ANONYMOUS = ON, выполняется анонимное обеспечение безопасности диалога. В этом случае — данные пользователя службы, инициировавшей диалог, могут отсутствовать в целевой базе данных. Службе-инициатору соответствует в целевой базе данных роль public.

Настройка целевой службы для анонимного обеспечения безопасности диалога

  1. Создайте пользователя без имени входа.

  2. Создайте сертификат для этого пользователя.

    ПримечаниеПримечание

    Этот сертификат должен быть зашифрован при помощи главного ключа. Дополнительные сведения см. в разделе CREATE MASTER KEY (Transact-SQL).

  3. Создайте резервную копию сертификата в файле.

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

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

  4. Предоставьте пользователю целевой службы разрешение на получение сообщений из очереди, используемой целевой службой.

  5. Предоставьте роли public разрешение на отправку сообщений целевой службе.

  6. Предоставьте сертификат и имя целевой службы администратору удаленной базы данных.

Пример

USE AdventureWorks2008R2 ;
GO

--------------------------------------------------------------------
-- This script configures security for a local user in the database.
-- The script creates a user in this database, creates a certificate
-- for the user, writes the certificate to the file system, and
-- grants permissions to the user. Since this service is a target
-- service, no remote service binding is necessary.

-- Create a user without a login. For convenience,
-- the name of the user is based on the name of the
-- the remote service.

CREATE USER [SupplierOrdersUser]
    WITHOUT LOGIN;
GO

-- Create a certificate for the initiating service
-- to use to send messages to the target service.

CREATE CERTIFICATE [SupplierOrdersCertificate]
    AUTHORIZATION [SupplierOrdersUser]
    WITH SUBJECT = 'Certificate for the SupplierOrders service user.';
GO

-- Backup the certificate. Provide the certificate file
-- to the administrator for the database that hosts
-- the other service.

BACKUP CERTIFICATE [SupplierOrdersCertificate]
   TO FILE = 'C:\Certificates\SupplierOrders.cer';
GO

-- Grant receive on the orders queue to the local user.

GRANT RECEIVE ON SupplierOrdersQueue
    TO [SupplierOrdersUser];
GO

-- Grant send on the service to public.

GRANT SEND ON SERVICE::[SupplierOrders] TO public ;