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.
Importante |
---|
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çã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çã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:
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:
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.
|
||
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:
|
||
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:
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:
|
||
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çã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