Modello di sicurezza dell'agente di replicaReplication Agent Security Model

Il modello di sicurezza dell'agente di replica consente un controllo accurato degli account utilizzati per l'esecuzione e le connessioni degli agenti. È possibile specificare un account diverso per ogni agente.The replication agent security model allows for fine-grained control over the accounts under which replication agents run and make connections: A different account can be specified for each agent. Per altre informazioni su come specificare gli account, vedere Gestire gli account di accesso e le password nella replica.For more information about how to specify accounts, see Manage Logins and Passwords in Replication.

Importante

Quando un membro del ruolo predefinito del server sysadmin configura la replica, è possibile configurare gli agenti di replica in modo che rappresentino l'account di SQL ServerSQL Server Agent.When a member of the sysadmin fixed server role configures replication, replication agents can be configured to impersonate the SQL ServerSQL Server Agent account. A tale scopo è necessario non specificare un account di accesso e una password per un agente di replica. Si tratta comunque di un approccio non consigliato.This is done by not specifying a login and password for a replication agent; however, we do not recommend this approach. Ai fini della sicurezza, è consigliabile invece specificare un account per ogni agente dotato delle autorizzazioni minime descritte nella sezione "Autorizzazioni richieste per gli agenti" più avanti in questo argomento.Instead, as a security best practice, we recommend that you specify an account for each agent that has the minimum permissions that are described in the section "Permissions That Are Required by Agents" later in this topic.

Gli agenti di replica, come tutti i file eseguibili, vengono eseguiti nel contesto di un account di Windows.Replication agents, like all executables, run under the context of a Windows account. Utilizzano tale account per le connessioni con sicurezza integrata di Windows.The agents make Windows Integrated Security connections by using this account. L'account con il quale viene eseguito l'agente dipende dalla modalità di avvio di quest'ultimo:The account under which the agent runs depends on how the agent is started:

  • Avvio dell'agente da un processo predefinito di SQL ServerSQL Server Agent: quando si utilizza un processo di SQL ServerSQL Server Agent per avviare un agente di replica, l'agente viene eseguito nel contesto di un account specificato al momento della configurazione della replica.Starting the agent from a SQL ServerSQL Server Agent job, the default: When a SQL ServerSQL Server Agent job is used to start a replication agent, the agent runs under the context of an account that you specify when you configure replication. Per ulteriori informazioni su SQL ServerSQL Server Agent e la replica, vedere la sezione "Sicurezza agente in SQL Server Agent" più avanti in questo argomento.For more information about SQL ServerSQL Server Agent and replication, see the section "Agent Security under SQL Server Agent" later in this topic. Per altre informazioni sulle autorizzazioni necessarie per l'account usato per l'esecuzione di SQL ServerSQL Server Agent, vedere Configurare SQL Server Agent.For information about the permissions that are required for the account under which SQL ServerSQL Server Agent runs, see Configure SQL Server Agent.

  • Avvio dell'agente da una riga dei comandi MS-DOS, direttamente o tramite uno script: l'agente viene eseguito nel contesto dell'account dell'utente che esegue l'agente dalla riga di comando.Starting the agent from an MS-DOS command line, either directly or through a script: The agent runs under the context of the account of the user that is running the agent at the command line.

  • Avvio dell'agente da un'applicazione che utilizza oggetti RMO (Replication Management Objects) o un controllo ActiveX: l'agente viene eseguito nel contesto dell'applicazione che chiama gli oggetti RMO o il controllo ActiveX.Starting the agent from an application that uses Replication Management Objects (RMO) or an ActiveX control: The agent runs under the context of the application that is calling RMO or the ActiveX control.

    Nota

    I controlli ActiveX sono deprecati.ActiveX controls are deprecated.

    È consigliabile stabilire le connessioni nel contesto della sicurezza integrata di Windows.We recommend that connections be made under the context of Windows Integrated Security. Per motivi di compatibilità con le versioni precedenti, è anche possibile utilizzare la sicurezza di SQL ServerSQL Server .For backward compatibility, SQL ServerSQL Server Security can also be used. Per ulteriori informazioni sulle procedure consigliate, vedere Replication Security Best Practices.For more information about best practices, see Replication Security Best Practices.

Autorizzazioni richieste per gli agentiPermissions That Are Required by Agents

Gli account utilizzati per l'esecuzione e le connessioni degli agenti richiedono varie autorizzazioni.The accounts under which agents run and make connections require a variety of permissions. Tali autorizzazioni sono descritte nella tabella seguente.These permissions are described in the following table. È consigliabile eseguire ogni agente con un account di Windows differente e assegnare all'account solo le autorizzazioni necessarie.We recommend that each agent run under a different Windows account and the account should be granted only the required permissions. Per informazioni sull'elenco di accesso alla pubblicazione, rilevante per numerosi agenti, vedere Proteggere il server di pubblicazione.For information about the publication access list (PAL), which is relevant for a number of agents, see Secure the Publisher.

Nota

Controllo account utente in alcuni sistemi operativi Windows può impedire l'accesso amministrativo alla condivisione snapshot.User Account Control (UAC) in some Windows operating systems can prevent administrative access to the snapshot share. Le autorizzazioni per la condivisione snapshot devono pertanto essere concesse in modo esplicito agli account di Windows utilizzati dall'agente snapshot, dall'agente di distribuzione e dall'agente di merge.You must therefore explicitly grant snapshot share permissions to the Windows accounts that are used by the Snapshot Agent, Distribution Agent, and Merge Agent. È necessario eseguire questa operazione anche se gli account di Windows sono membri del gruppo Administrators.You must do this even if the Windows accounts are members of the Administrators group. Per altre informazioni, vedere Proteggere la cartella snapshot.For more information, see Secure the Snapshot Folder.

AgenteAgent AutorizzazioniPermissions
agente snapshotSnapshot Agent L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione.The Windows account under which the agent runs is used when it makes connections to the Distributor. Tale account deve:This account must:

- Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione.-At minimum, be a member of the db_owner fixed database role in the distribution database.

- Avere le autorizzazioni di lettura, scrittura e modifica per la condivisione snapshot.-Have read, write, and modify permissions on the snapshot share.



Tenere presente che l'account usato per la connessione al server di pubblicazione deve essere almeno membro del ruolo predefinito del database db_owner nel database di pubblicazione.Note that the account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.
Agente di lettura logLog Reader Agent L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione.The Windows account under which the agent runs is used when it makes connections to the Distributor. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di distribuzione.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

L'account utilizzato per la connessione al server di pubblicazione deve essere almeno membro del ruolo predefinito del database db_owner nel database di pubblicazione.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

In caso di selezione delle opzioni sync_type , i parametri replication support only, initialize with backupo initialize from lsne l'agente di lettura log devono essere in esecuzione dopo aver eseguito sp_addsubscription, in modo che gli script impostati vengano scritti nel database di distribuzione.When selecting the sync_type options replication support only, initialize with backup, or initialize from lsn, the log reader agent must run after executing sp_addsubscription, so that the set-up scripts are written to the distribution database. L'agente di lettura log deve essere in esecuzione con un account membro del ruolo predefinito del server sysadmin .The log reader agent must be running under an account that is a member of the sysadmin fixed server role. Quando l'opzione sync_type è impostata su Automatic, non sono richieste azioni dell'agente di lettura log speciali.When the sync_type option is set to Automatic, no special log reader agent actions are required.
Agente di distribuzione per una sottoscrizione pushDistribution Agent for a push subscription L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione.The Windows account under which the agent runs is used when it makes connections to the Distributor. Tale account deve:This account must:

- Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione.-At minimum be a member of the db_owner fixed database role in the distribution database.

- Essere un membro dell'elenco di accesso alla pubblicazione.-Be a member of the PAL.

- Avere le autorizzazioni di lettura per la condivisione snapshot.-Have read permissions on the snapshot share.

- Avere le autorizzazioni di lettura per la directory di installazione del provider OLE DB per il Sottoscrittore se la sottoscrizione riguarda un Sottoscrittore non SQL Server.-Have read permissions on the installation directory of the OLE DB provider for the Subscriber if the subscription is for a non-SQL Server Subscriber.

- Quando si esegue la replica dei dati line-of-business, l'agente di distribuzione deve avere le autorizzazioni di scrittura per la replica C:\Programmi\Microsoft SQL Server\XX\COMfolder dove XX rappresenta l'ID istanza.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



Si noti che l'account usato per la connessione al Sottoscrittore deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione o avere autorizzazioni equivalenti se la sottoscrizione riguarda un Sottoscrittore non SQL Server.Note that the account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database, or have equivalent permissions if the subscription is for a non-SQL Server Subscriber.

Si noti anche che quando si usa -subscriptionstreams >= 2 sull'agente di distribuzione è necessario concedere anche l'autorizzazione View Server State per i sottoscrittori per rilevare i deadlock.Also note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Agente di distribuzione per una sottoscrizione pullDistribution Agent for a pull subscription L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al Sottoscrittore.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione.This account must at minimum be a member of the db_owner fixed database role in the subscription database. L'account utilizzato per la connessione al server di distribuzione deve:The account that is used to connect to the Distributor must:

- Essere un membro dell'elenco di accesso alla pubblicazione.-Be a member of the PAL.

- Avere le autorizzazioni di lettura per la condivisione snapshot.-Have read permissions on the snapshot share.

- Quando si esegue la replica dei dati line-of-business, l'agente di distribuzione deve avere le autorizzazioni di scrittura per la replica C:\Programmi\Microsoft SQL Server\XX\COMfolder dove XX rappresenta l'ID istanza.-When replicating LOB data, the distribution agent must have write permissions on the replication C:\Program Files\Microsoft SQL Server\XX\COMfolder where XX represents the instanceID.



Si noti che quando si usa -subscriptionstreams >= 2 sull'agente di distribuzione è necessario concedere anche l'autorizzazione View Server State per i sottoscrittori per rilevare i deadlock.Note that when using -subscriptionstreams >= 2 on the distribution agent you must also grant the View Server State permission on the subscribers to detect deadlocks.
Agente di merge per una sottoscrizione pushMerge Agent for a push subscription L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di pubblicazione e al server di distribuzione.The Windows account under which the agent runs is used when it makes connections to the Publisher and Distributor. Tale account deve:This account must:

- Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione.-At minimum be a member of the db_owner fixed database role in the distribution database.

- Essere un membro dell'elenco di accesso alla pubblicazione.-Be a member of the PAL.

- Essere un account di accesso associato a un utente nel database di pubblicazione.-Be a login that is associated with a user in the publication database.

- Avere le autorizzazioni di lettura per la condivisione snapshot.-Have read permissions on the snapshot share.



Si noti che l'account usato per la connessione al Sottoscrittore deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione.Note that the account used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.
Agente di merge per una sottoscrizione pullMerge Agent for a pull subscription L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al Sottoscrittore.The Windows account under which the agent runs is used when it makes connections to the Subscriber. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione.This account must at minimum be a member of the db_owner fixed database role in the subscription database. L'account utilizzato per la connessione al server di pubblicazione e al server di distribuzione deve:The account that is used to connect to the Publisher and Distributor must:

- Essere un membro dell'elenco di accesso alla pubblicazione.-Be a member of the PAL.

- Essere un account di accesso associato a un utente nel database di pubblicazione.-Be a login associated with a user in the publication database.

- Essere un account di accesso associato a un utente nel database di distribuzione.-Be a login associated with a user in the distribution database. L'utente può essere l'utente Guest .The user can be the Guest user.

- Avere le autorizzazioni di lettura per la condivisione snapshot.-Have read permissions on the snapshot share.
Agente di lettura codaQueue Reader Agent L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione.The Windows account under which the agent runs is used when it makes connections to the Distributor. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di distribuzione.This account must at minimum be a member of the db_owner fixed database role in the distribution database.

L'account utilizzato per la connessione al server di pubblicazione deve essere almeno membro del ruolo predefinito del database db_owner nel database di pubblicazione.The account that is used to connect to the Publisher must at minimum be a member of the db_owner fixed database role in the publication database.

L'account utilizzato per la connessione al Sottoscrittore deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione.The account that is used to connect to the Subscriber must at minimum be a member of the db_owner fixed database role in the subscription database.

Sicurezza agente in SQL Server AgentAgent Security Under SQL Server Agent

Quando si configura la replica mediante SQL Server Management StudioSQL Server Management Studio, le procedure Transact-SQLTransact-SQL o gli oggetti RMO, per impostazione predefinita viene creato un processo di SQL ServerSQL Server Agent per ogni agente.When you configure replication by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL procedures, or RMO, a SQL ServerSQL Server Agent job is created by default for each agent. Gli agenti vengono quindi eseguiti nel contesto di un passaggio del processo, indipendentemente dal fatto che l'esecuzione sia continua, in base a una pianificazione o su richiesta.Agents then run under the context of a job step, regardless of whether they run continuously, on a schedule, or on demand. È possibile visualizzare tali processi nella cartella Processi in SQL Server Management StudioSQL Server Management Studio.You can view these jobs under the Jobs folder in SQL Server Management StudioSQL Server Management Studio. Nella tabella seguente sono elencati i nomi dei processi.The following table lists the job names.

AgenteAgent Nome processoJob name
agente snapshotSnapshot Agent <ServerPubblicazione>-<DatabasePubblicazione>-<ServerPubblicazione>-<intero><Publisher>-<PublicationDatabase>-<Publication>-<integer>
Agente snapshot per una partizione di una pubblicazione di tipo mergeSnapshot Agent for a merge publication partition Dyn_<ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<GUID>Dyn_<Publisher>-<PublicationDatabase>-<Publication>-<GUID>
Agente di lettura logLog Reader Agent <ServerPubblicazione>-<DatabasePubblicazione>-<intero><Publisher>-<PublicationDatabase>-<integer>
Agente di merge per le sottoscrizioni pullMerge Agent for pull subscriptions <ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<DatabaseSottoscrizione>-<intero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<integer>
Agente di merge per le sottoscrizioni pushMerge Agent for push subscriptions <ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agente di distribuzione per le sottoscrizioni pushDistribution Agent for push subscriptions <ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>**
Agente di distribuzione per le sottoscrizioni pullDistribution Agent for pull subscriptions <ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<DatabaseSottoscrizione>-<GUID>\<Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<SubscriptionDatabase>-<GUID>\
Agente di distribuzione per le sottoscrizioni push di Sottoscrittori non SQL ServerDistribution Agent for push subscriptions to non-SQL Server Subscribers <ServerPubblicazione>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero><Publisher>-<PublicationDatabase>-<Publication>-<Subscriber>-<integer>
Agente di lettura codaQueue Reader Agent [<DatabaseDistribuzione>].<intero>[<Distributor>].<integer>

*Per le sottoscrizioni push a pubblicazioni Oracle, il nome del processo è <ServerPubblicazione>-<ServerPubblicazione> anziché <ServerPubblicazione>-<DatabasePubblicazione>.*For push subscriptions to Oracle publications, the job name is <Publisher>-<Publisher> instead of <Publisher>-<PublicationDatabase>.

**Per le sottoscrizioni pull a pubblicazioni Oracle, il nome del processo è <ServerPubblicazione>-<DatabaseDistribuzione> anziché <ServerPubblicazione>-<DatabasePubblicazione>.**For pull subscriptions to Oracle publications, the job name is <Publisher>-<DistributionDatabase> instead of <Publisher>-<PublicationDatabase>.

Durante la configurazione della replica si specificano gli account utilizzati per l'esecuzione degli agenti.When you configure replication, you specify accounts under which agents should run. Tutti i passaggi del processo, tuttavia, vengono eseguiti nel contesto di sicurezza di un proxye pertanto la replica esegue internamente i mapping seguenti per gli account dell'agente specificati:However, all job steps run under the security context of a proxy; therefore, replication performs the following mappings internally for the agent accounts that you specify:

  • Viene innanzitutto eseguito il mapping tra l'account e una credenziale utilizzando l'istruzione Transact-SQLTransact-SQL CREATE CREDENTIAL statement.The account is first mapped to a credential by using the Transact-SQLTransact-SQL CREATE CREDENTIAL statement. I proxy di SQL ServerSQL Server Agent utilizzano le credenziali per archiviare le informazioni sugli account utente di Windows. SQL ServerSQL Server Agent proxies use credentials to store information about Windows user accounts.

  • Viene chiamata la stored procedure sp_add_proxy e le credenziali vengono utilizzate per creare un proxy.The sp_add_proxy stored procedure is called, and the credential is used to create a proxy..

Nota

Queste informazioni vengono fornite allo scopo di illustrare i processi richiesti per l'esecuzione degli agenti nel contesto di sicurezza appropriato.This information is provided to help you understand what is involved in running agents with the appropriate security context. Non è in genere necessario interagire direttamente con le credenziali o i proxy creati.You should not have to interact directly with the credentials or proxies that have been created.

Vedere ancheSee Also

Replication Security Best Practices Replication Security Best Practices
Sicurezza e protezione (replica) Security and Protection (Replication)
Proteggere la cartella snapshotSecure the Snapshot Folder