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)