Condividi tramite


Modello di sicurezza dell'agente di replica

Il modello di sicurezza degli agenti di replica garantisce un controllo dettagliato sugli account usati per eseguire gli agenti e stabilire connessioni: Per ogni agente, è possibile specificare un account diverso. Per altre informazioni su come specificare gli account, vedere Gestire gli account di accesso e le password nella replica.

Importante

Quando un membro del ruolo predefinito del server sysadmin configura la replica, gli agenti di replica possono essere configurati per rappresentare l'account 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 SQL Server Agent, il valore predefinito: quando viene usato un processo di SQL Server Agent per avviare un agente di replica, l'agente viene eseguito nel contesto di un account specificato quando si configura la replica. Per altre informazioni su SQL Server Agent e replica, vedere la sezione "Sicurezza agente in SQL Server Agent" più avanti in questo argomento. Per informazioni sulle autorizzazioni necessarie per l'account in cui viene eseguito SQL Server Agent, vedere Configurare SQL Server Agent.

  • Avvio dell'agente da una riga di comando 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 usa Replication Management Objects (RMO) 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 la compatibilità con le versioni precedenti, è anche possibile usare sicurezza 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, rilevante per numerosi agenti, vedere Proteggere il server di pubblicazione.

Nota

Controllo account utente in alcuni sistemi operativi Windows può impedire l'accesso amministrativo alla condivisione 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.



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.
Agente di lettura 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.

Quando si selezionano solo le sync_type opzioni di replica, inizializza con il backup o inizializza da lsn, l'agente di lettura log deve essere eseguito dopo l'esecuzione sp_addsubscriptiondi , in modo che gli script di configurazione vengano scritti nel database di distribuzione. L'agente di lettura log deve essere in esecuzione con un account membro del ruolo predefinito del server sysadmin . Quando l'opzione è impostata su Automatico, non sono necessarie azioni dell'agente sync_type di lettura log speciali.
Agente di distribuzione per una sottoscrizione 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 un membro dell'elenco di accesso alla pubblicazione.

\- 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 non SQL Server.

\- 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.



L'account utilizzato per la connessione al Sottoscrittore deve essere almeno membro del ruolo predefinito del database db_owner nel database di sottoscrizione o disporre di autorizzazioni equivalenti se la sottoscrizione riguarda un Sottoscrittore non SQL Server.

Nota: quando si usa -subscriptionstreams >= 2 nell'agente di distribuzione è necessario concedere anche l'autorizzazione View Server State per i sottoscrittori per rilevare i deadlock.
Agente di distribuzione per una sottoscrizione pull L'account di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al 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 distribuzione deve:

\- Essere un membro dell'elenco di accesso alla pubblicazione.

\- Avere le autorizzazioni di lettura per la condivisione snapshot.

\- 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.



Nota: quando si usa -subscriptionstreams >= 2 nell'agente di distribuzione è necessario concedere anche l'autorizzazione View Server State per i sottoscrittori per rilevare i deadlock.
Agente di merge per una sottoscrizione 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 dell'elenco di accesso alla pubblicazione.

- Essere un account di accesso associato a un utente nel database di pubblicazione.

\- Avere le autorizzazioni di lettura per la condivisione snapshot.



L'account utilizzato 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 di Windows con cui viene eseguito l'agente viene utilizzato per le connessioni al 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 dell'elenco di accesso alla pubblicazione.

- Essere un account di accesso associato a un utente nel database di pubblicazione.

\- Essere un account di accesso 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 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 agente in SQL Server Agent

Quando si configura la replica usando SQL Server Management Studio, le procedure Transact-SQL o RMO, viene creato un processo di SQL Server Agent per impostazione predefinita per ogni agente. 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. È possibile visualizzare questi processi nella cartella Processi in SQL Server Management Studio. Nella tabella seguente sono elencati i nomi dei processi.

Agente Nome processo
agente snapshot <Publisher-PublicationDatabase-Publication-Integer><><><>
Agente snapshot per una partizione di una pubblicazione di tipo merge <Dyn_Publisher-PublicationDatabase-Publication-GUID>><><<>
Agente di lettura log <Publisher-PublicationDatabase-integer><><>
Agente di merge per le sottoscrizioni pull <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-integer><><><><><>
Agente di merge per le sottoscrizioni push <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Agente di distribuzione per le sottoscrizioni push <Publisher-PublicationDatabase-Publication-Subscriber-Integer><>><<><>1
Agente di distribuzione per le sottoscrizioni pull <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-GUID><<>><<>><>2
Agente di distribuzione per le sottoscrizioni push di Sottoscrittori non SQL Server <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><>
Agente di lettura coda [<Server di distribuzione>].<Intero>

1 Per le sottoscrizioni push alle pubblicazioni Oracle, il nome del processo è <Publisher-Publisher< anziché Publisher-PublicationDatabase>><>.<>

2 Per le sottoscrizioni pull alle pubblicazioni Oracle, il nome del processo è <Publisher-DistributionDatabase< anziché Publisher-PublicationDatabase>><>.<>

Durante la configurazione della replica si specificano gli account utilizzati per l'esecuzione degli 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 stored procedure sp_add_proxy e le credenziali vengono utilizzate 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.

Vedere anche

Procedure consigliate per la sicurezza della replica
sicurezza replica di SQL Server
Proteggere la cartella snapshot