CREATE ASYMMETRIC KEY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Crea una clave asimétrica en la base de datos.

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). Debe quitar todas las claves asimétricas antes de exportar.

Convenciones de sintaxis de Transact-SQL

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Sintaxis

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'   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

asym_key_name
Nombre de una clave asimétrica en la base de datos. Los nombres de clave asimétrica deben cumplir las reglas de los identificadores y ser exclusivos en el esquema.

AUTHORIZATION database_principal_name
Especifica el propietario de la clave asimétrica. El propietario no puede ser un rol ni un grupo. Si se omite esta opción, el propietario será el usuario actual.

FROM asym_key_source
Especifica el origen desde el que se carga el par de claves asimétricas.

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. Limitado a 260 caracteres por MAX_PATH de la API de Windows.

Nota

Esta opción no está disponible en las bases de datos independientes.

EXECUTABLE FILE = 'path_to_executable_file'
Especifica la ruta de acceso de un archivo de ensamblado del que se carga la clave pública. Limitado a 260 caracteres por MAX_PATH de la API de Windows.

Nota

Esta opción no está disponible en las bases de datos independientes.

ASSEMBLY 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.

PROVIDER provider_name
Especifica el nombre de un proveedor de Administración extensible de claves (EKM). El proveedor debe definirse antes mediante la instrucción CREATE PROVIDER. Para obtener más información sobre la Administración extensible de claves, consulte Administración extensible de claves (EKM).

ALGORITHM = <algorithm>
Se pueden proporcionar cinco algoritmos: RSA_4096, RSA_3072, RSA_2048, RSA_1024 y RSA_512.

RSA_1024 y RSA_512 están en desuso. 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.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Especifica el nombre de la clave del proveedor externo.

CREATION_DISPOSITION = CREATE_NEW
Crea una nueva clave en el dispositivo de Administración extensible de claves. Debe utilizarse PROVIDER_KEY_NAME para especificar el nombre de clave en el dispositivo. Si ya existe una clave en el dispositivo, se producirá un error en la instrucción.

CREATION_DISPOSITION = OPEN_EXISTING
Asigna una clave asimétrica de SQL Server a una clave de Administración extensible de claves. Debe utilizarse PROVIDER_KEY_NAME para especificar el nombre de clave en el dispositivo. Si no se proporciona CREATION_DISPOSITION = OPEN_EXISTING, el valor predeterminado es CREATE_NEW.

ENCRYPTION BY PASSWORD = 'password'
Especifica la contraseña con la que se cifra la clave privada. Si no está presente esta cláusula, la clave privada se cifrará con la clave maestra de la base de datos. password tiene un máximo de 128 caracteres. password debe cumplir los requisitos de la directiva de contraseñas de Windows del equipo que ejecuta la instancia de SQL Server.

Observaciones

Una clave asimétrica es una entidad protegible en el nivel de base de datos. De manera predeterminada, esta entidad contiene una clave pública y otra privada. Si se ejecuta sin la cláusula FROM, CREATE ASYMMETRIC KEY genera un nuevo par de claves. 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.

De manera predeterminada, la clave privada está protegida por la clave maestra de la base de datos. Si no se ha creado una clave maestra de base de datos, se necesita una contraseña para proteger la clave privada.

La clave privada puede ser de 512, 1.024 o 2.048 bits.

Las claves asimétricas que se usan para TDE tienen un límite de tamaño de clave privada de 3072 bits.

Permisos

Requiere el permiso CREATE ASYMMETRIC KEY en la base de datos. 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. Solo los inicios de sesión de Windows, los inicios de sesión de SQL Server y los roles de aplicación pueden poseer claves asimétricas. Los grupos y roles no pueden poseer claves asimétricas.

Ejemplos

A. Crear una clave asimétrica

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.

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

B. Crear una clave asimétrica desde un archivo, concediendo autorización a un usuario

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. La clave privada está protegida por la clave maestra de base de datos, que debe crearse antes de crear la clave asimétrica.

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

C. Crear una clave asimétrica de un proveedor de EKM

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.

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én

ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Elegir un algoritmo de cifrado
Jerarquía de cifrado
Administración extensible de claves con Azure Key Vault (SQL Server)