Procedure: Doelservices configureren voor volledige dialoogbeveiliging (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Managed Instance
SQL Server maakt gebruik van dialoogvensterbeveiliging voor elk gesprek met een service waarvoor een externe servicebinding bestaat in de database die als host fungeert voor de initiërende service. Wanneer de database die als host fungeert voor de doelservice een gebruiker bevat die overeenkomt met de gebruiker die het dialoogvenster heeft gemaakt, wordt in het dialoogvenster volledige beveiliging gebruikt.
Om ervoor te zorgen dat een doelservice dialoogbeveiliging gebruikt, maakt u een gebruiker aan voor de initiërende service om mee in te loggen. Voor elke initiërende service maakt u een gebruiker en installeert u het certificaat voor de initiërende gebruiker. U ziet dat een doelservice geen externe servicebinding gebruikt.
Een doelservice configureren voor volledige dialoogbeveiliging
Maak een gebruiker zonder aanmelding.
Maak een certificaat voor de gebruiker.
Notitie
Het certificaat moet worden versleuteld met de hoofdsleutel. Zie CREATE MASTER KEY (Transact-SQL)voor meer informatie.
Maak deze gebruiker de eigenaar van de doelservice.
Maak een back-up van het certificaat naar een bestand.
Notitie
Maak alleen een back-up van het certificaat voor deze gebruiker. Maak geen back-up of distribueer de persoonlijke sleutel die aan het certificaat is gekoppeld.
Verdeel de gebruiker van de doelservice toestemming om berichten te ontvangen uit de wachtrij die door de doelservice wordt gebruikt.
Geef het certificaat en de naam van de initiërende service op aan de databasebeheerder voor de externe database.
Notitie
Als SQL Server volledige dialoogvensterbeveiliging kan gebruiken, moet het certificaat worden geïnstalleerd in de externe database en moet de gebruiker voor het certificaat de gebruiker zijn die is opgegeven in de externe servicebinding voor de doelservice.
Haal een certificaat op voor een gebruiker in de externe database van een vertrouwde bron. Dit omvat meestal het verzenden van het certificaat met versleutelde e-mail of het overdragen van het certificaat op fysieke media, zoals een diskette.
Notitie
Installeer alleen certificaten van vertrouwde bronnen.
Maak een gebruiker zonder aanmelding.
Installeer het certificaat voor de initiërende service. De gebruiker die in de vorige stap is gemaakt, is eigenaar van het certificaat.
Maak een gebruiker zonder aanmelding voor het initiërende servicecertificaat.
Verdeel toestemming voor de initiërende gebruiker om berichten naar de doelservice te verzenden.
Voorbeeld
Notitie
De codevoorbeelden in dit artikel zijn getest met behulp van de AdventureWorks2022
voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.
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
-- initiating service.
GRANT SEND ON SERVICE::[SupplierOrders]
TO [OrderPartsUser];
GO
Zie ook
- Procedure: Initiërende services configureren voor volledige dialoogvensterbeveiliging (Transact-SQL)
- Procedure: Machtigingen configureren voor een lokale service (Transact-SQL)
- CREATE CERTIFICATE (Transact-SQL)
- CREATE USER (Transact-SQL)
- MAAK AFSTANDSSERVICEBINDING AAN (Transact-SQL)
- MASTERKEY AANMAKEN (Transact-SQL)