Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-database in Microsoft Fabric Preview
Hiermee genereert u een symmetrische sleutel en geeft u de eigenschappen ervan op in SQL Server.
Deze functie is niet compatibel met databaseexport met BEHULP van DACFx (Data Tier Application Framework). U moet alle symmetrische sleutels verwijderen voordat u exporteert.
Transact-SQL syntaxis-conventies
Note
Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in 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
Arguments
key_name
Hiermee geeft u de unieke naam op waarmee de symmetrische sleutel bekend is in de database. Dit is een vereiste parameter. Tijdelijke sleutels worden aangewezen wanneer de key_name begint met één cijferteken (#
). Bijvoorbeeld: #temporaryKey900007
. U kunt geen symmetrische sleutel maken met een naam die begint met meer dan één #
. U kunt geen tijdelijke symmetrische sleutel maken met behulp van een EKM-provider.
AUTHORIZATION owner_name
Hiermee geeft u de naam op van de databasegebruiker of toepassingsrol die eigenaar is van deze sleutel.
FROM PROVIDER provider_name
Hiermee geeft u een EKM-provider (Extensible Key Management) en naam op. De sleutel wordt niet geëxporteerd van het EKM-apparaat. De provider moet eerst worden gedefinieerd met behulp van de CREATE PROVIDER
instructie. Zie Extensible Key Management (EKM) voor meer informatie over het maken van externe sleutelproviders.
Note
Deze optie is niet beschikbaar in een ingesloten database.
KEY_SOURCE = 'pass_phrase'
Hiermee geeft u een wachtwoordzin op waaruit de sleutel moet worden afgeleid.
IDENTITY_VALUE = 'identity_phrase'
Hiermee geeft u een identiteitszin op waaruit een GUID moet worden gegenereerd voor het taggen van gegevens die zijn versleuteld met een tijdelijke sleutel.
PROVIDER_KEY_NAME = 'key_name_in_provider'
Hiermee geeft u de naam waarnaar wordt verwezen in de Extensible Key Management-provider.
Note
Deze optie is niet beschikbaar in een ingesloten database.
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
Hiermee maakt of wijst u een symmetrische sleutel toe aan een Extensible Key Management-apparaat.
CREATE_NEW
Hiermee maakt u een nieuwe sleutel op het uitbreidbare sleutelbeheerapparaat. Als er al een sleutel op het apparaat bestaat, mislukt de instructie met een fout.
OPEN_EXISTING
Wijst een symmetrische SQL Server-sleutel toe aan een bestaande uitbreidbare sleutelbeheersleutel. Als
CREATION_DISPOSITION = OPEN_EXISTING
dit niet is opgegeven, wordt dit standaard ingesteld opCREATE_NEW
.
certificate_name
Hiermee geeft u de naam op van het certificaat dat wordt gebruikt voor het versleutelen van de symmetrische sleutel. Het certificaat moet al bestaan in de database.
'password'
Hiermee geeft u een wachtwoord op waaruit een TRIPLE_DES sleutel moet worden afgeleid waarmee de symmetrische sleutel moet worden beveiligd.
password
moet voldoen aan de windows-wachtwoordbeleidsvereisten van de computer waarop het exemplaar van SQL Server wordt uitgevoerd. Gebruik altijd sterke wachtwoorden.
symmetric_key_name
Hiermee geeft u een symmetrische sleutel op die wordt gebruikt voor het versleutelen van de sleutel die wordt gemaakt. De opgegeven sleutel moet al aanwezig zijn in de database en de sleutel moet zijn geopend.
asym_key_name
Hiermee geeft u een asymmetrische sleutel op die wordt gebruikt voor het versleutelen van de sleutel die wordt gemaakt. Deze asymmetrische sleutel moet al aanwezig zijn in de database.
<algoritme>
Geef het versleutelingsalgoritmen op.
Warning
Vanaf SQL Server 2016 (13.x) worden alle algoritmen behalve AES_128, AES_192 en AES_256 afgeschaft. Als u oudere algoritmen wilt gebruiken (niet aanbevolen), moet u de database instellen op databasecompatibiliteitsniveau 120 of lager.
Remarks
Wanneer een symmetrische sleutel wordt gemaakt, moet de symmetrische sleutel worden versleuteld met ten minste een van de volgende opties:
- certificate
- password
- symmetric key
- asymmetric key
- PROVIDER
De sleutel kan meer dan één versleuteling van elk type hebben. Met andere woorden, één symmetrische sleutel kan tegelijkertijd worden versleuteld met behulp van meerdere certificaten, wachtwoorden, symmetrische sleutels en asymmetrische sleutels.
Om het sleutelmateriaal van de symmetrische sleutel te beveiligen, slaan SQL Server en Azure SQL het sleutelmateriaal in versleutelde vorm op. In het verleden gebruikte versleuteling PKCS#1 v1.5 opvullingsmodus; vanaf databasecompatibiliteitsniveau 170 gebruikt de versleuteling de opvullingsmodus OAEP-256 voor versleuteling per certificaat of asymmetrische sleutel. In dm_database_encryption_keys
, wordt de encryptor_type
weergegeven als CERTIFICATE_OAEP_256
in plaats van CERTIFICATE
.
Caution
Wanneer een symmetrische sleutel wordt versleuteld met een wachtwoord in plaats van een certificaat (of een andere sleutel), wordt het TRIPLE DES-versleutelingsalgoritmen gebruikt om het wachtwoord te versleutelen. Hierdoor worden sleutels die zijn gemaakt met een sterk versleutelingsalgoritmen, zoals AES, zelf beveiligd door een zwakker algoritme.
Het optionele wachtwoord kan worden gebruikt om de symmetrische sleutel te versleutelen voordat de sleutel naar meerdere gebruikers wordt gedistribueerd.
Tijdelijke sleutels zijn eigendom van de gebruiker die deze maakt. Tijdelijke sleutels zijn alleen geldig voor de huidige sessie.
IDENTITY_VALUE
genereert een GUID waarmee gegevens worden gelabeld die zijn versleuteld met de nieuwe symmetrische sleutel. Deze tagging kan worden gebruikt om sleutels te koppelen aan versleutelde gegevens. De GUID die door een specifieke woordgroep wordt gegenereerd, is altijd hetzelfde. Nadat een woordgroep is gebruikt om een GUID te genereren, kan de woordgroep niet opnieuw worden gebruikt zolang er ten minste één symmetrische sleutel in deze database is die actief gebruikmaakt van de woordgroep.
IDENTITY_VALUE
is een optionele component; We raden u echter aan deze te gebruiken wanneer u gegevens opslaat die zijn versleuteld met een tijdelijke sleutel.
Er is geen standaardversleutelingsalgoritmen.
Important
Het is niet raadzaam om de RC4- en RC4_128-coderingen te gebruiken om gevoelige gegevens te beveiligen. SQL Server codeert de versleuteling die met dergelijke sleutels wordt uitgevoerd niet verder.
Informatie over symmetrische sleutels is zichtbaar in de sys.symmetric_keys catalogusweergave.
Symmetrische sleutels kunnen niet worden versleuteld door symmetrische sleutels die zijn gemaakt op basis van de versleutelingsprovider.
Verduidelijking met betrekking tot DES-algoritmen
- DESX heeft een onjuiste naam gekregen. Symmetrische sleutels die zijn gemaakt met ALGORITHM = DESX, gebruiken de TRIPLE DES-codering met een 192-bits sleutel. Het DESX-algoritme is niet opgegeven. Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.
- Symmetrische sleutels die zijn gemaakt met ALGORITME = TRIPLE_DES_3KEY GEBRUIK TRIPLE DES met een 192-bits sleutel.
- Symmetrische sleutels die zijn gemaakt met ALGORITHM = TRIPLE_DES gebruik TRIPLE DES met een 128-bits sleutel.
Afschaffing van het RC4-algoritme
Herhaald gebruik van dezelfde RC4 of RC4_128 KEY_GUID op verschillende gegevensblokken resulteert in dezelfde RC4-sleutel omdat SQL Server geen zout automatisch biedt. Het herhaaldelijk gebruiken van dezelfde RC4-sleutel is een bekende fout die resulteert in zeer zwakke versleuteling. Daarom hebben we de RC4 en RC4_128 trefwoorden afgeschaft. Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie.
Warning
Het RC4-algoritme wordt alleen ondersteund voor achterwaartse compatibiliteit. Nieuw materiaal kan alleen worden versleuteld met RC4 of RC4_128 wanneer de database compatibiliteitsniveau 90 of 100 heeft. (Niet aanbevolen.) Gebruik in plaats daarvan een nieuwer algoritme, zoals een van de AES-algoritmen. In SQL Server-materiaal dat is versleuteld met RC4 of RC4_128 kan worden ontsleuteld in elk compatibiliteitsniveau.
Permissions
Vereist ALTER ANY SYMMETRIC KEY-machtiging voor de database. Als AUTHORIZATION
dit is opgegeven, is imitatiemachtiging vereist voor de databasegebruiker of ALTER-machtiging voor de toepassingsrol. Indien de versleuteling door middel van een certificaat of asymmetrische sleutel is, is voor het certificaat of de asymmetrische sleutel de machtiging VIEW DEFINITION vereist. Alleen Windows-aanmeldingen, SQL Server-aanmeldingen en toepassingsrollen kunnen eigenaar zijn van symmetrische sleutels. Groepen en rollen kunnen geen symmetrische sleutels bezitten.
Examples
A. Een symmetrische sleutel maken
In het volgende voorbeeld wordt een symmetrische sleutel gemaakt die wordt aangeroepen JanainaKey09
met behulp van het AES 256
algoritme en wordt de nieuwe sleutel vervolgens versleuteld met een certificaat Shipping04
.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. Een tijdelijke symmetrische sleutel maken
In het volgende voorbeeld wordt een tijdelijke symmetrische sleutel gemaakt die wordt aangeroepen #MarketingXXV
vanuit de wachtwoordzin: The square of the hypotenuse is equal to the sum of the squares of the sides
. De sleutel wordt ingericht met een GUID die wordt gegenereerd op basis van de tekenreeks Pythagoras
en versleuteld met het certificaat 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. Een symmetrische sleutel maken met behulp van een EKM-apparaat (Extensible Key Management)
In het volgende voorbeeld wordt een symmetrische sleutel gemaakt die wordt aangeroepen met behulp van een provider die wordt aangeroepen MySymKey
MyEKMProvider
en een sleutelnaam van KeyForSensitiveData
. Er wordt autorisatie toegewezen aan User1
en wordt ervan uitgegaan dat de systeembeheerder de provider die is aangeroepen MyEKMProvider
in SQL Server al heeft geregistreerd.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO