CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Crea una clave asimétrica en la base de datos.Creates an asymmetric key in the database.

Esta función no es compatible con la exportación de la base de datos con el Marco de trabajo de la aplicación de capa de datos (DACFx).This feature is incompatible with database export using Data Tier Application Framework (DACFx). Debe quitar todas las claves asimétricas antes de exportar.You must drop all asymmetric keys before exporting.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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'   

ArgumentosArguments

asym_key_nameasym_key_name
Nombre de una clave asimétrica en la base de datos.Is the name for the asymmetric key in the database. Los nombres de clave asimétrica deben cumplir las reglas de los identificadores y ser exclusivos en el esquema.Asymmetric key names must comply with the rules for identifiers and must be unique within the database.

AUTHORIZATION database_principal_nameAUTHORIZATION database_principal_name
Especifica el propietario de la clave asimétrica.Specifies the owner of the asymmetric key. El propietario no puede ser un rol ni un grupo.The owner cannot be a role or a group. Si se omite esta opción, el propietario será el usuario actual.If this option is omitted, the owner will be the current user.

FROM asym_key_sourceFROM asym_key_source
Especifica el origen desde el que se carga el par de claves asimétricas.Specifies the source from which to load the asymmetric key pair.

FILE = 'path_to_strong-name_file'FILE = 'path_to_strong-name_file'
Especifica la ruta de acceso a un archivo de nombre seguro desde el que se carga el par de claves.Specifies the path of a strong-name file from which to load the key pair. Limitado a 260 caracteres por MAX_PATH de la API de Windows.Limited to 260 characters by MAX_PATH from the Windows API.

Nota

Esta opción no está disponible en las bases de datos independientes.This option is not available in a contained database.

EXECUTABLE FILE = 'path_to_executable_file'EXECUTABLE FILE = 'path_to_executable_file'
Especifica la ruta de acceso de un archivo de ensamblado del que se carga la clave pública.Specifies the path of an assembly file from which to load the public key. Limitado a 260 caracteres por MAX_PATH de la API de Windows.Limited to 260 characters by MAX_PATH from the Windows API.

Nota

Esta opción no está disponible en las bases de datos independientes.This option is not available in a contained database.

ASSEMBLY assembly_nameASSEMBLY assembly_name
Especifica el nombre de un ensamblado firmado que ya se ha cargado en la base de datos de la que se carga la clave pública.Specifies the name of a signed assembly that has already been loaded into the database from which to load the public key.

PROVIDER provider_namePROVIDER provider_name
Especifica el nombre de un proveedor de Administración extensible de claves (EKM).Specifies the name of an Extensible Key Management (EKM) provider. El proveedor debe definirse antes mediante la instrucción CREATE PROVIDER.The provider must be defined first using the CREATE PROVIDER statement. Para obtener más información sobre la Administración extensible de claves, vea Administración extensible de claves (EKM).For more information about external key management, see Extensible Key Management (EKM).

ALGORITHM = <algorithm>ALGORITHM = <algorithm>
Se pueden proporcionar cinco algoritmos: RSA_4096, RSA_3072, RSA_2048, RSA_1024 y RSA_512.Five algorithms can be provided; RSA_4096, RSA_3072, RSA_2048, RSA_1024, and RSA_512.

RSA_1024 y RSA_512 están en desuso.RSA_1024 and RSA_512 are deprecated. Para usar los algoritmos RSA_1024 o RSA_512 (no se recomienda), debe establecer la base de datos en el nivel de compatibilidad de base de datos 120 o inferior.To use RSA_1024 or RSA_512 (not recommended) you must set the database to database compatibility level 120 or lower.

PROVIDER_KEY_NAME = 'key_name_in_provider'PROVIDER_KEY_NAME = 'key_name_in_provider'
Especifica el nombre de la clave del proveedor externo.Specifies the key name from the external provider.

CREATION_DISPOSITION = CREATE_NEWCREATION_DISPOSITION = CREATE_NEW
Crea una nueva clave en el dispositivo de Administración extensible de claves.Creates a new key on the Extensible Key Management device. Debe utilizarse PROVIDER_KEY_NAME para especificar el nombre de clave en el dispositivo.PROVIDER_KEY_NAME must be used to specify key name on the device. Si ya existe una clave en el dispositivo, se producirá un error en la instrucción.If a key already exists on the device the statement fails with error.

CREATION_DISPOSITION = OPEN_EXISTINGCREATION_DISPOSITION = OPEN_EXISTING
Asigna una clave asimétrica de SQL ServerSQL Server a una clave de Administración extensible de claves.Maps a SQL ServerSQL Server asymmetric key to an existing Extensible Key Management key. Debe utilizarse PROVIDER_KEY_NAME para especificar el nombre de clave en el dispositivo.PROVIDER_KEY_NAME must be used to specify key name on the device. Si no se proporciona CREATION_DISPOSITION = OPEN_EXISTING, el valor predeterminado es CREATE_NEW.If CREATION_DISPOSITION = OPEN_EXISTING is not provided, the default is CREATE_NEW.

ENCRYPTION BY PASSWORD = 'password'ENCRYPTION BY PASSWORD = 'password'
Especifica la contraseña con la que se cifra la clave privada.Specifies the password with which to encrypt the private key. Si no está presente esta cláusula, la clave privada se cifrará con la clave maestra de la base de datos.If this clause is not present, the private key will be encrypted with the database master key. password tiene un máximo de 128 caracteres.password is a maximum of 128 characters. password debe cumplir los requisitos de la directiva de contraseñas de Windows del equipo que ejecuta la instancia de SQL ServerSQL Server.password must meet the Windows password policy requirements of the computer that is running the instance of SQL ServerSQL Server.

NotasRemarks

Una clave asimétrica es una entidad protegible en el nivel de base de datos.An asymmetric key is a securable entity at the database level. De manera predeterminada, esta entidad contiene una clave pública y otra privada.In its default form, this entity contains both a public key and a private key. Si se ejecuta sin la cláusula FROM, CREATE ASYMMETRIC KEY genera un nuevo par de claves.When executed without the FROM clause, CREATE ASYMMETRIC KEY generates a new key pair. Si se ejecuta con la cláusula FROM, CREATE ASYMMETRIC KEY importa un par de claves desde un archivo o importa una clave pública desde un ensamblado o un archivo DLL.When executed with the FROM clause, CREATE ASYMMETRIC KEY imports a key pair from a file, or imports a public key from an assembly or DLL file.

De manera predeterminada, la clave privada está protegida por la clave maestra de la base de datos.By default, the private key is protected by the database master key. Si no se ha creado una clave maestra de base de datos, se necesita una contraseña para proteger la clave privada.If no database master key has been created, a password is required to protect the private key.

La clave privada puede ser de 512, 1.024 o 2.048 bits.The private key can be 512, 1024, or 2048 bits long.

PermisosPermissions

Requiere el permiso CREATE ASYMMETRIC KEY en la base de datos.Requires CREATE ASYMMETRIC KEY permission on the database. Si se especifica la cláusula AUTHORIZATION, es necesario el permiso IMPERSONATE en la entidad de seguridad de la base de datos o el permiso ALTER en el rol de aplicación.If the AUTHORIZATION clause is specified, requires IMPERSONATE permission on the database principal, or ALTER permission on the application role. Solo los inicios de sesión de Windows, los inicios de sesión de SQL ServerSQL Server y los roles de aplicación pueden poseer claves asimétricas.Only Windows logins, SQL ServerSQL Server logins, and application roles can own asymmetric keys. Los grupos y roles no pueden poseer claves asimétricas.Groups and roles cannot own asymmetric keys.

EjemplosExamples

A.A. Crear una clave asimétricaCreating an asymmetric key

En el siguiente ejemplo se crea una clave asimétrica con el nombre PacificSales09 mediante el algoritmo RSA_2048 y se protege la clave privada con una contraseña.The following example creates an asymmetric key named PacificSales09 by using the RSA_2048 algorithm, and protects the private key with a password.

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

B.B. Crear una clave asimétrica desde un archivo, concediendo autorización a un usuarioCreating an asymmetric key from a file, giving authorization to a user

En el siguiente ejemplo se crea la clave asimétrica PacificSales19 a partir de un par de claves almacenado en un archivo y asigna la propiedad de la clave asimétrica al usuario Christina.The following example creates the asymmetric key PacificSales19 from a key pair stored in a file, and assigns ownership of the asymmetric key to user Christina. La clave privada está protegida por la clave maestra de base de datos, que debe crearse antes de crear la clave asimétrica.The private key is protected by the database master key, which must be created prior to creating the asymmetric key.

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

C.C. Crear una clave asimétrica de un proveedor de EKMCreating an asymmetric key from an EKM provider

En el ejemplo siguiente se crea la clave asimétrica EKM_askey1 a partir de un par de claves almacenado en un proveedor de Administración extensible de claves llamado EKM_Provider1 y una clave de ese proveedor denominada key10_user1.The following example creates the asymmetric key EKM_askey1 from a key pair stored in an Extensible Key Management provider called EKM_Provider1, and a key on that provider called 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  

Consulte tambiénSee Also

ALTER ASYMMETRIC KEY (Transact-SQL)ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)ASYMKEY_ID (Transact-SQL)
Elegir un algoritmo de cifradoChoose an Encryption Algorithm
Jerarquía de cifradoEncryption Hierarchy
Administración extensible de claves con el Almacén de claves de Azure (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)