Condividi tramite


Panoramica della sicurezza (Service Broker)

Service Broker semplifica la creazione di applicazioni di database protette, affidabili e altamente scalabili. La sicurezza 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 sicurezza 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 sicurezza, la sicurezza del dialogo e la sicurezza del trasporto. La comprensione di questi tipi di sicurezza e della loro interazione semplifica la progettazione, la distribuzione e l'amministrazione delle applicazioni di Service Broker.

  • sicurezza del dialogo - Crittografa i messaggi di una conversazione di dialogo e verifica le identità del partecipanti al dialogo. La sicurezza 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.

  • sicurezza del trasporto - Impedisce ai database non autorizzati l'invio di messaggi di Service Broker ai database nell'istanza locale. La sicurezza 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 sicurezza di Windows.

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

Scenari di sicurezza 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 sicurezza 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 AdventureWorks2008R2 e un fornitore devono essere crittografati, in modo da evitarne la lettura da parte di terzi. Per garantire il massimo livello di sicurezza, la connessione al database AdventureWorks2008R2 è consentita solo ai fornitori qualificati.

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

  1. Per impostare la sicurezza del dialogo, l'amministratore di AdventureWorks2008R2 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 AdventureWorks2008R2.

  5. L'amministratore di AdventureWorks2008R2 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 AdventureWorks2008R2 solo ai fornitori qualificati, l'amministratore di AdventureWorks2008R2 utilizza la sicurezza del trasporto di Service Broker:

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

  2. L'amministratore di AdventureWorks2008R2 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 AdventureWorks2008R2.

  5. L'amministratore di AdventureWorks2008R2 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 sicurezza del trasporto e sicurezza del dialogo consente all'amministratore di AdventureWorks2008R2 di soddisfare i requisiti di sicurezza di questa applicazione. Si noti che in questo scenario i fornitori non possono accedere al database AdventureWorks2008R2 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.