Share via


Procédure : configurer des services initiateurs pour une sécurité du dialogue anonyme (Transact-SQL)

SQL Server utilise la sécurité du dialogue pour toute conversation engagée vers un service pour lequel des liaisons de service distant existent. Le dialogue utilise la sécurité anonyme lorsque la base de données qui héberge le service cible ne contient pas d'utilisateur correspondant à l'utilisateur qui a engagé le dialogue.

Remarque relative à la sécuritéRemarque relative à la sécurité

Installez uniquement des certificats provenant de sources fiables.

Pour vous assurer qu'un service initiateur utilise la sécurité du dialogue

  1. Procurez-vous, à partir d'une source fiable, un certificat pour un utilisateur dans la base de données distante.

  2. Créez un utilisateur sans connexion.

  3. Installez le certificat pour le service distant. L'utilisateur créé à l'étape 3 est propriétaire du certificat. Le certificat est actif par défaut pour BEGIN DIALOG.

  4. Créez des liaisons de service distant qui spécifient l'utilisateur et le service cible. Pour la sécurité du dialogue anonyme, les liaisons de service distant spécifient ANONYMOUS = ON.

Exemple

Cet exemple configure la sécurité du dialogue anonyme pour des conversations échangées entre le service nommé OrderParts de l'instance active et le service SupplierOrders de l'instance distante.

USE AdventureWorks ;
GO

-- Given a certificate for a remote user for the remote service
-- SupplierOrders, create a remote service binding for
-- the service.  The remote user will be granted permission
-- to send messages to the local service OrderParts. 
-- This example assumes that the certificate for the service 
-- is saved in the file'C:\Certificates\SupplierOrders.cer' and that
-- the initiating service already exists.


-- Create a user without a login.

CREATE USER [SupplierOrdersUser]
    WITHOUT LOGIN ;
GO

-- Install a certificate for the owner of the service
-- in the remote database. The certificate is
-- provided by the owner of the remote service. The
-- user for the remote service owns the certificate.

CREATE CERTIFICATE [SupplierOrdersCertificate]
    AUTHORIZATION [SupplierOrdersUser]
    FROM FILE='C:\Certificates\SupplierOrders.cer' ;
GO

-- Create the remote service binding. Notice
-- that the user specified in the binding
-- does not own the binding itself.

-- Creating this binding specifies that messages from
-- this database are secured using the certificate for
-- the [SupplierOrdersUser] user.

-- Since anonymous is ON, the credentials for the user
-- that begins the conversation are not used for the
-- conversation.

CREATE REMOTE SERVICE BINDING [SupplierOrdersBinding]
    TO SERVICE 'SupplierOrders'
    WITH USER = [SupplierOrdersUser],
         ANONYMOUS = ON ;
GO