Configurar segurança de caixa de diálogo para notificações de evento
Aplica-se a: SQL Server
Agente de Serviço deve ser configurada para notificações de eventos que enviam mensagens a um agente de serviços em um servidor remoto. A segurança de diálogo deve ser configurada manualmente, de acordo com o modelo de segurança total de diálogo do Service Broker. O modelo de segurança total habilita criptografia e decodificação de mensagens enviadas para e de servidores remotos. Embora as notificações de eventos sejam enviadas em uma única direção, outras mensagens, como erros, também são retornadas para a direção oposta.
Configurando segurança de diálogo para notificações de eventos
O processo necessário para implementar segurança de diálogo para notificação de eventos é descrito nas etapas a seguir. Elas compreendem ações a serem efetuadas tanto no servidor de origem, quanto no servidor de destino. O servidor de origem é o servidor no qual a notificação de eventos está sendo criada. O servidor de destino é o servidor que recebe a mensagem de notificação de eventos. É necessário completar as ações de cada etapa em ambos os servidores, de origem e de destino, para poder passar à etapa seguinte.
Importante
Todos os certificados devem ser criados com datas válidas de início e de validade.
Etapa 1: Estabeleça um número da porta de TCP e o nome do serviço de destino.
Estabeleça a porta de TCP pela qual o servidor de origem e o servidor de destino receberão mensagens. Você também deve determinar o nome do serviço de destino.
Etapa 2: Configure criptografia e compartilhamento de certificados para autenticação em nível de banco de dados.
Efetue as ações abaixo nos servidores de origem e de destino.
Servidor de origem | Servidor de destino |
---|---|
Escolha ou crie um banco de dados para guardar a notificação de eventos e a chave mestra. | Escolha ou crie um banco de dados para guardar a chave mestra. |
Se não existir uma chave mestra para o banco de dados de origem, crie uma chave mestra. É necessária uma chave mestra em ambos os bancos de dados (origem e destino), para ajudar a proteger seus respectivos certificados. | Se não existir uma chave mestra para o banco de dados de destino, crie uma chave mestra. |
Crie um logon e um usuário correspondente para o banco de dados de origem. | Crie um logon e um usuário correspondente para o banco de dados de destino. |
Crie um certificado de propriedade do usuário do banco de dados de origem. | Crie um certificado de propriedade do usuário do banco de dados de destino. |
Faça um backup do certificado em um arquivo que possa ser acessado pelo servidor de destino. | Faça um backup do certificado em um arquivo que possa ser acessado pelo servidor de origem. |
Crie um usuário, especificando o usuário do banco de dados de destino e WITHOUT LOGIN. Este usuário será proprietário do certificado de banco de dados de destino a ser criado a partir do arquivo de backup. O usuário não precisa ser mapeado para um logon, pois seu único propósito é possuir o certificado de banco de dados de destino criado na etapa 3 abaixo. | Crie um usuário, especificando o usuário do banco de dados de origem e WITHOUT LOGIN. Este usuário será proprietário do certificado de banco de dados de origem a ser criado a partir do arquivo de backup. O usuário não precisa ser mapeado para um logon, pois seu único propósito é possuir o certificado de banco de dados de origem criado na etapa 3 abaixo. |
Etapa 3: Compartilhe os certificados e conceda permissões para autenticação em nível de banco de dados.
Efetue as ações abaixo nos servidores de origem e de destino.
Servidor de origem | Servidor de destino |
---|---|
Crie um certificado a partir do arquivo de backup do certificado de destino, especificando o usuário do banco de dados de destino como o proprietário. | Crie um certificado a partir do arquivo de backup do certificado de origem, especificando o usuário do banco de dados de origem como o proprietário. |
Conceda permissão para criar a notificação de eventos para o usuário do banco de dados de origem. Para obter mais informações sobre essa permissão, consulte CREATE EVENT NOTIFICATION (Transact-SQL). | Conceda a permissão REFERENCES ao usuário do banco de dados de destino no contrato de notificações de eventos existentes do Service Broker: https://schemas.microsoft.com/SQL/Notifications/PostEventNotification . |
Crie uma associação de serviço remoto ao serviço de destino e especifique as credenciais do usuário do banco de dados de destino. A associação do serviço remoto garante que a chave pública no certificado de propriedade do usuário do banco de dados de origem autentique as mensagens enviadas ao servidor de destino. | Conceda permissões CREATE QUEUE, CREATE SERVICE e CREATE SCHEMA ao usuário do banco de dados de destino. |
Caso ainda não esteja conectado ao banco de dados como usuário do banco de dados de destino, faça-o agora. | |
Crie uma fila para receber as mensagens de notificação de eventos e crie um serviço para entregar as mensagens. | |
Conceda permissão SEND no serviço de destino ao usuário do banco de dados de origem. | |
Forneça o identificador do agente de serviços do banco de dados de origem para o servidor de destino. Esse identificador pode ser obtido consultando-se a coluna service_broker_guid da exibição de catálogo sys.databases . Para uma notificação de eventos de nível de servidor, use o identificador do service broker do msdb. | Forneça o identificador do agente de serviços do banco de dados de destino para o servidor de origem. |
Etapa 4: Crie rotas e configure autenticação em nível de servidor.
Efetue as ações abaixo nos servidores de origem e de destino.
Servidor de origem | Servidor de destino |
---|---|
Crie uma rota para o serviço de destino e especifique o identificador do service broker do banco de dados de destino e o número da porta de TCP estabelecido. | Crie uma rota para o serviço de origem e especifique o identificador do agente de serviços do banco de dados de origem e o número de porta de TCP estabelecido. Para especificar o serviço de origem, use o seguinte serviço fornecido: https://schemas.microsoft.com/SQL/Notifications/EventNotificationService . |
Mude para o banco de dados mestre para configurar a autenticação no nível de servidor. | Mude para o banco de dados mestre para configurar a autenticação no nível de servidor. |
Se não existir uma chave mestra para o banco de dados de mestre , crie uma chave mestra. | Se não existir uma chave mestra para o banco de dados de mestre , crie uma chave mestra. |
Crie um certificado que autentique o banco de dados. | Crie um certificado que autentique o banco de dados. |
Faça um backup do certificado em um arquivo que possa ser acessado pelo servidor de destino. | Faça um backup do certificado em um arquivo que possa ser acessado pelo servidor de origem. |
Crie um ponto de extremidadee especifique o número da porta de TCP estabelecido, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) e o nome do certificado de autenticação. | Crie um ponto de extremidade e especifique o número da porta de TCP estabelecido, FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name) e o nome do certificado de autenticação. |
Crie um logone especifique o logon do servidor de destino. | Crie um logon e especifique o logon do servidor de origem. |
Conceda permissão CONNECT no ponto de extremidade para o logon do autenticador de destino. | Conceda permissão CONNECT no ponto de extremidade para o logon do autenticador de origem. |
Crie um usuárioe especifique o logon do autenticador de destino. | Crie um usuário e especifique o logon do autenticador de origem. |
Etapa 5: Compartilhe certificados para autenticação em nível de servidor e crie a notificação de eventos.
Efetue as ações abaixo nos servidores de origem e de destino.
Servidor de origem | Servidor de destino |
---|---|
Crie um certificado a partir do arquivo de backup do certificado de destino, especificando o autenticador de destino como o proprietário. | Crie um certificado a partir do arquivo de backup do certificado de origem, especificando o autenticador de origem como o proprietário. |
Alterne para o banco de dados de origem no qual criar a notificação de eventos e, caso ainda não esteja conectado como usuário do banco de dados de origem, faça-o agora. | Alterne para o banco de dados de destino a receber as mensagens de notificação de eventos. |
Crie a notificação de eventose especifique o agente de serviços e o identificador do banco de dados de destino. |
Confira também
GRANT (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
sys.databases (Transact-SQL)
Hierarquia de criptografia
Implementar notificações de evento
CREATE MASTER KEY (Transact-SQL)
CREATE LOGIN (Transact-SQL)
CREATE USER (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE REMOTE SERVICE BINDING (Transact-SQL)
GRANT (Transact-SQL)
CREATE ROUTE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE EVENT NOTIFICATION (Transact-SQL)