Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Toto téma popisuje, jak vytvořit identické symetrické klíče na dvou různých serverech sql Serveru pomocí jazyka Transact-SQL. K dešifrování šifrovacího textu potřebujete klíč, který jste použili k zašifrování. Když v jedné databázi dojde k šifrování i dešifrování, klíč se uloží do databáze a je k dispozici v závislosti na oprávněních pro šifrování i dešifrování. Pokud ale šifrování a dešifrování probíhá v samostatných databázích nebo na samostatných serverech, klíč uložený v jedné databázi není k dispozici pro použití ve druhé databázi.
Než začnete
Omezení a restrikce
Při vytvoření symetrického klíče musí být symetrický klíč zašifrován alespoň jedním z následujících způsobů: certifikát, heslo, symetrický klíč, asymetrický klíč nebo POSKYTOVATEL. Klíč může mít více než jedno šifrování každého typu. Jinými slovy, jeden symetrický klíč je možné zašifrovat pomocí více certifikátů, hesel, symetrických klíčů a asymetrických klíčů současně.
Pokud je symetrický klíč zašifrovaný heslem místo veřejného klíče hlavního klíče databáze, použije se šifrovací algoritmus TRIPLE DES. Z tohoto důvodu jsou klíče vytvořené pomocí silného šifrovacího algoritmu, jako je AES, samy o sobě zabezpečeny slabším algoritmem.
Bezpečnost
Dovolení
Vyžaduje oprávnění ALTER ANY SYMMETRIC KEY pro databázi. Pokud je zadána autorizace, vyžaduje oprávnění IMPERSONATE pro uživatele databáze nebo oprávnění "ALTER" k roli aplikace. Pokud je šifrování certifikátem nebo asymetrickým klíčem, vyžaduje oprávnění VIEW DEFINITION k certifikátu nebo asymetrickému klíči. Jen přihlášení systému Windows, přihlášení k SQL Serveru a aplikační role mohou být vlastníky symetrických klíčů. Skupiny a role nemohou vlastnit symetrické klíče.
Použití Transact-SQL
Vytvoření identických symetrických klíčů na dvou různých serverech
V Průzkumníku objektůse připojte k instanci databázového stroje.
Na panelu Standard klikněte na Nový dotaz.
Vytvořte klíč spuštěním následujících příkazů CREATE MASTER KEY, CREATE CERTIFICATE a CREATE SYMMETRIC KEY. Nahraďte
<password>
platným heslem.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; GO CREATE CERTIFICATE [cert_keyProtection] WITH SUBJECT = 'Key Protection'; GO CREATE SYMMETRIC KEY [key_DataShare] WITH KEY_SOURCE = 'My key generation bits. This is a shared secret!', ALGORITHM = AES_256, IDENTITY_VALUE = 'Key Identity generation bits. Also a shared secret' ENCRYPTION BY CERTIFICATE [cert_keyProtection]; GO
Připojte se k samostatné instanci serveru, otevřete jiné okno dotazu a spusťte výše uvedené příkazy SQL, abyste vytvořili stejný klíč na druhém serveru.
Otestujte klíče tak, že nejprve spustíte příkaz OPEN SYMMETRIC KEY a níže uvedený příkaz SELECT na prvním serveru.
OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO SELECT encryptbykey(key_guid('key_DataShare'), 'MyData' ) GO -- For example, the output might look like this: 0x2152F8DA8A500A9EDC2FAE26D15C302DA70D25563DAE7D5D1102E3056CE9EF95CA3E7289F7F4D0523ED0376B155FE9C3
Na druhém serveru vložte výsledek předchozího příkazu SELECT do následujícího kódu jako hodnotu
@blob
a spuštěním následujícího kódu ověřte, že duplicitní klíč může šifrovací text dešifrovat.OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO DECLARE @blob varbinary(8000); SELECT CONVERT(varchar(8000), decryptbykey(@blob)); GO
Zavřete symetrický klíč na obou serverech.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Změny šifrování v SQL Serveru 2017 CU2
SQL Server 2016 používá algoritmus hash SHA1 pro svou práci s šifrováním. Od verze SQL Server 2017 se místo toho používá SHA2. To znamená, že další kroky můžou být nutné k tomu, aby vaše instalace SQL Serveru 2017 dešifrovala položky, které byly zašifrovány SQL Serverem 2016. Tady jsou další kroky:
- Ujistěte se, že je SQL Server 2017 aktualizovaný na alespoň kumulativní aktualizaci 2 (CU2).
- Důležité podrobnosti najdete v Kumulativní aktualizaci 2 (CU2) pro SQL Server 2017.
- Po instalaci CU2 zapněte příznak trasování 4631 v SQL Serveru 2017:
DBCC TRACEON(4631, -1);
- Příznak trasování 4631 je v SQL Serveru 2017 nový. Před vytvořením hlavního klíče, certifikátu nebo symetrického klíče v SQL Serveru 2017 musí být příznaku trasování 4631 přiřazena hodnota
ON
globálně. To umožňuje těmto vytvořeným položkám spolupracovat s SQL Serverem 2016 a staršími verzemi. Tento příznak trasování by měl být dočasně zapnutý pro opětovné šifrování dat pomocí klíčů odvozených ze SHA2.
- Příznak trasování 4631 je v SQL Serveru 2017 nový. Před vytvořením hlavního klíče, certifikátu nebo symetrického klíče v SQL Serveru 2017 musí být příznaku trasování 4631 přiřazena hodnota
Další informace najdete tady: