Dela via


Konfigurera kolumnkryptering med guiden Always Encrypted i SSMS

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Guiden Always Encrypted är ett kraftfullt verktyg som gör att du kan ange önskad Always Encrypted-konfiguration för valda databaskolumner. Beroende på den aktuella konfigurationen och den önskade målkonfigurationen kan guiden kryptera en kolumn, dekryptera den (ta bort kryptering) eller omkryptera den (till exempel med hjälp av en ny kolumnkrypteringsnyckel eller en krypteringstyp som skiljer sig från den aktuella typen, konfigurerad för kolumnen). Flera kolumner kan konfigureras i en enda körning av guiden.

Med guiden kan du kryptera kolumner med befintliga krypteringsnycklar, generera en ny kolumnkrypteringsnyckel eller både en ny kolumnkrypteringsnyckel och en ny kolumnhuvudnyckel.

Med guidens utvärdering kan du utvärdera tabellerna i en vald databas eller välja specifika tabeller att analysera. Den identifierar kolumner som är lämpliga för kryptering och markerar de som är inkompatibla med Always Encrypted på grund av deras datatyp, begränsningar och andra faktorer. Guiden innehåller en detaljerad lista över begränsningar för varje fält som förklarar varför specifika kolumner inte kan krypteras.

När databasen har konfigurerats med en säker enklav kan du köra kryptografiska åtgärder utan att flytta data från databasen. Guiden tar bort alla beroenden som blockerar schemaändringen av kolumnen som ska krypteras. Den utfärdar en kryptering på plats för varje kolumn med hjälp av enklaven i databasmotorn. När krypteringen är klar återskapar guiden beroendena. Mer information om Always Encrypted med säkra enklaver finns i avsnittet Always Encrypted med säkra enklaver.

När databasen inte har konfigurerats med en säker enklav kan du aktivera en säker enklav i guiden. Anta att du väljer att inte aktivera en säker enklav eller att du inte använder enklaveraktiverade nycklar. I så fall flyttar guiden data från databasen och utför kryptografiska åtgärder i SSMS-processen. Guiden skapar en ny tabell (eller tabeller) med önskad krypteringskonfiguration i databasen, läser in alla data från de ursprungliga tabellerna, utför de begärda kryptografiska åtgärderna, laddar upp data till de nya tabellerna och byter sedan en eller flera ursprungliga tabeller med de nya tabellerna.

Tips

Om du använder kryptering på plats med Always Encrypted med säkra enklaver, om det är tillgängligt i din miljö, kan det avsevärt minska tiden och tillförlitligheten för kryptografiska åtgärder.

Det kan ta lång tid att köra kryptografiska åtgärder. Under den tiden är databasen inte tillgänglig för att skriva transaktioner. PowerShell är ett rekommenderat verktyg för kryptografiska åtgärder i större tabeller. Se Konfigurera kolumnkryptering med Always Encrypted med PowerShell eller Konfigurera kolumnkryptering på plats med PowerShell.

Behörigheter

Om du vill utföra kryptografiska åtgärder med hjälp av guiden måste du ha behörigheten VIEW ANY COLUMN MASTER KEY DEFINITION och VIEW ANY COLUMN ENCRYPTION KEY DEFINITION. Du behöver också behörigheter för nyckellagring för att skapa, komma åt och använda din kolumnhuvudnyckel. Detaljerad information om nyckellagringsbehörigheter finns i Skapa och lagra kolumnhuvudnycklar för Always Encrypted eller hitta ett avsnitt som är relevant för ditt nyckelarkiv.

Öppna guiden Always Encrypted

Du kan starta guiden på tre olika nivåer:

  • Om du vill kryptera flera kolumner i olika tabeller på databasnivå.
  • Om du vill kryptera flera kolumner i samma tabell på tabellnivå.
  • Om du vill kryptera en specifik kolumn på kolumnnivå.
  1. Anslut till SQL Server med Object Explorer-komponenten i SQL Server Management Studio.

  2. Så här krypterar du:

    • Flera kolumner som finns i olika tabeller i en databas, högerklickar på databasen, pekar på Uppgifter och väljer sedan Guiden Alltid krypterad.

    • Flera kolumner i samma tabell, navigera till tabellen, högerklicka på den och välj sedan Guiden Alltid krypterad.

    • En enskild kolumn, navigera till kolumnen, högerklicka på den och välj sedan Guiden Alltid krypterad.

Kolumnvalsida

På den här sidan väljer du kolumner för att kryptera, kryptera om eller dekryptera och definiera målkrypteringskonfigurationen för dem.

Om du vill kryptera en oformaterad kolumn (en kolumn som inte är krypterad) väljer du en krypteringstyp (deterministisk eller randomiserad) och en krypteringsnyckel för kolumnen.

Välj önskad krypteringstyp och nyckeln för att ändra en krypteringstyp eller rotera (ändra) en kolumnkrypteringsnyckel för en redan krypterad kolumn.

Om du vill att guiden ska kryptera eller kryptera om en eller flera kolumner med hjälp av en ny kolumnkrypteringsnyckel väljer du en nyckel som innehåller (Ny) i dess namn. Guiden genererar nyckeln.

Om du vill dekryptera en för närvarande krypterad kolumn väljer du Klartext som krypteringstyp.

Tips

Om du vill använda kryptering på plats och använder befintliga nycklar kontrollerar du att du väljer enklaveraktiverade nycklar, kommenterade med (enklaveraktiverade).

Guiden stöder inte kryptografiska operationer på temporala och minnesinterna tabeller. Du kan skapa tomma temporala tabeller eller minnesinterna tabeller med hjälp av Transact-SQL och infoga data med ditt program.

Kolumnutvärderingssidan

De valda tabellerna och kolumnerna utvärderas för lämplighet för Always Encrypted eller Always Encrypted med säkra enklaver. Utvärderingen startar automatiskt genom att visa ett statusfält och en lista över de tabeller och kolumner som utvärderas, vilka som görs och vilka som ska göras. Utvärderingen kontrollerar om en tabellkolumn uppfyller kraven för Always Encrypted eller Always Encrypted med säkra enklaver baserat på begränsningarna.

Om en kolumn inte uppfyller kraven visar utvärderingen statusen "Fel" för kolumnen. Om du väljer länken Meddelanden kan du få detaljerad information om varför den specifika kolumnen inte kan krypteras.

Du kan kryptera de skickade utvärderingskolumnerna genom att markera kryssrutan. Guiden hoppar automatiskt över alla kolumner som inte klarar utvärderingen. Dessutom kan du exportera resultatet till en CSV eller textfil genom att välja knappen Rapport.

Huvudnyckelkonfigurationssida

Om du har valt en automatiskt genererad kolumnkrypteringsnyckel för valfri kolumn på föregående sida måste du antingen välja en befintlig kolumnhuvudnyckel eller konfigurera en ny kolumnhuvudnyckel som krypterar kolumnkrypteringsnyckeln på den här sidan.

När du konfigurerar en ny kolumnhuvudnyckel kan du antingen välja en befintlig nyckel i Windows Certificate Store eller Azure Key Vault och låta guiden skapa bara ett metadataobjekt för nyckeln i databasen, eller så kan du välja att generera både nyckeln och metadataobjektet som beskriver nyckeln i databasen.

Om du vill använda kryptering på plats väljer du Tillåt enklaverberäkningar för en ny kolumnhuvudnyckel. Det är endast tillåtet att markera den här kryssrutan om databasen har konfigurerats med en säker enklav.

Mer information om hur du skapar och lagrar kolumnhuvudnycklar i Windows Certificate Store, Azure Key Vault eller andra nyckellager finns i Skapa och lagra kolumnhuvudnycklar för Always Encrypted eller Hantera nycklar för Always Encrypted med säkra enklaver.

Tips

Guiden tillåter dig att bläddra och skapa nycklar enbart i Windows Certificate Store och Azure Key Vault. Den skapar också automatiskt namnen på de nya nycklarna och databasmetadataobjekten som beskriver dem. Anta att du behöver mer kontroll över hur dina nycklar tilldelas (och fler alternativ för ett nyckellager som innehåller din kolumnhuvudnyckel). I så fall kan du använda dialogrutorna Ny kolumnhuvudnyckel och Ny kolumnkrypteringsnyckel för att skapa nycklarna först och sedan köra guiden och välja de nycklar som du har skapat. Se Etablera kolumnhuvudnycklar med dialogrutan Ny kolumnhuvudnyckel eller Etablera enklaveraktiverade nycklar och Etablera kolumnkrypteringsnycklar med dialogrutan Ny kolumnkrypteringsnyckel.

In-Place Krypteringsinställningar sidan

Om du har konfigurerat en säker enklav i databasen och använder enklaveraktiverade nycklar kan du på den här sidan ange de enklaverattesteringsparametrar som krävs för kryptering på plats. Om du inte vill använda kryptering på plats avmarkerar du Använd kryptering på plats för berättigade kolumner för att fortsätta med kryptering på klientsidan. Vi rekommenderar att du låter den här kryssrutan vara aktiverad så att guiden kan använda kryptering på plats.

Mer information om enklavattestering finns i Konfigurera attestering för Always Encrypted med Azure Attestation

Sidan Körinställningar

Guiden stöder två metoder för att konfigurera målkrypteringskonfigurationen: online och offline.

Med offlinemetoden är måltabellerna och alla tabeller som är relaterade till måltabellerna (till exempel tabeller som en måltabell har sekundärnyckelrelationer med) inte tillgängliga för att skriva transaktioner under hela åtgärdens varaktighet. Semantiken för begränsningar för främmande nyckel (CHECK eller NOCHECK) bevaras alltid när man använder offlinemetoden.

Med onlinemetoden utförs kopiering, kryptering, dekryptering eller omkryptering av data stegvis. Program kan läsa och skriva data från och till måltabellerna under hela dataflytten, förutom den senaste iterationen, vars varaktighet begränsas av parametern Maximal stilleståndstid . För att identifiera och bearbeta de ändringar som program kan göra när data kopieras aktiverar guiden Ändringsspårning i måldatabasen. På grund av detta kommer onlinemetoden sannolikt att förbruka fler resurser på databassidan än offlinemetoden. Åtgärden kan också ta längre tid med onlinemetoden, särskilt om en skrivintensiv arbetsbelastning körs mot databasen. Onlinemetoden kan användas för att kryptera en tabell i taget och tabellen måste ha en primärnyckel. Som standard återskapas begränsningarna för främmande nycklar med alternativet NOCHECK för att minimera påverkan på applikationer. Du kan framtvinga bevarandet av semantiken för sekundärnyckelbegränsningar genom att aktivera alternativet Keep check foreign key constraints.

Här följer riktlinjerna för att välja mellan offline- och onlinemetoder:

Använd offlinemetoden:

  • För att minimera varaktigheten för åtgärden.
  • För att kryptera/dekryptera/kryptera om kolumner i flera tabeller samtidigt.
  • Om måltabellen inte har någon primär nyckel.

Använd onlinemetoden:

  • För att minimera stilleståndstiden/otillgängligheten för databasen till dina program.

Efter att krypteringen har genomförts

Rensa planens cache för alla batchar och lagrade procedurer som har åtkomst till tabellen för att uppdatera krypteringsinformationen av parametrar.

ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;

Anmärkning

Om du inte tar bort planen för den berörda frågan från cacheminnet kan den första körningen av frågan efter kryptering misslyckas.

Använd ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE eller DBCC FREEPROCCACHE för att rensa plancachen noggrant, eftersom det kan leda till tillfällig försämring av frågeprestanda. För att minimera den negativa effekten av att rensa cacheminnet kan du selektivt ta bort planerna för endast de berörda frågorna.

Anropa sp_refresh_parameter_encryption för att uppdatera metadata för parametrarna för varje modul (lagrad procedur, funktion, vy, utlösare) som sparas i sys.parameters och kan ha ogiltigförklarats genom att kolumnerna krypterades.