Sdílet prostřednictvím


Kurz: Začínáme s funkcí Always Encrypted

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

V tomto kurzu se naučíte, jak začít používat funkci Always Encrypted. Zobrazí se vám:

  • Postup šifrování vybraných sloupců v databázi
  • Jak dotazovat šifrované sloupce

Požadavky

Pro účely tohoto kurzu potřebujete:

Krok 1: Vytvoření a naplnění schématu databáze

V tomto kroku vytvoříte schéma personálního oddělení a tabulku Zaměstnanci . Pak naplníte tabulku některými daty.

  1. Připojte se k databázi. Pokyny k připojení k databázi z aplikace SSMS najdete v tématu Rychlý start: Připojení a dotazování služby Azure SQL Database nebo azure SQL Managed Instance pomocí aplikace SQL Server Management Studio (SSMS) nebo rychlý start: Připojení a dotazování instance SQL Serveru pomocí aplikace SQL Server Management Studio (SSMS).

  2. Otevřete nové okno dotazu pro databázi ContosoHR .

  3. Vložte následující příkazy a spusťte následující příkazy a vytvořte novou tabulku s názvem Zaměstnanci.

    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];
    
  4. Vložte a spusťte následující příkazy a přidejte do tabulky Employees několik záznamů o zaměstnancích.

    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
    );
    

Krok 2: Šifrování sloupců

V tomto kroku vytvoříte hlavní klíč sloupce a šifrovací klíč sloupce pro funkci Always Encrypted. Potom zašifrujete sloupce SSN a Plat v tabulce Zaměstnanci .

SSMS poskytuje průvodce, který vám pomůže snadno nakonfigurovat funkci Always Encrypted nastavením hlavního klíče sloupce, šifrovacího klíče sloupce a šifrováním vybraných sloupců.

  1. V Průzkumníku objektů rozbalte databáze>ContosoHR>Tables.

  2. Klikněte pravým tlačítkem myši na tabulku Employees (Zaměstnanci) a vyberte Encrypt Columns (Šifrovat sloupce), čímž otevřete průvodce Always Encrypted.

    Snímek obrazovky s otevřením Průvodce funkcí Always Encrypted

  3. Na úvodní stránce průvodce vyberte Další.

  4. Na stránce Výběr sloupce .

    1. Vyberte sloupce SSN a Plat . Zvolte deterministické šifrování pro sloupec SSN a náhodné šifrování sloupce Plat . Deterministické šifrování podporuje dotazy, jako jsou vyhledávání bodů, které zahrnují porovnání rovnosti u šifrovaných sloupců. Náhodné šifrování nepodporuje žádné výpočty u šifrovaných sloupců.
    2. U obou sloupců ponechte CEK-Auto1 (Nový) jako šifrovací klíč sloupce. Tento klíč ještě neexistuje a průvodce ho vygeneruje.
    3. Vyberte Další.

    Snímek obrazovky s výběrem sloupce Průvodce funkcí Always Encrypted

  5. Na stránce Konfigurace hlavního klíče nakonfigurujte nový hlavní klíč sloupce, který průvodce vygeneruje. Nejprve musíte vybrat, kam chcete uložit hlavní klíč sloupce. Průvodce podporuje dva typy úložiště klíčů:

    • Azure Key Vault – doporučuje se, pokud je vaše databáze v Azure.
    • Úložiště certifikátů Systému Windows

    Azure Key Vault je obecně doporučenou možností, zejména pokud je vaše databáze v Azure.

    • Použití služby Azure Key Vault:

      1. Vyberte Azure Key Vault.
      2. Vyberte Přihlásit se a dokončete přihlášení k Azure.
      3. Po přihlášení se na stránce zobrazí seznam předplatných a trezorů klíčů, ke kterým máte přístup. Vyberte předplatné Azure obsahující trezor klíčů, které chcete použít.
      4. Vyberte své klíčové úložiště.
      5. Vyberte Další.

      Snímek obrazovky průvodce Always Encrypted s výběrem hlavního klíče pomocí služby Azure Key Vault.

    • Použití úložiště certifikátů systému Windows:

      1. Vyberte úložiště certifikátů Systému Windows.

      2. Ponechte výchozí výběr Aktuální uživatel – tím dáte průvodci pokyn, aby vygeneroval certifikát (váš nový hlavní klíč sloupce) v úložišti Aktuální uživatel.

        Snímek obrazovky z Průvodce Always Encrypted, který ukazuje výběr hlavního klíče pomocí úložiště certifikátů.

      3. Vyberte Další.

  6. Na stránce Nastavení šifrování In-Place není nutná žádná další konfigurace, protože databáze nemá povolenou enklávu. Vyberte Další.

  7. Na stránce Nastavení spuštění se zobrazí dotaz, jestli chcete pokračovat v šifrování nebo vygenerovat skript PowerShellu, který se má spustit později. Ponechte výchozí nastavení a vyberte Další.

  8. Na stránce Souhrn vás průvodce informuje o akcích, které provede. Zkontrolujte správnost všech informací a vyberte Dokončit.

  9. Na stránce Výsledky můžete sledovat průběh operací průvodce. Počkejte, až se všechny operace úspěšně dokončí, a vyberte Zavřít.

    Snímek obrazovky se souhrnem Průvodce funkcí Always Encrypted

  10. (Volitelné) Prozkoumejte změny, které průvodce provedl ve vaší databázi.

    1. Rozbalte sekci Zabezpečení ContosoHR>>klíče Always Encrypted, abyste prozkoumali objekty metadat pro hlavní klíč sloupce a šifrování sloupce, které vytvořil průvodce.

    2. Můžete také spustit následující dotazy na zobrazení katalogu systému, která obsahují klíčová metadata.

      SELECT * FROM sys.column_master_keys;
      SELECT * FROM sys.column_encryption_keys
      SELECT * FROM sys.column_encryption_key_values
      
    3. V Průzkumníku objektů klikněte pravým tlačítkem na tabulku Employees (Zaměstnanci) a vyberte Script Table as>CREATE To>). Otevře se nové okno dotazu s příkazem CREATE TABLE pro tabulku Employees . Všimněte si klauzule ENCRYPTED WITH , která se zobrazí v definicích sloupců SSN a Plat .

    4. Můžete také spustit následující dotaz na sys.columns a načíst metadata šifrování na úrovni sloupce pro dva šifrované sloupce.

      SELECT
      [name]
      , [encryption_type]
      , [encryption_type_desc]
      , [encryption_algorithm_name]
      , [column_encryption_key_id]
      FROM sys.columns
      WHERE [encryption_type] IS NOT NULL;
      

Krok 3: Dotazování šifrovaných sloupců

  1. Připojte se k databázi se zakázaným funkcí Always Encrypted pro vaše připojení.

    1. Otevřete nové okno dotazu.
    2. Klikněte pravým tlačítkem na libovolné místo v okně dotazu a vyberte Připojení>změnit připojení. Tím se otevře dialogové okno Připojit k databázovému stroji .
    3. Vyberte Možnosti <<. Zobrazí se další karty v dialogovém okně Připojit k databázovému stroji .
    4. Vyberte kartu s názvem Always Encrypted.
    5. Ujistěte se, že není zaškrtnuté políčko Povolit funkci Always Encrypted (šifrování sloupců ).
    6. Vyberte Připojit.

    Snímek obrazovky možnosti připojení v SSMS s zakázanou funkcí Always Encrypted

  2. Vložte a spusťte následující dotaz. Dotaz by měl vrátit binární šifrovaná data.

    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

    Snímek obrazovky výsledků šifrovaného textu ze šifrovaných sloupců.

  3. Připojte se k databázi s povolenou funkcí Always Encrypted pro vaše připojení.

    1. Klikněte pravým tlačítkem na libovolné místo v okně dotazu a vyberte Připojení>změnit připojení. Tím se otevře dialogové okno Připojit k databázovému stroji .
    2. Vyberte Možnosti <<. Zobrazí se další karty v dialogovém okně Připojit k databázovému stroji .
    3. Vyberte kartu s názvem Always Encrypted.
    4. Vyberte Povolit funkci Always Encrypted (šifrování sloupců).
    5. Vyberte Připojit.

    Snímek obrazovky s možností připojení SSMS pro funkci Always Encrypted

  4. Znovu spusťte stejný dotaz. Vzhledem k tomu, že jste připojení ke službě Always Encrypted pro připojení k databázi, pokusí se ovladač klienta v SSMS dešifrovat data uložená v obou šifrovaných sloupcích. Pokud používáte Azure Key Vault, může se zobrazit výzva k přihlášení k Azure.

    Snímek obrazovky s čitelnými textovými výsledky ze šifrovaných sloupců

  5. Povolte parametrizaci pro funkci Always Encrypted. Tato funkce umožňuje spouštět dotazy, které filtrují data šifrovanými sloupci (nebo vkládají data do šifrovaných sloupců).

    1. V hlavní nabídce aplikace SSMS vyberte Dotaz .
    2. Vyberte Možnosti dotazu....
    3. Přejděte doProvádění>Upřesnit.
    4. Ujistěte se, že je zaškrtnuté povolení parametrizace pro funkci Always Encrypted .
    5. Vyberte OK.

    Snímek obrazovky s povolením parametrizace v existujícím okně dotazu

  6. Vložte a spusťte následující dotaz, který filtruje data podle šifrovaného sloupce SSN . Dotaz by měl vrátit jeden řádek obsahující hodnoty prostého textu.

    DECLARE @SSN [char](11) = '795-73-9838'
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    WHERE [SSN] = @SSN
    
  7. Pokud používáte Službu Azure Key Vault nakonfigurovanou s modelem oprávnění zásad přístupu, postupujte podle následujících kroků a zjistěte, co se stane, když se uživatel pokusí načíst data prostého textu ze šifrovaných sloupců, aniž byste měli přístup k hlavnímu klíči sloupce, který chrání data.

    1. Odeberte klíčové oprávnění unwrap sami sobě v přístupových zásadách vašeho trezoru klíčů. Další informace najdete v tématu Přiřazení zásad přístupu ke službě Key Vault.
    2. Vzhledem k tomu, že ovladač klienta v SSMS ukládá šifrovací klíče sloupců získané z trezoru klíčů po dobu 2 hodin, zavřete SSMS a znovu ho otevřete. Tím zajistíte, že je mezipaměť klíčů prázdná.
    3. Připojte se k databázi s povolenou funkcí Always Encrypted pro vaše připojení.
    4. Vložte a spusťte následující dotaz. Dotaz by měl selhat s chybovou zprávou, že chybí požadovaná unwrap oprávnění.
    SELECT [SSN], [Salary] FROM [HR].[Employees]
    

Další kroky

Viz také