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

SQL Server utilise la sécurité du dialogue sur toute conversation engagée vers un service pour lequel il existe des liaisons de service distant dans la base de données hébergeant le service à l'origine de la conversation. Si ces liaisons de service distant spécifient ANONYMOUS = ON, le dialogue utilise la sécurité anonyme. Dans ce cas, la base de données cible peut ne pas contenir d'utilisateur pour le service initiateur. Ce service s'exécute en tant que public dans la base de données cible.

Configuration d'un service cible pour la sécurité du dialogue anonyme

  1. Créez un utilisateur sans connexion.

  2. Créez un certificat pour l'utilisateur.

    ms166108.note(fr-fr,SQL.90).gifRemarque :
    Le certificat doit être chiffré à l'aide de la clé principale. Pour plus d'informations, consultez CREATE MASTER KEY (Transact-SQL).
  3. Sauvegardez le certificat dans un fichier.

    ms166108.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
    Procédez uniquement à la sauvegarde du certificat pour cet utilisateur. N'effectuez ni sauvegarde, ni distribution de la clé privée associée au certificat.
  4. Octroyez à l'utilisateur du service cible l'autorisation de recevoir des messages de la file d'attente que le service cible utilise.

  5. Accordez à PUBLIC l'autorisation d'envoyer des messages au service cible.

  6. Fournissez le certificat et le nom du service cible à l'administrateur de la base de données distante.

Exemple

USE AdventureWorks ;
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 ;

Voir aussi

Tâches

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

Autres ressources

CREATE CERTIFICATE (Transact-SQL)
CREATE USER (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005