Sdílet prostřednictvím


Hromadné načtení šifrovaných dat do sloupců pomocí funkce Always Encrypted

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

Pokud chcete načíst šifrovaná data bez provádění kontrol metadat na serveru během operací hromadného ALLOW_ENCRYPTED_VALUE_MODIFICATIONS kopírování, vytvořte uživatele s možností. Tato možnost je určena pro použití staršími nástroji nebo pracovními postupy typu Extrakce-Transformace-Načítání (ETL) třetích stran, které nemohou používat funkci "Always Encrypted". To umožňuje uživateli bezpečně přesouvat šifrovaná data z jedné sady tabulek obsahující šifrované sloupce do jiné sady tabulek s šifrovanými sloupci (ve stejné nebo jiné databázi).

Možnost ALLOW_ENCRYPTED_VALUE_MODIFICATIONS

CREATE USER i ALTER USER mají ALLOW_ENCRYPTED_VALUE_MODIFICATIONS možnost. Pokud je ONtato možnost nastavená na OFF hodnotu (výchozí nastavení), potlačí kontroly kryptografických metadat na serveru v operacích hromadného kopírování, což uživateli umožňuje hromadně kopírovat šifrovaná data mezi tabulkami nebo databázemi bez dešifrování dat.

Scénáře migrace dat

Následující tabulka uvádí doporučená nastavení vhodná pro několik scénářů migrace.

Snímek obrazovky s tabulkou zobrazující doporučená nastavení vhodná pro několik scénářů migrace

Hromadně načíst šifrovaná data

K načtení šifrovaných dat použijte následující postup.

  1. Nastavte možnost pro ON uživatele v databázi, která je cílem operace hromadného kopírování. Například:

     ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;
    
  2. Spusťte aplikaci nebo nástroj hromadného kopírování s přihlášením jako daný uživatel. (Pokud vaše aplikace používá klientský ovladač s povolenou funkcí Always Encrypted, ujistěte se, že připojovací řetězec pro zdroj dat neobsahuje column encryption setting=enabled , aby data načtená ze šifrovaných sloupců zůstala zašifrovaná. Další informace najdete v tématu Vývoj aplikací pomocí funkce Always Encrypted.)

  3. ALLOW_ENCRYPTED_VALUE_MODIFICATIONS Nastavte možnost zpět na OFF. Například:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
    

Potenciál poškození dat

Nesprávné použití této možnosti může vést k poškození dat. Tato ALLOW_ENCRYPTED_VALUE_MODIFICATIONS možnost umožňuje uživateli vložit všechna data do šifrovaných sloupců v databázi, včetně dat šifrovaných pomocí různých klíčů, nesprávně zašifrovaných nebo vůbec nešifrovaných. Pokud uživatel omylem zkopíruje data, která nejsou správně zašifrovaná pomocí schématu šifrování (šifrovací klíč sloupce, algoritmus, typ šifrování) nastaveného pro cílový sloupec, nemůžete data dešifrovat (data jsou poškozená). Tato možnost se musí používat pečlivě, protože může vést k poškození dat v databázi.

Následující scénář ukazuje, jak nesprávné importování dat může vést k poškození dat:

  1. Možnost je nastavena na ON pro uživatele.

  2. Uživatel spustí aplikaci, která se připojí k databázi. Aplikace používá hromadná rozhraní API k vložení hodnot prostého textu do šifrovaných sloupců. Aplikace očekává, že ovladač klienta s podporou Always Encrypted zašifruje data při vložení. Aplikace je však chybně nakonfigurovaná, takže buď skončí pomocí ovladače, který nepodporuje funkci Always Encrypted, nebo připojovací řetězec neobsahuje column encryption setting=enabled.

  3. Aplikace odešle na server hodnoty prostého textu. Vzhledem k tomu, že jsou na serveru pro uživatele zakázány kontroly kryptografických metadat, server umožňuje vložení nesprávných dat (místo správně šifrovaného šifrovacího textu) do šifrovaného sloupce.

  4. Stejná nebo jiná aplikace se připojí k databázi pomocí ovladače s podporou Always Encrypted a s připojovacím řetězcem column encryption setting=enabled a načte data. Aplikace očekává transparentní dešifrování dat. Ovladač však nedokáže dešifrovat data, jelikož se jedná o nesprávný šifrový text.

Osvědčené postupy

Pomocí této možnosti používejte určené uživatelské účty pro dlouhotrvající úlohy.

U krátkých spuštěných aplikací nebo nástrojů hromadného kopírování, které potřebují přesunout šifrovaná data bez jejich dešifrování, nastavte možnost bezprostředně ON před spuštěním aplikace a ihned po spuštění operace ji nastavte zpět na VYPNUTO.

Tuto možnost nepoužívejte pro vývoj nových aplikací. Místo toho použijte klientský ovladač, který nabízí rozhraní API pro potlačení kontroly kryptografických metadat v rámci jedné relace, například možnost ve zprostředkovateli dat rozhraní .NET Framework pro SQL Server – viz Kopírování šifrovaných dat pomocí SqlBulkCopy.