Configurer la sécurité de boîte de dialogue pour les notifications d’événements

La sécurité de la boîte de dialogue Service Broker doit être configurée pour les notifications d’événements qui envoient des messages à un service Broker 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é complète permet le chiffrement et le déchiffrement des messages envoyés vers et depuis des serveurs distants. Bien que les notifications d’événements soient envoyées dans une direction, d’autres messages, tels que les erreurs, sont également retournés dans la direction opposée.

Configuration de la sécurité de boîte de dialogue pour les notifications d’événements

Le processus requis pour implémenter la sécurité de boîte de dialogue pour la notification d’événement est décrit dans les étapes suivantes. Ces étapes incluent des actions à effectuer sur le serveur source et sur le serveur cible. Le serveur source est le serveur sur lequel la notification d’événement est en cours de création. Le serveur cible est le serveur qui reçoit le message de notification d’événement. Vous devez effectuer les actions de chaque étape pour le serveur source et le serveur cible avant de passer à l’étape suivante.

Important

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

Étape 1 : Établir 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 des messages. Vous devez également déterminer le nom du service cible.

Étape 2 : Configurer le chiffrement et le partage de certificats pour l’authentification au niveau de la base de données.

Effectuez les actions suivantes sur les serveurs source et cible.

Serveur source Serveur cible
Choisissez ou créez une base de données pour contenir la notification d’événement et la clé principale. Choisissez ou créez une base de données pour contenir la clé principale.
Si aucune clé principale n’existe pour la base de données source, créez une clé principale. Une clé principale est requise sur les bases de données source et cible pour sécuriser leurs certificats respectifs. Si aucune clé principale n’existe pour la base de données cible, créez une clé principale.
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 appartenant à l’utilisateur de la base de données source. Créez un certificat appartenant à 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 et SANS CONNEXION. Cet utilisateur possède le certificat de base de données cible à créer à partir du fichier de sauvegarde. L’utilisateur n’a pas besoin d’être mappé à une connexion, car le seul objectif de cet utilisateur est de posséder le certificat de base de données cible créé à l’étape 3 ci-dessous. Créez un utilisateur, en spécifiant l’utilisateur de la base de données source et SANS CONNEXION. Cet utilisateur possède le certificat de base de données source à créer à partir du fichier de sauvegarde. L’utilisateur n’a pas besoin d’être mappé à une connexion, car le seul objectif de cet utilisateur est de posséder le certificat de base de données source créé à l’étape 3 ci-dessous.

Étape 3 : Partager des certificats et accorder des autorisations pour l’authentification au niveau de la base de données.

Effectuez les actions suivantes sur les serveurs source et cible.

Serveur source Serveur cible
Créez un certificat à partir du fichier de sauvegarde du certificat cible, en spécifiant l’utilisateur de base de données cible en tant que propriétaire. Créez un certificat à partir du fichier de sauvegarde du certificat source, en spécifiant l’utilisateur de base de données source en tant que propriétaire.
Accordez l’autorisation de créer la 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. La liaison de service distant garantit que la clé publique du certificat appartenant à l’utilisateur de la base de données source authentifie les messages envoyés au serveur cible. Accorder l’autorisation CREATE QUEUE, CREATE SERVICE et CREATE SCHEMA à l’utilisateur de la base de données cible.
S’il n’est pas déjà connecté à la base de données en tant qu’utilisateur de base de données cible, faites-le maintenant.
Créez une file d’attente pour recevoir les messages de notification d’événement et créez un service pour remettre les messages.
Accordez l’autorisation SEND sur le service cible à l’utilisateur de la base de données source.
Fournissez l’identificateur service Broker de la base de données source au serveur cible. Cet identificateur peut être obtenu en interrogeant la colonne service_broker_guid de la vue catalogue sys.databases . Pour une notification d’événement au niveau du serveur, utilisez l’identificateur service Broker de msdb. Fournissez l’identificateur service Broker de la base de données cible au serveur source.

Étape 4 : Créer des itinéraires et configurer l’authentification au niveau du serveur.

Effectuez les actions suivantes sur les serveurs source et 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 convenu. 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 convenu. 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 au niveau du serveur. Basculez vers la base de données master pour configurer l’authentification au niveau du serveur.
Si aucune clé principale n’existe pour la base de données master , créez une clé principale. Si aucune clé principale n’existe pour la base de données master , créez une clé principale.
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 terminaison et spécifiez le numéro de port TCP accepté, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) et le nom du certificat d’authentification. Créez un point de terminaison et spécifiez le numéro de port TCP accepté, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) et le nom du certificat d’authentification.
Créez une connexion et spécifiez la connexion du serveur cible. Créez une connexion et spécifiez la connexion du serveur source.
Accordez l’autorisation CONNECT sur le point de terminaison à la connexion de l’authentificateur cible. Accordez l’autorisation CONNECT sur le point de terminaison à la connexion de l’authentificateur source.
Créez un utilisateur et spécifiez la connexion de l’authentificateur cible. Créez un utilisateur et spécifiez la connexion de l’authentificateur source.

Étape 5 : Partagez des certificats pour l’authentification au niveau du serveur et créez la notification d’événement.

Effectuez les actions suivantes sur les serveurs source et cible.

Serveur source Serveur cible
Créez un certificat à partir du fichier de sauvegarde du certificat cible, en spécifiant l’utilisateur d’authentificateur cible en tant que propriétaire. Créez un certificat à partir du fichier de sauvegarde du certificat source, en spécifiant l’utilisateur d’authentificateur source en tant que propriétaire.
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, faites-le maintenant. Basculez vers la base de données cible pour recevoir des messages de notification d’événement.
Créez la notification d’événement et spécifiez le service broker et l’identificateur de la base de données cible.

Voir aussi

GRANT (Transact-SQL)
CERTIFICAT DE SAUVEGARDE (Transact-SQL)
sys.databases (Transact-SQL)
Hiérarchie de chiffrement
Implémenter des notifications d’événements
CREATE MASTER KEY (Transact-SQL)
CRÉER UNE CONNEXION (Transact-SQL)
CRÉER UN UTILISATEUR (Transact-SQL)
CRÉER CERTIFICAT (Transact-SQL)
CRÉER UNE LIAISON DE SERVICE À DISTANCE (Transact-SQL)
GRANT (Transact-SQL)
CRÉER ROUTE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CRÉER UN POINT D'ACCÈS (Transact-SQL)
CRÉER UNE NOTIFICATION D'ÉVÉNEMENT (Transact-SQL)