Megosztás a következőn keresztül:


SZIMMETRIKUS KULCS LÉTREHOZÁSA (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-adatbázis a Microsoft Fabricben

Szimmetrikus kulcsot hoz létre, és meghatározza annak tulajdonságait az SQL Serverben.

Ez a funkció nem kompatibilis az adatbázis-exportálással a Data Tier Application Framework (DACFx) használatával. Exportálás előtt el kell dobnia az összes szimmetrikus kulcsot.

Transact-SQL szintaxis konvenciók

Note

Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.

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

Megadja azt az egyedi nevet, amellyel a szimmetrikus kulcs ismert az adatbázisban. Ez egy kötelező paraméter. Az ideiglenes kulcsok akkor lesznek kijelölve, ha a key_name egy számjellel (#) kezdődik. Például: #temporaryKey900007. Nem hozható létre szimmetrikus kulcs, amelynek neve egynél #többel kezdődik. EKM-szolgáltatóval nem hozható létre ideiglenes szimmetrikus kulcs.

ENGEDÉLYEZÉSI owner_name

Megadja annak az adatbázis-felhasználónak vagy alkalmazásszerepkörnek a nevét, amely a kulcs tulajdonosa.

A SZOLGÁLTATÓTÓL provider_name

Extensible Key Management (EKM) szolgáltatót és nevet ad meg. A kulcs nincs exportálva az EKM-eszközről. A szolgáltatót először az CREATE PROVIDER utasítással kell definiálni. A külső kulcsszolgáltatók létrehozásáról további információt az Extensible Key Management (EKM) című témakörben talál.

Note

Ez a beállítás nem érhető el egy tartalmazott adatbázisban.

KEY_SOURCE = "pass_phrase"

Megadja azt a jelszót, amelyből a kulcs származtatható.

IDENTITY_VALUE = 'identity_phrase'

Egy identitáskifejezést ad meg, amelyből guid azonosítót hozhat létre az ideiglenes kulccsal titkosított adatok címkézéséhez.

PROVIDER_KEY_NAME = "key_name_in_provider"

A Bővíthető kulcskezelés szolgáltatóban hivatkozott nevet adja meg.

Note

Ez a beállítás nem érhető el egy tartalmazott adatbázisban.

CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }

Szimmetrikus kulcsot hoz létre vagy képez le egy bővíthető kulcskezelő eszközre.

  • CREATE_NEW

    Új kulcsot hoz létre az Bővíthető kulcskezelő eszközön. Ha már létezik kulcs az eszközön, az utasítás hibaüzenettel meghiúsul.

  • OPEN_EXISTING

    Az SQL Server szimmetrikus kulcsát egy meglévő bővíthető kulcskezelési kulcshoz rendeli. Ha CREATION_DISPOSITION = OPEN_EXISTING nincs megadva, ez az alapértelmezett érték.CREATE_NEW

certificate_name

Megadja a szimmetrikus kulcs titkosításához használt tanúsítvány nevét. A tanúsítványnak már léteznie kell az adatbázisban.

'password'

Olyan jelszót ad meg, amelyből egy TRIPLE_DES kulcs származtatható, amellyel biztonságossá teheti a szimmetrikus kulcsot. password meg kell felelnie az SQL Server-példányt futtató számítógép Windows jelszóházirend-követelményeinek. Mindig használjon erős jelszavakat.

symmetric_key_name

A létrehozandó kulcs titkosításához használt szimmetrikus kulcsot adja meg. A megadott kulcsnak már léteznie kell az adatbázisban, és a kulcsnak nyitva kell lennie.

asym_key_name

A létrehozott kulcs titkosításához használt aszimmetrikus kulcsot ad meg. Ennek az aszimmetrikus kulcsnak már léteznie kell az adatbázisban.

<algoritmus>

Adja meg a titkosítási algoritmust.

Warning

Az SQL Server 2016 -tól (13.x) kezdve a AES_128, AES_192 és AES_256 kivételével minden algoritmus elavult. A régebbi algoritmusok használatához (nem ajánlott) az adatbázist 120-es vagy annál alacsonyabb adatbázis-kompatibilitási szintre kell állítania.

Remarks

Szimmetrikus kulcs létrehozásakor a szimmetrikus kulcsot az alábbi lehetőségek közül legalább egy használatával kell titkosítani:

  • tanúsítvány
  • jelszó
  • tartalomkulcs
  • aszimmetrikus kulcs
  • PROVIDER

A kulcs több titkosítással is rendelkezhet minden típushoz. Más szóval egyetlen szimmetrikus kulcs egyszerre több tanúsítvány, jelszó, szimmetrikus és aszimmetrikus kulcs használatával titkosítható.

A szimmetrikus kulcs kulcsanyagának védelme érdekében az SQL Server és az Azure SQL titkosított formában tárolja a kulcsanyagot. Korábban ez a titkosítás a PKCS#1 v1.5 párnázási módot használja; A 170-es adatbáziskompatibilitási szinttől kezdve a titkosítás OAEP-256 párnázási módot használ a tanúsítvány vagy aszimmetrikus kulcs általi titkosításhoz. Ebben dm_database_encryption_keysa nézetben a encryptor_type program ahelyett CERTIFICATE_OAEP_256jelenik meg, mint a CERTIFICATE következő.

Caution

Ha egy szimmetrikus kulcs tanúsítvány (vagy más kulcs) helyett jelszóval van titkosítva, a TRIPLE DES titkosítási algoritmussal titkosítja a jelszót. Emiatt az erős titkosítási algoritmussal, például az AES-sel létrehozott kulcsokat egy gyengébb algoritmus védi.

Az opcionális jelszóval titkosíthatja a szimmetrikus kulcsot, mielőtt a kulcsot több felhasználónak is elosztanák.

Az ideiglenes kulcsokat az őket létrehozó felhasználó birtokolja. Az ideiglenes kulcsok csak az aktuális munkamenetre érvényesek.

IDENTITY_VALUE létrehoz egy GUID azonosítót, amellyel az új szimmetrikus kulccsal titkosított adatokat címkézheti. Ez a címkézés használható a kulcsok és a titkosított adatok egyeztetésére. Egy adott kifejezés által létrehozott GUID mindig ugyanaz. Miután egy kifejezést használt a GUID létrehozásához, a kifejezés nem használható újra, ha legalább egy szimmetrikus kulcs van az adatbázisban, amely aktívan használja a kifejezést. IDENTITY_VALUE nem kötelező záradék; Azonban azt javasoljuk, hogy használja azt, amikor ideiglenes kulccsal titkosított adatokat tárol.

Nincs alapértelmezett titkosítási algoritmus.

Important

Nem javasoljuk az RC4 és RC4_128 stream-titkosítások használatát a bizalmas adatok védelme érdekében. Az SQL Server nem kódolja tovább az ilyen kulcsokkal végrehajtott titkosítást.

A szimmetrikus kulcsokkal kapcsolatos információk sys.symmetric_keys katalógusnézetben láthatók.

A szimmetrikus kulcsok nem titkosíthatók a titkosítási szolgáltatótól létrehozott szimmetrikus kulcsokkal.

A DES-algoritmusokkal kapcsolatos pontosítás

  • A DESX helytelenül lett elnevezve. Az ALGORITHM = DESX használatával létrehozott szimmetrikus kulcsok valójában a TRIPLE DES titkosítást használják egy 192 bites kulccsal. A DESX algoritmus nincs megadva. Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.
  • Az ALGORITHM = TRIPLE_DES_3KEY 192 bites kulccsal létrehozott szimmetrikus kulcsok a TRIPLE DES-t használják.
  • Az ALGORITHM = TRIPLE_DES 128 bites kulcsokkal létrehozott szimmetrikus kulcsok a TRIPLE DES-t használják.

Az RC4 algoritmus elavulása

Ugyanazon RC4 vagy RC4_128 KEY_GUID ismételt használata különböző adatblokkokon ugyanazt az RC4-kulcsot eredményezi, mivel az SQL Server nem biztosít automatikus sót. Ugyanaz az RC4-kulcs ismételt használata egy jól ismert hiba, amely nagyon gyenge titkosítást eredményez. Ezért elavult az RC4 és RC4_128 kulcsszavakat. Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását.

Warning

Az RC4 algoritmus csak a visszamenőleges kompatibilitás érdekében támogatott. Az új anyagok csak RC4 vagy RC4_128 használatával titkosíthatók, ha az adatbázis kompatibilitási szintje 90 vagy 100. (Nem ajánlott.) Használjon helyette egy újabb algoritmust, például az egyik AES-algoritmust. Az SQL Server RC4 vagy RC4_128 használatával titkosított anyagai bármilyen kompatibilitási szinten visszafejthetők.

Permissions

Az adatbázis BÁRMELY SZIMMETRIKUS KULCS engedélyének módosítása szükséges. Ha AUTHORIZATION meg van adva, impERSONATE engedélyt igényel az adatbázis-felhasználótól, vagy alter engedélyt az alkalmazásszerepkörhöz. Ha a titkosítás tanúsítványsal vagy aszimmetrikus kulccsal történik, a tanúsítványon vagy az aszimmetrikus kulcson a VIEW DEFINITION engedély szükséges. Szimmetrikus kulcsokat csak Windows-bejelentkezések, SQL Server-bejelentkezések és alkalmazásszerepkörök birtokolhatnak. A csoportok és a szerepkörök nem birtokolhatnak szimmetrikus kulcsokat.

Examples

A. Szimmetrikus kulcs létrehozása

Az alábbi példa egy szimmetrikus kulcsot JanainaKey09 hoz létre az AES 256 algoritmus használatával, majd tanúsítványsal Shipping04titkosítja az új kulcsot.

CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO

B. Ideiglenes szimmetrikus kulcs létrehozása

Az alábbi példa egy ideiglenes szimmetrikus kulcsot #MarketingXXV hoz létre a jelszóból: The square of the hypotenuse is equal to the sum of the squares of the sides. A kulcs ki van építve egy GUID-val, amely a sztringből Pythagoras jön létre, és tanúsítványsal Marketing25van titkosítva.

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. Szimmetrikus kulcs létrehozása extensible Key Management (EKM) eszközzel

Az alábbi példa egy szimmetrikus kulcsot hoz létre, amelyet egy hívott MySymKey szolgáltató és egy kulcsnév MyEKMProviderhasználatával hívunk KeyForSensitiveData meg. Hozzárendeli az engedélyezést, User1 és feltételezi, hogy a rendszergazda már regisztrálta a hívott MyEKMProvider szolgáltatót az SQL Serveren.

CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO