Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)
Generuje klucz symetryczny i określa jego właściwości w programie SQL Server.
Ta funkcja jest niezgodna z eksportowaniem bazy danych przy użyciu struktury aplikacji warstwy danych (DACFx). Przed wyeksportowaniem należy usunąć wszystkie klucze symetryczne.
Transact-SQL konwencje składni
Note
Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze 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
Określa unikatową nazwę, za pomocą której klucz symetryczny jest znany w bazie danych. Jest to wymagany parametr. Klucze tymczasowe są wyznaczane, gdy key_name zaczyna się od jednego znaku cyfry (#
). Na przykład #temporaryKey900007
. Nie można utworzyć klucza symetrycznego, który ma nazwę rozpoczynającą się od więcej niż jednego #
. Nie można utworzyć tymczasowego klucza symetrycznego przy użyciu dostawcy EKM.
AUTHORIZATION owner_name
Określa nazwę użytkownika bazy danych lub roli aplikacji, która jest właścicielem tego klucza.
FROM PROVIDER provider_name
Określa dostawcę i nazwę rozszerzalnego zarządzania kluczami (EKM). Klucz nie jest eksportowany z urządzenia EKM. Dostawca musi być zdefiniowany jako pierwszy przy użyciu instrukcji CREATE PROVIDER
. Aby uzyskać więcej informacji na temat tworzenia zewnętrznych dostawców kluczy, zobacz Extensible Key Management (EKM).
Note
Ta opcja nie jest dostępna w zawartej bazie danych.
KEY_SOURCE = "pass_phrase"
Określa hasło, z którego ma pochodzić klucz.
IDENTITY_VALUE = "identity_phrase"
Określa frazę tożsamości, z której ma być generowany identyfikator GUID do oznaczania danych zaszyfrowanych przy użyciu klucza tymczasowego.
PROVIDER_KEY_NAME = 'key_name_in_provider'
Określa nazwę przywołyną w dostawcy rozszerzonego zarządzania kluczami.
Note
Ta opcja nie jest dostępna w zawartej bazie danych.
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
Tworzy lub mapuje klucz symetryczny na urządzenie do rozszerzonego zarządzania kluczami.
CREATE_NEW
Tworzy nowy klucz na urządzeniu do zarządzania kluczami rozszerzalnymi. Jeśli klucz już istnieje na urządzeniu, instrukcja kończy się niepowodzeniem z powodu błędu.
OPEN_EXISTING
Mapuje klucz symetryczny programu SQL Server na istniejący rozszerzalny klucz zarządzania kluczami. Jeśli
CREATION_DISPOSITION = OPEN_EXISTING
nie zostanie podana wartość domyślna, zostanie ustawiona wartośćCREATE_NEW
.
certificate_name
Określa nazwę certyfikatu używanego do szyfrowania klucza symetrycznego. Certyfikat musi już istnieć w bazie danych.
'password'
Określa hasło, z którego ma pochodzić klucz TRIPLE_DES, za pomocą którego należy zabezpieczyć klucz symetryczny.
password
musi spełniać wymagania zasad haseł systemu Windows komputera z uruchomionym wystąpieniem programu SQL Server. Zawsze używaj silnych haseł.
symmetric_key_name
Określa klucz symetryczny używany do szyfrowania tworzonego klucza. Określony klucz musi już istnieć w bazie danych, a klucz musi być otwarty.
asym_key_name
Określa klucz asymetryczny używany do szyfrowania tworzonego klucza. Ten klucz asymetryczny musi już istnieć w bazie danych.
<algorytm>
Określ algorytm szyfrowania.
Warning
Począwszy od programu SQL Server 2016 (13.x), wszystkie algorytmy inne niż AES_128, AES_192 i AES_256 są przestarzałe. Aby użyć starszych algorytmów (niezalecane), musisz ustawić bazę danych na poziom zgodności bazy danych 120 lub niższy.
Remarks
Po utworzeniu klucza symetrycznego klucz symetryczny musi zostać zaszyfrowany przy użyciu co najmniej jednej z następujących opcji:
- certyfikat
- hasło
- symmetric key
- asymmetric key
- PROVIDER
Klucz może mieć więcej niż jedno szyfrowanie każdego typu. Innymi słowy, pojedynczy klucz symetryczny może być szyfrowany przy użyciu wielu certyfikatów, haseł, kluczy symetrycznych i kluczy asymetrycznych jednocześnie.
Aby chronić materiał klucza symetrycznego, program SQL Server i usługa Azure SQL przechowują materiał klucza w postaci zaszyfrowanej. W przeszłości to szyfrowanie korzystało z trybu wypełnienia PKCS#1 w wersji 1.5; Począwszy od poziomu zgodności bazy danych 170, szyfrowanie używa trybu wypełnienia OAEP-256 na potrzeby szyfrowania według certyfikatu lub klucza asymetrycznego. W dm_database_encryption_keys
pliku encryptor_type
element będzie wyświetlany jako CERTIFICATE_OAEP_256
zamiast CERTIFICATE
.
Caution
Gdy klucz symetryczny jest szyfrowany przy użyciu hasła zamiast certyfikatu (lub innego klucza), algorytm szyfrowania TRIPLE DES jest używany do szyfrowania hasła. W związku z tym klucze tworzone za pomocą silnego algorytmu szyfrowania, takiego jak AES, są zabezpieczone przez słabszy algorytm.
Opcjonalne hasło może służyć do szyfrowania klucza symetrycznego przed dystrybucją klucza do wielu użytkowników.
Klucze tymczasowe są własnością użytkownika, który je tworzy. Klucze tymczasowe są prawidłowe tylko dla bieżącej sesji.
IDENTITY_VALUE
Generuje identyfikator GUID, za pomocą którego mają być tagowane dane zaszyfrowane przy użyciu nowego klucza symetrycznego. Tego tagowania można używać do dopasowywania kluczy do zaszyfrowanych danych. Identyfikator GUID wygenerowany przez określoną frazę jest zawsze taki sam. Po wygenerowaniu identyfikatora GUID frazy nie można użyć ponownie, o ile w tej bazie danych znajduje się co najmniej jeden klucz symetryczny, który aktywnie używa frazy.
IDENTITY_VALUE
jest klauzulą opcjonalną; zalecamy jednak użycie go podczas przechowywania danych zaszyfrowanych przy użyciu klucza tymczasowego.
Nie ma domyślnego algorytmu szyfrowania.
Important
Nie zalecamy używania szyfrów strumienia RC4 i RC4_128 w celu ochrony poufnych danych. Program SQL Server nie koduje jeszcze bardziej szyfrowania wykonywanego przy użyciu takich kluczy.
Informacje o kluczach symetrycznych są widoczne w widoku katalogu sys.symmetric_keys .
Klucze symetryczne nie mogą być szyfrowane za pomocą kluczy symetrycznych utworzonych przez dostawcę szyfrowania.
Wyjaśnienie dotyczące algorytmów DES
- DESX został niepoprawnie nazwany. Klucze symetryczne utworzone za pomocą algorytmu = DESX używają szyfrowania TRIPLE DES z 192-bitowym kluczem. Nie podano algorytmu DESX. Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
- Klucze symetryczne utworzone za pomocą algorytmu = TRIPLE_DES_3KEY używać funkcji TRIPLE DES z 192-bitowym kluczem.
- Klucze symetryczne utworzone za pomocą algorytmu = TRIPLE_DES używać funkcji TRIPLE DES z 128-bitowym kluczem.
Wycofanie algorytmu RC4
Powtarzające się użycie tego samego RC4 lub RC4_128 KEY_GUID w różnych blokach danych powoduje automatyczne użycie tego samego klucza RC4, ponieważ program SQL Server nie zapewnia soli automatycznie. Używanie tego samego klucza RC4 wielokrotnie jest dobrze znanym błędem, który powoduje bardzo słabe szyfrowanie. Dlatego mamy przestarzałe słowa kluczowe RC4 i RC4_128. Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.
Warning
Algorytm RC4 jest obsługiwany tylko w przypadku zgodności z poprzednimi wersjami. Nowy materiał można szyfrować tylko przy użyciu wersji RC4 lub RC4_128, gdy baza danych jest zgodna z poziomem zgodności 90 lub 100. (Niezalecane). Zamiast tego użyj nowszego algorytmu, takiego jak jeden z algorytmów AES. W programie SQL Server materiał zaszyfrowany przy użyciu wersji RC4 lub RC4_128 można odszyfrować na dowolnym poziomie zgodności.
Permissions
Wymaga uprawnienia ALTER ANY SYMMETRIC KEY w bazie danych. W przypadku AUTHORIZATION
określenia parametru wymaga uprawnienia IMPERSONATE dla użytkownika bazy danych lub uprawnienia ALTER w roli aplikacji. Jeśli szyfrowanie odbywa się przy użyciu certyfikatu lub klucza asymetrycznego, wymaga uprawnień do wyświetlania definicji certyfikatu lub klucza asymetrycznego. Tylko identyfikatory logowania systemu Windows, identyfikatory logowania programu SQL Server i role aplikacji mogą być właścicielami kluczy symetrycznych. Grupy i role nie mogą być właścicielami kluczy symetrycznych.
Examples
A. Tworzenie klucza symetrycznego
Poniższy przykład tworzy klucz symetryczny o nazwie JanainaKey09
przy użyciu algorytmu AES 256
, a następnie szyfruje nowy klucz przy użyciu certyfikatu Shipping04
.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. Tworzenie tymczasowego klucza symetrycznego
Poniższy przykład tworzy tymczasowy klucz symetryczny wywoływany #MarketingXXV
z hasła: The square of the hypotenuse is equal to the sum of the squares of the sides
. Klucz jest aprowizowany za pomocą identyfikatora GUID wygenerowanego na podstawie ciągu Pythagoras
i zaszyfrowany przy użyciu certyfikatu 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. Tworzenie klucza symetrycznego przy użyciu urządzenia extensible Key Management (EKM)
Poniższy przykład tworzy klucz symetryczny o nazwie MySymKey
przy użyciu dostawcy o nazwie MyEKMProvider
i nazwy KeyForSensitiveData
klucza . Przypisuje autoryzację i User1
zakłada, że administrator systemu zarejestrował już dostawcę o nazwie MyEKMProvider
w programie SQL Server.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO