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

O modelo de segurança do agente de replicação proporciona um controle refinado nas contas sob as quais os agentes de replicação executam e fazem conexões: uma conta diferente pode ser especificada para cada agente. Para obter informações sobre como especificar as contas, consulte Gerenciar logons e senhas na replicação.

Observação importanteImportante

Quando um membro da função fixa do servidor sysadmin configura a replicação, os agentes de replicação podem ser configurados para representar a conta do SQL Server Agent Isso é realizado não especificando um logon nem uma senha para um agente de replicação, contudo, não recomendamos essa abordagem. Em vez disso, como a melhor prática de segurança, recomendamos especificar uma conta para cada agente que tenha as permissões mínimas descritas na seção "Permissões exigidas pelos agentes", mais adiante nesse tópico.

Os agentes de replicação, como todos os executáveis, são executados sob o 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 executa depende de como o agente é iniciado:

  • Iniciando o agente 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 executa sob o contexto de uma conta que é especificada quando a replicação é configurada. Para obter mais informações sobre o SQL Server Agent e replicação, consulte a seção "Segurança do Agente sob SQL Server Agent", mais adiante nesse tópico. Para obter informações sobre as permissões que são necessárias para a conta sob a qual o SQL Server Agent executa, consulte Configurar o SQL Server Agent.

  • Iniciando o agente de uma linha de comando MS-DOS, diretamente ou através de um script: o agente executa sob o contexto da conta do usuário que estiver executando o agente na linha de comando.

  • Iniciando o agente de um aplicativo que usa o RMO (Replication Management Objects) ou um controle ActiveX: o agente executa sob o contexto do aplicativo que estiver chamando o RMO ou o controle ActiveX.

    ObservaçãoObservação

    Os controles ActiveX são preteridos.

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

Permissões exigidas pelos agentes

As contas sob as quais os agentes executam e fazem conexões requerem uma variedade de permissões. Essas permissões estão descritas na tabela a seguir. Recomendamos que cada agente execute sob uma conta do Windows diferente, e que a conta deve receber somente as permissões necessárias. Para obter informações sobre a lista de acesso à publicação (PAL), relevantes para vários agentes, consulte Proteger o Publicador.

ObservaçãoObservação

O UAC (User Account Control) no Windows Vista pode impedir o acesso administrativo ao compartilhamento de instantâneos. Portanto, você deve conceder permissões de compartilhamento de instantâneos explicitamente às contas do Windows usadas pelo Snapshot Agent, pelo Distribution Agent, e pelo Merge Agent. Faça isso, mesmo se as contas do Windows forem membros do grupo de Administradores. Para obter mais informações, consulte Proteger uma pasta de instantâneo.

Agente

Permissões

Snapshot Agent

A conta do Windows sob a qual o agente executa é usada quando fizer conexões ao Distribuidor. Essa 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.

A conta usada para conexão com o Publicador deve ser, no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de publicação.

Log Reader Agent

A conta do Windows sob a qual o agente executa é usada quando fizer conexões ao Distribuidor. Essa conta deve ser no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de distribuição.

A conta usada para conexão com o Publicador deve ser, no mínimo, um membro da função de banco de dados fixa db_owner no banco de dados de publicação.

Ao selecionar as opções de sync_type, replication support only, initialize with backup, ou initialize from lsn, o Agente de Leitor de Log deve ser executado após a execução de sp_addsubscription, para que os scripts configurados sejam gravados no banco de dados de distribuição. O Agente de Leitor de Log deve ser executado sob uma conta que seja membro da função de servidor fixa sysadmin. Quando a opção sync_type estiver definida como Automatic, nenhuma ação especial do Agente de Leitor de Log será necessária.

Agente de Distribuição para uma assinatura push

A conta do Windows sob a qual o agente executa é usada quando fizer conexões ao Distribuidor. Essa conta deve:

  • Ser, no mínimo, um membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

  • Ser um membro da 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 um Assinante não SQL Server.

A conta usada para conectar-se com o Assinante deverá ser, no mínimo, um 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 um Assinante não SQL Server.

ObservaçãoObservação

Ao usar -subscriptionstreams >= 2 no agente de distribuição, você deve também conceder a permissão View Server State nos assinantes para detectar deadlocks.

Distribution Agent para uma assinatura pull

A conta do Windows sob a qual o agente executa é usada quando ele se conecta com o Assinante. Essa conta deve ser, no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de assinatura.

A conta usada para conectar-se ao Distribuidor deve:

  • Ser um membro da PAL.

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

ObservaçãoObservação

Ao usar -subscriptionstreams >= 2 no agente de distribuição, você deve também conceder a permissão View Server State nos assinantes para detectar deadlocks.

Merge Agent para uma assinatura push

A conta do Windows sob a qual o agente executa é usada quando ele se conecta ao Publicador e o Distribuidor. Essa conta deve:

  • Ser, no mínimo, um membro da função de banco de dados fixa db_owner no banco de dados de distribuição.

  • Ser um membro da PAL.

  • Ser um logon associado a um usuário no banco de dados de publicação.

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

A conta usada para conectar-se ao Assinante deve ser, no mínimo, um 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 executa é usada quando ele se conecta com o Assinante. Essa conta deve ser, no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de assinatura.

A conta usada para conectar-se ao Publicador e o Distribuidor deve:

  • Ser um membro da PAL.

  • Ser um logon associado a um usuário no banco de dados de publicação.

  • Ser um logon associado a um usuário no banco de dados de distribuição. O usuário pode ser o usuário Guest.

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

Queue Reader Agent

A conta do Windows sob a qual o agente executa é usada quando fizer conexões ao Distribuidor. Essa conta deve ser no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de distribuição.

A conta usada para conexão com o Publicador deve ser, no mínimo, um membro da função de banco de dados fixa db_owner, no banco de dados de publicação.

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

Segurança do agente sob o SQL Server Agent

Ao configurar a replicação usando o SQL Server Management Studio, procedimentos Transact-SQL ou RMO, um trabalho do SQL Server Agent é criado, por padrão, para cada agente. Os agentes executam sob o contexto de uma etapa de trabalho, independentemente de a execução ser contínua, por agendamento ou sob demanda. Esses trabalhos podem ser visualizados na pasta Trabalhos, no SQL Server Management Studio. A tabela a seguir lista o nome dos trabalhos.

Agente

Nome do trabalho

Snapshot Agent

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<inteiro>

Snapshot Agent para uma partição de publicação de mesclagem

Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>

Log Reader Agent

<Publicador>-<Banco_de_Dados_de_Publicação>-<inteiro>

Merge Agent para assinaturas pull

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<Assinante>-<Banco_de_Dados_de_Assinatura>-<inteiro>

Merge Agent para assinaturas push

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<Assinante>-<inteiro>

Distribution Agent para assinaturas push

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<Assinante>-<inteiro>1

Distribution Agent para assinaturas pull

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<Assinante>-<Banco_de_Dados_de_Assinatura>-<GUID>2

Distribution Agent para assinaturas push para Assinantes não SQL Server

<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<Assinante>-<inteiro>

Queue Reader Agent

[<Distributor>].<integer>

1 Para assinaturas push em publicações Oracle, o nome do trabalho é <Publicador>-<Publicador> em vez de <Publicador>-<Banco_de_Dados_de_Publicação>.

2 Para assinaturas pull em publicações Oracle, o nome do trabalho é <Publicador>-<Banco_de_Dados_de_Distribuição> em vez de <Publicador>-<Banco_de_Dados_de_Publicação>.

Ao configurar a replicação, você especifica as contas sob as quais os agentes devem executar. Porém, todas as etapas do trabalho executam sob o contexto de segurança de um proxy; portanto, a replicação realiza internamente os seguintes mapeamentos para as contas de agentes que você especificar:

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

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

ObservaçãoObservação

Essas informações são fornecidas para auxiliar a entender o que está envolvido na execução de agentes com o contexto de segurança adequado. Você não deve interagir diretamente com as credenciais ou com os proxies que foram criados.

Consulte também

Conceitos

Práticas recomendadas em relação à segurança de replicação

Proteger uma pasta de instantâneo

Outros recursos

Segurança e proteção (Replicação)