Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Wanneer een gesprek begint, gebruikt Service Broker externe servicebindingen om het certificaat te vinden dat voor het gesprek moet worden gebruikt. In dit onderwerp wordt beschreven hoe Service Broker het certificaat bepaalt dat moet worden gebruikt voor een gesprek.
Het certificaat voor een dialoogvenster zoeken
Service Broker zoekt eerst een externe servicebinding voor het gesprek en selecteert vervolgens een certificaat dat eigendom is van de gebruiker die is opgegeven in de binding.
Om een binding te vinden, controleert Service Broker de database op een binding waarmee de naam van de doelservice voor het gesprek wordt opgegeven.
Als u een certificaat wilt selecteren, zoekt Service Broker het certificaat met de meest recente vervaldatum die eigendom is van de gebruiker die is opgegeven in de externe servicebinding. Service Broker beschouwt certificaten die nog niet geldig zijn, die zijn verlopen of die niet zijn gemarkeerd als beschikbaar voor het begindialoogvenster. Zie CREATE CERTIFICATE voor meer informatie over certificaten.
Als er geen externe servicebinding bestaat of als de gebruiker voor de externe servicebinding geen geldig certificaat heeft dat beschikbaar is voor het dialoogvenster Begin, kan Service Broker geen berichten voor het gesprek versleutelen. Als er geen binding is en de database een Broker Configuration Service bevat, vraagt Service Broker een binding aan via die service. Als er geen Broker Configuration Service in de database staat of als de Broker Configuration Service geen externe servicebinding biedt, wordt het gesprek vertraagd als versleuteling is ONof zonder versleuteling wordt voortgezet als versleuteling is OFF. Zie Het beveiligingstype van het dialoogvenster bepalen voor meer informatie.
Externe autorisatie en dialoogvensterbeveiliging
Service Broker-dialoogvensterbeveiliging maakt gebruik van certificaten voor externe autorisatie. Wanneer een dialoogvenster gebruikmaakt van de beveiliging van dialoogvensters, bevat het eerste bericht dat door elke deelnemer in het gesprek wordt verzonden headergegevens die zijn versleuteld met de persoonlijke sleutel van de verzendende gebruiker en headergegevens die zijn versleuteld met de openbare sleutel van de ontvangende gebruiker. De inhoud van het bericht wordt versleuteld met een sessiesleutel. De sessiesleutel zelf is versleuteld en kan alleen worden hersteld met behulp van de persoonlijke sleutel voor de ontvangende gebruiker.
Als de ontvanger van het bericht het bericht kan ontsleutelen, betekent dit dat de geadresseerde de bijbehorende sleutels heeft en dat de identiteit van elke deelnemer in het gesprek wordt bevestigd. Als u een certificaat in een database installeert, wordt er een vertrouwensrelatie gemaakt met de database die de persoonlijke sleutel bevat.
Als u een header versleutelt met de persoonlijke sleutel voor de lokale gebruiker, wordt de vraag gesteld: 'Vertrouwt de externe database de lokale database?' De externe database kan de header alleen ontsleutelen als de database de bijbehorende openbare sleutel bevat. Als u een header versleutelt met de openbare sleutel voor een gebruiker in de externe database, wordt de vraag gesteld: 'Vertrouwt de lokale database de externe database?' De externe database kan de header alleen ontsleutelen als de database de bijbehorende persoonlijke sleutel bevat. Voor beveiliging en efficiƫntie stelt Service Broker beide vragen tegelijk. Het bericht is echter gestructureerd, zodat een geadresseerde beide vragen moet kunnen bevestigen om correct op het bericht te reageren.
De redenering achter deze strategie is eenvoudig. Als de externe database een header kan ontsleutelen die is versleuteld met een persoonlijke sleutel in de lokale database, bevat de externe database de bijbehorende openbare sleutel en vertrouwt de externe database de lokale database. Als de externe database een header kan ontsleutelen die is versleuteld met een openbare sleutel in de lokale database, bevat de externe database de bijbehorende persoonlijke sleutel en vertrouwt de lokale database de externe database. Zolang de persoonlijke sleutels geheim blijven, kunnen alleen de twee databases in het gesprek berichten uitwisselen voor het gesprek.
Opmerking
Installeer alleen certificaten van vertrouwde bronnen. Distribueer geen persoonlijke sleutels.
De volledige dialoogvensterbeveiliging controleert de identiteit in beide richtingen tijdens de eerste uitwisseling van berichten. Voor gesprekken die gebruikmaken van anonieme dialoogvensterbeveiliging controleert de initiator of de doeldatabase de verwachte persoonlijke sleutel bevat. Met anonieme dialoogvensterbeveiliging verifieert de doeldatabase echter niet de identiteit van de initiator; In plaats daarvan moet de database die als host fungeert voor de doelservice de rol openbare vaste database toestaan om berichten naar de service te verzenden.
Berichten moeten op beide manieren worden uitgewisseld voordat de lokale database de identiteit van de externe database als bevestigd beschouwt. Verificatie kan alleen plaatsvinden als de lokale database de juiste openbare sleutel voor het certificaat in de externe database bevat.
Voor het eerste bericht dat aan elke zijde van het gesprek wordt verzonden, bevat Service Broker de volgende headers:
Een beveiligingsheader van een servicepaar met informatie over de certificaten die voor het bericht worden gebruikt. De beveiligingsheader van het servicepaar is ondertekend met de persoonlijke sleutel voor de gebruiker die eigenaar is van de service.
Een sleuteluitwisselingssleutel waarmee de 128-bits sessiesleutel wordt versleuteld die wordt gebruikt om de hoofdtekst van het bericht te versleutelen. De sleuteluitwisselingssleutel wordt versleuteld met de openbare sleutel voor de externe gebruiker.
Voor dialoogvensters die gebruikmaken van anonieme beveiliging, blijft de beveiligingsheader van het servicepaar niet versleuteld. Het bericht zelf is nog steeds versleuteld en de sleuteluitwisselingssleutel wordt versleuteld met de openbare sleutel voor de beveiligingsprincipaal in de doeldatabase. In dit geval bevat het eerste retourbericht geen sleuteluitwisselingssleutel, servicepaarbeveiligingsheader of een versleutelde sessiesleutel.
Wanneer Service Broker zelf een bericht genereert als reactie op een binnenkomend bericht (bijvoorbeeld een fout of bevestiging), gebruikt dat bericht de sessiesleutel van het binnenkomende bericht, ongeacht of het dialoogvenster volledige beveiliging of anonieme beveiliging gebruikt.