Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
O Service Broker ajuda você a escrever aplicativos de banco de dados altamente escaláveis que também são 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 onde os computadores de origem e de destino não estão conectados à mesma rede ao mesmo tempo.
A segurança do Service Broker depende de certificados. A abordagem geral é usar certificados para estabelecer as credenciais de um banco de dados remoto e, em seguida, 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 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 da caixa de diálogo também fornece autorização remota e verificação da integridade da mensagem. A segurança de diálogo estabelece comunicação autenticada e encriptada 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 diálogo e o protocolo de 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 a base de dados de exemplo AdventureWorks2025, que pode descarregar da página inicial Microsoft SQL Server Samples and Community Projects.
Em um cenário de negócios de exemplo, a Adventure Works Cycles, uma empresa fictícia, cria um serviço de Service Broker para entregar pedidos de peças a fornecedores. Este serviço requer segurança tanto para a Adventure Works como para os fornecedores. Cada fornecedor deve ser capaz de garantir que apenas os clientes existentes possam enviar pedidos. A Adventure Works deve ser capaz de garantir que apenas fornecedores qualificados possam receber pedidos. As mensagens entre o banco de dados AdventureWorks2008R2 e um fornecedor devem ser criptografadas para que nenhum terceiro possa ler uma mensagem. Para garantir o mais alto nível de segurança possível, apenas 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 da caixa de diálogo do Service Broker:
Para configurar a segurança da caixa de diálogo, o administrador do AdventureWorks2008R2 cria um usuário local chamado VendorOutgoing e cria um par de chaves para esse usuário.
O administrador distribui o certificado que contém a chave pública do par de chaves para fornecedores que precisam acessar o serviço.
Cada fornecedor instala o certificado do Adventure Works Cycles no banco de dados e cria um usuário proprietário do certificado.
Em seguida, o fornecedor 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 desse par de chaves para o administrador do AdventureWorks2008R2.
O administrador do AdventureWorks2008R2 cria um usuário para cada fornecedor e associa o certificado desse fornecedor ao usuário.
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 possam se conectar ao banco de dados AdventureWorks2008R2, o administrador do AdventureWorks2008R2 usa a segurança de transporte do Service Broker:
Para configurar a
mastersegurança de transporte, o administrador do AdventureWorks2008R2 cria um certificado no banco de dados da instância do SQL Server que enviará mensagens.O administrador do AdventureWorks2008R2 envia o certificado para cada fornecedor.
Cada administrador de
masterfornecedor cria um usuário no banco de dados para possuir o certificado e, em seguida, instala o certificado na instância do SQL Server que receberá mensagens.Em seguida, o
masteradministrador do fornecedor cria um certificado no banco de dados da instância e envia a chave pública desse usuário para o administrador do AdventureWorks2008R2.Finalmente, o administrador do AdventureWorks2008R2 cria um usuário no
masterbanco de dados para possuir cada certificado de chave pública do 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 atender aos 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. Somente mensagens do Service Broker podem ser trocadas entre os bancos de dados.