Udostępnij za pośrednictwem


CREATE SYMMETRIC KEY (Transact-SQL)

Generuje klucz zawartości i określa jego właściwości.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • Key_name
    Określa unikatową nazwę, pod którym znany jest klucz zawartości w bazie danych.Nazwy kluczy tymczasowe powinien rozpoczynać się jedną liczbę () #sign.Na przykład temporaryKey900007 #.Nie można utworzyć klucz zawartości, ma nazwę, która rozpoczyna się z więcej niż jeden #.Nie można utworzyć tymczasowy klucz symetrycznego, za pomocą EKM dostawca usług.

  • autoryzacja owner_name
    Określa nazwę roli bazy danych użytkownik lub aplikacja, która będzie właścicielem tego klucz.

  • FROM dostawca Provider_Name
    Określa, z dostawca EKM (Extensible klucz Management) i nazwy.Klucz nie jest eksportowany z urządzenia EKM.Dostawca musi być zdefiniowany najpierw za pomocą instrukcja CREATE PROVIDER.Aby uzyskać więcej informacji na temat tworzenia zewnętrznych klucz dostawców, zobacz Understanding Extensible Key Management (EKM).

  • KEY_SOURCE ='pass_phrase'
    Określa frazę przebiegu służący do uzyskania klucz.

  • IDENTITY_VALUE ='identity_phrase'
    Określa frazę tożsamości, z których można wygenerować identyfikatora GUID dla znaczników danych, które są szyfrowane za pomocą klucz tymczasowego.

  • key_name_in_provider
    Określa nazwę, do których odwołują się dostawca rozszerzonego klucz Management.

  • CREATION_DISPOSITION = CREATE_NEW
    Tworzy nowy klucz można na urządzeniu Extensible Key Management.Jeśli klucz już istnieje na urządzeniu, instrukcja kończy się niepowodzeniem z powodu błędu.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Mapy SQL Server klucz zawartości do istniejącego klucza rozszerzonego Key Management. Jeśli CREATION_DISPOSITION = OPEN_EXISTING nie został podany, domyślnie CREATE_NEW.

  • certificate_name
    Określa nazwę certyfikat, który będzie używany do szyfrowania klucz zawartości.Certyfikat musi już istnieć w bazie danych.

  • 'password'
    Specifies a password from which to derive a TRIPLE_DES key with which to secure the symmetric key.password must meet the Windows password policy requirements of the computer that is running the instance of SQL Server.Należy zawsze używać silnych haseł.

  • symmetric_key_name
    Określa klucz zawartości ma być używana do szyfrowania klucza, który jest tworzony.Określony klucz musi już istnieć w bazie danych, a klucz musi być otwarty.

  • asym_key_name
    Określa kluczu asymetrycznego, który ma być używana do szyfrowania klucz, który jest tworzony.Ten klucz asymetryczny musi już istnieć w bazie danych.

Remarks

Gdy klucz zawartości jest tworzony, klucz zawartości musi być zaszyfrowany przy użyciu co najmniej jedną z następujących czynności: certyfikat, hasło, klucz zawartości, klucza asymetrycznego lub dostawca. Klucz może zawierać więcej niż jednego szyfrowanie każdego typu.Innymi słowy, pojedyncze klucz zawartości mogą być szyfrowane za pomocą wielu certyfikatów, haseł, klucz zawartości s i aklucz zawartościs w tym samym czasie.

Ostrzeżenie

Gdy klucz zawartości są szyfrowane przy użyciu hasła zamiast klucza publicznego klucza głównego bazy danych używany jest algorytm szyfrowanie DES POTRÓJNA.W związku z tym klucze, które zostały utworzone z mocnego algorytmu szyfrowanie, takich jak AES, są same zabezpieczone przez algorytm słabsze.

Opcjonalne hasło może służyć do szyfrowania klucz zawartości przed przekazaniem klawisz aby wielu użytkowników.

Tymczasowe klucze będące własnością użytkownika, który je tworzy.Tymczasowe klucze są prawidłowe tylko dla bieżącej sesja.

Identyfikator GUID, z jaką dane znacznika zaszyfrowane przy użyciu nowych generuje IDENTITY_VALUE klucz zawartości.Znakowanie, to może służyć do dopasowania klucze do szyfrowania danych.Generowane przez wyrażenia określonego identyfikatora GUID, zawsze będzie taka sama.Po frazę został użyty do wygenerowania identyfikatora GUID, fraza nie może nastąpić tak długo, jak ma co najmniej jednej sesja, która aktywnie korzysta z frazę.IDENTITY_VALUE opcjonalnej klauzula; jednakże zaleca się go używać, gdy są przechowywane dane zaszyfrowane za pomocą klucz tymczasowego.

Nie ma żadnych domyślnym algorytmem szyfrowanie.

Important noteImportant Note:

We do not recommend using the RC4 and RC4_128 stream ciphers to protect sensitive data.SQL Server does not further encode the encryption performed with such keys.

Informacje na temat kluczy symetrycznych są widoczne w sys.symmetric_keys Służy do wyświetlania katalogu.

Nie można zaszyfrować kluczy symetrycznych przez utworzone przez dostawca szyfrowanie kluczy symetrycznych.

Wyjaśnienia dotyczące algorytmów DES:

  • DESX była niepoprawna.Utworzone za pomocą ALGORYTMU kluczy symetrycznych = DESX rzeczywiście należy użyć szyfrowania DES POTRÓJNA 192-bitowego klucz.Algorytm DESX nie jest wymagane.This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

  • Utworzone za pomocą ALGORYTMU kluczy symetrycznych = używaj TRIPLE_DES_3KEY DES POTRÓJNA z 192-bitowego klucz.

  • Symetryczny klucz s utworzone za pomocą ALGORYTMU = używaj TRIPLE_DES DES POTRÓJNA z 128-bitowego klucz.

Zaniechania algorytm RC4:

Ponieważ powtarzających się korzystania z tego samego RC4 lub KEY_GUID RC4_128 na różne bloki danych spowoduje, w tym samym kluczem RC4 SQL Server nie zapewnia sól automatycznie. Przy użyciu tych samych RC4 klucz wielokrotnie jest dobrze znany błąd, który spowoduje bardzo słabe szyfrowanie.W związku z tym firma Microsoft została zaniechana RC4 oraz RC4_128 słów kluczowych.This feature will be removed in a future version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible.

Uprawnienia

Wymaga uprawnienia ALTER bez klucz SYMETRYCZNEGO w bazie danych.Jeżeli określono wartość autoryzacja, wymaga uprawnienie do PERSONIFIKACJI użytkownika bazy danych lub ALTER uprawnienia roli aplikacji.W przypadku szyfrowanie certyfikat lub klucz asymetrycznego, wymaga uprawnienia definicja widok certyfikat lub klucz asymetrycznego.Tylko logowania systemu Windows SQL Server identyfikatory logowania i ról aplikacji mogą być właścicielami kluczy symetrycznych. Kluczy symetrycznych nie jest właścicielem grupy i role.

Przykłady

A.Tworzenie klucz zawartości

Poniższy przykład tworzy klucz zawartości o nazwie JanainaKey09 za pomocą AES 256 algorytm, a następnie szyfruje nowego klucza z certyfikat Shipping04.

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

B.Tworzenie tymczasowej klucz zawartości

Poniższy przykład tworzy tymczasowe klucz zawartości o nazwie #MarketingXXV z wyrażenia przebiegu: The square of the hypotenuse is equal to the sum of the squares of the sides.The key is provisioned with a GUID that is generated from the string Pythagoras and encrypted with certificate 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 klucz symetrycznego, korzystając z urządzenia EKM (Extensible klucz Management)

Poniższy przykład tworzy klucz zawartości o nazwie MySymKey przy użyciu dostawca o nazwie MyEKMProvider i nazwę klucza KeyForSensitiveData. Przypisuje autoryzacja do User1 i zakłada się, że administrator systemu już został zarejestrowany dostawca o nazwie MyEKMProvider w SQL Server.

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