Procédure : configurer des services cibles pour une sécurité du dialogue totale (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. Le dialogue utilise la sécurité totale lorsque la base de données accueillant le service cible contient un utilisateur qui correspond à l'utilisateur initiateur du dialogue.

Pour vous assurer qu'un service cible utilise la sécurité du dialogue, créez un utilisateur par le biais duquel le service à l'origine de la conversation peut se connecter. Pour chaque service initiateur, créez un utilisateur et installez le certificat dont il a besoin. Remarquez qu'un service cible n'utilise pas de liaisons de service distant.

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

  1. Créez un utilisateur sans connexion.

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

    ms166072.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. Attribuez la propriété du service cible à cet utilisateur.

  4. Sauvegardez le certificat dans un fichier.

    ms166072.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.
  5. Octroyez à l'utilisateur du service cible l'autorisation de recevoir des messages de la file d'attente que le service cible utilise.

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

    ms166072.note(fr-fr,SQL.90).gifRemarque :
    Le certificat doit être installé dans la base de données distante et l'utilisateur du certificat être l'utilisateur spécifié dans les liaisons de service distant du service cible pour que SQL Server utilise la sécurité du dialogue totale.
  7. Procurez-vous, à partir d'une source fiable, un certificat pour un utilisateur dans la base de données distante. Cette opération implique généralement l'envoi du certificat au moyen d'un courrier électronique chiffré ou son transfert via un support physique tel qu'une disquette.

    ms166072.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
    Installez uniquement des certificats provenant de sources fiables.
  8. Créez un utilisateur sans connexion.

  9. Installez le certificat pour le service initiateur. L'utilisateur créé à l'étape précédente est propriétaire du certificat.

  10. Créez un utilisateur sans connexion pour le certificat du service initiateur.

  11. Accordez à l'utilisateur initiateur l'autorisation d'envoyer des messages au service cible.

Exemple

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

Voir aussi

Tâches

Procédure : configurer les services initiateurs pour une sécurité du dialogue totale (Transact-SQL)
Procédure : configurer des autorisations pour un service local (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