CREATE ASYMMETRIC KEY (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics

Cria uma chave assimétrica no banco de dados.

Este recurso é incompatível com a exportação de banco de dados usando a DACFx (estrutura de aplicativo da camada de dados). Você deve remover todas as chaves assimétricas antes de exportar.

Convenções de sintaxe de Transact-SQL

Observação

Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Sintaxe

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'   

Argumentos

asym_key_name
É o nome de uma chave assimétrica no banco de dados. Os nomes de chave assimétrica devem estar de acordo com as regras para identificadores e ser exclusivos no banco de dados.

AUTHORIZATION database_principal_name
Especifica o proprietário da chave assimétrica. O proprietário não pode ser uma função ou um grupo. Se esta opção for omitida, o proprietário será o usuário atual.

FROM asym_key_source
Especifica a fonte da qual carregar o par de chaves assimétricas.

FILE = 'path_to_strong-name_file'
Especifica o caminho de um arquivo com nome forte a partir do qual o par de chaves deve ser carregado. Limitado a 260 caracteres por MAX_PATH da API do Windows.

Observação

Essa opção não está disponível em um banco de dados independente.

EXECUTABLE FILE = 'path_to_executable_file'
Especifica o caminho de um arquivo do assembly do qual a chave pública deve ser carregada. Limitado a 260 caracteres por MAX_PATH da API do Windows.

Observação

Essa opção não está disponível em um banco de dados independente.

ASSEMBLY assembly_name
Especifica o nome de um assembly assinado que já foi carregado no banco de dados do qual a chave pública deve ser carregada.

PROVIDER provider_name
Especifica um nome de um provedor de EKM (gerenciamento extensível de chaves). O provedor deve ser definido primeiro com o uso da instrução CREATE PROVIDER. Para obter mais informações sobre o gerenciamento de chave externa, veja EKM (Gerenciamento extensível de chaves).

ALGORITHM = <algoritmo>
Cinco algoritmos podem ser fornecidos: RSA_4096, RSA_3072, RSA_2048, RSA_1024 e RSA_512.

RSA_1024 e RSA_512 são preteridos. Para usar RSA_1024 ou RSA_512 (não recomendado) você deve definir o nível de compatibilidade do banco de dados para 120 ou inferior.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Especifica o nome da chave do provedor externo.

CREATION_DISPOSITION = CREATE_NEW
Cria uma chave nova no dispositivo de Gerenciamento Extensível de Chaves. PROVIDER_KEY_NAME deve ser usado para especificar o nome da chave no dispositivo. Se já existir uma chave no dispositivo, a instrução falhará e será apresentado um erro.

CREATION_DISPOSITION = OPEN_EXISTING
Mapeia uma chave assimétrica do SQL Server para uma chave de Gerenciamento Extensível de Chaves existente. PROVIDER_KEY_NAME deve ser usado para especificar o nome da chave no dispositivo. Se CREATION_DISPOSITION = OPEN_EXISTING não for fornecido, o padrão será CREATE_NEW.

ENCRYPTION BY PASSWORD = 'password'
Especifica a senha com a qual a chave privada deve ser criptografada. Se essa cláusula não estiver presente, a chave privada será criptografada com a chave mestra do banco de dados. password tem um máximo de 128 caracteres. A password deve atender aos requisitos da política de senha do Windows do computador que executa a instância do SQL Server.

Comentários

Uma chave assimétrica é uma entidade protegível no nível do banco de dados. Em sua forma padrão, esta entidade contém uma chave pública e uma chave privada. Quando executado sem a cláusula FROM, CREATE ASYMMETRIC KEY gera um par de chaves novo. Quando executado com a cláusula FROM, CREATE ASYMMETRIC KEY importa um par de chaves de um arquivo ou uma chave pública de um assembly ou arquivo DLL.

Por padrão, a chave privada é protegida pela chave-mestre de banco de dados. Se nenhuma chave-mestre de banco de dados tiver sido criada, será exigida uma senha para proteger a chave privada.

A chave privada pode ter 512, 1024 ou 2048 bits.

Chaves assimétricas usadas para TDE são limitadas a um tamanho de chave privada de 3.072 bits.

Permissões

Requer a permissão CREATE ASYMMETRIC KEY no banco de dados. Se a cláusula AUTHORIZATION estiver especificada, exigirá a permissão IMPERSONATE na entidade de segurança do banco de dados ou a permissão ALTER na função de aplicativo. Somente logons do Windows, logons do SQL Server e funções de aplicativo podem ter chaves assimétricas. Grupos e funções não podem possuir chaves assimétricas.

Exemplos

a. Criando uma chave assimétrica

O exemplo a seguir cria uma chave assimétrica denominada PacificSales09 usando o algoritmo RSA_2048 e protege a chave privada com uma senha.

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

B. Criando uma chave assimétrica de um arquivo, dando autorização a um usuário

O exemplo seguinte cria a chave assimétrica PacificSales19 com base em um par de chaves armazenado em um arquivo e atribui propriedade da chave assimétrica ao usuário Christina. A chave privada é protegida pela chave mestra do banco de dados, que precisa ser criada antes da criação da chave assimétrica.

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

C. Criando uma chave assimétrica de um provedor de EKM

O exemplo a seguir cria a chave assimétrica EKM_askey1 de um par de chaves armazenado em um provedor de Gerenciamento Extensível de Chaves chamado EKM_Provider1 e uma chave nesse provedor chamada 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 Também

ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Escolher um algoritmo de criptografia
Hierarquia de criptografia
Gerenciamento extensível de chaves Usando o Azure Key Vault (SQL Server)