Compartilhar via


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

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

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 do SQL Server se comuniquem com segurança, mesmo quando as instâncias estão em computadores diferentes que não têm outra relação de confiança ou em que os computadores de origem e de destino não estão conectados à mesma rede ao mesmo tempo.

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 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. Entender esses dois tipos de segurança e como eles funcionam juntos ajuda você a projetar, implantar e administrar aplicativos do Service Broker.

  • Segurança da caixa de diálogo: criptografa mensagens em uma conversa de diálogo individual e verifica as identidades dos participantes na caixa de 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 para bancos de dados na instância local. A segurança de transporte estabelece uma conexão de rede autenticada entre dois bancos de dados.

O protocolo de caixa de diálogo e o protocolo do agente adjacente são projetados em torno da passagem de 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 do SQL Server ou credenciais de segurança do Windows.

Para obter mais informações sobre certificados, consulte CREATE CERTIFICATE.

Cenário de segurança do Adventure Works Cycles

Observação

Os exemplos de código neste artigo foram testados usando o AdventureWorks2025 banco de dados de exemplo, que pode ser baixado na home page de Exemplos do Microsoft SQL Server e Projetos da Comunidade .

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 garantir 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 do 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. Em seguida, o fornecedor cria um par de chaves e envia informações sobre o nome do serviço do fornecedor e um certificado com a chave pública desse 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 os requisitos de que apenas fornecedores qualificados possam se conectar ao banco de dados AdventureWorks2008R2, o administrador do AdventureWorks2008R2 usa a segurança do transporte do Service Broker:

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

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

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

  4. Em seguida, o master administrador do fornecedor cria um certificado no banco de dados da instância e envia a chave pública para esse usuário para o administrador adventureworks2008R2.

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

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