Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Den här artikeln beskriver hur man roterar Always Encrypted huvudnycklar och kolumnkrypteringsnycklar med SQL Server Management Studio (SSMS).
En översikt över Always Encrypted-nyckelhantering, inklusive rekommendationer för bästa praxis och viktiga säkerhetsöverväganden, finns i Översikt över nyckelhantering för Always Encrypted.
Not
Om du använder kolumnhuvudnycklar som lagras i en hanterade HSM- i Azure Key Vault krävs SSMS 18.9 eller en senare version.
Rotera huvudnycklar för kolumnkryptering
Rotationen av en kolumnhuvudnyckel är processen att ersätta en befintlig kolumnhuvudnyckel med en ny kolumnhuvudnyckel. Du kan behöva rotera en nyckel om den har komprometterats, eller för att uppfylla organisationens principer eller efterlevnadsregler som kräver kryptografiska nycklar måste roteras regelbundet. En kolumnhuvudnyckelrotation omfattar dekryptering av kolumnkrypteringsnycklar som skyddas med den aktuella kolumnhuvudnyckeln, omkrypterar dem med den nya kolumnhuvudnyckeln och uppdaterar nyckelmetadata.
Steg 1: Etablera en ny kolumnhuvudnyckel
Följ stegen i Etablera kolumnhuvudnycklar med dialogrutan Ny kolumnhuvudnyckel.
Steg 2: Kryptera kolumnkrypteringsnycklar med den nya kolumnhuvudnyckeln
En kolumnhuvudnyckel skyddar vanligtvis en eller flera kolumnkrypteringsnycklar. Varje kolumnkrypteringsnyckel har ett krypterat värde som lagras i databasen, som är produkten av kryptering av kolumnkrypteringsnyckeln med kolumnhuvudnyckeln. I det här steget krypterar du var och en av de kolumnkrypteringsnycklar som skyddas med den kolumnhuvudnyckel som du roterar med den nya kolumnhuvudnyckeln och lagrar det nya krypterade värdet i databasen. Därför har varje kolumnkrypteringsnyckel som påverkas av rotationen två krypterade värden: ett värde krypterat med den befintliga kolumnhuvudnyckeln och ett nytt värde krypterat med den nya kolumnhuvudnyckeln.
- Med Object Explorernavigerar du till mappen Security>Always Encrypted Keys>Column Master Keys och letar reda på den kolumnhuvudnyckel som du roterar.
- Högerklicka på kolumnhuvudnyckeln och välj Rotera.
- I dialogrutan kolumnhuvudnyckelrotation väljer du namnet på den nya kolumnhuvudnyckeln som du skapade i steg 1 i fältet Mål.
- Granska listan över kolumnkrypteringsnycklar som skyddas av de befintliga kolumnhuvudnycklarna. Dessa nycklar påverkas av rotationen.
- Klicka på OK.
SQL Server Management Studio hämtar metadata för de kolumnkrypteringsnycklar som skyddas med den gamla kolumnhuvudnyckeln och metadata för de gamla och de nya kolumnhuvudnycklarna. Sedan använder SSMS kolumnhuvudnyckelmetadata för att komma åt nyckelarkivet som innehåller den gamla kolumnhuvudnyckeln och dekryptera kolumnkrypteringsnycklarna. Därefter kommer SSMS att komma åt nyckelarkivet med den nya kolumnhuvudnyckeln för att skapa en ny uppsättning krypterade värden för kolumnkrypteringsnycklarna, och sedan lägger det till de nya värdena i metadata (genererar och utfärdar ALTER COLUMN ENCRYPTION KEY (Transact-SQL)-instruktioner).
Obs
Kontrollera att var och en av kolumnkrypteringsnycklarna, krypterade med den gamla kolumnhuvudnyckeln, inte är krypterade med någon annan kolumnhuvudnyckel. Med andra ord måste varje kolumnkrypteringsnyckel, som påverkas av rotationen, ha exakt ett krypterat värde i databasen. Om någon berörd kolumnkrypteringsnyckel har mer än ett krypterat värde måste du ta bort värdet innan du kan fortsätta med rotationen (se steg 4 om hur du tar bort ett krypterat värde för en kolumnkrypteringsnyckel).
Steg 3: Konfigurera dina program med den nya kolumnhuvudnyckeln
I det här steget måste du se till att alla klientprogram som kör frågor mot databaskolumner som skyddas med den kolumnhuvudnyckel som du roterar kan komma åt den nya kolumnhuvudnyckeln (det vill: databaskolumner krypterade med en kolumnkrypteringsnyckel som krypteras med kolumnhuvudnyckeln och roteras). Det här steget beror på vilken typ av nyckellagring din nya kolumnhuvudnyckel finns i. Till exempel:
- Om den nya kolumnhuvudnyckeln är ett certifikat som lagras i Windows Certificate Store måste du distribuera certifikatet till samma plats för certifikatarkivet (Aktuell användare eller Lokal dator) som den plats som anges i nyckelsökvägen för din kolumnhuvudnyckel i databasen. Programmet måste kunna komma åt certifikatet:
- Om certifikatet lagras i certifikatlagringsplatsen Current User, måste certifikatet importeras till Current User-lagringen för applikationens Windows-identitet (användare).
- Om certifikatet lagras på den lokala datorn certifikatarkivplatsen måste programmets Windows-identitet ha behörighet att komma åt certifikatet.
- Om den nya kolumnhuvudnyckeln lagras i Microsoft Azure Key Vault måste programmet implementeras så att det kan autentisera till Azure och ha behörighet att komma åt nyckeln.
Mer information finns i Skapa och lagra kolumnhuvudnycklar för Always Encrypted.
Obs
Vid den här tidpunkten i rotationen är både den gamla kolumnhuvudnyckeln och den nya kolumnhuvudnyckeln giltiga och kan användas för att komma åt data.
Steg 4: Rensa kolumnkrypteringsnyckelvärden som krypterats med den gamla kolumnhuvudnyckeln
När du har konfigurerat alla dina program för att använda den nya kolumnhuvudnyckeln tar du bort värdena för kolumnkrypteringsnycklar som är krypterade med den gamla huvudnyckeln för kolumn från databasen. Om du tar bort gamla värden ser du till att du är redo för nästa rotation (kom ihåg att varje kolumnkrypteringsnyckel, som skyddas med en kolumnhuvudnyckel som ska roteras, måste ha exakt ett krypterat värde).
En annan anledning till att rensa det gamla värdet innan du arkiverar eller tar bort den gamla kolumnhuvudnyckeln är prestandarelaterad: när du kör frågor mot en krypterad kolumn kan en Always Encrypted-aktiverad klientdrivrutin behöva försöka dekryptera två värden: det gamla värdet och det nya. Drivrutinen vet inte vilken av de två kolumnhuvudnycklarna som är giltig i programmets miljö, så drivrutinen hämtar båda krypterade värdena från servern. Om det inte går att dekryptera ett av värdena, eftersom det är skyddat med kolumnhuvudnyckeln som inte är tillgänglig (till exempel den gamla kolumnhuvudnyckeln som har tagits bort från arkivet), försöker drivrutinen dekryptera ett annat värde med den nya kolumnhuvudnyckeln.
Varning
Om du tar bort värdet för en kolumnkrypteringsnyckel innan dess motsvarande kolumnhuvudnyckel har gjorts tillgänglig för ett program kommer programmet inte längre att kunna dekryptera databaskolumnen.
- Med Object Explorernavigerar du till mappen Security>Always Encrypted Keys och letar upp den befintliga kolumnhuvudnyckel som du vill ersätta.
- Högerklicka på din befintliga kolumnhuvudnyckel och välj Rensa.
- Granska listan över kolumnkrypteringsnyckelvärden som ska tas bort.
- Klicka på OK.
SQL Server Management Studio utfärdar ALTER COLUMN ENCRYPTION KEY (Transact-SQL)-instruktioner för att släppa krypterade värden för kolumnkrypteringsnycklar som krypteras med den gamla kolumnhuvudnyckeln.
Steg 5: Ta bort metadata för din gamla kolumnhuvudnyckel
Om du väljer att ta bort definitionen av den gamla kolumnhuvudnyckeln från databasen använder du stegen nedan.
- Med Object Explorernavigerar du till mappen Security>Always Encrypted Keys>Column Master Keys och letar upp den gamla huvudnyckeln för kolumner som ska tas bort från databasen.
- Högerklicka på den gamla kolumnhuvudnyckeln och välj Ta bort. (Detta genererar och utfärdar en DROP COLUMN MASTER KEY (Transact-SQL)-instruktion för att ta bort kolumnhuvudnyckelmetadata.)
- Klicka på OK.
Notera
Vi rekommenderar starkt att du inte tar bort den gamla kolumnhuvudnyckeln permanent efter rotationen. I stället bör du behålla den gamla kolumnhuvudnyckeln i det aktuella nyckelarkivet eller arkivera den på en annan säker plats. Om du återställer databasen från en säkerhetskopia till en tidpunkt innan den nya kolumnhuvudnyckeln konfigurerades behöver du den gamla nyckeln för att komma åt data.
Behörigheter för att rotera kolumnmästernyckel
För att rotera en kolumnhuvudnyckel krävs följande databasbehörigheter:
- ÄNDRA VALFRI KOLUMNHUVUDNYCKEL – krävs för att skapa metadata för den nya kolumnhuvudnyckeln och ta bort metadata för den gamla kolumnhuvudnyckeln.
- ÄNDRA VALFRI KOLUMNKRYPTERINGSNYCKEL – krävs för att ändra kolumnkrypteringsnyckelmetadata (lägg till nya krypterade värden).
Du behöver också behörigheter för nyckellager för att kunna komma åt både den gamla kolumnhuvudnyckeln och den nya kolumnhuvudnyckeln i deras respektive nyckellager. Detaljerad information om nyckellagringsbehörigheter som krävs för nyckelhanteringsåtgärder finns i Skapa och lagra kolumnhuvudnycklar för Always Encrypted och hitta ett avsnitt som är relevant för ditt nyckelarkiv.
Rotera kolumnkrypteringsnycklar
Att rotera en kolumnkrypteringsnyckel innebär att dekryptera data i alla kolumner som krypteras med nyckeln som ska roteras ut och kryptera data igen med hjälp av den nya kolumnkrypteringsnyckeln.
Not
Det kan ta mycket lång tid att rotera en kolumnkrypteringsnyckel om tabellerna som innehåller kolumner som krypterats med nyckeln roteras är stora. Medan data omkrypteras kan dina program inte skriva till de berörda tabellerna. Därför måste din organisation planera en kolumnkrypteringsnyckelrotation mycket noggrant. Om du vill rotera en kolumnkrypteringsnyckel använder du guiden Always Encrypted.
- Öppna guiden för databasen: högerklicka på databasen, peka på Uppgifteroch klicka sedan på Kryptera kolumner.
- Granska sidan Introduktion och klicka sedan på Nästa.
- På sidan Kolumnval expanderar du tabellerna och letar upp alla kolumner som du vill ersätta som för närvarande är krypterade med den gamla kolumnkrypteringsnyckeln.
- För varje kolumn som krypteras med den gamla kolumnkrypteringsnyckeln anger du krypteringsnyckel till en ny automatiskt genererad nyckel. Obs! Du kan också skapa en ny kolumnkrypteringsnyckel innan du kör guiden – se Etablera kolumnkrypteringsnycklar med dialogrutan Ny kolumnkrypteringsnyckel.
- På sidan Huvudnyckelkonfiguration väljer du en plats för att lagra den nya nyckeln och väljer en huvudnyckelkälla och klickar sedan på Nästa. Obs! Om du använder en befintlig kolumnkrypteringsnyckel (inte en automatiskt genererad) finns det ingen åtgärd att utföra på den här sidan.
- På sidan Valideringväljer du om du vill köra skriptet direkt eller skapa ett PowerShell-skript och klickar sedan på Nästa.
- På sidan Sammanfattning granskar du de alternativ som du har valt och klickar sedan på Slutför och stänger guiden när den är klar.
- Med Object Explorernavigerar du till mappen Security/Always Encrypted Keys/Column Encryption Keys och letar upp den gamla kolumnkrypteringsnyckeln som ska tas bort från databasen. Högerklicka på nyckeln och välj Ta bort.
Behörigheter för att rotera kolumnkrypteringsnycklar
För att rotera en kolumnkrypteringsnyckel krävs följande databasbehörigheter: ALTER ANY COLUMN MASTER KEY – krävs om du använder en ny automatiskt genererad kolumnkrypteringsnyckel (en ny kolumnhuvudnyckel och dess nya metadata genereras också). ÄNDRA VALFRI KOLUMNKRYPTERINGSNYCKEL -required för att lägga till metadata för den nya kolumnkrypteringsnyckeln.
Du behöver också behörigheter för nyckellagring för att kunna komma åt kolumnhuvudnycklar för både den nya och den gamla kolumnkrypteringsnyckeln. Detaljerad information om nyckellagringsbehörigheter som krävs för nyckelhanteringsåtgärder finns i Skapa och lagra kolumnhuvudnycklar för Always Encrypted och hitta ett avsnitt som är relevant för ditt nyckelarkiv.
Nästa steg
- Frågekolumner med Always Encrypted med SQL Server Management Studio
- Utveckla program med Always Encrypted
Se även
- Alltid Krypterat
- Översikt över nyckelhantering för Always Encrypted
- Konfigurera Always Encrypted med SQL Server Management Studio
- Konfigurera Always Encrypted med PowerShell
- SKAPA KOLUMNHUVUDNYCKEL (Transact-SQL)
- TA BORT KOLUMNHUVUDNYCKEL (Transact-SQL)
- SKAPA KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)
- ÄNDRA KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)
- TA BORT KOLUMNKRYPTERINGSNYCKEL (Transact-SQL)
- sys.column_master_keys (Transact-SQL)
- sys.column_encryption_keys (Transact-SQL)