Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Banco de Dados SQL do Azure Synapse Analytics
no Microsoft Fabric
Gera uma chave simétrica e especifica suas propriedades no SQL Server.
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 simé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 SYMMETRIC KEY key_name
[ AUTHORIZATION owner_name ]
[ FROM PROVIDER provider_name ]
WITH
[
<key_options> [ , ... n ]
| ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
]
<key_options> ::=
KEY_SOURCE = 'pass_phrase'
| ALGORITHM = <algorithm>
| IDENTITY_VALUE = 'identity_phrase'
| PROVIDER_KEY_NAME = 'key_name_in_provider'
| CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
| DESX | AES_128 | AES_192 | AES_256
<encrypting_mechanism> ::=
CERTIFICATE certificate_name
| PASSWORD = 'password'
| SYMMETRIC KEY symmetric_key_name
| ASYMMETRIC KEY asym_key_name
Arguments
key_name
Especifica o nome exclusivo pelo qual a chave simétrica é conhecida no banco de dados. Este é um parâmetro obrigatório. As chaves temporárias são designadas quando a key_name começa com um sinal de número (#). Por exemplo, #temporaryKey900007. Não é possível criar uma chave simétrica que tenha um nome que comece com mais de um #. Não é possível criar uma chave simétrica temporária usando um provedor de EKM.
AUTORIZAÇÃO owner_name
Especifica o nome do usuário do banco de dados ou da função de aplicativo que possui essa chave.
DO PROVEDOR provider_name
Especifica um provedor e um nome de Gerenciamento Extensível de Chaves (EKM). A chave não é exportada do dispositivo EKM. O provedor deve ser definido primeiro usando a CREATE PROVIDER instrução. Para obter mais informações sobre como criar provedores de chave externos, consulte Gerenciamento extensível de chaves (EKM).
Note
Essa opção não está disponível em um banco de dados contido.
KEY_SOURCE = 'pass_phrase'
Especifica uma frase secreta da qual derivar a chave.
IDENTITY_VALUE = 'identity_phrase'
Especifica uma frase de identidade a partir da qual gerar um GUID para marcar dados criptografados com uma chave temporária.
PROVIDER_KEY_NAME = 'key_name_in_provider'
Especifica o nome referenciado no provedor de Gerenciamento Extensível de Chaves.
Note
Essa opção não está disponível em um banco de dados contido.
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
Cria ou mapeia uma chave simétrica para um dispositivo de Gerenciamento Extensível de Chaves.
CREATE_NEWCria uma nova chave no dispositivo de Gerenciamento Extensível de Chaves. Se já existir uma chave no dispositivo, a instrução falhará com um erro.
OPEN_EXISTINGMapeia uma chave simétrica do SQL Server para uma chave de Gerenciamento Extensível de Chaves existente. Se
CREATION_DISPOSITION = OPEN_EXISTINGnão for fornecido, o padrão seráCREATE_NEW.
certificate_name
Especifica o nome do certificado usado para criptografar a chave simétrica. O certificado já deve existir no banco de dados.
'password'
Especifica uma senha a partir da qual derivar uma chave TRIPLE_DES com a qual proteger a chave simétrica.
password deve atender aos requisitos de diretiva de senha do Windows do computador que está executando a instância do SQL Server. Use sempre senhas fortes.
symmetric_key_name
Especifica uma chave simétrica, usada para criptografar a chave que está sendo criada. A chave especificada já deve existir no banco de dados e a chave deve estar aberta.
asym_key_name
Especifica uma chave assimétrica, usada para criptografar a chave que está sendo criada. Essa chave assimétrica já deve existir no banco de dados.
<algoritmo>
Especifique o algoritmo de encriptação.
Warning
A partir do SQL Server 2016 (13.x), todos os algoritmos que não sejam AES_128, AES_192 e AES_256 serão preteridos. Para usar algoritmos mais antigos (não recomendado), você deve definir o banco de dados para o nível de compatibilidade do banco de dados 120 ou inferior.
Remarks
Quando uma chave simétrica é criada, a chave simétrica deve ser criptografada usando pelo menos uma das seguintes opções:
- certificado
- palavra-passe
- chave simétrica
- chave assimétrica
- PROVIDER
A chave pode ter mais de uma criptografia de cada tipo. Em outras palavras, uma única chave simétrica pode ser criptografada usando vários certificados, senhas, chaves simétricas e chaves assimétricas ao mesmo tempo.
Para proteger o material da chave simétrica, o SQL Server e o SQL do Azure armazenam o material da chave no formato criptografado. Historicamente, essa criptografia utilizava o modo de preenchimento PKCS#1 v1.5; começando com o nível de compatibilidade do banco de dados 170, a criptografia usa o modo de preenchimento OAEP-256 para criptografia por certificado ou chave assimétrica. No dm_database_encryption_keys, o encryptor_type será exibido como CERTIFICATE_OAEP_256 em vez de CERTIFICATE.
Caution
Quando uma chave simétrica é criptografada com uma senha em vez de um certificado (ou outra chave), o algoritmo de criptografia TRIPLE DES é usado para criptografar a senha. Devido a isso, as chaves que são criadas com um algoritmo de encriptação forte, como AES, são protegidas por um algoritmo mais fraco.
A senha opcional pode ser usada para criptografar a chave simétrica antes de distribuir a chave para vários usuários.
As chaves temporárias pertencem ao usuário que as cria. As chaves temporárias só são válidas para a sessão atual.
IDENTITY_VALUE gera um GUID com o qual marcar dados criptografados com a nova chave simétrica. Essa marcação pode ser usada para fazer a correspondência de chaves com dados criptografados. O GUID gerado por uma frase específica é sempre o mesmo. Depois que uma frase tiver sido usada para gerar um GUID, a frase não poderá ser reutilizada desde que haja pelo menos uma chave simétrica nesse banco de dados que esteja usando ativamente a frase.
IDENTITY_VALUE é uma cláusula facultativa; no entanto, recomendamos usá-lo quando você estiver armazenando dados criptografados com uma chave temporária.
Não existe um algoritmo de encriptação predefinido.
Important
Não recomendamos o uso das cifras RC4 e RC4_128 stream para proteger dados confidenciais. O SQL Server não codifica ainda mais a criptografia executada com essas chaves.
As informações sobre chaves simétricas são visíveis na visualização sys.symmetric_keys catálogo.
As chaves simétricas não podem ser encriptadas por chaves simétricas criadas a partir do fornecedor de encriptação.
Esclarecimento sobre algoritmos DES
- DESX foi nomeado incorretamente. As chaves simétricas criadas com ALGORITHM = DESX realmente usam a cifra TRIPLE DES com uma chave de 192 bits. O algoritmo DESX não é fornecido. Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
- As chaves simétricas criadas com ALGORITHM = TRIPLE_DES_3KEY usam TRIPLE DES com uma chave de 192 bits.
- As chaves simétricas criadas com ALGORITHM = TRIPLE_DES usam TRIPLE DES com uma chave de 128 bits.
Descontinuação do algoritmo RC4
O uso repetido do mesmo RC4 ou RC4_128 KEY_GUID em diferentes blocos de dados resulta na mesma chave RC4 porque o SQL Server não fornece um sal automaticamente. Usar a mesma chave RC4 repetidamente é um erro bem conhecido que resulta em criptografia muito fraca. Portanto, preterimos o RC4 e RC4_128 palavras-chave. Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
Warning
O algoritmo RC4 só é suportado para compatibilidade com versões anteriores. O novo material só pode ser encriptado utilizando RC4 ou RC4_128 quando a base de dados estiver no nível de compatibilidade 90 ou 100. (Não recomendado.) Em vez disso, use um algoritmo mais recente, como um dos algoritmos AES. No SQL Server, o material criptografado usando RC4 ou RC4_128 pode ser descriptografado em qualquer nível de compatibilidade.
Permissions
Requer a permissão ALTER ANY SYMMETRIC KEY no banco de dados. Se AUTHORIZATION for especificado, requer a permissão IMPERSONATE no usuário do banco de dados ou a permissão ALTER na função do aplicativo. Se a criptografia for feita por certificado ou por chave assimétrica, requer a permissão VIEW DEFINITION no certificado ou na chave assimétrica. Somente logons do Windows, logons do SQL Server e funções de aplicativo podem possuir chaves simétricas. Grupos e funções não podem possuir chaves simétricas.
Examples
A. Criar uma chave simétrica
O exemplo a seguir cria uma chave simétrica chamada JanainaKey09 usando o AES 256 algoritmo e, em seguida, criptografa a nova chave com o certificado Shipping04.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. Criar uma chave simétrica temporária
O exemplo a seguir cria uma chave simétrica temporária chamada #MarketingXXV a partir da frase secreta: The square of the hypotenuse is equal to the sum of the squares of the sides. A chave é provisionada com um GUID que é gerado a partir da cadeia de caracteres Pythagoras e criptografado com certificado Marketing25.
CREATE SYMMETRIC KEY #MarketingXXV
WITH ALGORITHM = AES_128,
KEY_SOURCE
= 'The square of the hypotenuse is equal to the sum of the squares of the sides',
IDENTITY_VALUE = 'Pythagoras'
ENCRYPTION BY CERTIFICATE Marketing25;
GO
C. Criar uma chave simétrica usando um dispositivo de Gerenciamento Extensível de Chaves (EKM)
O exemplo a seguir cria uma chave simétrica chamada MySymKey usando um provedor chamado MyEKMProvider e um nome de chave de KeyForSensitiveData. Ele atribui autorização e User1 pressupõe que o administrador do sistema já registrou o provedor chamado MyEKMProvider no SQL Server.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO