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
Azure Synapse Analytics
SQL-databas i Microsoft Fabric
Genererar en symmetrisk nyckel och anger dess egenskaper i SQL Server.
Den här funktionen är inte kompatibel med databasexport med hjälp av Data Tier Application Framework (DACFx). Du måste släppa alla symmetriska nycklar innan du exporterar.
Transact-SQL syntaxkonventioner
Anmärkning
Den här syntaxen stöds inte av en serverlös SQL-pool i Azure Synapse Analytics.
Syntax
CREATE SYMMETRIC KEY key_name
[ AUTHORIZATION owner_name ]
[ FROM PROVIDER provider_name ]
WITH
[
<key_options> [ , ... n ]
| ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
]
<key_options> ::=
KEY_SOURCE = 'pass_phrase'
| ALGORITHM = <algorithm>
| IDENTITY_VALUE = 'identity_phrase'
| PROVIDER_KEY_NAME = 'key_name_in_provider'
| CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
| DESX | AES_128 | AES_192 | AES_256
<encrypting_mechanism> ::=
CERTIFICATE certificate_name
| PASSWORD = 'password'
| SYMMETRIC KEY symmetric_key_name
| ASYMMETRIC KEY asym_key_name
Argumentpunkter
key_name
Anger det unika namn med vilket den symmetriska nyckeln är känd i databasen. Det här är en obligatorisk parameter. Tillfälliga nycklar anges när key_name börjar med ett taltecken (#
). Till exempel #temporaryKey900007
. Du kan inte skapa en symmetrisk nyckel som har ett namn som börjar med mer än en #
. Du kan inte skapa en tillfällig symmetrisk nyckel med hjälp av en EKM-provider.
AUKTORISERING owner_name
Anger namnet på databasanvändaren eller programrollen som äger den här nyckeln.
FRÅN PROVIDER provider_name
Anger en EKM-provider (Extensible Key Management) och ett namn. Nyckeln exporteras inte från EKM-enheten. Providern måste definieras först med hjälp av -instruktionen CREATE PROVIDER
. Mer information om hur du skapar externa nyckelprovidrar finns i Extensible Key Management (EKM).
Anmärkning
Det här alternativet är inte tillgängligt i en innesluten databas.
KEY_SOURCE = "pass_phrase"
Anger en lösenfras som nyckeln ska härledas från.
IDENTITY_VALUE = "identity_phrase"
Anger en identitetsfras som du vill generera ett GUID från för att tagga data som krypteras med en tillfällig nyckel.
PROVIDER_KEY_NAME = "key_name_in_provider"
Anger namnet som refereras till i extensible Key Management-providern.
Anmärkning
Det här alternativet är inte tillgängligt i en innesluten databas.
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
Skapar eller mappar en symmetrisk nyckel till en utökningsbar nyckelhanteringsenhet.
CREATE_NEW
Skapar en ny nyckel på den utökningsbara nyckelhanteringsenheten. Om det redan finns en nyckel på enheten misslyckas -instruktionen med ett fel.
OPEN_EXISTING
Mappar en symmetrisk SQL Server-nyckel till en befintlig utökningsbar nyckelhanteringsnyckel. Om
CREATION_DISPOSITION = OPEN_EXISTING
inte anges är standardinställningenCREATE_NEW
.
certificate_name
Anger namnet på certifikatet som används för att kryptera den symmetriska nyckeln. Certifikatet måste redan finnas i databasen.
"lösenord"
Anger ett lösenord som du vill härleda en TRIPLE_DES nyckel med vilken den symmetriska nyckeln ska skyddas.
password
måste uppfylla kraven på Windows-lösenordsprinciper för den dator som kör instansen av SQL Server. Använd alltid starka lösenord.
symmetric_key_name
Anger en symmetrisk nyckel som används för att kryptera nyckeln som skapas. Den angivna nyckeln måste redan finnas i databasen och nyckeln måste vara öppen.
asym_key_name
Anger en asymmetrisk nyckel som används för att kryptera nyckeln som skapas. Den här asymmetriska nyckeln måste redan finnas i databasen.
<algoritm>
Ange krypteringsalgoritmen.
Varning
Från och med SQL Server 2016 (13.x) är alla algoritmer förutom AES_128, AES_192 och AES_256 inaktuella. Om du vill använda äldre algoritmer (rekommenderas inte) måste du ange databasen till databaskompatibilitetsnivå 120 eller lägre.
Anmärkningar
När en symmetrisk nyckel skapas måste den symmetriska nyckeln krypteras med minst ett av följande alternativ:
- certifikat
- lösenord
- symmetrisk nyckel
- asymmetrisk nyckel
- FAMILJEFÖRSÖRJARE
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.
För att skydda nyckelmaterialet för den symmetriska nyckeln lagrar SQL Server och Azure SQL nyckelmaterialet i krypterad form. Tidigare använde den här krypteringen PKCS#1 v1.5 utfyllnadsläge; Från och med databaskompatibilitetsnivå 170 använder krypteringen utfyllnadsläget OAEP-256 för kryptering efter certifikat eller asymmetrisk nyckel. I dm_database_encryption_keys
visas encryptor_type
som CERTIFICATE_OAEP_256
i stället för CERTIFICATE
.
Försiktighet
När en symmetrisk nyckel krypteras med ett lösenord i stället för ett certifikat (eller en annan nyckel) används TRIPLE DES-krypteringsalgoritmen för att kryptera lösenordet. Därför skyddas nycklar som skapas med en stark krypteringsalgoritm, till exempel AES, av en svagare algoritm.
Det valfria lösenordet kan användas för att kryptera den symmetriska nyckeln innan du distribuerar nyckeln till flera användare.
Tillfälliga nycklar ägs av den användare som skapar dem. Tillfälliga nycklar är endast giltiga för den aktuella sessionen.
IDENTITY_VALUE
genererar ett GUID med vilket du kan tagga data som är krypterade med den nya symmetriska nyckeln. Den här taggningen kan användas för att matcha nycklar till krypterade data. DET GUID som genereras av en specifik fras är alltid detsamma. När en fras har använts för att generera ett GUID kan frasen inte återanvändas så länge det finns minst en symmetrisk nyckel i den här databasen som aktivt använder frasen.
IDENTITY_VALUE
är en valfri sats. Vi rekommenderar dock att du använder den när du lagrar data som krypterats med en tillfällig nyckel.
Det finns ingen standardkrypteringsalgoritm.
Viktigt!
Vi rekommenderar inte att du använder RC4- och RC4_128 ström chiffer för att skydda känsliga data. SQL Server kodar inte krypteringen som utförs med sådana nycklar ytterligare.
Information om symmetriska nycklar visas i sys.symmetric_keys katalogvyn.
Symmetriska nycklar kan inte krypteras med symmetriska nycklar som skapats från krypteringsprovidern.
Förtydligande av DES-algoritmer
- DESX namngavs felaktigt. Symmetriska nycklar som skapats med ALGORITHM = DESX använder faktiskt TRIPLE DES-chiffer med en 192-bitarsnyckel. DESX-algoritmen tillhandahålls inte. Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
- Symmetriska nycklar som skapats med ALGORITHM = TRIPLE_DES_3KEY använda TRIPLE DES med en 192-bitarsnyckel.
- Symmetriska nycklar som skapats med ALGORITHM = TRIPLE_DES använda TRIPLE DES med en 128-bitarsnyckel.
Utfasning av RC4-algoritmen
Upprepad användning av samma RC4- eller RC4_128 KEY_GUID på olika datablock resulterar i samma RC4-nyckel eftersom SQL Server inte ger något salt automatiskt. Att använda samma RC4-nyckel upprepade gånger är ett välkänt fel som resulterar i mycket svag kryptering. Därför har vi inaktuella nyckelorden RC4 och RC4_128. Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.
Varning
RC4-algoritmen stöds endast för bakåtkompatibilitet. Nytt material kan bara krypteras med hjälp av RC4 eller RC4_128 när databasen är på kompatibilitetsnivå 90 eller 100. (Rekommenderas inte.) Använd en nyare algoritm, till exempel en av AES-algoritmerna i stället. I SQL Server-material som krypterats med RC4 eller RC4_128 kan dekrypteras på valfri kompatibilitetsnivå.
Behörigheter
Kräver behörighet för ALTER ANY SYMMETRIC KEY i databasen. Om AUTHORIZATION
anges kräver PERSONIFIERa behörighet för databasanvändaren eller ALTER-behörigheten 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.
Exempel
A. Skapa en symmetrisk nyckel
I följande exempel skapas en symmetrisk nyckel som anropas JanainaKey09
med hjälp av algoritmen AES 256
och krypterar sedan den nya nyckeln med certifikatet Shipping04
.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. Skapa en tillfällig symmetrisk nyckel
I följande exempel skapas en tillfällig symmetrisk nyckel som anropas #MarketingXXV
från lösenfrasen: The square of the hypotenuse is equal to the sum of the squares of the sides
. Nyckeln etableras med ett GUID som genereras från strängen Pythagoras
och krypteras med certifikatet Marketing25
.
CREATE SYMMETRIC KEY #MarketingXXV
WITH ALGORITHM = AES_128,
KEY_SOURCE
= 'The square of the hypotenuse is equal to the sum of the squares of the sides',
IDENTITY_VALUE = 'Pythagoras'
ENCRYPTION BY CERTIFICATE Marketing25;
GO
C. Skapa en symmetrisk nyckel med en EKM-enhet (Extensible Key Management)
I följande exempel skapas en symmetrisk nyckel som anropas MySymKey
med hjälp av en provider med namnet MyEKMProvider
och nyckelnamnet KeyForSensitiveData
. Den tilldelar auktorisering till User1
och förutsätter att systemadministratören redan har registrerat providern som anropas MyEKMProvider
i SQL Server.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO