Dela via


Massinläsning av krypterade data till kolumner med Always Encrypted

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

Om du vill läsa in krypterade data utan att utföra metadatakontroller på servern under masskopieringsåtgärder skapar du användaren med alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Det här alternativet är avsett att användas av äldre verktyg eller ETL-arbetsflöden (Extract-Transform-Load) från tredje part som inte kan använda Always Encrypted. På så sätt kan en användare på ett säkert sätt flytta krypterade data från en uppsättning tabeller, som innehåller krypterade kolumner, till en annan uppsättning tabeller med krypterade kolumner (i samma eller en annan databas).

Alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONS

Både CREATE USER och ALTER USER har alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. När värdet är PÅ (standardvärdet är OFF) undertrycker det här alternativet krypteringsmetadatakontroller på servern i masskopieringsåtgärder, vilket gör att användaren kan masskopiera krypterade data mellan tabeller eller databaser, utan att dekryptera data.

Scenarier för datamigrering

I följande tabell visas de rekommenderade inställningar som är lämpliga för flera migreringsscenarier.

Skärmbild av en tabell som visar de rekommenderade inställningar som är lämpliga för flera migreringsscenarier.

Massinläsning av krypterade data

Använd följande process för att läsa in krypterade data.

  1. Ange alternativet till PÅ för användaren i databasen som är målet för masskopieringsåtgärden. Till exempel:
 ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;  
  1. Kör ditt masskopieringsprogram eller verktyg och anslut som den användaren. (Om ditt program använder en Always Encrypted-aktiverad klientdrivrutin kontrollerar du att anslutningssträngen för datakällan inte innehåller kolumnkrypteringsinställning=aktiverad för att säkerställa att data som hämtas från krypterade kolumner förblir krypterade. Mer information finns i Utveckla program med Always Encrypted.)

  2. Ställ in alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONS tillbaka till AV. Till exempel:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;  
    

Potential för skadade data

Felaktig användning av det här alternativet kan leda till att data skadas. Med alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONS kan användaren infoga data i krypterade kolumner i databasen, inklusive data som är krypterade med olika nycklar, felaktigt krypterade eller inte krypterade alls. Om användaren av misstag kopierar data som inte är korrekt krypterade med hjälp av krypteringsschemat (kolumnkrypteringsnyckel, algoritm, krypteringstyp) som konfigurerats för målkolumnen kommer du inte att kunna dekryptera data (data kommer att skadas). Det här alternativet måste användas noggrant eftersom det kan leda till att data i databasen skadas.

Följande scenario visar hur felaktig import av data kan leda till skadade data:

  1. Alternativet är inställt på PÅ för en användare.

  2. Användaren kör programmet som ansluter till databasen. Programmet använder mass-API:er för att infoga oformaterade textvärden i krypterade kolumner. Programmet förväntar sig att en Always Encrypted-aktiverad klientdrivrutin krypterar data vid infogning. Programmet är dock felkonfigurerat, så att det antingen använder en drivrutin som inte stöder Always Encrypted eller att anslutningssträngen inte innehåller kolumnkrypteringsinställning=aktiverad.

  3. Programmet skickar klartextvärden till servern. Eftersom krypteringsmetadatakontroller är inaktiverade på servern för användaren låter servern felaktiga data (klartext i stället för korrekt krypterad chiffertext) infogas i en krypterad kolumn.

  4. Samma eller ett annat program ansluter till databasen med en Always Encrypted-aktiverad drivrutin och med kolumnkrypteringsinställning=aktiverad i anslutningssträngen och hämtar data. Programmet förväntar sig att data dekrypteras transparent. Drivrutinen kan dock inte dekryptera data eftersom data är felaktig chiffertext.

Bästa praxis

Använd avsedda användarkonton för långvariga arbetsbelastningar med det här alternativet.

För korta program eller verktyg för masskopiering som behöver flytta krypterade data utan att dekryptera dem ställer du in alternativet på PÅ omedelbart innan du kör programmet och ställer in det på AV omedelbart efter att åtgärden har körts.

Använd inte det här alternativet för att utveckla nya program. Använd i stället en klientdrivrutin som erbjuder ett API för att förhindra kryptografiska metadatakontroller för en enda session, till exempel alternativet AllowEncryptedValueModifications i .NET Framework Data Provider för SQL Server – se Kopiera krypterade data med SqlBulkCopy.

Nästa steg

Se även