Certificaten en Service Broker

Van toepassing op:SQL ServerAzure SQL Managed Instance

In dit artikel wordt beschreven hoe SQL Server certificaten gebruikt voor externe beveiliging van Service Broker. Externe beveiliging van Service Broker verwijst naar bewerkingen die betrekking hebben op meer dan één SQL Server-exemplaar wanneer deze bewerkingen dialoogvensterbeveiliging of transportbeveiliging gebruiken.

Overzicht

Externe beveiliging van Service Broker wijst een bewerking van buiten een exemplaar toe aan een SQL Server-database-principal. De bewerking wordt vervolgens uitgevoerd in de beveiligingscontext van die database-principal, met normale SQL Server-machtigingscontroles. Wanneer een bericht bijvoorbeeld binnenkomt voor een gesprek dat dialoogvensterbeveiliging gebruikt, gebruikt Service Broker informatie in het bericht om een database-principal te identificeren voor de externe kant van het gesprek. SQL Server controleert vervolgens of de principal gemachtigd is om verbinding te maken met de database die als host fungeert voor de doelservice en toestemming om een bericht naar de doelservice te verzenden.

SQL Server gebruikt certificaten om de identiteit van een externe database te verifiëren en om de lokale database-principal voor de bewerking te identificeren. Daarom vormt het installeren van een certificaat in SQL Server een vertrouwensverklaring in de database die de persoonlijke sleutel voor het certificaat bevat. Beheer zorgvuldig de certificaten die u installeert en de externe servicebindingen die u maakt.

Opmerking

Installeer alleen certificaten van vertrouwde bronnen. Distribueer geen persoonlijke sleutels.

Om de identiteit van een externe server te verifiëren, moet SQL Server informatie ontvangen die kan worden ontsleuteld met de openbare sleutel in een certificaat dat eigendom is van een lokale database-principal. Als SQL Server de gegevens kan ontsleutelen, betekent dit dat de externe database de persoonlijke sleutel bevat die overeenkomt met de openbare sleutel in het lokale certificaat. Zodra SQL Server de identiteit van een externe database verifieert, kan de externe database handelen met de machtigingen van de lokale database-principal.

Voor transportbeveiliging moet elke database de andere database vertrouwen. Transportbeveiliging kan certificaten of Windows-verificatie gebruiken. Zie Service Broker-transportbeveiliging voor meer informatie over transportbeveiliging.

Voor de beveiliging van dialoogvensters moet de initiator van het dialoogvenster het doel vertrouwen en moet de identiteit van het doel kunnen verifiëren. Het doel kan echter verbindingen toestaan van initiators die geen identificatiegegevens bieden. In dit geval gebruiken de initiators de openbare rol in de database die als host fungeert voor de doelservice. Dialoogvensterbeveiliging maakt altijd gebruik van certificaten. Zie De beveiliging van het dialoogvenster Service Broker voor meer informatie over de beveiliging van dialoogvensters.

SQL Server biedt geen geautomatiseerde methoden voor de configuratie van Service Broker-beveiliging door middel van certificaten.

Certificaatvereisten

Een certificaat moet voldoen aan de volgende vereisten die moeten worden gebruikt voor Service Broker-beveiliging:

  • De sleutelmodulatie moet kleiner zijn dan 2048.
  • De totale certificaatlengte moet kleiner zijn dan 32 kilobytes (KB).
  • Er moet een onderwerpnaam worden opgegeven.
  • Geldigheidsdatums moeten worden opgegeven.
  • De sleutellengte moet een veelvoud van 64 bits zijn.

Een zelfondertekend certificaat dat is gemaakt met de Transact-SQL-instructie CREATE CERTIFICATE voldoet aan de vereisten in de voorgaande lijst. Certificaten die vanuit een bestand worden geladen, voldoen mogelijk niet aan deze vereisten.

Wanneer het certificaat is opgeslagen in SQL Server, moet het certificaat worden versleuteld met de hoofdsleutel voor de database. Service Broker kan geen certificaten gebruiken die alleen zijn versleuteld met een wachtwoord. De hoofdsleutel voor de database moet ook worden versleuteld met de servicesleutel voor het exemplaar. Anders kan Service Broker de hoofdsleutel niet openen.

Als u wilt dat SQL Server een certificaat gebruikt om een gesprek te starten, moet het certificaat worden gemarkeerd ACTIVE FOR BEGIN_DIALOG. Certificaten worden standaard gemarkeerd als actief voor het begindialoogvenster. U kunt er echter voor kiezen om een certificaat tijdelijk te deactiveren tijdens het bijwerken van de beveiligingsconfiguratie voor een service. Zie CREATE CERTIFICATE en ALTER CERTIFICATE voor meer informatie.