CREATE COLUMN MASTER KEY (Transact-SQL)CREATE COLUMN MASTER KEY (Transact-SQL)

APLICA-SE A: SimSQL Server 2016 e posterior SimBanco de Dados SQL do Azure NãoAzure Synapse Analytics (SQL DW) NãoParallel Data Warehouse APPLIES TO: YesSQL Server 2016 and later YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Cria um objeto de metadados de chave mestra de coluna em um banco de dados.Creates a column master key metadata object in a database. Uma entrada de metadados de chave mestra de coluna representa uma chave, armazenada em um repositório de chave externa.A column master key metadata entry represents a key, stored in an external key store. A chave protege (criptografa) chaves de criptografia de coluna quando você está usando Always Encrypted ou Always Encrypted com enclaves seguros.The key protects (encrypts) column encryption keys when you're using Always Encrypted or Always Encrypted with secure enclaves. Múltiplas chaves mestras de coluna permitem a rotação periódica de chaves para aumentar a segurança.Multiple column master keys allow for periodic key rotation to enhance security. 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 StudioSQL Server Management Studio ou no PowerShell.Create a column master key in a key store and its related metadata object in the database by using the Object Explorer in SQL Server Management StudioSQL Server Management Studio or PowerShell. Para obter detalhes, veja Visão geral do gerenciamento de chaves para Always Encrypted.For details, see Overview of Key Management for Always Encrypted.

Ícone de link do tópico Convenções da sintaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

Importante

A criação de chaves habilitadas para enclave (com ENCLAVE_COMPUTATIONS) requer o Always Encrypted com enclaves seguros.Creating enclave-enabled keys (with ENCLAVE_COMPUTATIONS) requires Always Encrypted with secure enclaves.

SintaxeSyntax

CREATE COLUMN MASTER KEY key_name   
    WITH (  
        KEY_STORE_PROVIDER_NAME = 'key_store_provider_name',  
        KEY_PATH = 'key_path'   
        [,ENCLAVE_COMPUTATIONS (SIGNATURE = signature)]
         )   
[;]  

ArgumentosArguments

key_namekey_name
O nome da chave mestra de coluna no banco de dados.The name of the column master key in the database.

key_store_provider_namekey_store_provider_name
Especifica o nome de um provedor de repositório de chaves.Specifies the name of a key store provider. Um provedor de repositório de chaves é um componente de software do lado do cliente com um repositório de chaves que contém a chave mestra de coluna.A key store provider is a client-side software component that holds a key store that has the column master key.

Um driver cliente, habilitado com o Always Encrypted:A client driver, enabled with Always Encrypted:

  • Usa o nome do provedor do repositório de chavesUses a key store provider name
  • Pesquisa o provedor do repositório de chaves no Registro do driver dos provedores do repositório de chavesSearches for the key store provider in the driver's registry of key store providers

Em seguida, o driver usa o provedor para descriptografar chaves de criptografia de coluna.The driver then uses the provider to decrypt column encryption keys. As chaves de criptografia de coluna são protegidas pela chave mestra da coluna.The column encryption keys are protected by a column master key. A chave mestra da coluna é armazenada no repositório de chaves subjacente.The column master key is stored in the underlying key store. Um valor de texto não criptografado da chave de criptografia de coluna então é usado para criptografar parâmetros de consulta, correspondentes às colunas de banco de dados criptografadas.A plaintext value of the column encryption key is then used to encrypt query parameters that correspond to encrypted database columns. Ou a chave de criptografia da coluna descriptografa os resultados da consulta de colunas criptografadas.Or, the column encryption key decrypts query results from encrypted columns.

Bibliotecas de drivers de cliente habilitadas para Always Encrypted incluem provedores de repositório de chaves para repositórios de chaves populares.Always Encrypted-enabled client driver libraries include key store providers for popular key stores.

Um conjunto de provedores disponíveis depende do tipo e da versão do driver do cliente.A set of available providers depends on the type and the version of the client driver. Veja a documentação do Always Encrypted para drivers específicos: Desenvolver aplicativos usando o Always Encrypted.See the Always Encrypted documentation for particular drivers: Develop applications using Always Encrypted.

A tabela a seguir mostra os nomes de provedores de sistema:The following table shows the names of system providers:

Nome do Provedor do repositório de chavesKey store provider name Repositório de chaves subjacenteUnderlying key store
'MSSQL_CERTIFICATE_STORE''MSSQL_CERTIFICATE_STORE' Repositório de Certificados do WindowsWindows Certificate Store
'MSSQL_CSP_PROVIDER''MSSQL_CSP_PROVIDER' Um repositório, como um HSM (módulo de segurança de hardware) compatível com o Microsoft CryptoAPI.A store, such as a hardware security module (HSM), that supports Microsoft CryptoAPI.
'MSSQL_CNG_STORE''MSSQL_CNG_STORE' Um repositório, como um HSM (módulo de segurança de hardware), compatível com a API Cryptography Next Generation.A store, such as a hardware security module (HSM), that supports Cryptography API: Next Generation.
'AZURE_KEY_VAULT''AZURE_KEY_VAULT' Veja Introdução ao Azure Key VaultSee Getting Started with Azure Key Vault
'MSSQL_JAVA_KEYSTORE''MSSQL_JAVA_KEYSTORE' Repositório de chaves Java.}Java Key Store.}

No seu driver cliente habilitado para Always Encrypted, é possível configurar um provedor de repositório de chaves personalizado para armazenar chaves mestras de coluna para as quais não há nenhum provedor de repositório de chaves interno.In your Always Encrypted-enabled client driver, you can set up a custom key store provider that stores column master keys for which there's no built-in key store provider. Os nomes de provedores de repositório de chaves personalizado não podem começar com 'MSSQL_', que é um prefixo reservado para provedores de repositório de chaves MicrosoftMicrosoft.The names of custom key store providers can't start with 'MSSQL_', which is a prefix reserved for MicrosoftMicrosoft key store providers.

key_pathkey_path
O caminho da chave no repositório de chave mestra de coluna.The path of the key in the column master key store. O caminho da chave deve ser válido para cada aplicativo cliente que deve criptografar ou descriptografar dados.The key path must be valid for each client application expected to encrypt or decrypt data. Os dados são armazenados em uma coluna (indiretamente) protegida pela chave mestra de coluna referenciada.The data is stored in a column that's (indirectly) protected by the referenced column master key. O aplicativo cliente deve ter acesso à chave.The client application must have access to the key. O formato do caminho da chave é específico do provedor do repositório de chaves.The format of the key path is specific to the key store provider. A lista a seguir descreve o formato de caminhos de chave para provedores de repositório de chaves do sistema Microsoft específicos.The following list describes the format of key paths for particular Microsoft system key store providers.

  • Nome do provedor: MSSQL_CERTIFICATE_STOREProvider name: MSSQL_CERTIFICATE_STORE

    Formato do caminho da chave: CertificateStoreName/CertificateStoreLocation/CertificateThumbprintKey path format: CertificateStoreName/CertificateStoreLocation/CertificateThumbprint

    Em que:Where:

    CertificateStoreLocationCertificateStoreLocation
    Local do repositório de certificados, que deve ser o Usuário Atual ou o Computador Local.Certificate store location, which must be Current User or Local Machine. Para obter mais informações, veja Computador local e repositórios de certificados do usuário atual.For more information, see Local Machine and Current User Certificate Stores.

    CertificateStoreCertificateStore
    Nome do repositório de certificados, por exemplo 'Meu'.Certificate store name, for example 'My'.

    CertificateThumbprintCertificateThumbprint
    Impressão digital do certificado.Certificate thumbprint.

    Exemplos:Examples:

    N'CurrentUser/My/BBF037EC4A133ADCA89FFAEC16CA5BFA8878FB94'  
    
    N'LocalMachine/My/CA5BFA8878FB94BBF037EC4A133ADCA89FFAEC16'  
    
  • Nome do provedor: MSSQL_CSP_PROVIDERProvider name: MSSQL_CSP_PROVIDER

    Formato do caminho da chave: ProviderName/KeyIdentifierKey path format: ProviderName/KeyIdentifier

    Em que:Where:

    ProviderNameProviderName
    O nome de um CSP (Provedor de Serviço de Criptografia), que implementa a CAPI, para o repositório de chave mestra de coluna.The name of a Cryptography Service Provider (CSP), which implements CAPI, for the column master key store. Se você usar um HSM como um repositório de chaves, o nome do provedor deverá ser o nome do CSP dado pelo seu fornecedor HSM.If you use an HSM as a key store, the provider name must be the name of the CSP your HSM vendor supplies. O provedor deve ser instalado em um computador cliente.The provider must be installed on a client computer.

    KeyIdentifierKeyIdentifier
    Identificador da chave, usado como uma chave mestra de coluna, no repositório de chaves.Identifier of the key, used as a column master key, in the key store.

    Exemplos:Examples:

    N'My HSM CSP Provider/AlwaysEncryptedKey1'  
    
  • Nome do provedor: MSSQL_CNG_STOREProvider name: MSSQL_CNG_STORE

    Formato do caminho da chave: ProviderName/KeyIdentifierKey path format: ProviderName/KeyIdentifier

    Em que:Where:

    ProviderNameProviderName
    Nome do KSP (Provedor de Armazenamento de Chaves), que implementa a API CNG (Cryptography Next Generation) para o repositório de chave mestra de coluna.Name of the Key Storage Provider (KSP), which implements the Cryptography: Next Generation (CNG) API, for the column master key store. Se você usar um HSM como um repositório de chaves, o nome do provedor deverá ser o nome do KSP dado pelo seu fornecedor HSM.If you use an HSM as a key store, the provider name must be the name of the KSP your HSM vendor supplies. O provedor deve ser instalado em um computador cliente.The provider must be installed on a client computer.

    KeyIdentifierKeyIdentifier
    Identificador da chave, usado como uma chave mestra de coluna, no repositório de chaves.Identifier of the key, used as a column master key, in the key store.

    Exemplos:Examples:

    N'My HSM CNG Provider/AlwaysEncryptedKey1'  
    
  • Nome do provedor: AZURE_KEY_STOREProvider name: AZURE_KEY_STORE

    Formato do caminho da chave: KeyUrlKey path format: KeyUrl

    Em que:Where:

    KeyUrlKeyUrl
    A URL da chave no Azure Key VaultThe URL of the key in Azure Key Vault

ENCLAVE_COMPUTATIONSENCLAVE_COMPUTATIONS
Especifica se a chave mestra da coluna está habilitada para enclave.Specifies that the column master key is enclave-enabled. Você pode compartilhar todas as chaves de criptografia de coluna, criptografadas com a chave mestra de coluna, com um enclave seguro no servidor e usá-las para cálculos dentro do enclave.You can share all column encryption keys, encrypted with the column master key, with a server-side secure enclave and use them for computations inside the enclave. Para obter mais informações, consulte Always Encrypted com enclaves seguros.For more information, see Always Encrypted with secure enclaves.

signaturesignature
Um literal binário que é um resultado de assinar digitalmente o caminho da chave e a configuração ENCLAVE_COMPUTATIONS com a chave mestra de coluna.A binary literal that's a result of digitally signing key path and the ENCLAVE_COMPUTATIONS setting with the column master key. A assinatura reflete se ENCLAVE_COMPUTATIONS for especificado ou não.The signature reflects whether ENCLAVE_COMPUTATIONS is specified or not. A assinatura protege os valores assinados de serem alterados por usuários não autorizados.The signature protects the signed values from being altered by unauthorized users. Um driver de cliente habilitado para Always Encrypted verificará a assinatura e retornará um erro para o aplicativo se a assinatura for inválida.An Always Encrypted-enabled client driver verifies the signature and returns an error to the application if the signature is invalid. A assinatura deve ser gerada usando ferramentas do lado do cliente.The signature must be generated using client-side tools. Para obter mais informações, consulte Always Encrypted com enclaves seguros.For more information, see Always Encrypted with secure enclaves.

ComentáriosRemarks

Crie uma entrada de metadados de chave mestra de coluna antes de uma entrada de metadados de chave de criptografia de coluna ser criada no banco de dados e antes de qualquer coluna no banco de dados poder ser criptografada usando Always Encrypted.Create a column master key metadata entry before you create a column encryption key metadata entry in the database and before any column in the database can be encrypted using Always Encrypted. Uma entrada de chave mestra de coluna nos metadados não contém a chave mestra de coluna real.A column master key entry in the metadata doesn't contain the actual column master key. A chave mestra de coluna deve ser armazenada em um repositório de chaves de coluna externo (fora do SQL Server).The column master key must be stored in an external column key store (outside of SQL Server). O nome do provedor de repositório de chaves e o caminho da chave mestra de coluna nos metadados devem ser válidos para um aplicativo cliente.The key store provider name and the column master key path in the metadata must be valid for a client application. O aplicativo cliente precisa usar a chave mestra de coluna para descriptografar uma chave de criptografia de coluna.The client application needs to use the column master key to decrypt a column encryption key. A chave de criptografia de coluna é criptografada com a chave mestra de coluna.The column encryption key is encrypted with the column master key. O aplicativo cliente também precisa consultar colunas criptografadas.The client application also needs to query encrypted columns.

É recomendável usar ferramentas, como o SSMS (SQL Server Management Studio) ou o PowerShell para gerenciar chaves mestras de coluna.It is recommended you use tools, such as SQL Server Management Studio (SSMS) or PowerShell to manage column master keys. Essas ferramentas geram assinaturas (se você estiver usando Always Encrypted com enclaves seguros) e emitem automaticamente instruções CREATE COLUMN MASTER KEY para criar objetos de metadados de chave de criptografia de coluna.Such tools generate signatures (if you are using Always Encrypted with secure enclaves) and automatically issue CREATE COLUMN MASTER KEY statements to create column encryption key metadata objects. Confira Provisionar chaves Always Encrypted usando o SQL Server Management Studio e Provisionar chaves Always Encrypted usando o PowerShell.See Provision Always Encrypted keys using SQL Server Management Studio and Provision Always Encrypted keys using PowerShell.

PermissõesPermissions

Requer a permissão ALTER ANY COLUMN MASTER KEY.Requires the ALTER ANY COLUMN MASTER KEY permission.

ExemplosExamples

a.A. Criando uma chave mestra de colunaCreating a column master key

O exemplo a seguir cria uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna.The following example creates a column master key metadata entry for a column master key. A chave mestra de coluna é armazenada no Repositório de Certificados para aplicativos cliente que usam o provedor MSSQL_CERTIFICATE_STORE para acessar a chave mestra de coluna:The column master key is stored in the Certificate Store for client applications that use the MSSQL_CERTIFICATE_STORE provider to access the column master key:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
     KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',   
     KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'  
   );  

Criar uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna.Create a column master key metadata entry for a column master key. Aplicativos cliente, que usam o provedor MSSQL_CNG_STORE, acessam a chave mestra de coluna:Client applications, which use the MSSQL_CNG_STORE provider, access the column master key:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
    KEY_STORE_PROVIDER_NAME = N'MSSQL_CNG_STORE',    
    KEY_PATH = N'My HSM CNG Provider/AlwaysEncryptedKey'  
);  

Criar uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna.Create a column master key metadata entry for a column master key. A chave mestra de coluna é armazenada no Azure Key Vault, para aplicativos cliente que usam o provedor AZURE_KEY_VAULT, para acessar a chave mestra de coluna.The column master key is stored in the Azure Key Vault, for client applications that use the AZURE_KEY_VAULT provider, to access the column master key.

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');  

Criar uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna.Create a column master key metadata entry for a column master key. A chave mestra de coluna é armazenada em um repositório de chave mestra de coluna personalizada:The column master key is stored in a custom column master key store:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
    KEY_STORE_PROVIDER_NAME = 'CUSTOM_KEY_STORE',    
    KEY_PATH = 'https://contoso.vault/sales_db_tce_key'  
);  

B.B. Criando uma chave mestra da coluna habilitada para enclaveCreating an enclave-enabled column master key

O exemplo a seguir cria uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna habilitada para enclave.The following example creates a column master key metadata entry for an enclave-enabled column master key. A chave mestra de coluna habilitada para enclave é armazenada em um Repositório de Certificados, para aplicativos cliente que usam o provedor MSSQL_CERTIFICATE_STORE, para acessar a chave mestra de coluna:The enclave-enabled column master key is stored in a Certificate Store, for client applications that use the MSSQL_CERTIFICATE_STORE provider to access the column master key:

CREATE COLUMN MASTER KEY MyCMK  
WITH (  
     KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',   
     KEY_PATH = 'Current User/Personal/f2260f28d909d21c642a3d8e0b45a830e79a1420'  
     ENCLAVE_COMPUTATIONS (SIGNATURE = 0xA80F5B123F5E092FFBD6014FC2226D792746468C901D9404938E9F5A0972F38DADBC9FCBA94D9E740F3339754991B6CE26543DEB0D094D8A2FFE8B43F0C7061A1FFF65E30FDDF39A1B954F5BA206AAC3260B0657232020542419990261D878318CC38EF4E853970ED69A8D4A306693B8659AAC1C4E4109DE5EB148FD0E1FDBBC32F002C1D8199D313227AD689279D8DEEF91064DF122C19C3767C463723AB663A6F8412AE17E745922C0E3A257EAEF215532588ACCBD440A03C7BC100A38BD0609A119E1EF7C5C6F1B086C68AB8873DBC6487B270340E868F9203661AFF0492CEC436ABF7C4713CE64E38CF66C794B55636BFA55E5B6554AF570CF73F1BE1DBD)
  );  

Criar uma entrada de metadados de chave mestra de coluna para uma chave mestra de coluna habilitada para enclave.Create a column master key metadata entry for an enclave-enabled column master key. A chave mestra de coluna habilitada para enclave é armazenada no Azure Key Vault, para aplicativos cliente que usam o provedor AZURE_KEY_VAULT, para acessar a chave mestra de coluna.The enclave-enabled column master key is stored in the Azure Key Vault, for client applications that use the AZURE_KEY_VAULT provider, to access the column master key.

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)
  );

Consulte TambémSee Also