Partilhar via


Modelo de segurança do agente de replicação

Aplica-se a:SQL Server

O modelo de segurança do agente de replicação permite um controle refinado sobre as contas sob as quais os agentes de replicação são executados e fazem conexões: uma conta diferente pode ser especificada para cada agente. Para obter mais informações sobre como especificar contas, consulte Controle de identidade e acesso para replicação.

O modelo de segurança do agente de replicação é um pouco diferente para a Instância Gerenciada SQL do Azure, pois não há contas do Windows sob as quais os agentes serão executados. Em vez disso, tudo deve ser feito por meio da autenticação do SQL Server.

Importante

Quando um membro da função de servidor fixa sysadmin configura a replicação, os agentes de replicação podem ser configurados para representar a conta do SQL Server Agent. Isso é feito não especificando um login e senha para um agente de replicação; no entanto, não recomendamos esta abordagem. Em vez disso, como prática recomendada de segurança, recomendamos que você especifique uma conta para cada agente que tenha as permissões mínimas descritas na seção "Permissões exigidas pelos agentes", mais adiante neste tópico.

Os agentes de replicação, como todos os executáveis, são executados no contexto de uma conta do Windows. Os agentes fazem conexões de Segurança Integrada do Windows usando essa conta. A conta sob a qual o agente é executado depende de como o agente é iniciado:

  • Iniciando o agente a partir de um trabalho do SQL Server Agent, o padrão: quando um trabalho do SQL Server Agent é usado para iniciar um agente de replicação, o agente é executado no contexto de uma conta que você especifica ao configurar a replicação. Para obter mais informações sobre o SQL Server Agent e a replicação, consulte a seção "Segurança do agente no SQL Server Agent", mais adiante neste tópico. Para obter informações sobre as permissões necessárias para a conta na qual o SQL Server Agent é executado, consulte Configurar o SQL Server Agent.

  • Iniciando o agente a partir de uma linha de comando MS-DOS, diretamente ou por meio de um script: o agente é executado sob o contexto da conta do usuário que está executando o agente na linha de comando.

  • Iniciando o agente a partir de um aplicativo que usa o RMO (Replication Management Objects) ou um controle ActiveX: o agente é executado no contexto do aplicativo que está chamando o RMO ou o controle ActiveX.

    Observação

    Os controles ActiveX foram preteridos.

Recomendamos que as conexões sejam feitas no contexto da Segurança Integrada do Windows. Para compatibilidade com versões anteriores, a Segurança do SQL Server também pode ser usada. Para obter mais informações sobre práticas recomendadas, consulte Práticas recomendadas de segurança de replicação.

Permissões exigidas pelos agentes

As contas sob as quais os agentes executam e fazem conexões exigem uma variedade de permissões. Essas permissões são descritas na tabela a seguir. Recomendamos que cada agente seja executado em uma conta diferente do Windows e que a conta receba apenas as permissões necessárias. Para obter informações sobre a lista de acesso à publicação (PAL), que é relevante para vários agentes, consulte Secure the Publisher.

Observação

O Controle de Conta de Usuário (UAC) em alguns sistemas operacionais Windows pode impedir o acesso administrativo ao compartilhamento de instantâneo. Portanto, você deve conceder explicitamente permissões de compartilhamento de instantâneo às contas do Windows usadas pelo Snapshot Agent, Distribution Agent e Merge Agent. Você deve fazer isso mesmo se as contas do Windows forem membros do grupo Administradores. Para obter mais informações, consulte Proteger a pasta de snapshots.

Agente Permissions
Agente de instantâneo A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Distribuidor. Esta conta deve:

-No mínimo, ser um membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

-Ter permissões de leitura, gravação e modificação no compartilhamento de instantâneo.



Observe que a conta utilizada para se ligar ao Publisher deve, no mínimo, ser membro da função de base de dados fixa db_owner na base de dados de publicação.
Agente Leitor de Logs A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Distribuidor. Essa conta deve, no mínimo, ser membro da função fixa de banco de dados db_owner no banco de dados de distribuição.

A conta usada para se conectar ao Publisher deve, no mínimo, pertencer à função fixa de banco de dados db_owner no banco de dados de publicação.

Ao selecionar as opções sync_typesomente suporte à replicação, inicializar com backup ou inicializar a partir do lsn, o agente do leitor de logs deve ser executado após a execução do sp_addsubscription, para que os scripts de configuração sejam gravados no banco de dados de distribuição. O agente do leitor de logs deve ser executado em uma conta que seja membro da função de servidor predefinida sysadmin. Quando a opção sync_type é definida como Automático, nenhuma ação especial do agente do leitor de logs é necessária.
Agente de distribuição para uma assinatura push A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Distribuidor. Esta conta deve:

-No mínimo, ser membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

-Ser membro do PAL.

-Ter permissões de leitura no compartilhamento de instantâneo.

-Ter permissões de leitura no diretório de instalação do provedor OLE DB para o Assinante se a assinatura for para um Assinante que não seja do SQL Server.

-Ao replicar dados LOB, o agente de distribuição deve ter permissões de gravação na pasta de replicação C:\Arquivos de Programas\Microsoft SQL Server\XX\COM , onde XX representa o instanceID.



Observe que a conta usada para se conectar ao Assinante deve, no mínimo, ser membro da função de banco de dados fixa db_owner no banco de dados de assinatura ou ter permissões equivalentes se a assinatura for para um Assinante que não seja do SQL Server.

Observe também que, ao usar -subscriptionstreams >= 2 no agente de distribuição, você também deve conceder a permissão Exibir Estado do Servidor nos assinantes para detetar bloqueios.
Agente de distribuição para uma assinatura pull A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Assinante. Esta conta deve:

-No mínimo, ser membro da função fixa de banco de dados db_owner no banco de dados de assinatura.

A conta usada para se conectar ao Distribuidor deve:

-No mínimo, ser membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

-Ser membro do PAL.

-Ter permissões de leitura no compartilhamento de instantâneo.

-Ao replicar dados LOB, o agente de distribuição deve ter permissões de gravação na pasta de replicação C:\Arquivos de Programas\Microsoft SQL Server\XX\COM , onde XX representa o instanceID.



Observe que, ao usar -subscriptionstreams >= 2 no agente de distribuição, você também deve conceder a permissão Exibir Estado do Servidor nos assinantes para detetar bloqueios.
Merge Agent para uma assinatura push A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Editor e o Distribuidor. Esta conta deve:

-No mínimo, ser membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

-Ser membro do PAL.

-Ser um login associado a um utilizador com permissões de leitura/gravação na base de dados de publicação.

-Ter permissões de leitura no compartilhamento de instantâneo.



Observe que a conta usada para se conectar ao Assinante deve, no mínimo, ser membro da função de banco de dados fixa db_owner no banco de dados de assinatura.
Merge Agent para uma assinatura pull A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Assinante. Essa conta deve, no mínimo, ser membro da função fixa de banco de dados db_owner no banco de dados de assinatura. A conta usada para se conectar ao Editor e ao Distribuidor deve:

-Ser membro do PAL.

-Ser um login associado a um utilizador com permissões de leitura/escrita na base de dados de publicação.

-Ser um login associado a um utilizador na base de dados de distribuição. O usuário pode ser o usuário convidado .

-Ter permissões de leitura no compartilhamento de instantâneo.
Agente leitor de filas A conta do Windows sob a qual o agente é executado é usada quando ele faz conexões com o Distribuidor. Essa conta deve, no mínimo, ser membro da função fixa de banco de dados db_owner no banco de dados de distribuição.

A conta usada para se conectar ao Publisher deve, no mínimo, pertencer à função fixa de banco de dados db_owner no banco de dados de publicação.

A conta usada para se conectar ao Assinante deve, no mínimo, ser membro da função fixa de banco de dados db_owner no banco de dados de assinatura.

Segurança do agente no SQL Server Agent

Quando você configura a replicação usando o SQL Server Management Studio, procedimentos de Transact-SQL ou RMO, um trabalho do SQL Server Agent é criado por padrão para cada agente. Os agentes são então executados no contexto de um passo de tarefa, independentemente de serem executados continuamente, de acordo com uma programação ou sob demanda. Você pode exibir esses trabalhos na pasta Trabalhos no SQL Server Management Studio. A tabela a seguir lista os nomes dos trabalhos.

Agente Nome do trabalho
Agente de instantâneo <Editora-PublicationDatabase-Publication-integer><><><>
Agente de Snapshot para uma partição de publicação de mesclagem Dyn_<Publicadora>-<Base de Dados de Publicação>-<Publicação>-<GUID>
Agente Leitor de Logs <Publisher-PublicationDatabase-Inteiro><><>
Merge Agent para assinaturas pull <Publicador-Base de Dados de Publicação-Publicação-Assinante-Base de Dados de Subscrição-inteiro><><><><><>
Merge Agent para assinaturas push <Editor-BaseDeDadosDePublicação-Publicação-Subscritor-Inteiro><><><><>
Agente de distribuição para assinaturas push <Editor-BaseDeDadosDePublicação-Publicação-Subscritor-Inteiro><><><><>
Agente de distribuição para assinaturas de pull <Publicador>-<BaseDeDadosDePublicações>-<Publicação>-<Assinante>-<BaseDeDadosDeAssinaturas>-<GUID>
Agente de Distribuição para assinaturas push a assinantes não SQL Server <Editor-BaseDeDadosDePublicação-Publicação-Subscritor-Inteiro><><><><>
Agente leitor de filas [<Distribuidor>].<int>

*Para assinaturas push para publicações Oracle, o nome do trabalho é <Publisher-Publisher><> em vez de <Publisher-PublicationDatabase><>.

**Para assinaturas pull para publicações Oracle, o nome do trabalho é <Publisher-DistributionDatabase><> em vez de <Publisher-PublicationDatabase><>.

Ao configurar a replicação, você especifica as contas sob as quais os agentes devem ser executados. No entanto, todas as etapas de trabalho são executadas sob o contexto de segurança de um proxy; Portanto, a replicação executa os seguintes mapeamentos internamente para as contas de agente especificadas:

  • A conta é primeiro mapeada para uma credencial usando a instrução Transact-SQL CREATE CREDENTIAL . Os proxies do SQL Server Agent usam credenciais para armazenar informações sobre contas de usuário do Windows.

  • O procedimento armazenado sp_add_proxy é chamado e a credencial é usada para criar um proxy.

Observação

Essas informações são fornecidas para ajudá-lo/a a entender os processos envolvidos na execução de agentes com o contexto de segurança apropriado. Não deve ser necessário interagir diretamente com as credenciais ou proxies que foram criados.