Vorgehensweise: Konfigurieren der Zieldienste für vollständige Dialogsicherheit (Transact-SQL)

SQL Server verwendet 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 Datenbank, die den Zieldienst hostet, einen Benutzer enthält, der dem Benutzer entspricht, der den Dialog erstellt hat, verwendet der Dialog vollständige Sicherheit.

Um sicherzustellen, dass der Zieldienst Dialogsicherheit verwendet, erstellen Sie einen Benutzer für den initiierenden Dienst und melden sich als diese Person an. Erstellen Sie für jeden initiierenden Dienst einen Benutzer, und installieren Sie das Zertifikat für den initiierenden Benutzer. Beachten Sie, dass der Zieldienst keine Remotedienstbindung verwendet.

So konfigurieren Sie einen Dienst für vollständige 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. Stellen Sie sicher, dass der Benutzer Besitzer des Zieldienstes ist.

  4. Sichern Sie das Zertifikat in einer Datei.

    SicherheitshinweisSicherheitshinweis

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

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

  6. Stellen Sie dem Datenbankadministrator der Remotedatenbank das Zertifikat und den Namen des initiierenden Dienstes zur Verfügung.

    HinweisHinweis

    Damit SQL Server die vollständige Dialogsicherheit verwendet, muss das Zertifikat in der Remotedatenbank installiert und der Benutzer des Zertifikats der Benutzer sein, der in der Remotedienstbindung für den Zieldienst angegeben ist.

  7. Rufen Sie in der Remotedatenbank von einer vertrauenswürdigen Quelle ein Zertifikat für einen Benutzer ab. Normalerweise bedeutet dies, das Zertifikat mithilfe einer verschlüsselten E-Mail zu senden oder das Zertifikat auf ein Speichermedium zu übertragen, z. B. auf eine Diskette.

    SicherheitshinweisSicherheitshinweis

    Installieren Sie Zertifikate nur von vertrauenswürdigen Quellen.

  8. Erstellen Sie einen Benutzer ohne Anmeldenamen.

  9. Installieren Sie das Zertifikat für den initiierenden Dienst. Der im vorherigen Schritt erstellte Benutzer ist Besitzer des Zertifikats.

  10. Erstellen Sie einen Benutzer ohne Anmeldenamen für das Zertifikat des initiierenden Dienstes.

  11. Erteilen Sie dem initiierenden Benutzer die Berechtigung, Nachrichten an den Zieldienst zu senden.

Beispiel

USE AdventureWorks2008R2 ;
GO

--------------------------------------------------------------------
-- The first part of the script configures security for the local user.
-- 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

-- Dump 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
-- Make this user the owner of the target service.

ALTER AUTHORIZATION ON SERVICE::SupplierOrders TO [SupplierOrdersUser];
GO

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

GRANT RECEIVE ON SupplierOrdersQueue
    TO [SupplierOrdersUser];
GO

---------------------------------------------------------------
-- The second part of the script configures security in this
-- database for the remote service. This consists of creating
-- a user in this database, loading the certificate for the remote
-- service, and granting permissions for the user.


-- Create a user without a login.

CREATE USER [OrderPartsUser]
    WITHOUT LOGIN;
GO

-- Install a certificate for the initiating user.
-- The certificate is provided by the owner of the
-- initiating service.

CREATE CERTIFICATE [OrderPartsCertificate]
    AUTHORIZATION [OrderPartsUser]
    FROM FILE='C:\Certificates\OrderParts.cer';
GO

-- Grant send on the target service to the user for the
-- initating service.

GRANT SEND ON SERVICE::[SupplierOrders]
    TO [OrderPartsUser];
GO