Modèle de sécurité de l'Agent de réplication
S'applique à : SQL Server
Le modèle de sécurité de l'Agent de réplication permet un contrôle fin des comptes sous lesquels les agents de réplication s'exécutent et établissent des connexions : un compte distinct peut être spécifié pour chaque agent. Pour plus d’informations sur la manière de spécifier des comptes, consultez Identité et contrôle d’accès pour la réplication.
Le modèle de sécurité de l’agent de réplication est un peu différent pour Azure SQL Managed Instance, car il n’y a aucun compte Windows sous lequel les agents s’exécuteront. Au lieu de cela, tout doit être effectué par le biais de l’authentification SQL Server.
Important
Lorsqu’un membre du rôle serveur fixe sysadmin configure la réplication, les agents de réplication peuvent être configurés pour emprunter l’identité du compte de l’agent SQL Server. Il suffit de ne pas spécifier de nom de connexion et de mot de passe pour un Agent de réplication ; toutefois, cette méthode n'est pas recommandée. Pour des raisons de sécurité, il est plutôt recommandé de spécifier un compte pour chaque agent, disposant des autorisations minimales décrites dans la section « Autorisations requises par les agents » plus loin dans cette rubrique.
Comme tous les exécutables, les agents de réplication sont exécutés dans le contexte d'un compte Windows. Les agents établissent des connexions de sécurité intégrée Windows en utilisant ces comptes. Le compte sous lequel l'agent s'exécute dépend de la manière dont l'agent est démarré :
Démarrage de l’agent à partir d’un travail de l’agent SQL Server (par défaut) : lorsqu’un travail de l’agent SQL Server sert à démarrer un agent de réplication, l’agent s’exécute dans le contexte d’un compte que vous spécifiez lors de la configuration de la réplication. Pour plus d’informations sur l’agent SQL Server et la réplication, consultez la section « Sécurité de l’agent sous l’agent SQL Server » plus loin dans cette rubrique. Pour plus d’informations sur les autorisations requises pour le compte sous lequel s’exécute l’agent SQL Server, consultez Configurer l’agent SQL Server.
Démarrage de l'agent à partir d'une ligne de commande MS-DOS, directement ou via un script : l'agent s'exécute dans le contexte du compte de l'utilisateur exécutant l'agent sur la ligne de commande.
Démarrage de l'agent à partir d'une application qui utilise des objets RMO (Replication Management Objects) ou un contrôle ActiveX : l'agent s'exécute dans le contexte de l'application appelant les objets RMO ou le contrôle ActiveX.
Remarque
Les contrôles ActiveX sont déconseillés.
Il est recommandé d'établir les connexions dans le contexte de sécurité intégrée Windows. Pour des besoins de compatibilité descendante, la sécurité SQL Server peut également être utilisée. Pour plus d'informations sur les meilleures pratiques, consultez Replication Security Best Practices.
Autorisations requises par les agents
Les comptes sous lesquels les agents s'exécutent et établissent des connexions nécessitent différentes autorisations. Ces autorisations sont décrites dans le tableau suivant. Il est recommandé d'exécuter chaque agent sous un compte Windows différent et d'accorder au compte uniquement les autorisations nécessaires. Pour obtenir des informations sur la liste d’accès à la publication (PAL, Publication Access List), qui concerne un certain nombre d’agents, consultez Sécuriser le serveur de publication.
Remarque
La fonctionnalité Contrôle de compte d'utilisateur dans certains systèmes d'exploitation Windows peut empêcher l'accès administratif au partage de fichiers d'instantanés. Vous devez donc octroyer explicitement des autorisations sur le partage de fichiers d'instantanés aux comptes Windows qui sont utilisés par l'Agent d'instantané, l'Agent de distribution et l'Agent de fusion. Vous devez effectuer cette opération même si les comptes Windows sont membres du groupe Administrateurs. Pour plus d’informations, consultez Sécuriser le dossier d’instantanés.
Agent | autorisations |
---|---|
Agent d'instantané | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution. Ce compte doit obligatoirement : - être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ; - disposer des autorisations de lecture, écriture et modification sur le partage de fichiers d’instantanés. Notez que le compte utilisé pour se connecter au serveur de publication doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données de publication. |
l'Agent de lecture du journal ; | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution. Ce compte doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données de distribution. Le compte utilisé pour se connecter au serveur de publication doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données de publication. Lors de la sélection des options sync_type , replication support only, initialize with backupou initialize from lsn, l'Agent de lecture du journal doit s'exécuter après l'exécution de sp_addsubscription, afin que les scripts d'installation soient écrits dans la base de données de distribution. L'Agent de lecture du journal doit s'exécuter sous un compte membre du rôle serveur fixe sysadmin . Lorsque l'option sync_type a la valeur Automatic, aucune action particulière de l'Agent de lecture du journal n'est requise. |
Agent de distribution pour un abonnement par envoi de données (push) | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution. Ce compte doit obligatoirement : - être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ; - être membre de la liste d’accès à la publication (PAL) ; - avoir les autorisations de lecture sur le partage des fichiers d’instantanés ; - avoir les autorisations de lecture sur le répertoire d’installation du fournisseur OLE DB pour l’Abonné si l’abonnement est destiné à un Abonné non-SQL Server. - Lors de la réplication des données LOB, l’agent de distribution doit avoir des autorisations en écriture sur la réplication C:\Program Files\Microsoft SQL Server\XX\COMfolder , où XX représente l’ID d’instance. Notez que le compte employé pour se connecter à l’Abonné doit au moins être membre du rôle de base de données fixe db_owner dans la base de données d’abonnement, ou bien disposer d’autorisations équivalentes si l’abonnement s’adresse à un Abonné non-SQL Server. Notez également que, lorsque vous utilisez -subscriptionstreams >= 2 sur l’agent de distribution, vous devez également accorder l’autorisation View Server State sur les abonnés pour détecter les blocages. |
Agent de distribution pour un abonnement par extraction de données (pull) | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter à l'Abonné. Ce compte doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données d'abonnement. Le compte servant à se connecter au serveur de distribution doit obligatoirement : - être membre de la liste d’accès à la publication (PAL) ; - avoir les autorisations de lecture sur le partage des fichiers d’instantanés ; - Lors de la réplication des données LOB, l’agent de distribution doit avoir des autorisations en écriture sur la réplication C:\Program Files\Microsoft SQL Server\XX\COMfolder , où XX représente l’ID d’instance. Notez que, lorsque vous utilisez -subscriptionstreams >= 2 sur l’agent de distribution, vous devez également accorder l’autorisation View Server State sur les abonnés pour détecter les blocages. |
Agent de fusion pour un abonnement par envoi de données (push) | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de publication et au serveur de distribution. Ce compte doit obligatoirement : - être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ; - être membre de la liste d’accès à la publication (PAL) ; - Être un compte de connexion associé à un utilisateur ayant des autorisations de lecture-écriture dans la base de données de publication. - avoir les autorisations de lecture sur le partage des fichiers d’instantanés ; Notez que le compte utilisé pour se connecter à l’Abonné doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données d'abonnement. |
Agent de fusion pour un abonnement par extraction de données (pull) | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter à l'Abonné. Ce compte doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données d'abonnement. Le compte servant à se connecter au serveur de publication et au serveur de distribution doit obligatoirement : - être membre de la liste d’accès à la publication (PAL) ; - Être un compte de connexion associé à un utilisateur ayant des autorisations de lecture-écriture dans la base de données de publication. - être un compte de connexion associé à un utilisateur enregistré dans la base de données de distribution. l'utilisateur peut être un Guest ; - avoir les autorisations de lecture sur le partage des fichiers d’instantanés ; |
Agent de lecture de la file d'attente | Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution. Ce compte doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données de distribution. Le compte utilisé pour se connecter au serveur de publication doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données de publication. Le compte utilisé pour se connecter à l'Abonné doit être au minimum membre du rôle de base de données fixe db_owner dans la base de données d'abonnement. |
Sécurité de l'Agent dans l'Agent SQL Server
Lorsque vous configurez la réplication à l’aide de procédures SQL Server Management Studio, Transact-SQL ou RMO, un travail de l’agent SQL Server est créé par défaut pour chaque agent. Les agents s'exécutent ensuite dans le contexte d'une étape de travail, qu'ils s'exécutent en continu, dans le cadre d'une planification ou à la demande. Vous pouvez afficher ces travaux dans le dossier Travaux de SQL Server Management Studio. Le tableau suivant donne la liste des noms des travaux.
Agent | Nom du travail |
---|---|
Agent d'instantané | <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<entier> |
Agent d'instantané pour une partition de publication de fusion | Dyn_<ServeurPublication>-<BasededonnéesPublication>-<Publication>-<GUID> |
l'Agent de lecture du journal ; | <ServeurPublication>-<BasededonnéesPublication>-<entier> |
Agent de fusion pour les abonnements extraits | <Serveur_Publication>-<Base_de_données_Publication>-<Publication>-<Abonné>-<Base_de_données_Abonnement>-<entier>> |
Agent de fusion pour abonnements par envoi de données (push) | <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier> |
Agent de distribution pour abonnements par envoi de données (push) | <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier> |
Agent de distribution pour abonnements par extraction de données (pull) | <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<BasededonnéesPublication>-<GUID> |
Agent de distribution pour les abonnements par envoi de données aux Abonnés non SQL Server | <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier> |
Agent de lecture de la file d'attente | [<Distributeur>].<entier> |
*Pour les abonnements par envoi de données aux publications Oracle, le nom du travail est <ServeurPublication>-<ServeurPublication> au lieu de <ServeurPublication>-<BasededonnéesPublication>.
Pour les abonnements par extraction de données aux publications Oracle, le nom du travail est <ServeurPublication>-<BasededonnéesDistribution> au lieu de <ServeurPublication>-<BasededonnéesPublication>.
Lorsque vous configurez la réplication, vous spécifiez les comptes sous lesquels les agents doivent être exécutés. Cependant, toutes les étapes de travail s'exécutent dans le contexte de sécurité d'un proxy; la réplication effectue donc les mappages suivants en interne pour les comptes d'agent spécifiés :
Le compte est d’abord mappé à des informations d’identification à l’aide de l’instruction CREATE CREDENTIAL Transact-SQL. Les proxys de l'AgentSQL Server utilisent les informations d'identification pour stocker les informations relatives aux comptes d'utilisateur Windows.
La procédure stockée sp_add_proxy est appelée et les informations d'identification sont utilisées pour créer un proxy.
Remarque
Ces informations sont fournies pour vous aider à comprendre les conséquences de l'exécution d'agents dans le contexte de sécurité approprié. Il ne devrait pas être nécessaire d'interagir directement avec les informations d'identification ou les proxys qui ont été créés.