Condividi tramite


Procedura: Configurazione dei servizi di destinazione per la sicurezza avanzata del dialogo (Transact-SQL)

SQL Server utilizza la sicurezza del dialogo per le conversazioni con un servizio per il quale esiste un'associazione al servizio remoto nel database che ospita il servizio di origine. Se il database che ospita il servizio di destinazione contiene un utente corrispondente all'utente che ha creato il dialogo, per il dialogo viene utilizzata la sicurezza avanzata.

Per verificare l'utilizzo della sicurezza del dialogo da parte di un servizio di destinazione, creare un utente per l'accesso del servizio di origine. Per ogni servizio di origine, creare un utente e installare il relativo certificato. Si noti che i servizio di destinazione non utilizzano un'associazione al servizio remoto.

  1. Creare un utente senza account di accesso.

  2. Creare un certificato per l'utente.

    Nota

    Il certificato deve essere crittografato con la chiave master. Per ulteriori informazioni, vedere CREATE MASTER KEY (Transact-SQL).

  3. Impostare l'utente creato come proprietario del servizio di destinazione.

  4. Eseguire il backup del certificato in un file.

    Nota sulla sicurezzaNota sulla sicurezza

    Eseguire questa operazione solo per questo utente. Non eseguire il backup della chiave privata associata al certificato, né distribuirla.

  5. Concedere all'utente del servizio di destinazione l'autorizzazione a ricevere messaggi dalla coda utilizzata da tale servizio.

  6. Fornire il certificato e il nome del servizio di origine all'amministratore del database remoto.

    Nota

    Per consentire l'utilizzo della sicurezza avanzata del dialogo da parte di SQL Server, il certificato deve essere installato nel database remoto e l'utente creato per il certificato deve corrispondere all'utente specificato nell'associazione al servizio remoto per il servizio di destinazione.

  7. Ottenere un certificato per un utente nel database remoto da una fonte attendibile. In genere, questo comporta l'invio del certificato mediante un messaggio di posta elettronica crittografato o il trasferimento del certificato per mezzo di un supporto fisico, ad esempio un disco floppy.

    Nota sulla sicurezzaNota sulla sicurezza

    Installare i certificati solo da fonti attendibili.

  8. Creare un utente senza account di accesso.

  9. Installare il certificato per il servizio di origine. L'utente creato nel passaggio precedente è il proprietario del certificato.

  10. Creare un utente senza account di accesso per il certificato del servizio di origine.

  11. Concedere all'utente di origine l'autorizzazione per l'invio di messaggi al servizio di destinazione.

Esempio

USE AdventureWorks2008R2 ;
GO

--------------------------------------------------------------------
-- The first part of the script configures security for the local user.
-- 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

-- Dump 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
-- Make this user the owner of the target service.

ALTER AUTHORIZATION ON SERVICE::SupplierOrders TO [SupplierOrdersUser];
GO

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

GRANT RECEIVE ON SupplierOrdersQueue
    TO [SupplierOrdersUser];
GO

---------------------------------------------------------------
-- The second part of the script configures security in this
-- database for the remote service. This consists of creating
-- a user in this database, loading the certificate for the remote
-- service, and granting permissions for the user.


-- Create a user without a login.

CREATE USER [OrderPartsUser]
    WITHOUT LOGIN;
GO

-- Install a certificate for the initiating user.
-- The certificate is provided by the owner of the
-- initiating service.

CREATE CERTIFICATE [OrderPartsCertificate]
    AUTHORIZATION [OrderPartsUser]
    FROM FILE='C:\Certificates\OrderParts.cer';
GO

-- Grant send on the target service to the user for the
-- initating service.

GRANT SEND ON SERVICE::[SupplierOrders]
    TO [OrderPartsUser];
GO