Udostępnij za pomocą


CREATE ASYMETRYCZNY KLUCZ (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL database w usłudze Microsoft Fabric

Tworzy klucz asymetryczny w bazie danych.

Ta funkcja jest niezgodna z eksportowaniem bazy danych przy użyciu struktury aplikacji warstwy danych (DACFx). Przed wyeksportowaniem należy usunąć wszystkie klucze asymetryczne.

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 ASYMMETRIC KEY asym_key_name   
   [ AUTHORIZATION database_principal_name ]  
   [ FROM <asym_key_source> ]  
   [ WITH <key_option> ] 
   [ ENCRYPTION BY <encrypting_mechanism> ] 
   [ ; ]
  
<asym_key_source>::=  
     FILE = 'path_to_strong-name_file'  
   | EXECUTABLE FILE = 'path_to_executable_file'  
   | ASSEMBLY assembly_name  
   | PROVIDER provider_name  
  
<key_option> ::=  
   ALGORITHM = <algorithm>  
      |  
   PROVIDER_KEY_NAME = 'key_name_in_provider'  
      |  
      CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }  
  
<algorithm> ::=  
      { RSA_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 }   
  
<encrypting_mechanism> ::=  
    PASSWORD = 'password'   

Arguments

asym_key_name
To nazwa klucza asymetrycznego w bazie danych. Nazwy kluczy asymetrycznych muszą być zgodne z regułami dotyczącymi identyfikatorów i muszą być unikatowe w bazie danych.

AUTORYZACJA database_principal_name
Określa właściciela klucza asymetrycznego. Właściciel nie może być rolą ani grupą. Jeśli ta opcja zostanie pominięta, właściciel będzie bieżącym użytkownikiem.

OD asym_key_source
Określa źródło, z którego ma być ładowana para kluczy asymetrycznych.

PLIK = 'path_to_strong-name_file'
Określa ścieżkę pliku o silnej nazwie, z którego ma być ładowana para kluczy. Ograniczone do 260 znaków przez MAX_PATH z interfejsu API systemu Windows.

Note

Ta opcja nie jest dostępna w zawartej bazie danych.

PLIK WYKONYWALNY = 'path_to_executable_file'
Określa ścieżkę pliku zestawu, z którego ma być ładowany klucz publiczny. Ograniczone do 260 znaków przez MAX_PATH z interfejsu API systemu Windows.

Note

Ta opcja nie jest dostępna w zawartej bazie danych.

assembly_name ZGROMADZENIA
Określa nazwę podpisanego zestawu, który został już załadowany do bazy danych, z której ma zostać załadowany klucz publiczny.

DOSTAWCA provider_name
Określa nazwę dostawcy rozszerzonego zarządzania kluczami (EKM). Dostawca musi być zdefiniowany jako pierwszy przy użyciu instrukcji CREATE PROVIDER. Aby uzyskać więcej informacji na temat zarządzania kluczami zewnętrznymi, zobacz Extensible Key Management (EKM).

ALGORYTM = <algorytm>
Można podać pięć algorytmów; RSA_4096, RSA_3072, RSA_2048, RSA_1024 i RSA_512.

RSA_1024 i RSA_512 są przestarzałe. Aby użyć RSA_1024 lub RSA_512 (niezalecane), należy ustawić bazę danych na poziom zgodności bazy danych 120 lub niższy.

Począwszy od programu SQL Server 2022 (16.x), obsługiwane są RSA-HSM_2048 i RSA-HSM_3072.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Określa nazwę klucza od dostawcy zewnętrznego.

CREATION_DISPOSITION = CREATE_NEW
Tworzy nowy klucz na urządzeniu do zarządzania kluczami rozszerzalnymi. PROVIDER_KEY_NAME należy użyć do określenia nazwy klucza na urządzeniu. Jeśli klucz już istnieje na urządzeniu, instrukcja kończy się niepowodzeniem z powodu błędu.

CREATION_DISPOSITION = OPEN_EXISTING
Mapuje klucz asymetryczny programu SQL Server na istniejący rozszerzalny klucz zarządzania kluczami. PROVIDER_KEY_NAME należy użyć do określenia nazwy klucza na urządzeniu. Jeśli nie podano CREATION_DISPOSITION = OPEN_EXISTING, wartość domyślna to CREATE_NEW.

SZYFROWANIE WEDŁUG HASŁA = "hasło"
Określa hasło, za pomocą którego chcesz zaszyfrować klucz prywatny. Jeśli ta klauzula nie istnieje, klucz prywatny zostanie zaszyfrowany przy użyciu klucza głównego bazy danych. hasło to maksymalnie 128 znaków. hasło musi spełniać wymagania zasad haseł systemu Windows komputera z uruchomionym wystąpieniem programu SQL Server.

Remarks

Klucz asymetryczny to zabezpieczana jednostka na poziomie bazy danych. W postaci domyślnej ta jednostka zawiera zarówno klucz publiczny, jak i klucz prywatny. Po wykonaniu bez klauzuli FROM funkcja CREATE ASYMMETRIC KEY generuje nową parę kluczy. Po wykonaniu przy użyciu klauzuli FROM klucz ASYMETRYCZNY CREATE importuje parę kluczy z pliku lub importuje klucz publiczny z zestawu lub pliku DLL.

Domyślnie klucz prywatny jest chroniony przez klucz główny bazy danych. Jeśli nie utworzono klucza głównego bazy danych, do ochrony klucza prywatnego jest wymagane hasło.

Klucz prywatny może mieć długość 512, 1024 lub 2048 bitów.

Klucze asymetryczne używane do szyfrowania TDE są ograniczone do rozmiaru klucza prywatnego o rozmiarze 3072 bitów.

Permissions

Wymaga uprawnienia CREATE ASYMETRYCZNY KLUCZ w bazie danych. Jeśli określono klauzulę AUTHORIZATION, wymaga uprawnienia IMPERSONATE dla podmiotu zabezpieczeń bazy danych lub uprawnienia ALTER w roli aplikacji. Tylko identyfikatory logowania systemu Windows, identyfikatory logowania programu SQL Server i role aplikacji mogą być właścicielami kluczy asymetrycznych. Grupy i role nie mogą być właścicielami kluczy asymetrycznych.

Examples

A. Tworzenie klucza asymetrycznego

Poniższy przykład tworzy klucz asymetryczny o nazwie PacificSales09 przy użyciu algorytmu RSA_2048 i chroni klucz prywatny przy użyciu hasła.

CREATE ASYMMETRIC KEY PacificSales09   
    WITH ALGORITHM = RSA_2048   
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';   
GO  

B. Tworzenie klucza asymetrycznego z pliku, dając autoryzację użytkownikowi

Poniższy przykład tworzy klucz PacificSales19 asymetryczny z pary kluczy przechowywanej w pliku i przypisuje własność klucza asymetrycznego użytkownikowi Christina. Klucz prywatny jest chroniony przez klucz główny bazy danych, który należy utworzyć przed utworzeniem klucza asymetrycznego.

CREATE ASYMMETRIC KEY PacificSales19  
    AUTHORIZATION Christina  
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp';  
GO  

C. Tworzenie klucza asymetrycznego od dostawcy EKM

Poniższy przykład tworzy klucz EKM_askey1 asymetryczny na podstawie pary kluczy przechowywanej w dostawcy rozszerzonego zarządzania kluczami o nazwie i klucza dla tego dostawcy o nazwie EKM_Provider1key10_user1.

CREATE ASYMMETRIC KEY EKM_askey1   
    FROM PROVIDER EKM_Provider1  
    WITH   
        ALGORITHM = RSA_2048,   
        CREATION_DISPOSITION = CREATE_NEW  
        , PROVIDER_KEY_NAME  = 'key10_user1' ;  
GO  

Zobacz też

ALTER ASYMETRYCZNY KLUCZ (Transact-SQL)
DROP ASYMETRYCZNY KLUCZ (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Wybieranie algorytmu szyfrowania
Hierarchia szyfrowania
rozszerzalne zarządzanie kluczami przy użyciu usługi Azure Key Vault (SQL Server)