Visão geral da segurança (Service Broker)
O Agente de Serviços ajuda você a escrever aplicativos de banco de dados altamente evolutivos que também sejam seguros e confiáveis. A segurança do Agente de Serviços 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 Agente de Serviços 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 Agente de Serviços 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 projetar, implementar e administrar os aplicativos do Agente de Serviços.
A segurança de diálogo — Criptografa mensagens em uma conversação 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 sem autorização enviem mensagens do Agente de Serviços 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 Agente de Serviços 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 Agente de Serviços 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 AdventureWorks 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 AdventureWorks.
Para satisfazer os requisitos de que as mensagens devem ser criptografadas, a Adventure Works e os fornecedores usam a segurança de diálogo do Agente de Serviços:
Para configurar a segurança de diálogo, o administrador AdventureWorks 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 aos fornecedores que precisam acessar o serviço.
Cada fornecedor instala o certificado da Adventure Works Cycles no banco de dados e cria um usuário que possui o certificado.
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 AdventureWorks.
O administrador AdventureWorks 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 os requisitos de que apenas fornecedores qualificados possam se conectar ao banco de dados AdventureWorks, o administrador AdventureWorks usa a segurança de transporte do Agente de Serviços:
Para definir a segurança de transporte, o administrador AdventureWorks cria um certificado no banco de dados mestre da instância do SQL Server que enviará as mensagens.
O administrador AdventureWorks envia o certificado a cada fornecedor.
Cada administrador de fornecedor cria um usuário no banco de dados mestre para possuir o certificado e, então, instala o certificado na instância do SQL Server que receberá as mensagens.
O administrador do fornecedor em seguida cria um certificado no banco de dados mestre e envia a chave pública desse usuário ao administrador AdventureWorks.
Finalmente, o administrador AdventureWorks cria um usuário no banco de dados 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 AdventureWorks 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 AdventureWorks 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.
Consulte também