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 ett ALLOW_ENCRYPTED_VALUE_MODIFICATIONS alternativ. När värdet ON är (standardvärdet är OFF) undertrycker det här alternativet kryptografiska metadatakontroller 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ällningarna 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 ON 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;
    
  2. 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 column encryption setting=enabled 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.)

  3. Ställ tillbaka alternativet ALLOW_ENCRYPTED_VALUE_MODIFICATIONSOFF. 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 ALLOW_ENCRYPTED_VALUE_MODIFICATIONS alternativet kan användaren infoga data i krypterade kolumner i databasen, inklusive data som krypterats 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 kan du inte dekryptera data (data är skadade). 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å ON 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 så innehåller column encryption setting=enabledanslutningssträngen inte .

  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 column encryption setting=enabled 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 kort körning av masskopieringsprogram eller verktyg som behöver flytta krypterade data utan att dekryptera dem, anger du alternativet till ON 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 AllowEncryptedValueModifications alternativet i .NET Framework Data Provider för SQL Server – se Kopiera krypterade data med sqlBulkCopy.