Partilhar via


CRIAR CHAVE ASSIMÉTRICA (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do AzureBanco de Dados SQL do Azure Synapse Analyticsno Microsoft Fabric

Cria uma chave assimétrica no banco de dados.

Esse recurso é incompatível com a exportação de banco de dados usando o Data Tier Application Framework (DACFx). Você deve soltar todas as chaves assimétricas antes de exportar.

Transact-SQL convenções de sintaxe

Note

Essa sintaxe não é suportada pelo pool SQL sem servidor no 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
É o nome da chave assimétrica no banco de dados. Os nomes de chaves assimétricas devem estar em conformidade com as regras para identificadores e devem ser exclusivos dentro do banco de dados.

AUTORIZAÇÃO 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 essa opção for omitida, o proprietário será o usuário atual.

DE asym_key_source
Especifica a origem a partir da qual carregar o par de chaves assimétricas.

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

Note

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

FICHEIRO EXECUTÁVEL = 'path_to_executable_file'
Especifica o caminho de um arquivo assembly a partir do qual carregar a chave pública. Limitado a 260 caracteres por MAX_PATH da API do Windows.

Note

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

ASSEMBLEIA assembly_name
Especifica o nome de um assembly assinado que já foi carregado no banco de dados a partir do qual carregar a chave pública.

FORNECEDOR provider_name
Especifica o nome de um provedor de Gerenciamento Extensível de Chaves (EKM). O provedor deve ser definido primeiro usando a instrução CREATE PROVIDER. Para obter mais informações sobre o gerenciamento de chaves externas, consulte Gerenciamento extensível de chaves (EKM).

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

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

A partir do SQL Server 2022 (16.x), há suporte para RSA-HSM_2048 e RSA-HSM_3072.

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

CREATION_DISPOSITION = CREATE_NEW
Cria uma nova chave 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á com 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.

ENCRIPTAÇÃO POR PALAVRA-PASSE = 'password'
Especifica a senha com a qual criptografar a chave privada. Se essa cláusula não estiver presente, a chave privada será criptografada com a chave mestra do banco de dados. A palavra-passe tem um máximo de 128 caracteres. senha deve atender aos requisitos de diretiva de senha do Windows do computador que está executando a instância do SQL Server.

Remarks

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

Por padrão, a chave privada é protegida pela chave mestra do banco de dados. Se nenhuma chave mestra de banco de dados tiver sido criada, uma senha será necessária para proteger a chave privada.

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

As chaves assimétricas usadas para TDE são limitadas a um tamanho de chave privada de 3072 bits.

Permissions

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

Examples

A. Criação de uma chave assimétrica

O exemplo a seguir cria uma chave assimétrica nomeada PacificSales09 usando o RSA_2048 algoritmo 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 a partir de um arquivo, dando autorização a um usuário

O exemplo a seguir cria a chave PacificSales19 assimétrica a partir de um par de chaves armazenado em um arquivo e atribui a propriedade da chave assimétrica ao usuário Christina. A chave privada é protegida pela chave mestra do banco de dados, que deve 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 EKM_askey1 assimétrica a partir 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  

Ver também

ALTERAR CHAVE ASSIMÉTRICA (Transact-SQL)
SOLTAR CHAVE ASSIMÉTRICA (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Escolha um algoritmo de encriptação
Hierarquia de criptografia
Gerenciamento extensível de chaves usando o Azure Key Vault (SQL Server)