Vorgehensweise: Konfigurieren von Zieldiensten für eine anonyme Dialogsicherheit (Transact-SQL)

SQL Server verwendet die Dialogsicherheit für jede Konversation mit einem Dienst, für den eine Remotedienstbindung in der Datenbank vorhanden ist, die den initiierenden Dienst hostet. Wenn die Remotedienstbindung ANONYMOUS = ON angibt, verwendet der Dialog die anonyme Sicherheit. In diesem Fall muss die Zieldatenbank keinen Benutzer für den initiierenden Dienst enthalten. Der initiierende Dienst fungiert in der Zieldatenbank als public.

So konfigurieren Sie einen Zieldienst für die anonyme Dialogsicherheit

  1. Erstellen Sie einen Benutzer ohne Anmeldenamen.

  2. Erstellen Sie ein Zertifikat für den Benutzer.

    HinweisHinweis

    Das Zertifikat muss mit dem Hauptschlüssel verschlüsselt sein. Weitere Informationen finden Sie unter CREATE MASTER KEY (Transact-SQL).

  3. Sichern Sie das Zertifikat in einer Datei.

    SicherheitshinweisSicherheitshinweis

    Sichern Sie lediglich das Zertifikat für diesen Benutzer. Sichern oder verteilen Sie nicht den privaten Schlüssel, der dem Zertifikat zugeordnet ist.

  4. Erteilen Sie dem Zieldienstbenutzer die Berechtigung zum Empfangen von Nachrichten aus der Warteschlange, die der Zieldienst verwendet.

  5. Erteilen Sie public die Berechtigung, Nachrichten an den Zieldienst zu senden.

  6. Übergeben Sie das Zertifikat und den Namen des Zieldiensts an den Datenbankadministrator für die Remotedatenbank.

Beispiel

USE AdventureWorks2008R2 ;
GO

--------------------------------------------------------------------
-- This script configures security for a local user in the database.
-- The script creates a user in this database, creates a certificate
-- for the user, writes the certificate to the file system, and
-- grants permissions to the user. Since this service is a target
-- service, no remote service binding is necessary.

-- Create a user without a login. For convenience,
-- the name of the user is based on the name of the
-- the remote service.

CREATE USER [SupplierOrdersUser]
    WITHOUT LOGIN;
GO

-- Create a certificate for the initiating service
-- to use to send messages to the target service.

CREATE CERTIFICATE [SupplierOrdersCertificate]
    AUTHORIZATION [SupplierOrdersUser]
    WITH SUBJECT = 'Certificate for the SupplierOrders service user.';
GO

-- Backup the certificate. Provide the certificate file
-- to the administrator for the database that hosts
-- the other service.

BACKUP CERTIFICATE [SupplierOrdersCertificate]
   TO FILE = 'C:\Certificates\SupplierOrders.cer';
GO

-- Grant receive on the orders queue to the local user.

GRANT RECEIVE ON SupplierOrdersQueue
    TO [SupplierOrdersUser];
GO

-- Grant send on the service to public.

GRANT SEND ON SERVICE::[SupplierOrders] TO public ;