Sdílet prostřednictvím


Přehled správy klíčů pro Always Encrypted

platí pro:SQL ServerAzure SQL Databaseazure SQL Managed Instance

funkce Always Encrypted používá dva typy kryptografických klíčů k ochraně dat – jeden klíč k šifrování dat a další klíč k šifrování klíče, který šifruje vaše data. Šifrovací klíč sloupce šifruje vaše data, zatímco hlavní klíč sloupce šifruje tento šifrovací klíč. Tento článek obsahuje podrobný přehled správy těchto šifrovacích klíčů.

Při diskusi o klíčích Always Encrypted a správě klíčů je důležité pochopit rozdíl mezi skutečnými kryptografickými klíči a objekty metadat, které popisovat klíče. Používáme termíny šifrovací klíč sloupce a hlavní klíč sloupce odkazovat na skutečné kryptografické klíče a používáme metadata šifrovacího klíče sloupce a metadata hlavního klíče sloupce odkazovat na popisy klíče Always Encrypted popisy v databázi.

  • šifrovací klíče sloupců jsou šifrovací klíče obsahu používané k šifrování dat. Jak název napovídá, použijete šifrovací klíče sloupců k šifrování dat ve sloupcích databáze. Jeden nebo více sloupců můžete zašifrovat pomocí stejného šifrovacího klíče sloupce nebo můžete použít více šifrovacích klíčů sloupců v závislosti na požadavcích vaší aplikace. Šifrovací klíče sloupců se šifrují a v databázi se ukládají jenom šifrované hodnoty šifrovacích klíčů sloupců (jako součást metadat šifrovacího klíče sloupce). Metadata šifrovacího klíče sloupce se ukládají v sys.column_encryption_keys (Transact-SQL) a sys.column_encryption_key_values (Transact-SQL) katalogových zobrazeních. Šifrovací klíče sloupců používané s algoritmem AES-256 jsou 256bitové.

  • hlavní klíče pro sloupce jsou klíče chránící klíče sloužící k šifrování šifrovacích klíčů sloupců. Hlavní klíče sloupců musí být uložené v důvěryhodném úložišti klíčů, jako je Windows Certificate Store, Azure Key Vault nebo modul hardwarového zabezpečení. Databáze obsahuje pouze metadata o hlavních klíčích sloupců (typ úložiště klíčů a umístění). Metadata hlavního klíče sloupce jsou uložená v zobrazení katalogu sys.column_master_keys (Transact-SQL).

Je důležité si uvědomit, že metadata klíčů v databázovém systému neobsahují hlavní klíče sloupců prostého textu ani šifrovací klíče sloupců ve formátu prostého textu. Databáze obsahuje pouze informace o typu a umístění hlavních klíčů sloupců a šifrovaných hodnotách šifrovacích klíčů sloupců. To znamená, že klíče prostého textu nejsou nikdy zpřístupněny databázovému systému, aby data chráněná pomocí funkce Always Encrypted byla bezpečná, i když dojde k ohrožení zabezpečení databázového systému. Pokud chcete zajistit, aby databázový systém nemohl získat přístup ke klíčům prostého textu, nezapomeňte spustit nástroje pro správu klíčů na jiném počítači než na počítači, který je hostitelem databáze. Podrobnosti najdete v části Aspekty zabezpečení pro správu klíčů níže.

Protože databáze obsahuje jenom šifrovaná data (ve sloupcích chráněných funkcí Always Encrypted) a nemá přístup k klíčům prostého textu, nemůže dešifrovat data. To znamená, že dotazování sloupců Always Encrypted jednoduše vrátí šifrované hodnoty, takže klientské aplikace, které potřebují šifrovat nebo dešifrovat chráněná data, musí mít přístup k hlavnímu klíči sloupce a související šifrovací klíče sloupců. Podrobnosti najdete v tématu Vývoj aplikací pomocí funkce Always Encrypted.

Úlohy správy klíčů

Proces správy klíčů je možné rozdělit na následující úlohy vysoké úrovně:

  • zřizování klíčů – vytvoření fyzických klíčů v důvěryhodném úložišti klíčů (například v Úložišti certifikátů Windows, Azure Key Vaultu nebo modulu hardwarového zabezpečení), šifrování šifrovacích klíčů sloupců pomocí hlavních klíčů sloupců a vytvoření metadat pro oba typy klíčů v databázi.

  • Rotace klíčů – pravidelně nahrazovat existující klíč novým klíčem. Klíč možná budete muset otočit, pokud došlo k ohrožení klíče, nebo abyste dodrželi zásady vaší organizace nebo regulační předpisy, které vyžadují, aby kryptografické klíče byly obměňovány.

Role správy klíčů

Existují dvě různé role uživatelů, kteří spravují klíče Always Encrypted; Správci zabezpečení a správci databází (DBA):

  • správce zabezpečení – generuje šifrovací klíče sloupců a hlavní klíče sloupců a spravuje úložiště klíčů obsahující hlavní klíče sloupců. Aby mohl provádět tyto úlohy, musí mít správce zabezpečení přístup ke klíčům a úložišti klíčů, ale nepotřebuje přístup k databázi.
  • DBA – spravuje metadata o klíčích v databázi. Aby bylo možné provádět úlohy správy klíčů, musí být DBA schopná spravovat metadata klíčů v databázi, ale nepotřebuje přístup ke klíčům ani úložišti klíčů, ve kterém jsou uložené hlavní klíče sloupce.

Vzhledem k výše uvedeným rolím existují dva různé způsoby provádění úloh správy klíčů pro Always Encrypted; s oddělením rolía bez oddělení rolí. V závislosti na potřebách vaší organizace můžete vybrat proces správy klíčů, který nejlépe vyhovuje vašim požadavkům.

Správa klíčů s oddělením rolí

Při správě klíčů Always Encrypted s oddělením rolí se u různých lidí v organizaci předpokládá role Správce zabezpečení a DBA. Proces správy klíčů s oddělením rolí zajišťuje, že DBA nemají přístup ke klíčům nebo úložištím klíčů, které obsahují skutečné klíče, a správci zabezpečení nemají přístup k databázi obsahující citlivá data. Správa klíčů s oddělením rolí se doporučuje, pokud vaším cílem je zajistit, aby dbA ve vaší organizaci nemohly přistupovat k citlivým datům.

Poznámka: Správci zabezpečení generují klíče prostého textu a pracují s ním, takže by nikdy neměli provádět své úkoly na stejných počítačích, které jsou hostitelem databázového systému nebo počítačů, ke kterým mají přístup správci dbA nebo kdokoli jiný, kdo by mohl být potenciálními nežádoucími osobami.

Správa klíčů bez oddělení rolí

Pokud jsou klíče Always Encrypted spravovány bez oddělení rolí, může jedna osoba zastávat role Správce zabezpečení i datového administrátora (DBA), což znamená, že tato osoba musí mít přístup jak ke klíčům a jejich úložištím, tak i k jejich metadatům. Správu klíčů bez oddělení rolí je možné doporučit organizacím, které používají model DevOps, nebo pokud je databáze hostovaná v cloudu a primárním cílem je omezit správce cloudu (ale ne místní dbA) z přístupu k citlivým datům.

Nástroje pro správu klíčů Always Encrypted

Klíče Always Encrypted je možné spravovat pomocí aplikace SQL Server Management Studio (SSMS) a PowerShellu:

Důležité informace o zabezpečení pro správu klíčů

Primárním cílem funkce Always Encrypted je zajistit, aby citlivá data uložená v databázi byla bezpečná, i když dojde k ohrožení databázového systému nebo hostitelského prostředí. Mezi příklady útoků zabezpečení, kdy funkce Always Encrypted pomáhá zabránit únikům citlivých dat, patří:

  • Uživatel databáze se zlými vysokými oprávněními, například DBA, dotazující se na sloupce citlivých dat.
  • Neautorní správce počítače, který je hostitelem instance SQL Serveru, skenování paměti procesu SQL Serveru nebo souborů výpisu stavu procesu SQL Serveru.
  • Operátor škodlivého datového centra dotazující se na zákaznickou databázi, zkoumání souborů výpisu systému SQL Server nebo zkoumání paměti počítače hostujícího zákaznická data v cloudu.
  • Malware spuštěný na počítači, který je hostitelem databáze.

Aby se zajistilo, že funkce Always Encrypted je účinná při prevenci těchto typů útoků, proces správy klíčů musí zajistit, aby hlavní klíče sloupců a šifrovací klíče sloupců a přihlašovací údaje k úložišti klíčů obsahující hlavní klíče sloupců se nikdy nezjevily potenciálnímu útočníkovi. Tady je několik pokynů, které byste měli dodržovat:

  • Nikdy negenerujte hlavní klíče sloupců ani šifrovací klíče sloupců na počítači, který je hostitelem databáze. Místo toho vygenerujte klíče na samostatném počítači, který je vyhrazený pro správu klíčů, nebo je počítač, který hostuje aplikace, které budou potřebovat přístup ke klíčům. To znamená, že byste nikdy neměli spouštět nástroje používané k vygenerování klíčů v počítači, který je hostitelem databáze, protože pokud útočník přistupuje k počítači používanému ke zřízení nebo údržbě klíčů Always Encrypted, může útočník získat klíče, i když se klíče zobrazí jenom v paměti nástroje po krátkou dobu.
  • Aby se zajistilo, že proces správy klíčů nechtěně neodhalí hlavní klíče sloupců nebo šifrovací klíče sloupců, je důležité před definováním a implementací procesu správy klíčů identifikovat potenciální nežádoucí a bezpečnostní hrozby. Pokud je vaším cílem například zajistit, aby dbA neměli přístup k citlivým datům, pak správce databáze nemůže být zodpovědný za generování klíčů. Správce databáze však může spravovat klíčová metadata v databázi, protože metadata neobsahují klíče v otevřeném textu.

Další kroky