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 kopírování, vytvořte uživatele s možností ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Tato možnost je určena pro použití staršími nástroji nebo pracovními postupy extrakceTransform-Load (ETL), 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í možnost ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Pokud je tato možnost nastavená na zapnuto (výchozí hodnota je vypnutá), tato možnost 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 tabulky s doporučenými nastaveními vhodnými pro několik scénářů migrace.

Hromadné načítání šifrovaných dat

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

  1. Nastavte možnost ZAPNUTO pro 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;  
  1. 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á ovladač klienta s povolenou funkcí Always Encrypted, ujistěte se, že připojovací řetězec pro zdroj dat neobsahuje nastavení šifrování sloupce=povoleno, aby data načtená z šifrovaných sloupců zůstala zašifrovaná. Další informace najdete v tématu Vývoj aplikací pomocí funkce Always Encrypted.)

  2. Nastavte zpět možnost ALLOW_ENCRYPTED_VALUE_MODIFICATIONS na VYPNUTO. 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. Možnost ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 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ě šifrovaná pomocí schématu šifrování (šifrovací klíč sloupce, algoritmus, typ šifrování) nastaveného pro cílový sloupec, nebudete moct data dešifrovat (data budou poškozena). 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 pro uživatele nastavená na zapnuto.

  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ě nakonfigurována, takže buď používá ovladač, který nepodporuje funkci Always Encrypted, nebo připojovací řetězec neobsahuje nastavení šifrování sloupce=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 nastavením šifrování sloupce =enabled v připojovacím řetězci 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.

V případě aplikací nebo nástrojů pro krátkodobé hromadné kopírování, které potřebují přesunout šifrovaná data bez dešifrování, nastavte možnost na "ZAPNUTO" těsně před spuštěním aplikace a po dokončení operace ji ihned 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í kontrol kryptografických metadat pro jednu relaci, například možnost AllowEncryptedValueModifications ve zprostředkovateli dat .NET Framework pro SQL Server – viz Kopírování šifrovaných dat pomocí SqlBulkCopy.

Další kroky

Viz také