Modèle de sécurité de l'Agent de réplicationReplication Agent Security Model

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

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.The replication agent security model allows for fine-grained control over the accounts under which replication agents run and make connections: A different account can be specified for each 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.For more information about how to specify accounts, see Identity and access control for replication.

Le modèle de sécurité de l’agent de réplication est un peu différent pour les instances managées Azure SQL Database, car il n’y a aucun compte Windows sous lequel les agents s’exécuteront.The replication agent security model is a little bit different for Azure SQL Database managed instances, as there are no Windows accounts under which the agents will run. Au lieu de cela, tout doit être effectué par le biais de l’authentification SQL Server.Instead, everything must be done through SQL Server authentication.

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 ServerSQL Server .When a member of the sysadmin fixed server role configures replication, replication agents can be configured to impersonate the SQL ServerSQL Server Agent account. 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.This is done by not specifying a login and password for a replication agent; however, we do not recommend this approach. 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.Instead, as a security best practice, we recommend that you specify an account for each agent that has the minimum permissions that are described in the section "Permissions That Are Required by Agents" later in this topic.

Comme tous les exécutables, les agents de réplication sont exécutés dans le contexte d'un compte Windows.Replication agents, like all executables, run under the context of a Windows account. Les agents établissent des connexions de sécurité intégrée Windows en utilisant ces comptes.The agents make Windows Integrated Security connections by using this account. Le compte sous lequel l'agent s'exécute dépend de la manière dont l'agent est démarré :The account under which the agent runs depends on how the agent is started:

  • Démarrage de l’agent à partir d’un travail de l’Agent SQL ServerSQL Server (par défaut) : quand un travail de l’Agent SQL ServerSQL 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.Starting the agent from a SQL ServerSQL Server Agent job, the default: When a SQL ServerSQL Server Agent job is used to start a replication agent, the agent runs under the context of an account that you specify when you configure replication. Pour plus d'informations sur l'Agent SQL ServerSQL Server et la réplication, consultez la section « Sécurité de l'Agent sous l'Agent SQL Server » plus loin dans cette rubrique.For more information about SQL ServerSQL Server Agent and replication, see the section "Agent Security under SQL Server Agent" later in this topic. Pour plus d’informations sur les autorisations requises pour le compte sous lequel s’exécute l’Agent SQL ServerSQL Server, consultez Configurer l’Agent SQL Server.For information about the permissions that are required for the account under which SQL ServerSQL Server Agent runs, see Configure SQL Server Agent.

  • Démarrage de l’agent à partir d’une ligne de commande MS-DOS, directement ou par le biais d’un script : l’agent s’exécute dans le contexte du compte de l’utilisateur exécutant l’agent sur la ligne de commande.Starting the agent from an MS-DOS command line, either directly or through a script: The agent runs under the context of the account of the user that is running the agent at the command line.

  • 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.Starting the agent from an application that uses Replication Management Objects (RMO) or an ActiveX control: The agent runs under the context of the application that is calling RMO or the ActiveX control.

    Notes

    Les contrôles ActiveX sont déconseillés.ActiveX controls are deprecated.

Il est recommandé d'établir les connexions dans le contexte de sécurité intégrée Windows.We recommend that connections be made under the context of Windows Integrated Security. Pour des besoins de compatibilité descendante, la sécurité SQL ServerSQL Server peut également être utilisée.For backward compatibility, SQL ServerSQL Server Security can also be used. Pour plus d'informations sur les meilleures pratiques, consultez Replication Security Best Practices.For more information about best practices, see Replication Security Best Practices.

Autorisations requises par les agentsPermissions That Are Required by Agents

Les comptes sous lesquels les agents s'exécutent et établissent des connexions nécessitent différentes autorisations.The accounts under which agents run and make connections require a variety of permissions. Ces autorisations sont décrites dans le tableau suivant.These permissions are described in the following table. Il est recommandé d'exécuter chaque agent sous un compte Windows différent et d'accorder au compte uniquement les autorisations nécessaires.We recommend that each agent run under a different Windows account and the account should be granted only the required permissions. 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.For information about the publication access list (PAL), which is relevant for a number of agents, see Secure the Publisher.

Notes

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.User Account Control (UAC) in some Windows operating systems can prevent administrative access to the snapshot share. 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.You must therefore explicitly grant snapshot share permissions to the Windows accounts that are used by the Snapshot Agent, Distribution Agent, and Merge Agent. Vous devez effectuer cette opération même si les comptes Windows sont membres du groupe Administrateurs.You must do this even if the Windows accounts are members of the Administrators group. Pour plus d’informations, consultez Sécuriser le dossier d’instantanés.For more information, see Secure the Snapshot Folder.

AgentAgent AutorisationsPermissions
Agent d'instantanéSnapshot Agent Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution.The Windows account under which the agent runs is used when it makes connections to the Distributor. Ce compte doit obligatoirement :This account must:

- être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ;-At minimum, be a member of the db_owner fixed database role in the distribution database.

- disposer des autorisations de lecture, écriture et modification sur le partage de fichiers d’instantanés.-Have read, write, and modify permissions on the snapshot share.



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.Note that the account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.
l'Agent de lecture du journal ;Log Reader Agent Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution.The Windows account under which the agent runs is used when it makes connections to the Distributor. 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.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

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.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

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.When selecting the sync_type options replication support only, initialize with backup, or initialize from lsn, the log reader agent must run after executing sp_addsubscription, so that the set-up scripts are written to the distribution database. L'Agent de lecture du journal doit s'exécuter sous un compte membre du rôle serveur fixe sysadmin .The log reader agent must be running under an account that is a member of the sysadmin fixed server role. Lorsque l'option sync_type a la valeur Automatic, aucune action particulière de l'Agent de lecture du journal n'est requise.When the sync_type option is set to Automatic, no special log reader agent actions are required.
Agent de distribution pour un abonnement par envoi de données (push)Distribution Agent for a push subscription Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution.The Windows account under which the agent runs is used when it makes connections to the Distributor. Ce compte doit obligatoirement :This account must:

- être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ;-At minimum be a member of the db_owner fixed database role in the distribution database.

- être membre de la liste d’accès à la publication (PAL) ;-Be a member of the PAL.

- avoir les autorisations de lecture sur le partage des fichiers d’instantanés ;-Have read permissions on the snapshot share.

- 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.-Have read permissions on the installation directory of the OLE DB provider for the Subscriber if the subscription is for a non-SQL Server Subscriber.

- 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.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



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.Note that the account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database, or have equivalent permissions if the subscription is for a non-SQL Server Subscriber.

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.Also note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Agent de distribution pour un abonnement par extraction de données (pull)Distribution Agent for a pull subscription Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter à l'Abonné.The Windows account under which the agent runs is used when it makes connections to the Subscriber. 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.This account must at minimum be a member of the db_owner fixed database role in the subscription database. Le compte servant à se connecter au serveur de distribution doit obligatoirement :The account that is used to connect to the Distributor must:

- être membre de la liste d’accès à la publication (PAL) ;-Be a member of the PAL.

- avoir les autorisations de lecture sur le partage des fichiers d’instantanés ;-Have read permissions on the snapshot share.

- 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.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



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.Note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Agent de fusion pour un abonnement par envoi de données (push)Merge Agent for a push subscription Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de publication et au serveur de distribution.The Windows account under which the agent runs is used when it makes connections to the Publisher and Distributor. Ce compte doit obligatoirement :This account must:

- être au moins membre du rôle de base de données fixe db_owner dans la base de données de distribution ;-At minimum be a member of the db_owner fixed database role in the distribution database.

- être membre de la liste d’accès à la publication (PAL) ;-Be a member of the PAL.

- Être un compte de connexion associé à un utilisateur ayant des autorisations de lecture-écriture dans la base de données de publication.-Be a login that is associated with a user with read/write permissions in the publication database.

- avoir les autorisations de lecture sur le partage des fichiers d’instantanés ;-Have read permissions on the snapshot share.



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.Note that the account used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.
Agent de fusion pour un abonnement par extraction de données (pull)Merge Agent for a pull subscription Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter à l'Abonné.The Windows account under which the agent runs is used when it makes connections to the Subscriber. 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.This account must at minimum be a member of the db_owner fixed database role in the subscription database. Le compte servant à se connecter au serveur de publication et au serveur de distribution doit obligatoirement :The account that is used to connect to the Publisher and Distributor must:

- être membre de la liste d’accès à la publication (PAL) ;-Be a member of the PAL.

- Être un compte de connexion associé à un utilisateur ayant des autorisations de lecture-écriture dans la base de données de publication.-Be a login associated with a user with read/write permissions in the publication database.

- être un compte de connexion associé à un utilisateur enregistré dans la base de données de distribution.-Be a login associated with a user in the distribution database. l'utilisateur peut être un Guest ;The user can be the Guest user.

- avoir les autorisations de lecture sur le partage des fichiers d’instantanés ;-Have read permissions on the snapshot share.
Agent de lecture de la file d'attenteQueue Reader Agent Le compte Windows sous lequel s'exécute l'agent est utilisé pour se connecter au serveur de distribution.The Windows account under which the agent runs is used when it makes connections to the Distributor. 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.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

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.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

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.The account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.

Sécurité de l'Agent dans l'Agent SQL ServerAgent Security Under SQL Server Agent

Lorsque vous configurez la réplication à l'aide de procédures SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL ou RMO, un travail de l'Agent SQL ServerSQL Server est créé par défaut pour chaque agent.When you configure replication by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL procedures, or RMO, a SQL ServerSQL Server Agent job is created by default for each 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.Agents then run under the context of a job step, regardless of whether they run continuously, on a schedule, or on demand. Vous pouvez afficher ces travaux dans le dossier Jobs de SQL Server Management StudioSQL Server Management Studio.You can view these jobs under the Jobs folder in SQL Server Management StudioSQL Server Management Studio. Le tableau suivant donne la liste des noms des travaux.The following table lists the job names.

AgentAgent Nom du travailJob name
Agent d'instantanéSnapshot Agent <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<entier><Publisher>-<PublicationDatabase>-<Publication>-<integer>
Agent d'instantané pour une partition de publication de fusionSnapshot Agent for a merge publication partition Dyn_<ServeurPublication>-<BasededonnéesPublication>-<Publication>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
l'Agent de lecture du journal ;Log Reader Agent <ServeurPublication>-<BasededonnéesPublication>-<entier><Publisher>-<PublicationDatabase>-<integer>
Agent de fusion pour les abonnements extraitsMerge Agent for pull subscriptions <Serveur_Publication>-<Base_de_données_Publication>-<Publication>-<Abonné>-<Base_de_données_Abonnement>-<entier><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
Agent de fusion pour abonnements par envoi de données (push)Merge Agent for push subscriptions <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agent de distribution pour abonnements par envoi de données (push)Distribution Agent for push subscriptions <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agent de distribution pour abonnements par extraction de données (pull)Distribution Agent for pull subscriptions <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<BasededonnéesPublication>-<GUID><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>
Agent de distribution pour les abonnements par envoi de données aux Abonnés non SQL ServerDistribution Agent for push subscriptions to non-SQL Server Subscribers <ServeurPublication>-<BasededonnéesPublication>-<Publication>-<Abonné>-<entier><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agent de lecture de la file d'attenteQueue Reader Agent [<Distributeur>].<entier>[<Distributor>].<integer>

*Pour les abonnements par envoi de données aux publications Oracle, le nom du travail est <ServeurPublication>-<ServeurPublication> au lieu de <ServeurPublication>-<BasededonnéesPublication> .*For push subscriptions to Oracle publications, the job name is <Publisher>-<Publisher> instead of <Publisher>-<PublicationDatabase>.

**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> .**For pull subscriptions to Oracle publications, the job name is <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>.

Lorsque vous configurez la réplication, vous spécifiez les comptes sous lesquels les agents doivent être exécutés.When you configure replication, you specify accounts under which agents should run. 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 :However, all job steps run under the security context of a proxy; therefore, replication performs the following mappings internally for the agent accounts that you specify:

  • Le compte est d'abord mappé à des informations d'identification à l'aide de l'instruction Transact-SQLTransact-SQL CREATE CREDENTIAL .The account is first mapped to a credential by using the Transact-SQLTransact-SQL CREATE CREDENTIAL statement. Les proxys de l'AgentSQL ServerSQL Server utilisent les informations d'identification pour stocker les informations relatives aux comptes d'utilisateur Windows.SQL ServerSQL Server Agent proxies use credentials to store information about Windows user accounts.

  • La procédure stockée sp_add_proxy est appelée et les informations d'identification sont utilisées pour créer un proxy.The sp_add_proxy stored procedure is called, and the credential is used to create a proxy..

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é.This information is provided to help you understand what is involved in running agents with the appropriate security context. Il ne devrait pas être nécessaire d'interagir directement avec les informations d'identification ou les proxys qui ont été créés.You should not have to interact directly with the credentials or proxies that have been created.

Voir aussiSee Also

Replication Security Best Practices Replication Security Best Practices
Afficher et modifier les paramètres de sécurité de la réplication View and modify replication security settings
Sécuriser le dossier d’instantanésSecure the Snapshot Folder