Modèle de sécurité de l'Agent de réplication

Le modèle de sécurité de l'agent de réplication permet d'exercer un contrôle précis sur les comptes sous lesquels les agents de réplication s'exécutent et établissent des connexions ; un compte différent peut être spécifié pour chaque agent. Pour plus d'informations sur la définition des comptes, consultez Gestion des connexions et des mots de passe dans la réplication.

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 Configuration de 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 RMO ou le contrôle ActiveX.

    Notes

    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 Méthodes préconisées en matière de sécurité de réplication.

Notes

Les scripts de réplication créés dans SQL Server 2000 doivent être mis à niveau vers SQL Server 2008 pour pouvoir tirer parti des améliorations apportées à la sécurité. Pour plus d'informations, consultez Procédure : mettre à niveau les scripts de réplication (programmation Transact-SQL de la réplication).

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 plus d'informations sur la liste d'accès à la publication (PAL, Publication Access List), qui concerne un certain nombre d'agents, consultez Sécurisation du serveur de publication.

Notes

La fonctionnalité Contrôle de compte d'utilisateur disponible dans Windows Vista 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écurisation du dossier de capture instantanée.

Agent

Autorisations

Agent d'instantané

Le compte Windows sous lequel s'exécute l'agent sert à 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 ;

  • posséder des autorisations de lecture, d'écriture et de modification sur le partage de fichiers d'instantanés.

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.

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.

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 un 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.

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 d'autorisations équivalentes si l'abonnement s'adresse à un Abonné non-SQL Server.

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.

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 minimum 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 enregistré dans la base de données de publication ;

  • avoir les autorisations de lecture sur le partage des fichiers d'instantanés.

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 enregistré 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 Jobs de SQL Server Management Studio. Le tableau suivant donne la liste des noms des travaux.

Agent

Nom du travail

Agent d'instantané

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<entier>

Agent d'instantané pour une partition de publication de fusion

Dyn_<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<GUID>

Agent de lecture du journal

<ServeurPublication>-<BaseDonnéesPublication>-<entier>

Agent de fusion pour abonnements par extraction de données (pull)

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<Abonné>-<BaseDonnéesAbonnement>-<entier>

Agent de fusion pour abonnements par envoi de données (push)

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<Abonné>-<entier>

Agent de distribution pour abonnements par envoi de données (push)

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<Abonné>-<entier>1

Agent de distribution pour abonnements par extraction de données (pull)

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<Abonné>-<BaseDonnéesAbonnement>-<GUID>2

Agent de distribution pour les abonnements par envoi de données aux Abonnés non SQL Server

<ServeurPublication>-<BaseDonnéesPublication>-<Publication>-<Abonné>-<entier>

Agent de lecture de la file d'attente

[<ServeurDistribution>].<entier>

1 Pour les abonnements par envoi de données sur les publications Oracle, le nom de travail est <ServeurPublication>-<ServeurPublication> au lieu de <ServeurPublication>-<BaseDonnéesPublication>.

2 Pour les abonnements par extraction de données sur les publications Oracle, le nom de travail est <ServeurPublication>-<BaseDonnéesDistribution> au lieu de <ServeurPublication>-<BaseDonné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 Transact-SQL CREATE CREDENTIAL. Les proxys d'Agent SQL 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. Pour plus d'informations sur les proxys, consultez Création de proxys d'Agent SQL Server.

Notes

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.