Compartilhar via


CREATE ASYMMETRIC KEY (Transact-SQL)

Cria uma chave assimétrica no banco de dados.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

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_512 | RSA_1024 | RSA_2048 } 

<encrypting_mechanism> ::=
    PASSWORD = 'password'

Argumentos

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

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

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

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

  • ASSEMBLY Assembly_Name
    Especifica o nome de um assembly a partir do qual a chave pública deve ser carregada.

  • ENCRYPTION BY <key_name_in_provider>
    Especifica como a chave é criptografada. Pode ser um certificado, uma senha ou chave assimétrica.

  • KEY_NAME ='key_name_in_provider'
    Especifica o nome da chave do provedor externo. Para obter mais informações sobre o gerenciamento de chaves externas, consulte Compreendendo o EKM (Gerenciador de Chave Extensível).

  • CREATION_DISPOSITION = CREATE_NEW
    Cria uma chave nova no dispositivo de Gerenciamento Extensível de Chaves. PROV_KEY_NAME deve ser usado para especificar 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. PROV_KEY_NAME deve ser usado para especificar nome da chave no dispositivo. Se CREATION_DISPOSITION = OPEN_EXISTING não for fornecido, o padrão será CREATE_NEW.

  • PASSWORD = 'password'
    Especifica a senha com que 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. A password terá no máximo 128 caracteres. A password deverá atender aos requisitos de política de senha do Windows do computador que está executando a instância do SQL Server.

Comentários

Uma chave assimétrica é uma entidade protegível no nível de 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.

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. Se houver uma chave-mestre de banco de dados, a senha será opcional.

A chave privada pode ter 512, 1024 ou 2048 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 possuir 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 uma chave assimétrica PacificSales19 a partir de um par de chaves armazenado em um arquivo e autoriza o usuário Christina a utilizar a chave assimétrica.

CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION Christina 
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'  
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO

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

O exemplo seguinte cria a chave assimétrica EKM_askey1 a partir de um par de chaves armazenado em um arquivo. Em seguida, essa chave é criptografada com o uso de um provedor de gerenciamento extensível de chaves denominado EKMProvider1 e uma chave nesse provedor denominada key10_user1.

CREATE ASYMMETRIC KEY EKM_askey1 
    FROM PROVIDER EKM_Provider1
    WITH 
        ALGORITHM = RSA_512, 
        CREATION_DISPOSITION = CREATE_NEW
        , PROVIDER_KEY_NAME  = 'key10_user1' ;
GO