Modelo de seguridad del Agente de replicaciónReplication Agent Security Model

El modelo de seguridad del agente de replicación permite un control concreto sobre las cuentas con las que los agentes de replicación se ejecutan y realizan conexiones: se puede especificar una cuenta diferente para cada agente.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. Para obtener más información sobre cómo especificar cuentas, vea Administrar inicios de sesión y contraseñas en la replicación.For more information about how to specify accounts, see Manage Logins and Passwords in Replication.

Importante

Cuando un miembro de rol fijo de servidor sysadmin configura la replicación, los agentes de replicación se pueden configurar para suplantar la cuenta del Agente 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. Esto se consigue no especificando ningún inicio de sesión ni contraseña para el agente de replicación; no obstante, no se recomienda este enfoque.This is done by not specifying a login and password for a replication agent; however, we do not recommend this approach. En su lugar, por seguridad, se recomienda especificar una cuenta para cada agente con los permisos mínimos descritos en la sección "Permisos requeridos por los agentes", más adelante en este tema.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.

Los agentes de replicación, como todos los ejecutables, se ejecutan en el contexto de una cuenta de Windows.Replication agents, like all executables, run under the context of a Windows account. Los agentes establecen conexiones de seguridad integrada de Windows usando esta cuenta.The agents make Windows Integrated Security connections by using this account. La cuenta con la que se ejecuta el agente depende de la forma en que se inicie el agente:The account under which the agent runs depends on how the agent is started:

  • Inicio del agente desde un trabajo del Agente SQL ServerSQL Server (valor predeterminado): cuando se utiliza un trabajo del Agente SQL ServerSQL Server para iniciar un agente de replicación, el agente se ejecuta en el contexto de la cuenta que se especifica al configurar la replicación.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. Para obtener más información acerca del Agente SQL ServerSQL Server y la replicación, vea la sección "Seguridad de agentes con el Agente SQL Server", más adelante en este tema.For more information about SQL ServerSQL Server Agent and replication, see the section "Agent Security under SQL Server Agent" later in this topic. Para obtener información sobre los permisos necesarios para la cuenta con la que se ejecuta el Agente SQL ServerSQL Server, vea Configurar el Agente 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.

  • Inicio del agente desde una línea de comandos de MS-DOS (directamente o mediante un script): el agente se ejecuta en el contexto de la cuenta del usuario que ejecuta el agente en la línea de comandos.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.

  • Inicio del agente desde una aplicación que utiliza Replication Management Objects (RMO) o un control ActiveX: el agente se ejecuta en el contexto de la aplicación que llama a RMO o al control 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.

    Nota

    Los controles ActiveX han quedado desusados.ActiveX controls are deprecated.

    Se recomienda que las conexiones se realicen en el contexto de la seguridad integrada de Windows.We recommend that connections be made under the context of Windows Integrated Security. Para mantener la compatibilidad con versiones anteriores, también se puede utilizar la seguridad de SQL ServerSQL Server .For backward compatibility, SQL ServerSQL Server Security can also be used. Para obtener más información acerca de las prácticas recomendadas, consulte Replication Security Best Practices.For more information about best practices, see Replication Security Best Practices.

Permisos requeridos por los agentesPermissions That Are Required by Agents

Las cuentas con las que los agentes se ejecutan y realizan conexiones requieren diversos permisos.The accounts under which agents run and make connections require a variety of permissions. Estos permisos se describen en la siguiente tabla.These permissions are described in the following table. Se recomienda que cada agente se ejecute con una cuenta de Windows diferente y que solo se concedan los permisos requeridos a la cuenta.We recommend that each agent run under a different Windows account and the account should be granted only the required permissions. Para obtener información sobre la lista de acceso a la publicación (PAL), que es importante para varios agentes, vea Proteger el publicador.For information about the publication access list (PAL), which is relevant for a number of agents, see Secure the Publisher.

Nota

Control de cuentas de usuario (UAC) de algunos sistemas operativos Windows puede impedir el acceso administrativo al recurso compartido de instantáneas.User Account Control (UAC) in some Windows operating systems can prevent administrative access to the snapshot share. Por lo tanto, debe conceder de forma explícita permisos del recurso compartido de instantáneas a las cuentas de Windows usadas por el Agente de instantáneas, el Agente de distribución y el Agente de mezcla.You must therefore explicitly grant snapshot share permissions to the Windows accounts that are used by the Snapshot Agent, Distribution Agent, and Merge Agent. Debe hacerlo incluso si las cuentas de Windows pertenecen al grupo Administradores.You must do this even if the Windows accounts are members of the Administrators group. Para obtener más información, vea Proteger la carpeta de instantáneas.For more information, see Secure the Snapshot Folder.

AgenteAgent PermisosPermissions
Agente de instantáneasSnapshot Agent La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor.The Windows account under which the agent runs is used when it makes connections to the Distributor. Esta cuenta debe:This account must:

− Ser como mínimo miembro del rol fijo de base de datos db_owner en la base de datos de distribución.-At minimum, be a member of the db_owner fixed database role in the distribution database.

− Tener permisos de lectura, escritura y modificación en el recurso compartido de instantáneas.-Have read, write, and modify permissions on the snapshot share.



Observe que la cuenta utilizada para conectarse al publicador debe ser miembro, como mínimo, del rol fijo de base de datos db_owner en la base de datos de publicaciones.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.
Agente de registro del LOGLog Reader Agent La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor.The Windows account under which the agent runs is used when it makes connections to the Distributor. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de distribución.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

La cuenta utilizada para conectarse al publicador debe ser miembro, como mínimo, del rol fijo de base de datos db_owner en la base de datos de publicaciones.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.

Al seleccionar las opciones replication support only , initialize with backupo initialize from lsnde sync_type, el agente de registro del LOG se debe ejecutar después de ejecutar sp_addsubscription, de modo que los scripts de instalación se escriban en la base de datos de distribución.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. El agente de registro del LOG se debe ejecutar con una cuenta que sea miembro del rol fijo de servidor sysadmin .The log reader agent must be running under an account that is a member of the sysadmin fixed server role. Cuando la opción sync_type se establece en Automatic, no se requiere ninguna acción especial del agente de registro del LOG.When the sync_type option is set to Automatic, no special log reader agent actions are required.
Agente de distribución para una suscripción de inserciónDistribution Agent for a push subscription La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor.The Windows account under which the agent runs is used when it makes connections to the Distributor. Esta cuenta debe:This account must:

− Ser como mínimo miembro del rol fijo de base de datos db_owner en la base de datos de distribución.-At minimum be a member of the db_owner fixed database role in the distribution database.

− Ser miembro de la PAL.-Be a member of the PAL.

− Tener permisos de lectura en el recurso compartido de instantáneas.-Have read permissions on the snapshot share.

− Tener permisos de lectura en el directorio de instalación del proveedor OLE DB para el suscriptor si la suscripción es para un suscriptor que no sea de 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.

− Cuando se replican datos de LOB, el agente de distribución debe tener permisos de escritura en la replicación C:\Archivos de programa\Microsoft SQL Server\XX\COMfolder , donde XX representa el instanceID.-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.



Observe que la cuenta usada para conectarse al suscriptor debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de suscripciones, o tener permisos equivalentes si la suscripción es para un suscriptor que no sea de 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.

Tenga en cuenta también que, cuando se usa -subscriptionstreams >= 2 en el agente de distribución, también se debe conceder el permiso View Server State en los suscriptores para detectar interbloqueos.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.
Agente de distribución para una suscripción de extracciónDistribution Agent for a pull subscription La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al suscriptor.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de suscripciones.This account must at minimum be a member of the db_owner fixed database role in the subscription database. La cuenta utilizada para conectarse al distribuidor debe:The account that is used to connect to the Distributor must:

− Ser miembro de la PAL.-Be a member of the PAL.

− Tener permisos de lectura en el recurso compartido de instantáneas.-Have read permissions on the snapshot share.

− Cuando se replican datos de LOB, el agente de distribución debe tener permisos de escritura en la replicación C:\Archivos de programa\Microsoft SQL Server\XX\COMfolder , donde XX representa el instanceID.-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.



Tenga en cuenta que, cuando se usa -subscriptionstreams >= 2 en el agente de distribución, también se debe conceder el permiso View Server State en los suscriptores para detectar interbloqueos.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.
Agente de mezcla para una suscripción de inserciónMerge Agent for a push subscription La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al publicador y al distribuidor.The Windows account under which the agent runs is used when it makes connections to the Publisher and Distributor. Esta cuenta debe:This account must:

− Ser como mínimo miembro del rol fijo de base de datos db_owner en la base de datos de distribución.-At minimum be a member of the db_owner fixed database role in the distribution database.

− Ser miembro de la PAL.-Be a member of the PAL.

− Ser un inicio de sesión asociado a un usuario en la base de datos de publicaciones.-Be a login that is associated with a user in the publication database.

− Tener permisos de lectura en el recurso compartido de instantáneas.-Have read permissions on the snapshot share.



Observe que la cuenta utilizada para conectarse al suscriptor debe ser miembro, como mínimo, del rol fijo de base de datos db_owner en la base de datos de suscripciones.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.
Agente de mezcla para una suscripción de extracciónMerge Agent for a pull subscription La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al suscriptor.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de suscripciones.This account must at minimum be a member of the db_owner fixed database role in the subscription database. La cuenta utilizada para conectarse al publicador y al distribuidor debe:The account that is used to connect to the Publisher and Distributor must:

− Ser miembro de la PAL.-Be a member of the PAL.

− Ser un inicio de sesión asociado a un usuario en la base de datos de publicaciones.-Be a login associated with a user in the publication database.

− Ser un inicio de sesión asociado a un usuario en la base de datos de distribución.-Be a login associated with a user in the distribution database. El usuario puede ser el usuario Guest .The user can be the Guest user.

− Tener permisos de lectura en el recurso compartido de instantáneas.-Have read permissions on the snapshot share.
Agente de lectura de colaQueue Reader Agent La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor.The Windows account under which the agent runs is used when it makes connections to the Distributor. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de distribución.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

La cuenta utilizada para conectarse al publicador debe ser miembro, como mínimo, del rol fijo de base de datos db_owner en la base de datos de publicaciones.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.

La cuenta utilizada para conectarse al suscriptor debe ser miembro, como mínimo, del rol fijo de base de datos db_owner en la base de datos de suscripciones.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.

Seguridad de agentes con el Agente SQL ServerAgent Security Under SQL Server Agent

Cuando se configura la replicación mediante SQL Server Management StudioSQL Server Management Studio, procedimientos de Transact-SQLTransact-SQL o RMO, se crea de forma predeterminada un trabajo del Agente SQL ServerSQL Server para cada agente.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. A continuación, los agentes se ejecutan en el contexto de un paso de trabajo, independientemente de si se ejecutan de forma continua, programada o a petición.Agents then run under the context of a job step, regardless of whether they run continuously, on a schedule, or on demand. Estos trabajos se pueden ver en la carpeta Trabajos 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. En la tabla siguiente se enumeran los nombres de los trabajos.The following table lists the job names.

AgenteAgent Nombre del trabajoJob name
Agente de instantáneasSnapshot Agent <publicador>-<baseDeDatosDePublicación>-<publicación>-<entero><Publisher>-<PublicationDatabase>-<Publication>-<integer>
Agente de replicación para una partición de publicación de combinaciónSnapshot Agent for a merge publication partition Dyn_<publicador>-<baseDeDatosDePublicación>-<publicación>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
Agente de registro del LOGLog Reader Agent <publicador>-<baseDeDatosDePublicación>-<entero><Publisher>-<PublicationDatabase>-<integer>
Agente de mezcla para suscripciones de extracciónMerge Agent for pull subscriptions <publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<baseDeDatosDeSuscripciones>-<entero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
Agente de mezcla para suscripciones de inserciónMerge Agent for push subscriptions <publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<entero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agente de distribución para suscripciones de inserciónDistribution Agent for push subscriptions <publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<entero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>**
Agente de distribución para suscripciones de extracciónDistribution Agent for pull subscriptions <publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<baseDeDatosDePublicación>-<GUID>\<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>\
Agente de distribución para suscripciones de inserción en suscriptores que no sean de SQL ServerDistribution Agent for push subscriptions to non-SQL Server Subscribers <publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<entero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agente de lectura de colaQueue Reader Agent [<distribuidor>].<entero>[<Distributor>].<integer>

*Para suscripciones de inserción a publicaciones de Oracle, el nombre del trabajo es <publicador>-<publicador> en lugar de <publicador>-<baseDeDatosDePublicación>.*For push subscriptions to Oracle publications, the job name is <Publisher>-<Publisher> instead of <Publisher>-<PublicationDatabase>.

**Para suscripciones de extracción a publicaciones de Oracle, el nombre del trabajo es <publicador>-<baseDeDatosDeDistribución> en lugar de <publicador>-<baseDeDatosDePublicación>.**For pull subscriptions to Oracle publications, the job name is <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>.

Al configurar la replicación se especifican las cuentas en las que se ejecutarán los agentes.When you configure replication, you specify accounts under which agents should run. No obstante, todos los pasos del trabajo se ejecutan en el contexto de seguridad de un proxy, por lo que la replicación lleva a cabo internamente las siguientes asignaciones para las cuentas de agente que especifique: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:

  • La cuenta se asigna primero a una credencial utilizando la instrucción Transact-SQLTransact-SQL CREATE CREDENTIAL statement.The account is first mapped to a credential by using the Transact-SQLTransact-SQL CREATE CREDENTIAL statement. Las cuentas de proxy del Agente SQL ServerSQL Server utilizan credenciales para almacenar información acerca de las cuentas de usuario de Windows. Agent proxies use credentials to store information about Windows user accounts.

  • Se llama al procedimiento almacenado sp_add_proxy y, a continuación, se utiliza la credencial para crear un proxy.The sp_add_proxy stored procedure is called, and the credential is used to create a proxy..

Nota

Esta información se facilita para ayudarle a entender las implicaciones de ejecutar agentes con el contexto de seguridad adecuado.This information is provided to help you understand what is involved in running agents with the appropriate security context. No debería ser necesario interactuar directamente con las credenciales o los proxy que se hayan creado.You should not have to interact directly with the credentials or proxies that have been created.

Vea tambiénSee Also

Replication Security Best Practices Replication Security Best Practices
Seguridad y protección (replicación) Security and Protection (Replication)
Proteger la carpeta de instantáneas Secure the Snapshot Folder