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
Istanza gestita di SQL di Azure
Service Broker consente di scrivere applicazioni di database altamente scalabili che sono anche sicure e affidabili. La sicurezza di Service Broker consente ai servizi ospitati da istanze di SQL Server diverse di comunicare in modo sicuro, anche se le istanze si trovano in computer diversi che non hanno altre relazioni di trust o in cui i computer di origine e di destinazione non sono connessi contemporaneamente alla stessa rete.
La sicurezza di Service Broker si basa sui certificati. L'approccio generale consiste nell'usare i certificati per stabilire le credenziali di un database remoto, quindi eseguire il mapping delle operazioni dal database remoto a un utente locale. Le autorizzazioni per l'utente locale si applicano a qualsiasi operazione per conto del servizio remoto. Il certificato viene condiviso tra i database. Non viene condivisa alcun'altra informazione per l'utente.
Service Broker offre due tipi distinti di sicurezza: sicurezza della finestra di dialogo e sicurezza del trasporto. Comprendere questi due tipi di sicurezza e come interagiscono consente di progettare, distribuire e amministrare le applicazioni di Service Broker.
Sicurezza della finestra di dialogo: crittografa i messaggi in una singola conversazione di dialogo e verifica le identità dei partecipanti nella finestra di dialogo. La sicurezza delle interazioni fornisce anche l'autorizzazione remota e il controllo dell'integrità dei messaggi. La sicurezza dei dialoghi stabilisce una comunicazione autenticata e crittografata tra due servizi.
Sicurezza del trasporto: impedisce ai database non autorizzati di inviare messaggi di Service Broker ai database nell'istanza locale. La sicurezza del trasporto stabilisce una connessione di rete autenticata tra due database.
Il protocollo di dialogo e il protocollo broker adiacente sono progettati per passare messaggi tra i database, anziché eseguire 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 sicurezza di Windows.
Per altre informazioni sui certificati, vedere CREATE CERTIFICATE.
Scenario di sicurezza Adventure Works Cycles
Nota
Gli esempi di codice in questo articolo sono stati testati usando il database di esempio AdventureWorks2025, che è possibile scaricare dalla home page Microsoft SQL Server Samples and Community Projects.
In uno scenario aziendale di esempio, Adventure Works Cycles, una società fittizia, crea un servizio Service Broker per la consegna di ordini di parti ai fornitori. Questo servizio richiede la sicurezza sia per Adventure Works che per i fornitori. Ogni fornitore deve poter garantire che solo i clienti esistenti possano inviare ordini. Adventure Works deve poter garantire che solo i fornitori qualificati possano ricevere ordini. I messaggi tra il database AdventureWorks2008R2 e un fornitore devono essere crittografati, in modo da evitarne la lettura da parte di terzi. Per garantire il massimo livello di sicurezza possibile, solo i fornitori qualificati potrebbero connettersi al database AdventureWorks2008R2.
Per soddisfare il requisito che i messaggi devono essere crittografati, Adventure Works e i fornitori usano la sicurezza delle interazioni di Service Broker:
Per impostare la sicurezza del dialogo, l'amministratore di AdventureWorks2008R2 crea un utente locale denominato VendorOutgoing e una coppia di chiavi per quest'ultimo.
L'amministratore distribuisce il certificato che contiene la chiave pubblica della coppia di chiavi ai fornitori che devono accedere al servizio.
Ogni fornitore installa il certificato da Adventure Works Cycles nel database e crea un utente proprietario del certificato.
Il fornitore crea quindi una coppia di chiavi e invia informazioni sul nome del servizio fornitore e un certificato con la chiave pubblica della coppia di chiavi all'amministratore AdventureWorks2008R2.
L'amministratore di AdventureWorks2008R2 crea un utente per ogni fornitore e associa il certificato ricevuto da ogni fornitore al rispettivo utente.
L'amministratore crea anche un'associazione al servizio remoto per ogni fornitore che associa il nome del servizio fornitore all'utente creato per il fornitore.
Per soddisfare il requisito che consente la connessione al database AdventureWorks2008R2 solo ai fornitori qualificati, l'amministratore di AdventureWorks2008R2 usa la sicurezza del trasporto di Service Broker:
Per configurare la sicurezza del trasporto, l'amministratore AdventureWorks2008R2 crea un certificato nel
masterdatabase dell'istanza di SQL Server che invierà messaggi.L'amministratore di AdventureWorks2008R2 invia il certificato a ogni fornitore.
Ogni amministratore del fornitore crea un utente nel
masterdatabase per possedere il certificato e quindi installa il certificato nell'istanza di SQL Server che riceverà messaggi.L'amministratore del fornitore crea quindi un certificato nel
masterdatabase dell'istanza e invia la chiave pubblica per tale utente all'amministratore AdventureWorks2008R2.Infine, l'amministratore AdventureWorks2008R2 crea un utente nel
masterdatabase per possedere ogni certificato di chiave pubblica fornitore e installa ogni certificato fornitore nel database.
La combinazione di sicurezza del trasporto e sicurezza del dialogo consente all'amministratore di AdventureWorks2008R2 di soddisfare i requisiti di sicurezza di questa applicazione. In questo scenario, i fornitori non possono accedere al database AdventureWorks2008R2 e l'amministratore di Adventure Works non può accedere ai database fornitore. Solo i messaggi di Service Broker possono essere scambiati tra i database.