Configurer la sécurité du dialogue pour les notifications d'événements

S’applique à :SQL Server

Service Broker doit être configurée pour les notifications d'événements qui envoient des messages à un Service Broker résidant sur un serveur distant. La sécurité de boîte de dialogue doit être configurée manuellement en fonction du modèle de sécurité complète de la boîte de dialogue Service Broker. Le modèle de sécurité totale permet le chiffrement et le déchiffrement des messages échangés avec les serveurs distants. Même si les notifications d'événements sont envoyées dans une direction, les autres messages, comme les erreurs, sont retournés dans la direction opposée.

Configuration de la sécurité du dialogue pour les notifications d'événements

Les étapes suivantes décrivent le processus à suivre pour implémenter la sécurité du dialogue des notifications d'événements. Ces étapes incluent les actions à exécuter aussi bien sur le serveur source que sur le serveur cible. Le serveur source correspond au serveur sur lequel la notification d'événement est en cours de création. Le serveur cible désigne le serveur qui reçoit le message de notification d'événement. Vous devez effectuer les actions de chaque étape aussi bien sur le serveur source que sur le serveur cible avant de passer à l'étape suivante.

Important

Tous les certificats doivent être créés avec des dates de début et des dates d'expiration valides.

Étape 1 : établissez un numéro de port TCP et un nom de service cible.

Établissez le port TCP sur lequel le serveur source et le serveur cible recevront les messages. Vous devez également définir le nom du service cible.

Étape 2 : configurez le chiffrement et le partage de certificats pour l'authentification de niveau base de données.

Exécutez les actions suivantes sur le serveur source et sur le serveur cible.

Serveur source Serveur cible
Choisissez ou créez la base de données qui contiendra la notification d'événement et la clé principale. Choisissez ou créez la base de données qui contiendra la clé principale.
S'il n'existe pas de clé principale pour la base de données source, créez-la. Une clé principale est obligatoire sur les bases de données source et cible pour aider à sécuriser leurs certificats respectifs. S'il n'existe pas de clé principale pour la base de données cible, créez-la.
Créez une connexion et un utilisateur correspondant pour la base de données source. Créez une connexion et un utilisateur correspondant pour la base de données cible.
Créez un certificat dont le propriétaire est l'utilisateur de la base de données source. Créez un certificat dont le propriétaire est l'utilisateur de la base de données cible.
Sauvegardez le certificat dans un fichier accessible par le serveur cible. Sauvegardez le certificat dans un fichier accessible par le serveur source.
Créez un utilisateur, en spécifiant l'utilisateur de la base de données cible, ainsi que WITHOUT LOGIN. Cet utilisateur sera propriétaire du certificat de la base de données cible créé à partir du fichier de sauvegarde. Il n'est pas nécessaire que l'utilisateur soit mappé à une connexion, parce que le seul objectif de cet utilisateur est d'être propriétaire du certificat de la base de données cible, créé au cours de l'étape 3 suivante. Créez un utilisateur, en spécifiant l'utilisateur de la base de données source, ainsi que WITHOUT LOGIN. Cet utilisateur sera propriétaire du certificat de la base de données source créé à partir du fichier de sauvegarde. Il n'est pas nécessaire que l'utilisateur soit mappé à une connexion, parce que le seul objectif de cet utilisateur est d'être propriétaire du certificat de la base de données source, créé au cours de l'étape 3 suivante.

Étape 3 : partagez les certificats et attribuez les autorisations pour l'authentification de niveau base de données.

Exécutez les actions suivantes sur le serveur source et sur le serveur cible.

Serveur source Serveur cible
Créez un certificat à partir du fichier de sauvegarde du certificat cible, en spécifiant comme propriétaire l'utilisateur de la base de données cible. Créez un certificat à partir du fichier de sauvegarde du certificat source, en spécifiant comme propriétaire l'utilisateur de la base de données source.
Attribuez l'autorisation de création de notification d'événement à l'utilisateur de la base de données source. Pour plus d’informations sur cette autorisation, consultez CREATE EVENT NOTIFICATION (Transact-SQL). Accordez l’autorisation REFERENCES à l’utilisateur de base de données cible sur le contrat Service Broker des notifications d’événements existantes : https://schemas.microsoft.com/SQL/Notifications/PostEventNotification.
Créez une liaison de service distant au service cible et spécifiez les informations d'identification de l'utilisateur de la base de données cible. Les liaisons de service distant garantissent que la clé public du certificat dont l'utilisateur de la base de données source est propriétaire authentifie les messages adressés au serveur cible. Attribuez les autorisations CREATE QUEUE, CREATE SERVICE et CREATE SCHEMA à l'utilisateur de la base de données cible.
Si vous n'êtes pas déjà connecté à la base de données comme utilisateur de la base de données cible, connectez-vous maintenant.
Créez une file d'attente pour recevoir les messages de notification d'événement et créez un service de remise des messages.
Attribuez l'autorisation SEND sur le service cible à l'utilisateur de la base de données source.
Fournissez au serveur cible l'identificateur Service Broker de la base de données source. Vous pouvez obtenir cet identificateur en interrogeant la colonne service_broker_guid de l’affichage catalogue sys.databases . Pour une notification d’événement de niveau serveur, utilisez l’identificateur Service Broker de msdb. Fournissez au serveur source l'identificateur Service Broker de la base de données cible.

Étape 4 : créez les itinéraires et configurez l'authentification de niveau serveur.

Exécutez les actions suivantes sur le serveur source et sur le serveur cible.

Serveur source Serveur cible
Créez un itinéraire vers le service cible et spécifiez l’identificateur Service Broker de la base de données cible et le numéro de port TCP approuvé. Créez un itinéraire vers le service source et spécifiez l'identificateur Service Broker de la base de données source et le numéro de port TCP approuvé. Pour spécifier le service source, utilisez le service fourni suivant : https://schemas.microsoft.com/SQL/Notifications/EventNotificationService.
Basculez vers la base de données master pour configurer l’authentification de niveau serveur. Basculez vers la base de données master pour configurer l’authentification de niveau serveur.
S'il n'existe pas de clé principale pour la base de données master , créez-la. S'il n'existe pas de clé principale pour la base de données master , créez-la.
Créez un certificat qui authentifie la base de données. Créez un certificat qui authentifie la base de données.
Sauvegardez le certificat dans un fichier accessible par le serveur cible. Sauvegardez le certificat dans un fichier accessible par le serveur source.
Créez un point de terminaisonet spécifiez le numéro de port TCP approuvé, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE nom_certificat), ainsi que le nom du certificat d’authentification. Créez un point de terminaison et spécifiez le numéro de port TCP approuvé, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE nom_certificat), ainsi que le nom du certificat d’authentification.
Créez une connexionet spécifiez celle du serveur cible. Créez une connexion et spécifiez celle du serveur source.
Attribuez l'autorisation CONNECT sur le point de terminaison à la connexion authentificatrice cible. Attribuez l'autorisation CONNECT sur le point de terminaison à la connexion authentificatrice source.
Créez un utilisateuret spécifiez la connexion authentificatrice cible. Créez un utilisateur et spécifiez la connexion authentificatrice source.

Étape 5 : partagez les certificats d'authentification de niveau serveur et créez la notification d'événement.

Exécutez les actions suivantes sur le serveur source et sur le serveur cible.

Serveur source Serveur cible
Créez un certificat à partir du fichier de sauvegarde du certificat cible, en spécifiant comme propriétaire l'utilisateur authentificateur cible. Créez un certificat à partir du fichier de sauvegarde du certificat source, en spécifiant comme propriétaire l'utilisateur authentificateur source.
Basculez vers la base de données source sur laquelle créer la notification d'événement et, si vous n'êtes pas déjà connecté en tant qu'utilisateur de la base de données source, connectez-vous maintenant. Basculez vers la base de données cible pour recevoir les messages de notification d'événement.
Créez la notification d'événementet spécifiez le Service Broker, ainsi que l'identificateur de la base de données cible.

Voir aussi

GRANT (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
sys.databases (Transact-SQL)
Hiérarchie de chiffrement
Implémenter des notifications d'événements
CREATE MASTER KEY (Transact-SQL)
CREATE LOGIN (Transact-SQL)
CRÉER UN UTILISATEUR (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
GRANT (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE EVENT NOTIFICATION (Transact-SQL)