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 Gerenciando 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 Configurando 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.

ObservaçãoObservação

Os scripts de replicação criados do SQL Server 2000 devem ser atualizados para o SQL Server 2008, para aproveitar as vantagens dos aprimoramentos de segurança. Para obter mais informações, consulte Como atualizar scripts de replicação (Programação Transact-SQL 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 Protegendo 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 Protegendo uma pasta de instantâneo.

Agente

Permissões

Snapshot Agent

A conta do Windows sob a qual o agente é executado é usada para estabelecer conexões com 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.

  • 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 ele faz conexões com 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, banco de dados de publicação.

Distribution Agent para uma assinatura push

A conta de Windows sob a qual o agente executa é usada quando ele se conecta com 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.

  • 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 deve 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.

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.

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âneos.

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âneos.

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_<Publicador>-<Banco_de_Dados_de_Publicação>-<Publicação>-<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

[<Distribuidor>] .<inteiro>

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. Para obter mais informações sobre os proxies, consulte Criando proxies do SQL Server Agent.

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.