Modelo de seguridad del Agente de replicación
Se aplica a: SQL Server
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. Para más información sobre cómo especificar cuentas, vea Identidad y control de acceso (replicación).
El modelo de seguridad del agente de replicación es un poco diferente para Azure SQL Managed Instance, ya que no hay cuentas de Windows con las que se ejecutarán los agentes. En su lugar, todo debe realizarse a través de la autenticación de SQL Server.
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 Server. 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. 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.
Los agentes de replicación, como todos los ejecutables, se ejecutan en el contexto de una cuenta de Windows. Los agentes establecen conexiones de seguridad integrada de Windows usando esta cuenta. La cuenta con la que se ejecuta el agente depende de la forma en que se inicie el agente:
Inicio del agente desde un trabajo del Agente SQL Server (valor predeterminado): cuando se utiliza un trabajo del Agente SQL 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. Para obtener más información acerca del Agente SQL Server y la replicación, vea la sección "Seguridad de agentes con el Agente SQL Server", más adelante en este tema. Para obtener información sobre los permisos necesarios para la cuenta con la que se ejecuta el Agente SQL Server, consulte Configurar el Agente SQL Server.
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.
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.
Nota:
Los controles ActiveX han quedado desusados.
Se recomienda que las conexiones se realicen en el contexto de la seguridad integrada de Windows. Para mantener la compatibilidad con versiones anteriores, también se puede utilizar la seguridad de SQL Server. Para obtener más información acerca de las prácticas recomendadas, consulte Replication Security Best Practices.
Permisos requeridos por los agentes
Las cuentas con las que los agentes se ejecutan y realizan conexiones requieren diversos permisos. Estos permisos se describen en la siguiente tabla. Se recomienda que cada agente se ejecute con una cuenta de Windows diferente y que solo se concedan los permisos requeridos a la cuenta. Para obtener información sobre la lista de acceso a la publicación (PAL), que es importante para varios agentes, vea Proteger el publicador.
Nota:
Control de cuentas de usuario (UAC) de algunos sistemas operativos Windows puede impedir el acceso administrativo al recurso compartido de instantáneas. 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. Debe hacerlo incluso si las cuentas de Windows pertenecen al grupo Administradores. Para obtener más información, vea Proteger la carpeta de instantáneas.
Agente | Permisos |
---|---|
Agente de instantáneas | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor. 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. − Tener permisos de lectura, escritura y modificación en el recurso compartido de instantáneas. 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. |
Agente de registro del LOG | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor. 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. 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. 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. El agente de registro del LOG se debe ejecutar con una cuenta que sea miembro del rol fijo de servidor sysadmin . Cuando la opción sync_type se establece en Automatic, no se requiere ninguna acción especial del agente de registro del LOG. |
Agente de distribución para una suscripción de inserción | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor. 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. − Ser miembro de la PAL. − Tener permisos de lectura en el recurso compartido de instantáneas. − 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. − 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. 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. 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. |
Agente de distribución para una suscripción de extracción | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al suscriptor. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de suscripciones. La cuenta utilizada para conectarse al distribuidor debe: − Ser miembro de la PAL. − Tener permisos de lectura en el recurso compartido de instantáneas. − 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. 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. |
Agente de mezcla para una suscripción de inserción | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al publicador y al distribuidor. 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. − Ser miembro de la PAL. − Ser un inicio de sesión asociado a un usuario con permisos de lectura/escritura en la base de datos de publicaciones. − Tener permisos de lectura en el recurso compartido de instantáneas. 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. |
Agente de mezcla para una suscripción de extracción | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al suscriptor. Esta cuenta debe ser, como mínimo, miembro del rol fijo de base de datos db_owner en la base de datos de suscripciones. La cuenta utilizada para conectarse al publicador y al distribuidor debe: − Ser miembro de la PAL. − Ser un inicio de sesión asociado a un usuario con permisos de lectura/escritura en la base de datos de publicaciones. − Ser un inicio de sesión asociado a un usuario en la base de datos de distribución. El usuario puede ser el usuario Guest . − Tener permisos de lectura en el recurso compartido de instantáneas. |
Agente de lectura de cola | La cuenta de Windows con la que se ejecuta el agente se utiliza al realizar conexiones al distribuidor. 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. 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. 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. |
Seguridad de agentes con el Agente SQL Server
Cuando se configura la replicación mediante SQL Server Management Studio, procedimientos de Transact-SQL o RMO, se crea de forma predeterminada un trabajo del Agente SQL Server para cada agente. 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. Estos trabajos se pueden ver en la carpeta Trabajos de SQL Server Management Studio. En la tabla siguiente se enumeran los nombres de los trabajos.
Agente | Nombre del trabajo |
---|---|
Agente de instantáneas | <Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<entero> |
Agente de replicación para una partición de publicación de combinación | Dyn_<Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<GUID> |
Agente de registro del LOG | <Publicador>-<BaseDeDatosDePublicación>-<entero> |
Agente de mezcla para suscripciones de extracción | <Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<Suscriptor>-<BaseDeDatosDeSuscripción>-<entero> |
Agente de mezcla para suscripciones de inserción | <Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<Suscriptor>-<entero> |
Agente de distribución para suscripciones de inserción | <Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<Suscriptor>-<entero> |
Agente de distribución para suscripciones de extracción | <Publicador>-<baseDeDatosDePublicación>-<publicación>-<suscriptor>-<baseDeDatosDeSuscripción>-<GUID> |
Agente de distribución para suscripciones de inserción en suscriptores que no sean de SQL Server | <Publicador>-<BaseDeDatosDePublicación>-<Publicación>-<Suscriptor>-<entero> |
Agente de lectura de cola | [<Distribuidor>].<entero> |
Para suscripciones de inserción a publicaciones de Oracle, el nombre del trabajo es <Publicador>-<Publicador> en lugar de <Publicador>:<baseDeDatosDePublicación>.
**Para suscripciones de extracción a publicaciones de Oracle, el nombre del trabajo es <Publicador>-<baseDeDatosDeDistribución> en lugar de <Publicador>-<baseDeDatosDePublicación>.
Al configurar la replicación se especifican las cuentas en las que se ejecutarán los agentes. 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:
La cuenta se asigna primero a una credencial utilizando la instrucción CREATE CREDENTIAL de Transact-SQL. Las cuentas de proxy del AgenteSQL Server utilizan credenciales para almacenar información acerca de las cuentas de usuario de Windows.
Se llama al procedimiento almacenado sp_add_proxy y, a continuación, se utiliza la credencial para crear un proxy.
Nota:
Esta información se facilita para ayudarle a entender las implicaciones de ejecutar agentes con el contexto de seguridad adecuado. No debería ser necesario interactuar directamente con las credenciales o los proxy que se hayan creado.