Not
Å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
I den här självstudien lär du dig hur du kommer igång med Always Encrypted. Den visar dig:
- Så här krypterar du valda kolumner i databasen.
- Så här gör du en förfrågan mot krypterade kolumner.
Anmärkning
Om du letar efter information om Always Encrypted med säkra enklaver, se följande handledningar i stället:
Förutsättningar
För den här självstudien behöver du:
- En tom databas i Azure SQL Database, Azure SQL Managed Instance eller SQL Server. Anvisningarna nedan förutsätter att databasnamnet är ContosoHR. Du måste vara ägare till databasen (medlem i db_owner-rollen). Information om hur du skapar en databas finns i Snabbstart: Skapa en enkel databas – Azure SQL Database eller Skapa en databas i SQL Server.
- Valfritt, men rekommenderas, särskilt om databasen finns i Azure: ett nyckelvalv i Azure Key Vault. Information om hur du skapar ett nyckelvalv finns i Snabbstart: Skapa ett nyckelvalv med azure-portalen.
- Om nyckelvalvet använder behörighetsmodellen för åtkomstprinciper kontrollerar du att du har följande nyckelbehörigheter i nyckelvalvet:
get,list,create,unwrap key,wrap key,verify,sign. Se Tilldela en nyckelvalv-åtkomstprincip. - Om du använder behörighetsmodellen för rollbaserad åtkomstkontroll (RBAC) i Azure kontrollerar du att du är medlem i Key Vault Crypto Officer roll för ditt nyckelvalv. Se Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure.
- Om nyckelvalvet använder behörighetsmodellen för åtkomstprinciper kontrollerar du att du har följande nyckelbehörigheter i nyckelvalvet:
- Den senaste versionen av SQL Server Management Studio (SSMS) eller den senaste versionen av SqlServer - och Az PowerShell-modulerna. Az PowerShell-modulen krävs endast om du använder Azure Key Vault.
Steg 1: Skapa och fylla i databasschemat
I det här steget skapar du HR-schemat och tabellen Anställda . Sedan fyller du i tabellen med vissa data.
Anslut till databasen. Anvisningar om hur du ansluter till en databas från SSMS finns i Snabbstart: Ansluta och fråga en Azure SQL Database eller en Azure SQL Managed Instance med SQL Server Management Studio (SSMS) eller Snabbstart: Ansluta och fråga en SQL Server-instans med SQL Server Management Studio (SSMS).
Öppna ett nytt frågefönster för ContosoHR-databasen .
Klistra in och kör nedanstående instruktioner för att skapa en ny tabell med namnet Anställda.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL , [SSN] [char](11) NOT NULL , [FirstName] [nvarchar](50) NOT NULL , [LastName] [nvarchar](50) NOT NULL , [Salary] [money] NOT NULL ) ON [PRIMARY];Klistra in och kör nedanstående instruktioner för att lägga till några anställningsposter i Anställda-tabellen.
INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '795-73-9838' , N'Catherine' , N'Abel' , $31692 ); INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '990-00-6818' , N'Kim' , N'Abercrombie' , $55415 );
Steg 2: Kryptera kolumner
I det här steget etablerar du en kolumnhuvudnyckel och en kolumnkrypteringsnyckel för Always Encrypted. Sedan krypterar du kolumnerna SSN och Lön i tabellen Anställda .
SSMS innehåller en guide som hjälper dig att enkelt konfigurera Always Encrypted genom att konfigurera en kolumnhuvudnyckel, en kolumnkrypteringsnyckel och kryptera valda kolumner.
I Object Explorer, expandera Databaser>ContosoHR>Tabeller.
Högerklicka på tabellen Anställda och välj Kryptera kolumner för att öppna guiden Always Encrypted.
Välj Nästa på sidan Introduktion i guiden.
På sidan Kolumnval .
- Välj kolumnerna SSN och Salary . Välj deterministisk kryptering för SSN-kolumnen och randomiserad kryptering för kolumnen Lön . Deterministisk kryptering stöder frågor, till exempel punktsökningssökningar som omfattar likhetsjämförelser i krypterade kolumner. Randomiserad kryptering stöder inga beräkningar på krypterade kolumner.
- Lämna CEK-Auto1 (Ny) som kolumnkrypteringsnyckel för båda kolumnerna. Den här nyckeln finns inte än och genereras av guiden.
- Välj Nästa.
På sidan Huvudnyckelkonfiguration konfigurerar du en ny kolumnhuvudnyckel som ska genereras av guiden. Först måste du välja var du vill lagra kolumnhuvudnyckeln. Guiden stöder två typer av nyckelarkiv:
- Azure Key Vault – rekommenderas om databasen finns i Azure
- Windows-certifikatarkiv
I allmänhet är Azure Key Vault det rekommenderade alternativet, särskilt om databasen finns i Azure.
Så här använder du Azure Key Vault:
- Välj Azure Key Vault.
- Välj Logga in och slutför inloggningen till Azure.
- När du har loggat in visar sidan listan över prenumerationer och nyckelvalv som du har åtkomst till. Välj en Azure-prenumeration som innehåller nyckelvalvet som du vill använda.
- Välj ditt tangentvalv.
- Välj Nästa.
Så här använder du Windows-certifikatarkivet:
Välj Windows-certifikatarkiv.
Låt standardvalet Aktuell användare vara kvar. Då instrueras guiden att generera ett certifikat (den nya kolumnmästarnyckeln) i Aktuell användare-lagringsutrymmet.
Välj Nästa.
På sidan In-Place Krypteringsinställningar krävs ingen ytterligare konfiguration eftersom databasen inte har en enklav aktiverad. Välj Nästa.
På sidan Kör inställningar får du frågan om du vill fortsätta med kryptering eller generera ett PowerShell-skript som ska köras senare. Lämna standardinställningarna och välj Nästa.
På sidan Sammanfattning informerar guiden dig om de åtgärder som ska utföras. Kontrollera att all information är korrekt och välj Slutför.
På sidan Resultat kan du övervaka förloppet för guidens åtgärder. Vänta tills alla åtgärder har slutförts och välj Stäng.
(Valfritt) Utforska de ändringar som guiden har gjort i databasen.
Expandera ContosoHR>Security>Always Encrypted Keys för att utforska metadataobjekten för kolumnhuvudnyckeln och kolumnkryptering som guiden skapade.
Du kan också köra frågorna nedan mot systemkatalogvyerna som innehåller viktiga metadata.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_valuesI Object Explorer högerklickar du på tabellen Anställda och väljer Skripttabell som>SKAPA till>Nytt frågeredigeringsfönster. Då öppnas ett nytt frågefönster med create table-instruktionen för tabellen Anställda . Observera satsen ENCRYPTED WITH som visas i definitionerna för kolumnerna SSN och Salary .
Du kan också köra frågan nedan mot sys.columns för att hämta krypteringsmetadata på kolumnnivå för de två krypterade kolumnerna.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Steg 3: Fråga krypterade kolumner
Anslut till databasen med Always Encrypted inaktiverat för anslutningen.
- Öppna ett nytt frågefönster.
- Högerklicka var som helst i frågefönstret och välj Anslutning>Byt anslutning. Då öppnas dialogrutan Anslut till databasmotor .
- Välj Alternativ <<. Då visas ytterligare flikar i dialogrutan Anslut till databasmotor .
- Välj fliken Always Encrypted.
- Kontrollera att Aktivera Always Encrypted (kolumnkryptering) inte är markerat.
- Välj Anslut.
Klistra in och kör följande fråga. Frågan ska returnera binärkrypterade data.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Anslut till databasen med Always Encrypted aktiverat för anslutningen.
- Högerklicka var som helst i frågefönstret och välj Anslutning>Byt anslutning. Då öppnas dialogrutan Anslut till databasmotor .
- Välj Alternativ <<. Då visas ytterligare flikar i dialogrutan Anslut till databasmotor .
- Välj fliken Always Encrypted.
- Välj Aktivera Always Encrypted (kolumnkryptering).
- Välj Anslut.
Kör samma fråga igen. Eftersom du är ansluten med Always Encrypted aktiverat för databasanslutningen försöker klientdrivrutinen i SSMS dekryptera data som lagras i båda krypterade kolumnerna. Om du använder Azure Key Vault kan du uppmanas att logga in på Azure.
Aktivera parameterisering för Always Encrypted. Med den här funktionen kan du köra frågor som filtrerar data efter krypterade kolumner (eller infoga data i krypterade kolumner).
- Välj Fråga på huvudmenyn i SSMS.
- Välj Frågealternativ....
- Navigera till Utförande>Avancerat.
- Kontrollera att Aktivera parameterisering för Always Encrypted är markerat.
- Välj OK.
Klistra in och kör frågan nedan, som filtrerar data efter den krypterade SSN-kolumnen . Frågan ska returnera en rad som innehåller oformaterade värden.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSNOm du använder Azure Key Vault som konfigurerats med behörighetsmodellen för åtkomstprinciper kan du också följa stegen nedan för att se vad som händer när en användare försöker hämta klartextdata från krypterade kolumner utan att ha åtkomst till kolumnhuvudnyckeln som skyddar data.
- Ta bort nyckelbehörigheten
unwrapåt dig själv i åtkomstprincipen för ditt nyckelvalv. Mer information finns i Tilldela en åtkomstprincip för Key Vault. - Eftersom klientdrivrutinen i SSMS cachelagrar kolumnkrypteringsnycklarna som hämtats från ett nyckelvalv i 2 timmar stänger du SSMS och öppnar det igen. Detta säkerställer att nyckelcachen är tom.
- Anslut till databasen med Always Encrypted aktiverat för anslutningen.
- Klistra in och kör följande fråga. Frågan kommer inte att lyckas och det kommer att visas ett felmeddelande som indikerar att den nödvändiga behörigheten
unwrapsaknas.
SELECT [SSN], [Salary] FROM [HR].[Employees]- Ta bort nyckelbehörigheten