Partilhar via


CRIAR CHAVE MESTRA DE COLUNA (Transact-SQL)

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