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 SQL Server Agent. 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é :

  • À partir d’un travail SQL Server Agent, la valeur par défaut : lorsqu’un travail SQL Server Agent est utilisé pour démarrer un agent de réplication, l’agent s’exécute sous le contexte d’un compte que vous spécifiez lors de la configuration de la réplication. Pour plus d’informations sur SQL Server Agent et la réplication, consultez la section « Sécurité de l’agent sous SQL Server Agent » plus loin dans cette rubrique. Pour plus d’informations sur les autorisations requises pour le compte sous lequel SQL Server Agent s’exécute, consultez Configurer SQL Server Agent.

  • 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 une 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 SQL Server Management Studio, de procédures Transact-SQL ou de RMO, un travail SQL Server Agent 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 sous le dossier Travaux dans SQL Server Management Studio. Le tableau suivant donne la liste des noms des travaux.

Agent Nom du travail
Agent d'instantané <Publisher-PublicationDatabase-Publication-Integer><><><>
Agent d'instantané pour une partition de publication de fusion <Dyn_Publisher-PublicationDatabase-Publication-GUID<><>><>
l'Agent de lecture du journal ; <Publisher-PublicationDatabase-integer><><>
Agent de fusion pour les abonnements extraits <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-integer><><><><><>
Agent de fusion pour abonnements par envoi de données (push) <Publisher-PublicationDatabase-Publication-Publication-Subscriber-integer><><><><>
Agent de distribution pour abonnements par envoi de données (push) <Publisher-PublicationDatabase-Publication-Publication-Subscriber-integer><><><><>
Agent de distribution pour abonnements par extraction de données (pull) <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-GUID><><><><><>
Agent de distribution pour les abonnements par envoi de données aux Abonnés non SQL Server <Publisher-PublicationDatabase-Publication-Publication-Subscriber-integer><><><><>
Agent de lecture de la file d'attente [<Serveur de distribution>].<Entier>

*Pour les abonnements push aux publications Oracle, le nom du travail est Publisher-Publisher<>> au lieu de <Publisher-PublicationDatabase.><><

**Pour les abonnements par extraction à des publications Oracle, le nom du travail est Publisher-DistributionDatabase>< au lieu de <Publisher-PublicationDatabase>>><.<

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 Transact-SQL CREATE CREDENTIAL . 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.

Voir aussi

Bonnes pratiques en matière de sécurité de la réplication
Afficher et modifier les paramètres de sécurité de la réplication
Sécuriser le dossier d’instantanés