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 2016 (13.x) e versões
posteriores Banco de Dados
SQLdo Azure Azure SQL Managed Instance
Cria um objeto de metadados de chave mestra de coluna em um banco de dados. Uma entrada de metadados de chave mestra de coluna representa uma chave, armazenada em um armazenamento de chaves externo. A chave protege (encripta) as chaves de encriptação de coluna quando está a utilizar Always Encrypted ou Always Encrypted com enclaves seguros. Várias chaves mestras de coluna permitem a rotação periódica de chaves para aumentar a segurança. Crie uma chave mestra de coluna em um repositório de chaves e seu objeto de metadados relacionado no banco de dados usando o Pesquisador de Objetos no SQL Server Management Studio ou PowerShell. Para obter detalhes, consulte Visão geral do gerenciamento de chaves para Always Encrypted.
Transact-SQL convenções de sintaxe
Importante
A criação de chaves habilitadas para enclave (com ENCLAVE_COMPUTATIONS) requer Always Encrypted com enclaves seguros.
Sintaxe
CREATE COLUMN MASTER KEY key_name
WITH (
KEY_STORE_PROVIDER_NAME = 'key_store_provider_name',
KEY_PATH = 'key_path'
[,ENCLAVE_COMPUTATIONS (SIGNATURE = signature)]
)
[;]
Arguments
key_name
O nome da chave mestra da coluna no banco de dados.
key_store_provider_name
Especifica o nome de um provedor de armazenamento de chaves. Um provedor de armazenamento de chaves é um componente de software do lado do cliente que contém um armazenamento de chaves que tem a chave mestra da coluna.
Um driver de cliente, ativado com Always Encrypted:
- Usa um nome de provedor de armazenamento de chaves
- Procura o provedor de armazenamento de chaves no registro do driver de provedores de armazenamento de chaves
Em seguida, o driver usa o provedor para descriptografar chaves de criptografia de coluna. As chaves de criptografia de coluna são protegidas por uma chave mestra de coluna. A chave mestra da coluna é armazenada no armazenamento de chaves subjacente. Um valor de texto sem formatação da chave de criptografia de coluna é usado para criptografar parâmetros de consulta que correspondem a colunas de banco de dados criptografadas. Ou, a chave de criptografia de coluna descriptografa os resultados da consulta de colunas criptografadas.
As bibliotecas de driver de cliente sempre habilitadas para criptografia incluem provedores de armazenamento de chaves para armazenamentos de chaves populares.
Um conjunto de provedores disponíveis depende do tipo e da versão do driver do cliente. Consulte a documentação Always Encrypted para drivers específicos: Desenvolver aplicativos usando Always Encrypted.
A tabela a seguir mostra os nomes dos provedores de sistema:
| Nome do provedor de armazenamento de chaves | Armazenamento de chaves subjacente |
|---|---|
| 'MSSQL_CERTIFICATE_STORE' | Armazenamento de Certificados do Windows |
| 'MSSQL_CSP_PROVIDER' | Um armazenamento, como um módulo de segurança de hardware (HSM), que suporta Microsoft CryptoAPI. |
| 'MSSQL_CNG_STORE' | Um armazenamento, como um módulo de segurança de hardware (HSM), que suporta API de criptografia: próxima geração. |
| 'AZURE_KEY_VAULT' | Consulte Introdução ao Azure Key Vault |
| 'MSSQL_JAVA_KEYSTORE' | Armazenamento de chaves Java.} |
No driver de cliente habilitado para Always Encrypted, você pode configurar um provedor de armazenamento de chaves personalizado que armazena chaves mestras de coluna para as quais não há um provedor de armazenamento de chaves interno. Os nomes dos provedores de armazenamento de chaves personalizadas não podem começar com 'MSSQL_', que é um prefixo reservado para provedores de armazenamento de chaves da Microsoft.
key_path
O caminho da chave no armazenamento de chaves mestras da coluna. O caminho da chave deve ser válido para cada aplicativo cliente esperado para criptografar ou descriptografar dados. Os dados são armazenados em uma coluna que é (indiretamente) protegida pela chave mestra da coluna referenciada. O aplicativo cliente deve ter acesso à chave. O formato do caminho da chave é específico para o provedor de armazenamento de chaves. A lista a seguir descreve o formato dos caminhos de chave para determinados provedores de armazenamento de chaves do sistema Microsoft.
Nome do provedor: MSSQL_CERTIFICATE_STORE
Formato do caminho da chave:CertificateStoreName/CertificateStoreLocation/CertificateThumbprint
Where:
CertificateStoreLocalização
Local de armazenamento de certificados, que deve ser Usuário Atual ou Máquina Local. Para obter mais informações, consulte Armazenamento de certificados de usuário local e máquina local.Armazenamento de Certificados
Nome do repositório de certificados, por exemplo 'Meu'.CertificadoImpressão digital
Impressão digital do certificado.Exemplos:
N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94' N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'Nome do provedor: MSSQL_CSP_PROVIDER
Formato do caminho da chave:ProviderName/KeyIdentifier
Where:
Nome do provedor
O nome de um provedor de serviços de criptografia (CSP), que implementa CAPI, para o armazenamento de chave mestre de coluna. Se você usar um HSM como um armazenamento de chaves, o nome do provedor deverá ser o nome do CSP fornecido pelo fornecedor do HSM. O provedor deve ser instalado em um computador cliente.Identificador de chave
Identificador da chave, usada como uma chave mestra de coluna, no armazenamento de chaves.Exemplos:
N'My HSM CSP Provider/AlwaysEncryptedKey1'Nome do provedor: MSSQL_CNG_STORE
Formato do caminho da chave:ProviderName/KeyIdentifier
Where:
Nome do provedor
Nome do Provedor de Armazenamento de Chaves (KSP), que implementa a API de Criptografia: Próxima Geração (CNG), para o armazenamento de chaves mestras de coluna. Se você usar um HSM como um armazenamento de chaves, o nome do provedor deve ser o nome do KSP fornecido pelo fornecedor do HSM. O provedor deve ser instalado em um computador cliente.Identificador de chave
Identificador da chave, usada como uma chave mestra de coluna, no armazenamento de chaves.Exemplos:
N'My HSM CNG Provider/AlwaysEncryptedKey1'Nome do provedor: AZURE_KEY_STORE
Formato do caminho da chave:KeyUrl
Where:
KeyUrl
A URL da chave no Azure Key Vault
ENCLAVE_COMPUTATIONS
Especifica que a chave mestra da coluna está habilitada para enclave. Você pode compartilhar todas as chaves de criptografia de coluna, criptografadas com a chave mestra de coluna, com um enclave seguro do lado do servidor e usá-las para cálculos dentro do enclave. Para obter mais informações, consulte Sempre criptografado com enclaves seguros.
assinatura
Um literal binário que é resultado da assinatura digital do caminho da chave e da configuração ENCLAVE_COMPUTATIONS com a chave mestra da coluna. A assinatura reflete se ENCLAVE_COMPUTATIONS especificado ou não. A assinatura protege os valores assinados de serem alterados por usuários não autorizados. Um driver de cliente habilitado para Always Encrypted verifica a assinatura e retorna um erro para o aplicativo se a assinatura for inválida. A assinatura deve ser gerada usando ferramentas do lado do cliente. Para obter mais informações, consulte Sempre criptografado com enclaves seguros.
Observações
Crie uma entrada de metadados de chave mestra de coluna antes de criar uma entrada de metadados de chave de criptografia de coluna no banco de dados e antes que qualquer coluna no banco de dados possa ser criptografada usando Always Encrypted. Uma entrada de chave mestra de coluna nos metadados não contém a chave mestra de coluna real. A chave mestra de coluna deve ser armazenada em um armazenamento de chave de coluna externo (fora do SQL Server). O nome do provedor de armazenamento de chaves e o caminho da chave mestra da coluna nos metadados devem ser válidos para um aplicativo cliente. O aplicativo cliente precisa usar a chave mestra de coluna para descriptografar uma chave de criptografia de coluna. A chave de criptografia de coluna é criptografada com a chave mestra de coluna. O aplicativo cliente também precisa consultar colunas criptografadas.
É recomendável usar ferramentas, como o SQL Server Management Studio (SSMS) ou o PowerShell, para gerenciar chaves mestras de coluna. Essas ferramentas geram assinaturas (se você estiver usando Always Encrypted com enclaves seguros) e emitem CREATE COLUMN MASTER KEY automaticamente instruções para criar objetos de metadados de chave de criptografia de coluna. Consulte Provisionar chaves sempre criptografadas usando o SQL Server Management Studio e Provisionar chaves sempre criptografadas usando o PowerShell.
Permissions
Requer a permissão ALTER ANY COLUMN MASTER KEY .
Examples
A. Criando uma chave mestra de coluna
O exemplo a seguir cria uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna. A chave mestra de coluna é armazenada no Armazenamento de Certificados para aplicativos cliente que usam o provedor de MSSQL_CERTIFICATE_STORE para acessar a chave mestra de coluna:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
);
Crie uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna. Os aplicativos cliente, que usam o provedor de MSSQL_CNG_STORE, acessam a chave mestra da coluna:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',
KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'
);
Crie uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna. A chave mestra de coluna é armazenada no Cofre de Chaves do Azure, para aplicativos cliente que usam o provedor de AZURE_KEY_VAULT, para acessar a chave mestra de coluna.
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'AZURE_KEY_VAULT',
KEY_PATH = N'https://myvault.vault.azure.net:443/keys/
MyCMK/4c05f1a41b12488f9cba2ea964b6a700');
Crie uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna. A chave mestra de coluna é armazenada em um armazenamento de chave mestra de coluna personalizada:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',
KEY_PATH = 'https://contoso.vault/sales_db_tce_key'
);
B. Criando uma chave mestra de coluna habilitada para enclave
O exemplo a seguir cria uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna habilitada para enclave. A chave mestra de coluna habilitada para enclave é armazenada em um Repositório de Certificados, para aplicativos cliente que usam o provedor de MSSQL_CERTIFICATE_STORE para acessar a chave mestra de coluna:
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'
ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);
Crie uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna habilitada para enclave. A chave mestra de coluna habilitada para enclave é armazenada no Cofre de Chaves do Azure, para aplicativos cliente que usam o provedor de AZURE_KEY_VAULT, para acessar a chave mestra de coluna.
CREATE COLUMN MASTER KEY MyCMK
WITH (
KEY_STORE_PROVIDER_NAME = N'AZURE_KEY_VAULT',
KEY_PATH = N'https://myvault.vault.azure.net:443/keys/MyCMK/4c05f1a41b12488f9cba2ea964b6a700',
ENCLAVE_COMPUTATIONS(SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020582413990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
);
Ver também
- SOLTAR A CHAVE MESTRA DA COLUNA (Transact-SQL)
- CRIAR CHAVE DE CRIPTOGRAFIA DE COLUNA (Transact-SQL)
- sys.column_master_keys (Transact-SQL)
- Sempre criptografado
- Sempre criptografado com enclaves seguros
- Visão geral do gerenciamento de chaves para sempre criptografado
- Gerencie chaves para Always Encrypted com enclaves seguros