Delen via


Always Encrypted-sleutels roteren met SQL Server Management Studio

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

In dit artikel worden taken beschreven voor het draaien van always encrypted-kolomhoofdsleutels en kolomversleutelingssleutels met SSMS -(SQL Server Management Studio).

Zie Overzicht van sleutelbeheer voor Always Encrypted-voor een overzicht van Always Encrypted-sleutelbeheer, inclusief aanbevelingen voor aanbevolen procedures en belangrijke beveiligingsoverwegingen.

Notitie

Voor het gebruik van kolomhoofdsleutels die zijn opgeslagen in een beheerde HSM- in Azure Key Vault is SSMS 18.9 of een latere versie vereist.

Draai kolomhoofdsleutels

De rotatie van een kolomhoofdsleutel is het proces voor het vervangen van een bestaande kolomhoofdsleutel door een nieuwe kolomhoofdsleutel. Mogelijk moet u een sleutel roteren als deze is gecompromitteerd, of om te voldoen aan het beleid of de nalevingsregels van uw organisatie die cryptografische sleutels verplicht stellen, regelmatig moeten worden geroteerd. Een kolomhoofdsleutelrotatie omvat het ontsleutelen van kolomversleutelingssleutels die zijn beveiligd met de huidige hoofdsleutel van de kolom, opnieuw versleutelen met behulp van de nieuwe kolomhoofdsleutel en het bijwerken van de sleutelmetagegevens.

Stap 1: Een nieuwe kolomhoofdsleutel inrichten

Volg de stappen in Kolomhoofdsleutels inrichten met het dialoogvenster Nieuwe kolomhoofdsleutel.

Notitie

Wanneer u Azure Key Vault als sleutelarchief gebruikt, wordt roulatie van door de klant beheerde sleutels niet ondersteund. Zorg ervoor dat de nieuwe door de klant beheerde sleutel zich in dezelfde tenant bevindt als de bestaande sleutel.

Stap 2: Versleutelingssleutels voor kolommen versleutelen met de nieuwe kolomhoofdsleutel

Een kolomhoofdsleutel beveiligt doorgaans een of meer kolomversleutelingssleutels. Elke kolomversleutelingssleutel heeft een versleutelde waarde die is opgeslagen in de database die het product is van het versleutelen van de kolomversleutelingssleutel met de kolomhoofdsleutel. In deze stap versleutelt u elk van de kolomversleutelingssleutels die zijn beveiligd met de kolomhoofdsleutel die u roteert, met de nieuwe kolomhoofdsleutel en slaat u de nieuwe versleutelde waarde op in de database. Als gevolg hiervan heeft elke kolomversleutelingssleutel die wordt beïnvloed door de rotatie twee versleutelde waarden: één waarde die is versleuteld met de bestaande hoofdsleutel van de kolom en een nieuwe waarde die is versleuteld met de nieuwe kolomhoofdsleutel.

  1. Ga met Objectverkennernaar Security>Always Encrypted-sleutels>kolomhoofdsleutels en zoek de kolomhoofdsleutel die u aan het draaien bent.
  2. Klik met de rechtermuisknop op de kolomhoofdsleutel en selecteer draaien.
  3. Selecteer in het dialoogvenster kolomhoofdsleutelrotatie de naam van uw nieuwe kolomhoofdsleutel, die u in stap 1 hebt gemaakt, in het veld Doel.
  4. Bekijk de lijst met kolomversleutelingssleutels, beveiligd door de bestaande kolomhoofdsleutels. Deze sleutels worden beïnvloed door de rotatie.
  5. Kies OK.

SQL Server Management Studio verkrijgt de metagegevens van de kolomversleutelingssleutels die zijn beveiligd met de oude kolomhoofdsleutel en de metagegevens van de oude en de nieuwe kolomhoofdsleutels. Vervolgens gebruikt SSMS de metagegevens van de kolomhoofdsleutel om toegang te krijgen tot het sleutelarchief met de oude kolomhoofdsleutel en de kolomversleutelingssleutel(s) te ontsleutelen. Vervolgens heeft SSMS toegang tot het sleutelarchief met de nieuwe kolomhoofdsleutel om een nieuwe set versleutelde waarden van de kolomversleutelingssleutels te produceren. Vervolgens worden de nieuwe waarden toegevoegd aan de metagegevens (genereren en uitgeven van ALTER COLUMN ENCRYPTION KEY-instructies ).

Notitie

Zorg ervoor dat elk van de kolomversleutelingssleutels, die zijn versleuteld met de oude kolomhoofdsleutel, niet is versleuteld met een andere kolomhoofdsleutel. Met andere woorden, elke kolomversleutelingssleutel, die wordt beïnvloed door de rotatie, moet precies één versleutelde waarde in de database hebben. Als een betrokken kolomversleutelingssleutel meer dan één versleutelde waarde heeft, moet u de waarde verwijderen voordat u verder kunt gaan met de rotatie (zie stap 4 over het verwijderen van een versleutelde waarde van een kolomversleutelingssleutel).

Stap 3: Uw toepassingen configureren met de nieuwe kolomhoofdsleutel

In deze stap moet u ervoor zorgen dat al uw clienttoepassingen die databasekolommen doorzoeken die zijn beveiligd met de kolomhoofdsleutel die u aan het roteren bent, toegang hebben tot de nieuwe kolomhoofdsleutel (oftewel, databasekolommen die zijn versleuteld met een kolom-encryptiesleutel die versleuteld is met de kolomhoofdsleutel die wordt geroteerd). Deze stap is afhankelijk van het type sleutelarchief waarin de nieuwe kolomhoofdsleutel zich bevindt. Bijvoorbeeld:

  • Als de nieuwe kolomhoofdsleutel een certificaat is dat is opgeslagen in het Windows-certificaatarchief, moet u het certificaat implementeren op dezelfde locatie van het certificaatarchief (huidige gebruiker of lokale computer) als de locatie die is opgegeven in het sleutelpad van de kolomhoofdsleutel in de database. De toepassing moet toegang hebben tot het certificaat:
    • Als het certificaat is opgeslagen in de locatie van het Huidige gebruiker certificaatarchief, moet het certificaat worden geïmporteerd in het huidige gebruikersarchief van de Windows-identiteit (gebruiker) van de toepassing.
    • Als het certificaat is opgeslagen op de locatie van het lokale computer certificaatarchief, moet de Windows-identiteit van de toepassing gemachtigd zijn voor toegang tot het certificaat.
  • Als de nieuwe kolomhoofdsleutel is opgeslagen in Microsoft Azure Key Vault, moet de toepassing worden geïmplementeerd, zodat deze kan worden geverifieerd bij Azure en gemachtigd is voor toegang tot de sleutel.

Zie Kolomhoofdsleutels maken en opslaan voor Always Encrypted-voor meer informatie.

Notitie

Op dit punt in de rotatie zijn zowel de oude kolomhoofdsleutel als de nieuwe kolomhoofdsleutel geldig en kunnen ze worden gebruikt voor toegang tot de gegevens.

Stap 4: Versleutelingssleutelwaarden voor kolommen opschonen die zijn versleuteld met de oude kolomhoofdsleutel

Nadat u al uw toepassingen hebt geconfigureerd voor het gebruik van de nieuwe kolomhoofdsleutel, verwijdert u de waarden van kolomversleutelingssleutels die zijn versleuteld met de oude kolomhoofdsleutel uit de database. Als u oude waarden verwijdert, zorgt u ervoor dat u klaar bent voor de volgende rotatie (onthoud dat elke kolomversleutelingssleutel, beveiligd met een kolomhoofdsleutel die moet worden geroteerd, exact één versleutelde waarde moet hebben).

Een andere reden om de oude waarde op te schonen voordat u de oude kolomhoofdsleutel archiveert of verwijdert, is prestatiegerelateerd: bij het uitvoeren van query's op een versleutelde kolom moet een clientstuurprogramma met Always Encrypted mogelijk twee waarden ontsleutelen: de oude waarde en de nieuwe. Het stuurprogramma weet niet welke van de twee kolomhoofdsleutels geldig is in de omgeving van de toepassing, zodat het stuurprogramma beide versleutelde waarden van de server ophaalt. Als het ontsleutelen van een van de waarden mislukt omdat de kolomhoofdsleutel waarmee het is beveiligd niet beschikbaar is (bijvoorbeeld de oude kolomhoofdsleutel die uit de opslag is verwijderd), zal het stuurprogramma proberen een andere waarde te ontsleutelen met behulp van de nieuwe kolomhoofdsleutel.

Waarschuwing

Als u de waarde van een kolomversleutelingssleutel verwijdert voordat de bijbehorende kolomhoofdsleutel beschikbaar is gemaakt voor een toepassing, kan de toepassing de databasekolom niet meer ontsleutelen.

  1. Navigeer met Objectverkennernaar de map Security>Always Encrypted Keys en zoek de bestaande kolomhoofdsleutel die u wilt vervangen.
  2. Klik met de rechtermuisknop op de bestaande kolomhoofdsleutel en selecteer Opschonen.
  3. Controleer de lijst met waarden voor kolomversleutelingssleutels die moeten worden verwijderd.
  4. Kies OK.

SQL Server Management Studio geeft ALTER COLUMN ENCRYPTION KEY-instructies uit om versleutelde waarden van kolomversleutelingssleutels te verwijderen die zijn versleuteld met de oude kolomhoofdsleutel.

Stap 5: Metagegevens voor uw oude kolomhoofdsleutel verwijderen

Als u ervoor kiest om de definitie van de oude kolomhoofdsleutel uit de database te verwijderen, gebruikt u de onderstaande stappen.

  1. Navigeer met Objectverkennernaar de map Security>Always Encrypted Keys>Kolomhoofdsleutels map en zoek de oude kolomhoofdsleutel die uit de database moet worden verwijderd.
  2. Klik met de rechtermuisknop op de oude kolomhoofdsleutel en selecteer verwijderen. (Hiermee wordt een DROP COLUMN MASTER KEY statement gegenereerd en uitgevoerd om de metagegevens van de kolomhoofdsleutel te verwijderen.)
  3. Kies OK.

Notitie

Het wordt ten zeerste aanbevolen om de oude kolomhoofdsleutel niet definitief te verwijderen na de rotatie. In plaats daarvan moet u de oude kolomhoofdsleutel in het huidige sleutelarchief bewaren of archiveren op een andere veilige plaats. Als u de database herstelt van een back-upbestand naar een bepaald tijdstip voordat de nieuwe kolomhoofdsleutel is geconfigureerd, hebt u de oude sleutel nodig om toegang te krijgen tot de gegevens.

Machtigingen voor het roteren van de kolomhoofdsleutel

Voor het roteren van een kolomhoofdsleutel zijn de volgende databasemachtigingen vereist:

  • ALTER ANY COLUMN MASTER KEY - vereist voor het maken van metagegevens voor de nieuwe kolomhoofdsleutel en het verwijderen van de metagegevens voor de oude kolomhoofdsleutel.
  • ALTER ANY COLUMN ENCRYPTION KEY - vereist voor het wijzigen van metagegevens van kolomversleutelingssleutels (nieuwe versleutelde waarden toevoegen).

U hebt ook sleutelarchiefmachtigingen nodig om toegang te krijgen tot zowel de oude kolomhoofdsleutel als de nieuwe kolomhoofdsleutel in de sleutelarchieven. Voor gedetailleerde informatie over sleutelarchiefmachtigingen die vereist zijn voor sleutelbeheerbewerkingen, gaat u naar kolomhoofdsleutels maken en opslaan voor Always Encrypted- en zoekt u een sectie die relevant is voor uw sleutelarchief.

Kolomversleutelingssleutels roteren

Het roteren van een kolomversleutelingssleutel omvat het ontsleutelen van de gegevens in alle kolommen die zijn versleuteld met de sleutel die moet worden gedraaid en het opnieuw versleutelen van de gegevens met behulp van de nieuwe kolomversleutelingssleutel.

Notitie

Het roteren van een kolomversleutelingssleutel kan erg lang duren als de tabellen met kolommen die zijn versleuteld met de sleutel die wordt geroteerd, groot zijn. Terwijl de gegevens opnieuw worden versleuteld, kunnen uw toepassingen niet naar de betrokken tabellen schrijven. Daarom moet uw organisatie een rotatie van kolomversleutelingssleutels zorgvuldig plannen. Gebruik de wizard Always Encrypted om een kolomversleutelingssleutel te draaien.

  1. Open de wizard voor uw database: klik met de rechtermuisknop op uw database, wijs Taken aan en selecteer Kolommen versleutelen.
  2. Bekijk de introductiepagina en selecteer Volgende.
  3. Vouw op de pagina Kolomselectie de tabellen uit en zoek alle kolommen die u wilt vervangen die momenteel zijn versleuteld met de oude kolomversleutelingssleutel.
  4. Stel voor elke kolom die is versleuteld met de oude sleutel voor kolomversleuteling, , de encryptiesleutel in op een nieuwe automatisch gegenereerde sleutel. Opmerking: U kunt ook een nieuwe kolomversleutelingssleutel maken voordat u de wizard uitvoert. Zie Kolomversleutelingssleutels inrichten met het dialoogvenster Nieuwe kolomversleutelingssleutel.
  5. Selecteer op de pagina Basissleutelconfiguratie een locatie om de nieuwe sleutel op te slaan en selecteer een hoofdsleutelbron en selecteer vervolgens Volgende. Opmerking: Als u een bestaande versleutelingssleutel voor kolommen gebruikt (niet een automatisch gegenereerde sleutel), hoeft u deze pagina niet uit te voeren.
  6. Kies op de pagina Validatie of u het script direct wilt uitvoeren of een PowerShell-script wilt maken en selecteer vervolgens Volgende.
  7. Controleer op de pagina Samenvatting de opties die u hebt geselecteerd en selecteer vervolgens Voltooien en sluit de wizard wanneer u klaar bent.
  8. Navigeer met Objectverkennernaar de map Security/Always Encrypted Keys/Column Encryption Keys en zoek uw oude kolomversleutelingssleutel die uit de database moet worden verwijderd. Klik met de rechtermuisknop op de toets en selecteer Verwijderen.

Machtigingen voor het roteren van kolomversleutelingssleutels

Voor het roteren van een kolomversleutelingssleutel zijn de volgende databasemachtigingen vereist: ALTER ANY COLUMN MASTER KEY - vereist als u een nieuwe automatisch gegenereerde kolomversleutelingssleutel gebruikt (er wordt ook een nieuwe kolomhoofdsleutel en de nieuwe metagegevens gegenereerd). WIJZIG EEN KOLOMVERSLEUTELINGSSLEUTEL -required om metagegevens toe te voegen voor de nieuwe kolomversleutelingssleutel.

U hebt ook sleutelarchiefmachtigingen nodig om toegang te krijgen tot kolomhoofdsleutels voor zowel de nieuwe als de oude kolomversleutelingssleutel. Voor gedetailleerde informatie over sleutelarchiefmachtigingen die vereist zijn voor sleutelbeheerbewerkingen, gaat u naar kolomhoofdsleutels maken en opslaan voor Always Encrypted- en zoekt u een sectie die relevant is voor uw sleutelarchief.