Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Il modello di sicurezza degli agenti di replica consente un controllo granulare degli account con cui gli agenti di replica vengono eseguiti e stabiliscono le connessioni: è possibile specificare un account diverso per ciascun agente. Per altre informazioni su come specificare gli account, vedere Controllo di identità e accesso (replica).
Il modello di sicurezza dell'agente di replica è leggermente diverso per Istanza gestita di SQL di Azure, in quanto non sono previsti account di Windows con cui verranno eseguiti gli agenti. Al contrario, è necessario eseguire tutte le operazioni tramite l'autenticazione di SQL Server.
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 Server Agent. 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. 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.
Gli agenti di replica, come tutti i file eseguibili, vengono eseguiti nel contesto di un account di Windows. Utilizzano tale account per le connessioni con sicurezza integrata di Windows. L'account con il quale viene eseguito l'agente dipende dalla modalità di avvio di quest'ultimo:
Avvio dell'agente da un processo predefinito di SQL Server Agent: quando si utilizza un processo di SQL Server Agent per avviare un agente di replica, l'agente viene eseguito nel contesto di un account specificato al momento della configurazione della replica. Per ulteriori informazioni su SQL Server Agent e la replicazione, vedere la sezione "Sicurezza dell'agente in SQL Server Agent" più avanti nel presente argomento. Per altre informazioni sulle autorizzazioni necessarie per l'account usato per l'esecuzione di SQL Server Agent, vedere Configurare 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.
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.
Nota
I controlli ActiveX sono deprecati.
È consigliabile stabilire le connessioni nel contesto della sicurezza integrata di Windows. Per motivi di compatibilità con le versioni precedenti, è anche possibile utilizzare la sicurezza di SQL Server. Per ulteriori informazioni sulle procedure consigliate, vedere Replication Security Best Practices.
Autorizzazioni richieste per gli agenti
Gli account utilizzati per l'esecuzione e le connessioni degli agenti richiedono varie autorizzazioni. Tali autorizzazioni sono descritte nella tabella seguente. È consigliabile eseguire ogni agente con un account di Windows differente e assegnare all'account solo le autorizzazioni necessarie. Per informazioni sull'elenco di accesso alla pubblicazione (PAL), che è rilevante per diversi agenti, vedere Proteggere l'editore.
Nota
Il Controllo dell'account utente (UAC) in alcuni sistemi operativi Windows può impedire l'accesso amministrativo alla condivisione delle snapshot. 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. È necessario eseguire questa operazione anche se gli account di Windows sono membri del gruppo Administrators. Per altre informazioni, vedere Proteggere la cartella snapshot.
| Agente | Autorizzazioni |
|---|---|
| Agente snapshot | L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione. Tale account deve: - Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione. - Avere le autorizzazioni di lettura, scrittura e modifica per la condivisione snapshot. 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. |
| Agente di lettura dei log | L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di distribuzione. 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. 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. L'agente di lettura del log deve essere eseguito con un account che sia membro del ruolo del server fisso sysadmin. Quando l'opzione sync_type è impostata su Automatic, non sono richieste azioni dell'agente di lettura log speciali. |
| Agente di distribuzione per un abbonamento push | L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione. Tale account deve: - Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione. -Essere membro del PAL. - Avere le autorizzazioni di lettura per la condivisione snapshot. -Avere le autorizzazioni di lettura per la directory di installazione del provider OLE DB per il sottoscrittore se la sottoscrizione riguarda un sottoscrittore diverso da SQL Server. -Quando si esegue la replica dei dati LOB, l'agente di distribuzione deve disporre delle autorizzazioni di scrittura per la replica C:\Programmi\Microsoft SQL Server\XX\COM , dove XX rappresenta l'ID istanza. 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. 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. |
| Agente di distribuzione per una sottoscrizione di tipo pull | L'account Windows con cui viene eseguito l'agente viene utilizzato quando l'agente stabilisce connessioni con il Sottoscrittore. Questo account deve: -Essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione. L'account utilizzato per la connessione al server di distribuzione deve: - Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione. -Essere membro del PAL. - Avere le autorizzazioni di lettura per la condivisione snapshot. -Quando si esegue la replica dei dati LOB, l'agente di distribuzione deve disporre delle autorizzazioni di scrittura per la replica C:\Programmi\Microsoft SQL Server\XX\COM , dove XX rappresenta l'ID istanza. 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. |
| Agente di merge per una sottoscrizione di tipo push | L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di pubblicazione e al server di distribuzione. Tale account deve: - Essere almeno un membro del ruolo predefinito del database db_owner nel database di distribuzione. -Essere un membro del PAL. -Essere un account di accesso associato a un utente con autorizzazioni di lettura/scrittura nel database di pubblicazione. - Avere le autorizzazioni di lettura per la condivisione snapshot. 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. |
| Agente di merge per una sottoscrizione pull | L'account Windows con cui viene eseguito l'agente viene utilizzato quando stabilisce connessioni con il Sottoscrittore. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione. L'account utilizzato per la connessione al server di pubblicazione e al server di distribuzione deve: - Essere un membro del PAL. -Deve essere un accesso associato a un utente con permessi di lettura e scrittura nel database di pubblicazione. -Essere un login associato a un utente nel database di distribuzione. L'utente può essere l'utente Guest . - Avere le autorizzazioni di lettura per la condivisione snapshot. |
| Agente di lettura della coda | L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al server di distribuzione. Tale account deve essere almeno membro del ruolo predefinito del database db_owner nel database di distribuzione. 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. L'account utilizzato per la connessione al Sottoscrittore deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione. |
Sicurezza dell'agente in SQL Server Agent
Quando si configura la replica mediante SQL Server Management Studio, le procedure Transact-SQL o gli oggetti RMO, per impostazione predefinita viene creato un processo di Agent per ogni agente SQL Server. Gli agenti vengono quindi eseguiti nell'ambito di una fase di un processo, indipendentemente dal fatto che vengano eseguiti continuamente, in base a una schedulazione o su richiesta. È possibile visualizzare tali processi nella cartella Processi in SQL Server Management Studio. Nella tabella seguente sono elencati i nomi dei job.
| Agente | Nome del processo |
|---|---|
| Agente snapshot | <Editore>-<DatabasePubblicazione>-<Pubblicazione>-<intero> |
| Agente snapshot per una partizione di una pubblicazione di tipo merge | Dyn_<Autore>-<DatabasePubblicazione>-<Pubblicazione>-<GUID> |
| Agente di lettura dei log | <Editore>-<DatabasePubblicazioni>-<intero> |
| Agente di merge per le sottoscrizioni di pull | <Autore della pubblicazione>-<Database di pubblicazione>-<Pubblicazione>-<Sottoscrittore>-<Database delle sottoscrizioni>-<intero> |
| Agente di merge per sottoscrizioni push | <Editore>-<Database di pubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero> |
| Agente di distribuzione per le sottoscrizioni push | <Editore>-<Database di pubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero> |
| Agente di distribuzione per gli abbonamenti pull | <Editore>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<DatabaseSottoscrizione>-<GUID> |
| Agente di distribuzione per le sottoscrizioni push di Sottoscrittori non SQL Server | <Editore>-<DatabasePubblicazione>-<Pubblicazione>-<Sottoscrittore>-<intero> |
| Agente di lettura della coda | [<Distributor>].<integer> |
*Per le sottoscrizioni push alle pubblicazioni Oracle, il nome del job è <Publisher>-<Publisher> anziché <Publisher>-<PublicationDatabase>.
Per le sottoscrizioni pull a pubblicazioni Oracle, il nome del processo è <Publisher>-<DistributionDatabase> anziché <Publisher>-<PublicationDatabase>.
Durante la configurazione della replicazione, si specificano gli account con cui devono essere eseguiti gli agenti. 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:
L'account viene prima mappato a una credenziale usando l'istruzione Transact-SQL CREATE CREDENTIAL . I proxy di SQL Server Agent usano le credenziali per archiviare le informazioni sugli account utente di Windows.
Viene chiamata la procedura memorizzata sp_add_proxy, e la credenziale viene utilizzata per creare un proxy.
Nota
Queste informazioni vengono fornite allo scopo di illustrare i processi richiesti per l'esecuzione degli agenti nel contesto di sicurezza appropriato. Non è in genere necessario interagire direttamente con le credenziali o i proxy creati.