Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Det här avsnittet beskriver hur du skapar identiska symmetriska nycklar på två olika servrar i SQL Server med hjälp av Transact-SQL. För att dekryptera chiffertexten behöver du nyckeln som användes för att kryptera den. När både kryptering och dekryptering sker i en enda databas lagras nyckeln i databasen och den är tillgänglig, beroende på behörigheter, för både kryptering och dekryptering. Men när kryptering och dekryptering sker i separata databaser eller på separata servrar är nyckeln som lagras i en databas inte tillgänglig för användning i den andra databasen.
Innan du börjar
Begränsningar och restriktioner
När en symmetrisk nyckel skapas måste den symmetriska nyckeln krypteras med minst något av följande: certifikat, lösenord, symmetrisk nyckel, asymmetrisk nyckel eller PROVIDER. Nyckeln kan ha mer än en kryptering av varje typ. Med andra ord kan en enda symmetrisk nyckel krypteras med hjälp av flera certifikat, lösenord, symmetriska nycklar och asymmetriska nycklar samtidigt.
När en symmetrisk nyckel krypteras med ett lösenord i stället för den offentliga nyckeln för databashuvudnyckeln används TRIPLE DES-krypteringsalgoritmen. Därför skyddas nycklar som skapas med en stark krypteringsalgoritm, till exempel AES, av en svagare algoritm.
Säkerhet
Behörigheter
Kräver behörighet för ALTER ANY SYMMETRIC KEY i databasen. Om AUTHORIZATION har angetts, kräver det IMPERSONATE-behörighet för databasanvändaren eller ALTER-behörighet för programrollen. Om kryptering sker via certifikat eller asymmetrisk nyckel kräver du behörigheten VIEW DEFINITION på certifikatet eller den asymmetriska nyckeln. Endast Windows-inloggningar, SQL Server-inloggningar och programroller kan äga symmetriska nycklar. Grupper och roller kan inte äga symmetriska nycklar.
Använda Transact-SQL
Skapa identiska symmetriska nycklar på två olika servrar
I Object Exploreransluter du till en instans av databasmotorn.
I fältet Standard klickar du på Ny fråga.
Skapa en nyckel genom att köra följande CREATE MASTER KEY-, CREATE CERTIFICATE- och CREATE SYMMETRIC KEY-instruktioner.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'My p@55w0Rd'; 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
Anslut till en separat serverinstans, öppna ett annat frågefönster och kör SQL-uttrycken ovan för att skapa samma nyckel på den andra servern.
Testa nycklarna genom att först köra INSTRUKTIONEN ÖPPNA SYMMETRISK NYCKEL och SELECT-instruktionen nedan på den första servern.
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
På den andra servern klistrar du in resultatet av föregående SELECT-instruktion i följande kod som värdet för
@blob
och kör följande kod för att kontrollera att dubblettnyckeln kan dekryptera chiffertexten.OPEN SYMMETRIC KEY [key_DataShare] DECRYPTION BY CERTIFICATE cert_keyProtection; GO DECLARE @blob varbinary(8000); SELECT CONVERT(varchar(8000), decryptbykey(@blob)); GO
Stäng den symmetriska nyckeln på båda servrarna.
CLOSE SYMMETRIC KEY [key_DataShare]; GO
Krypteringsändringar i SQL Server 2017 CU2
SQL Server 2016 använder SHA1-hashalgoritmen för sitt krypteringsarbete. Från och med SQL Server 2017 används SHA2 i stället. Det innebär att extra steg kan behövas för att installationen av SQL Server 2017 ska dekryptera objekt som krypterats av SQL Server 2016. Här är de extra stegen:
- Kontrollera att SQL Server 2017 har uppdaterats till minst kumulativ uppdatering 2 (CU2).
- Se Kumulativ uppdatering 2 (CU2) för SQL Server 2017 för viktiga detaljer.
- När du har installerat CU2 aktiverar du spårningsflagga 4631 i SQL Server 2017:
DBCC TRACEON(4631, -1);
- Spårningsflagga 4631 är ny i SQL Server 2017. Spårningsflagga 4631 måste vara
ON
globalt innan du skapar huvudnyckeln, certifikatet eller den symmetriska nyckeln i SQL Server 2017. Detta gör att dessa skapade objekt kan samverka med SQL Server 2016 och tidigare versioner. Den här spårningsflaggan bör endast aktiveras tillfälligt för att göra omkryptering av data med SHA2-härledda nycklar.
- Spårningsflagga 4631 är ny i SQL Server 2017. Spårningsflagga 4631 måste vara
Mer information finns i: