CREATE ASYMMETRIC KEY (Transact-SQL)
Cria uma chave assimétrica no banco de dados.
Convenções da 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.Observação Essa opção não está disponível em um banco de dados independente.
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.Observação Essa opção não está disponível em bancos de dados independentes.
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 Gerenciamento extensível de chaves (EKM).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 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 terá no máximo 128 caracteres. A password deve atender aos requisitos da 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 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.
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
Consulte também
Referência
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)