Compartilhar via


Como configurar serviços de destino para segurança anônima de diálogo (Transact-SQL)

O SQL Server usa segurança de diálogo para qualquer conversa com um serviço para o qual existe uma associação de serviço remoto no banco de dados que hospeda o serviço inicial. Se a associação de serviço remoto especificar ANÔNIMO = ON, o diálogo usará segurança anônima. Nesse caso, não haverá necessidade que o banco de dados de destino contenha um usuário para o serviço iniciante. O serviço iniciante funciona como público no banco de dados de destino.

  1. Crie um usuário sem um logon.

  2. Crie um certificado para o usuário.

    ObservaçãoObservação

    O certificado deverá ser criptografado com a chave mestra. Para obter mais informações, consulte CREATE MASTER KEY (Transact-SQL).

  3. Faça backup do certificado em um arquivo.

    Observação sobre segurançaObservação sobre segurança

    Só faça o backup do certificado deste usuário. Não faça backup nem distribua a chave privada associada ao certificado.

  4. Conceda permissão para que o usuário do serviço de destino receba mensagens da fila que o serviço de destino usa.

  5. Conceda permissão para que public envie mensagens ao serviço de destino.

  6. Forneça o certificado e o nome do serviço de destino ao administrador de banco de dados para o banco de dados remoto.

Exemplo

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 ;