Visão geral da segurança (Service Broker)

O Service Broker ajuda você a escrever aplicativos de banco de dados altamente evolutivos que também sejam seguros e confiáveis. A segurança do Service Broker permite que os serviços hospedados por diferentes instâncias SQL Server se comuniquem com segurança, mesmo quando as instâncias estejam em computadores diferentes que não tenham outras relações de confiança ou nas quais os computadores de origem e destino não estejam conectados à mesma rede simultaneamente.

A segurança do Service Broker confia em certificados. A abordagem geral é usar certificados para estabelecer as credenciais de um banco de dados remoto e, então, mapear operações do banco de dados remoto para um usuário local. As permissões para o usuário local se aplicam a qualquer operação em nome do serviço remoto. O certificado é compartilhado entre bancos de dados. Nenhuma outra informação para o usuário é compartilhada.

O Service Broker fornece dois tipos distintos de segurança — segurança de diálogo e segurança de transporte. Compreender esses dois tipos de segurança e como eles trabalham em conjunto ajuda você a criar, implantar e administrar os aplicativos do Service Broker.

  • A segurança de diálogo — Criptografa mensagens em uma conversa de diálogo individual e verifica as identidades dos participantes do diálogo. A segurança de diálogo também fornece autorização remota e verificação de integridade da mensagem. A segurança de diálogo estabelece comunicação autenticada e criptografada entre dois serviços.

  • Segurança de transporte — Impede que bancos de dados não autorizados enviem mensagens do Service Broker a bancos de dados na instância local. A segurança de transporte estabelece uma conexão de rede autenticada entre dois bancos de dados.

Observe que o protocolo de diálogo e o protocolo de broker adjacente são projetados para passar mensagens entre bancos de dados, em vez de executar comandos em um banco de dados remoto. Esse estilo de comunicação permite que o Service Broker forneça serviços sem exigir que os bancos de dados compartilhem logons SQL Server ou credenciais de segurança do Windows.

Para obter mais informações sobre certificados, consulte CREATE CERTIFICATE (Transact-SQL).

Cenário de segurança da Adventure Works Cycles

Em um cenário de negócios de exemplo, Adventure Works Cycles, uma empresa fictícia, cria um serviço de Service Broker para entregar pedidos de peças a fornecedores. Esse serviço requer segurança para a Adventure Works e para os fornecedores. Cada fornecedor deve ser capaz de garantir que apenas clientes existentes possam enviar pedidos. A Adventure Works deve ser capaz de garantir que apenas os fornecedores qualificados possam receber pedidos. As mensagens entre o banco de dados AdventureWorks2008R2 e um fornecedor devem ser criptografadas de modo que nenhum terceiro possa ler a mensagem. Para assegurar o nível mais alto de segurança possível, somente fornecedores qualificados podem se conectar ao banco de dados AdventureWorks2008R2.

Para satisfazer o requisito de que as mensagens devem ser criptografadas, a Adventure Works e os fornecedores usam a segurança de diálogo do Service Broker:

  1. Para configurar a segurança de diálogo, o administrador AdventureWorks2008R2 cria um usuário local chamado VendorOutgoing e cria um par de chaves para esse usuário.

  2. O administrador distribui o certificado que contém a chave pública do par de chaves aos fornecedores que precisam acessar o serviço.

  3. Cada fornecedor instala o certificado da Adventure Works Cycles no banco de dados e cria um usuário que possui o certificado.

  4. O fornecedor então cria um par de chaves e envia informações sobre o nome do serviço para o serviço do fornecedor e um certificado com a chave pública do par de chaves para o administrador AdventureWorks2008R2.

  5. O administrador do AdventureWorks2008R2 cria um usuário para cada fornecedor e associa o certificado desse fornecedor ao usuário.

  6. O administrador também cria uma associação de serviço remoto para cada fornecedor que associa o nome do serviço do fornecedor ao usuário criado para o fornecedor.

Para satisfazer o requisito de que apenas fornecedores qualificados podem se conectar ao banco de dados AdventureWorks2008R2, o administrador do AdventureWorks2008R2 usa a segurança de transporte do Service Broker:

  1. Para definir a segurança de transporte, o administrador do AdventureWorks2008R2 cria um certificado no banco de dados mestre da instância do SQL Server que enviará as mensagens.

  2. O administrador do AdventureWorks2008R2 envia o certificado a cada fornecedor.

  3. Cada administrador de fornecedor cria um usuário no banco de dados mestre para possuir o certificado e depois instala o certificado na instância do SQL Server que receberá as mensagens.

  4. O administrador do fornecedor em seguida cria um certificado no banco de dados mestre da instância e envia a chave pública desse usuário ao administrador do AdventureWorks2008R2.

  5. Por fim, o administrador do AdventureWorks2008R2 cria um usuário no mestre para possuir o certificado de chave pública de cada fornecedor e instala cada certificado de fornecedor no banco de dados.

A combinação de segurança de transporte e segurança de diálogo ajuda o administrador do AdventureWorks2008R2 a satisfazer os requisitos de segurança desse aplicativo. Observe que, nesse cenário, os fornecedores não podem efetuar logon no banco de dados do AdventureWorks2008R2, e o administrador Adventure Works não pode efetuar logon nos bancos de dados de fornecedores. Apenas as mensagens do Service Broker podem ser trocadas entre os bancos de dados.