Delen via


ASYMMETRISCHE SLEUTEL MAKEN (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-database in Microsoft Fabric Preview

Hiermee maakt u een asymmetrische sleutel in de database.

Deze functie is niet compatibel met databaseexport met BEHULP van DACFx (Data Tier Application Framework). U moet alle asymmetrische 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 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
Is de naam voor de asymmetrische sleutel in de database. Asymmetrische sleutelnamen moeten voldoen aan de regels voor id's en moeten uniek zijn binnen de database.

AUTHORIZATION database_principal_name
Hiermee geeft u de eigenaar van de asymmetrische sleutel. De eigenaar kan geen rol of groep zijn. Als deze optie wordt weggelaten, is de eigenaar de huidige gebruiker.

FROM asym_key_source
Hiermee geeft u de bron van waaruit het asymmetrische sleutelpaar moet worden geladen.

BESTAND = 'path_to_strong-name_file'
Hiermee geeft u het pad van een bestand met een sterke naam waaruit het sleutelpaar moet worden geladen. Beperkt tot 260 tekens door MAX_PATH uit de Windows-API.

Note

Deze optie is niet beschikbaar in een ingesloten database.

UITVOERBAAR BESTAND = 'path_to_executable_file'
Hiermee geeft u het pad van een assemblybestand waaruit de openbare sleutel moet worden geladen. Beperkt tot 260 tekens door MAX_PATH uit de Windows-API.

Note

Deze optie is niet beschikbaar in een ingesloten database.

ASSEMBLY assembly_name
Hiermee geeft u de naam op van een ondertekende assembly die al in de database is geladen waaruit de openbare sleutel moet worden geladen.

PROVIDER provider_name
Hiermee geeft u de naam van een EKM-provider (Extensible Key Management). De provider moet eerst worden gedefinieerd met behulp van de instructie CREATE PROVIDER. Zie Extensible Key Management (EKM) voor meer informatie over extern sleutelbeheer.

ALGORITME = <algoritme>
Er kunnen vijf algoritmen worden verstrekt; RSA_4096, RSA_3072, RSA_2048, RSA_1024 en RSA_512.

RSA_1024 en RSA_512 zijn afgeschaft. Als u RSA_1024 of RSA_512 (niet aanbevolen) wilt gebruiken, moet u de database instellen op databasecompatibiliteitsniveau 120 of lager.

Vanaf SQL Server 2022 (16.x) worden RSA-HSM_2048 en RSA-HSM_3072 ondersteund.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Hiermee geeft u de sleutelnaam van de externe provider.

CREATION_DISPOSITION = CREATE_NEW
Hiermee maakt u een nieuwe sleutel op het uitbreidbare sleutelbeheerapparaat. PROVIDER_KEY_NAME moet worden gebruikt om de sleutelnaam op het apparaat op te geven. Als er al een sleutel op het apparaat bestaat, mislukt de instructie met een fout.

CREATION_DISPOSITION = OPEN_EXISTING
Wijst een asymmetrische SQL Server-sleutel toe aan een bestaande uitbreidbare sleutelbeheersleutel. PROVIDER_KEY_NAME moet worden gebruikt om de sleutelnaam op het apparaat op te geven. Als CREATION_DISPOSITION = OPEN_EXISTING niet is opgegeven, wordt de standaardwaarde CREATE_NEW.

VERSLEUTELING PER WACHTWOORD = 'wachtwoord'
Hiermee geeft u het wachtwoord waarmee de persoonlijke sleutel moet worden versleuteld. Als deze component niet aanwezig is, wordt de persoonlijke sleutel versleuteld met de hoofdsleutel van de database. het wachtwoord mag maximaal 128 tekens bevatten. het wachtwoord moet voldoen aan de windows-wachtwoordbeleidsvereisten van de computer waarop het exemplaar van SQL Server wordt uitgevoerd.

Remarks

Een asymmetrische sleutel is een beveiligbare entiteit op databaseniveau. In de standaardvorm bevat deze entiteit zowel een openbare sleutel als een persoonlijke sleutel. Wanneer deze wordt uitgevoerd zonder de FROM-component, genereert CREATE ASYMMETRIC KEY een nieuw sleutelpaar. Wanneer deze wordt uitgevoerd met de FROM-component, importeert CREATE ASYMMETRIC KEY een sleutelpaar uit een bestand of importeert u een openbare sleutel uit een assembly- of DLL-bestand.

De persoonlijke sleutel wordt standaard beveiligd door de hoofdsleutel van de database. Als er geen databasehoofdsleutel is gemaakt, is een wachtwoord vereist om de persoonlijke sleutel te beveiligen.

De persoonlijke sleutel kan 512, 1024 of 2048 bits lang zijn.

Asymmetrische sleutels die worden gebruikt voor TDE zijn beperkt tot een persoonlijke sleutelgrootte van 3072 bits.

Permissions

Vereist de machtiging CREATE ASYMMETRIC KEY voor de database. Als de AUTHORIZATION-component is opgegeven, is imitatiemachtiging vereist voor de database-principal of alter-machtiging voor de toepassingsrol. Alleen Windows-aanmeldingen, SQL Server-aanmeldingen en toepassingsrollen kunnen eigenaar zijn van asymmetrische sleutels. Groepen en rollen kunnen geen asymmetrische sleutels hebben.

Examples

A. Een asymmetrische sleutel maken

In het volgende voorbeeld wordt een asymmetrische sleutel gemaakt met de naam PacificSales09 met behulp van het RSA_2048 algoritme en wordt de persoonlijke sleutel beveiligd met een wachtwoord.

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

B. Een asymmetrische sleutel maken op basis van een bestand, waardoor een gebruiker autorisatie krijgt

In het volgende voorbeeld wordt de asymmetrische sleutel PacificSales19 gemaakt van een sleutelpaar dat is opgeslagen in een bestand en wordt het eigendom van de asymmetrische sleutel aan de gebruiker Christinatoegewezen. De persoonlijke sleutel wordt beveiligd door de hoofdsleutel van de database, die moet worden gemaakt voordat u de asymmetrische sleutel maakt.

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

C. Een asymmetrische sleutel maken van een EKM-provider

In het volgende voorbeeld wordt de asymmetrische sleutel EKM_askey1 gemaakt van een sleutelpaar dat is opgeslagen in een provider voor uitbreidbaar sleutelbeheer EKM_Provider1met de naam , en een sleutel op die provider.key10_user1

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

See Also

ASYMMETRISCHE SLEUTEL (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Een versleutelingsalgoritmen kiezen
Encryption Hierarchy
Uitbreidbaar sleutelbeheer met behulp van Azure Key Vault (SQL Server)