Compartilhar via


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 Banco de Dados SQL no Microsoft Fabric

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)