Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL-felügyelt példány
Azure Synapse Analytics
Ez a cikk azt ismerteti, hogyan titkosíthat egy adatoszlopot szimmetrikus titkosítással az SQL Serveren a Transact-SQL használatával. Ezt más néven oszlopszintű titkosításnak vagy cellaszintű titkosításnak is nevezik.
A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.
Biztonság
Permissions
Az alábbi lépések végrehajtásához a következő engedélyek szükségesek:
-
CONTROLengedélyt az adatbázisra. -
CREATE CERTIFICATEengedélyt az adatbázisra. Csak Windows-bejelentkezések, SQL Server-bejelentkezések és alkalmazásszerepkörök birtokolhatnak tanúsítványokat. A csoportok és szerepkörök nem rendelkeznek tanúsítványokkal. - A
ALTERjogosultság a táblán. - A kulcs bizonyos engedélyei nem lehettek megtagadva, beleértve a
VIEW DEFINITIONengedélyt is.
Adatbázis főkulcsának létrehozása
Az alábbi példák használatához adatbázis-főkulcsot kell használnia. Ha az adatbázis még nem rendelkezik adatbázis-főkulcsgal, hozzon létre egyet. Ha létre szeretne hozni egyet, csatlakozzon az adatbázishoz, és futtassa a következő szkriptet. Ügyeljen arra, hogy összetett jelszót használjon.
Másolja és illessze be a következő példát a AdventureWorks mintaadatbázishoz csatlakoztatott lekérdezési ablakba. Válassza a Végrehajtás lehetőséget.
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '<complex password>';
Mindig készítsen biztonsági másolatot az adatbázis főkulcsáról. További információ az adatbázis-főkulcsokról: CREATE MASTER KEY (Transact-SQL).
Példa: Titkosítás szimmetrikus titkosítással és hitelesítővel
Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.
A Standard sávon válassza Új lekérdezéslehetőséget.
Másolja és illessze be a következő példát a
AdventureWorksmintaadatbázishoz csatlakoztatott lekérdezési ablakba. Válassza a Végrehajtás lehetőséget.CREATE CERTIFICATE Sales09 WITH SUBJECT = 'Customer Credit Card Numbers'; GO CREATE SYMMETRIC KEY CreditCards_Key11 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE Sales09; GO -- Create a column in which to store the encrypted data. ALTER TABLE Sales.CreditCard ADD CardNumber_Encrypted varbinary(160); GO -- Open the symmetric key with which to encrypt the data. OPEN SYMMETRIC KEY CreditCards_Key11 DECRYPTION BY CERTIFICATE Sales09; -- Encrypt the value in column CardNumber using the -- symmetric key CreditCards_Key11. -- Save the result in column CardNumber_Encrypted. UPDATE Sales.CreditCard SET CardNumber_Encrypted = EncryptByKey(Key_GUID('CreditCards_Key11') , CardNumber, 1, HASHBYTES('SHA2_256', CONVERT( varbinary , CreditCardID))); GO -- Verify the encryption. -- First, open the symmetric key with which to decrypt the data. OPEN SYMMETRIC KEY CreditCards_Key11 DECRYPTION BY CERTIFICATE Sales09; GO -- Now list the original card number, the encrypted card number, -- and the decrypted ciphertext. If the decryption worked, -- the original number will match the decrypted number. SELECT CardNumber, CardNumber_Encrypted AS 'Encrypted card number', CONVERT(nvarchar, DecryptByKey(CardNumber_Encrypted, 1 , HASHBYTES('SHA2_256', CONVERT(varbinary, CreditCardID)))) AS 'Decrypted card number' FROM Sales.CreditCard; GO
Titkosítás egyszerű szimmetrikus titkosítással
Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.
A Standard sávon válassza Új lekérdezéslehetőséget.
Másolja és illessze be a következő példát a
AdventureWorksmintaadatbázishoz csatlakoztatott lekérdezési ablakba. Válassza a Végrehajtás lehetőséget.CREATE CERTIFICATE HumanResources037 WITH SUBJECT = 'Employee Social Security Numbers'; GO CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE HumanResources037; GO USE [AdventureWorks2022]; GO -- Create a column in which to store the encrypted data. ALTER TABLE HumanResources.Employee ADD EncryptedNationalIDNumber varbinary(128); GO -- Open the symmetric key with which to encrypt the data. OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037; -- Encrypt the value in column NationalIDNumber with symmetric -- key SSN_Key_01. Save the result in column EncryptedNationalIDNumber. UPDATE HumanResources.Employee SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber); GO -- Verify the encryption. -- First, open the symmetric key with which to decrypt the data. OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037; GO -- Now list the original ID, the encrypted ID, and the -- decrypted ciphertext. If the decryption worked, the original -- and the decrypted ID will match. SELECT NationalIDNumber, EncryptedNationalIDNumber AS 'Encrypted ID Number', CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number' FROM HumanResources.Employee; GO