Condividi tramite


Panoramica della protezione (Service Broker)

Service Broker semplifica la creazione di applicazioni di database protette, affidabili e altamente scalabili. La protezione di Service Broker consente la comunicazione protetta tra i servizi ospitati da istanze di SQL Server diverse, anche nel caso in cui le istanze si trovino in computer distinti privi di qualsiasi altra relazione di trust o i computer di origine e di destinazione non siano connessi contemporaneamente alla stessa rete.

La protezione di Service Broker si basa sui certificati. L'approccio generale consiste nell'utilizzo dei certificati per stabilire le credenziali di un database remoto e quindi per eseguire il mapping delle operazioni dal database remoto a un utente locale. Le autorizzazioni per l'utente locale si applicano a tutte le operazioni eseguite per conto del servizio remoto. Il certificato viene condiviso tra database mentre per l'utente non vengono condivise altre informazioni.

Service Broker offre due tipi distinti di protezione, la protezione del dialogo e la protezione del trasporto. La comprensione di questi tipi di protezione e della loro interazione semplifica la progettazione, la distribuzione e l'amministrazione delle applicazioni di Service Broker.

  • Protezione del dialogo - Crittografa i messaggi di una conversazione di dialogo e verifica le identità del partecipanti al dialogo. La protezione del dialogo esegue inoltre l'autorizzazione remota e il controllo dell'identità dei messaggi ed effettua l'autenticazione e la crittografia della comunicazione tra due servizi.

  • Protezione del trasporto - Impedisce ai database non autorizzati l'invio di messaggi di Service Broker ai database nell'istanza locale. La protezione del trasporto stabilisce una connessione di rete autenticata tra due database.

Si noti che il protocollo del dialogo e il protocollo di Service Broker adiacente sono progettati per il passaggio di messaggi tra database e non per l'esecuzione di comandi in un database remoto. Questo stile di comunicazione consente a Service Broker di fornire servizi senza richiedere ai database la condivisione degli account di accesso di SQL Server o delle credenziali di protezione di Windows.

Per ulteriori informazioni sui certificati, vedere CREATE CERTIFICATE (Transact-SQL).

Scenari di protezione di Adventure Works Cycles

In un esempio di scenario di utilizzo la società fittizia Adventure Works Cycles crea un servizio di Service Broker per il recapito ai fornitori di ordini per componenti. Questo servizio richiede la protezione sia per Adventure Works che per i fornitori. Ogni fornitore deve consentire l'invio di ordini solo ai clienti esistenti. Adventure Works deve consentire la ricezione di ordini solo ai fornitori qualificati. I messaggi tra il database AdventureWorks e un fornitore devono essere crittografati, in modo da evitarne la lettura da parte di terzi. Per garantire il massimo livello di protezione, la connessione al database AdventureWorks è consentita solo ai fornitori qualificati.

Per soddisfare il requisito della crittografia dei messaggi, Adventure Works e i fornitori utilizzano la protezione del dialogo di Service Broker:

  1. Per impostare la protezione del dialogo, l'amministratore di AdventureWorks crea un utente locale denominato VendorOutgoing e una coppia di chiavi per quest'ultimo.

  2. L'amministratore distribuisce il certificato contenente la chiave pubblica della coppia di chiavi ai fornitori che devono accedere al servizio.

  3. Ogni fornitore installa il certificato ricevuto da Adventure Works Cycles nel database e crea un utente proprietario del certificato.

  4. Il fornitore crea quindi una coppia di chiavi e invia le informazioni sul nome del servizio del fornitore e un certificato con la chiave pubblica della coppia di chiavi all'amministratore di AdventureWorks.

  5. L'amministratore di AdventureWorks crea un utente per ogni fornitore e associa il certificato ricevuto da ogni fornitore al rispettivo utente.

  6. L'amministratore crea inoltre un'associazione al servizio remoto per ogni fornitore mediante la quale il nome del servizio del fornitore viene associato all'utente creato per il fornitore stesso.

Per soddisfare il requisito che consente la connessione al database AdventureWorks solo ai fornitori qualificati, l'amministratore di AdventureWorks utilizza la protezione del trasporto di Service Broker:

  1. Per impostare la protezione del trasporto, l'amministratore di AdventureWorks crea un certificato nel database master dell'istanza di SQL Server che invierà i messaggi.

  2. L'amministratore di AdventureWorks invia il certificato a ogni fornitore.

  3. L'amministratore di ogni fornitore crea un utente proprietario del certificato nel database master e quindi installa il certificato nell'istanza di SQL Server che riceverà i messaggi.

  4. L'amministratore del fornitore crea quindi un certificato nel database master dell'istanza e invia la chiave pubblica per tale utente all'amministratore di AdventureWorks.

  5. L'amministratore di AdventureWorks crea infine un utente proprietario del certificato della chiave pubblica del fornitore nel database master e installa il certificato di ogni fornitore nel database.

La combinazione di protezione del trasporto e protezione del dialogo consente all'amministratore di AdventureWorks di soddisfare i requisiti di protezione di questa applicazione. Si noti che in questo scenario i fornitori non possono accedere al database AdventureWorks e l'amministratore di Adventure Works non può accedere ai database dei fornitori. Lo scambio di messaggi di Service Broker è consentito solo tra i database.