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 2019 (15.x) e posterior - somente Windows
Banco de Dados SQL do Azure
O Always Encrypted com enclaves seguros expande as capacidades de computação confidencial do Always Encrypted, permitindo criptografia no local e consultas mais detalhadas e confidenciais. O Always Encrypted with secure enclaves está disponível no SQL Server 2019 (15.x) e posterior, bem como no Banco de Dados SQL do Azure.
Introduzido no Banco de Dados SQL do Azure em 2015 e no SQL Server 2016 (13.x), o Always Encrypted protege a confidencialidade de dados confidenciais contra malware e usuários de não autorizados altamente privilegiados: administradores de banco de dados (DBAs), administradores de computador, administradores de nuvem ou qualquer outra pessoa que tenha acesso legítimo a instâncias de servidor, hardware, etc., mas não deva ter acesso a alguns ou a todos os dados reais.
Sem os aprimoramentos discutidos neste artigo, o Always Encrypted protege os dados criptografando-os no lado do cliente e nunca permitindo que os dados ou as chaves criptográficas correspondentes apareçam em texto sem formatação dentro do Mecanismo de Banco de Dados. Como resultado, a funcionalidade em colunas criptografadas dentro do banco de dados é severamente restrita. As únicas operações que o Mecanismo de Banco de Dados pode executar em dados criptografados são comparações de igualdade (disponíveis apenas com criptografia determinística ). Todas as outras operações, incluindo operações criptográficas (criptografia de dados inicial ou rotação de chaves) e consultas mais avançadas (por exemplo, correspondência de padrões) não são suportadas dentro do banco de dados. Os usuários precisam mover seus dados para fora do banco de dados para executar essas operações no lado do cliente.
O Always Encrypted com enclaves seguros resolve essas limitações, permitindo alguns cálculos em dados de texto simples dentro de um enclave seguro no lado do servidor. Um enclave seguro é uma região protegida de memória dentro do processo do Mecanismo de Banco de Dados. O enclave seguro aparece como uma caixa opaca para o resto do Mecanismo de Banco de Dados e outros processos na máquina de hospedagem. There's no way to view any data or code inside the enclave from the outside, even with a debugger. Essas propriedades tornam o enclave seguro um ambiente de execução confiável que pode acessar com segurança chaves criptográficas e dados confidenciais em texto sem formatação, sem comprometer a confidencialidade dos dados.
Always Encrypted usa enclaves seguros, conforme ilustrado no diagrama a seguir:
Ao analisar uma instrução Transact-SQL enviada por um aplicativo, o Mecanismo de Banco de Dados determina se a instrução contém quaisquer operações em dados criptografados que exijam o uso do enclave seguro. For such statements:
The client driver sends the column encryption keys required for the operations to the secure enclave (over a secure channel), and submits the statement for execution.
Ao processar a instrução, o Mecanismo de Banco de Dados delega operações criptográficas ou cálculos em colunas criptografadas ao enclave seguro. Se necessário, o enclave descriptografa os dados e executa cálculos em texto sem formatação.
During statement processing, both the data and the column encryption keys aren't exposed in plaintext in the Database Engine outside of the secure enclave.
Supported client drivers
Para usar o Always Encrypted com enclaves seguros, um aplicativo deve usar um driver de cliente que ofereça suporte ao recurso. Configure a aplicação e o driver do cliente para ativar operações do enclave e atestação do enclave (consulte a secção Atestação segura do enclave abaixo). Para obter detalhes, incluindo a lista de drivers de cliente suportados, consulte Desenvolver aplicativos usando o Always Encrypted.
Tecnologias de enclave suportadas
O Always Encrypted suporta as seguintes tecnologias de enclave (ou tipos de enclave):
- Enclaves de Segurança Baseada em Virtualização (VBS) (também conhecidos como Virtual Secure Mode ou enclaves VSM) - uma tecnologia baseada em software que depende do hipervisor do Windows e não requer nenhum hardware especial.
- Intel Software Guard Extensions (Intel SGX) enclaves - a hardware-based trusted execution environment technology.
O tipo de enclave disponível para seu banco de dados depende do produto SQL que o hospeda (Banco de Dados SQL do Azure vs. SQL Server) e (no caso do Banco de Dados SQL do Azure) da configuração do seu banco de dados.
No SQL Server 2019 (15.x) e posterior, o Always Encrypted oferece suporte a enclaves VBS. (Intel SGX enclaves aren't supported.)
No Banco de Dados SQL do Azure, um banco de dados pode usar um enclave Intel SGX ou um enclave VBS, dependendo do hardware em que o banco de dados está configurado para ser executado:
- Databases using the DC-series hardware configuration (available with the vCore purchasing model) use Intel SGX enclaves.
- Os bancos de dados que usam uma configuração diferente da série DC com o modelo de compra vCore e os bancos de dados que usam o modelo de compra DTU podem ser configurados para usar enclaves VBS.
Observação
Os enclaves VBS estão atualmente disponíveis em todas as regiões do Banco de Dados SQL do Azure exceto: Jio India Central.
Consulte a seção Considerações de segurança para obter informações importantes sobre o nível de proteção que cada tipo de enclave oferece.
Secure enclave attestation
O atestado de enclave é um mecanismo de defesa profunda que pode ajudar a detetar ataques que envolvam adulteração do código do enclave ou de seu ambiente por administradores mal-intencionados.
O atestado de enclave permite que um aplicativo cliente estabeleça confiança com o enclave seguro para o banco de dados, ao qual o aplicativo está conectado, antes que o aplicativo use o enclave para processar dados confidenciais. O fluxo de trabalho de atestado verifica se o enclave é um enclave VBS ou Intel SGX genuíno e o código em execução dentro dele é a biblioteca de enclave genuína assinada pela Microsoft para Always Encrypted. Durante o atestado, o driver cliente dentro do aplicativo e o Mecanismo de Banco de Dados se comunicam com um serviço de atestado externo usando um ponto de extremidade especificado pelo cliente.
O Always Encrypted pode usar um dos dois serviços de atestado:
- Microsoft Azure Attestation - uma solução de atestado baseada em nuvem.
- Host Guardian Service (HGS) que implementa atestado de tempo de execução do Windows Defender System Guard.
Para habilitar o Always Encrypted com enclaves seguros para seu aplicativo, você precisa definir um protocolo de atestado na configuração do driver do cliente em seu aplicativo. Um valor de protocolo de atestado determina se 1) o aplicativo cliente usará o atestado e, em caso afirmativo, 2) especifica o tipo do serviço de atestado que ele usará. A tabela abaixo captura os protocolos de atestado suportados para o produto SQL válido e combinações de tipo de enclave:
| Produto de hospedagem | Tipo de enclave | Protocolos de atestado suportados |
|---|---|---|
| SQL Server 2019 (15.x) e posterior | VBS enclaves | HGS, Sem atestado |
| Banco de Dados SQL do Azure | SGX enclaves (DC-series databases) | Atestado do Microsoft Azure |
| Banco de Dados SQL do Azure | VBS enclaves | Sem atestado |
Alguns pontos importantes a destacar:
- Atestar enclaves VBS no SQL Server 2019 (15.x) e versões posteriores requer HGS. Você pode também usar enclaves VBS sem atestado (são necessários os drivers de cliente mais recentes).
- With Intel SGX enclaves (in DC-series databases) in Azure SQL Database, attestation is mandatory and it requires Microsoft Azure Attestation.
- Os enclaves VBS no Banco de Dados SQL do Azure não oferecem suporte a atestado.
Para mais informações, consulte:
- Plan for Host Guardian Service attestation.
- Plan for Intel SGX enclaves and attestation in Azure SQL Database.
Terminologia
Enclave-enabled keys
Always Encrypted with secure enclaves introduz o conceito de chaves compatíveis com enclaves.
-
Enclave-enabled column master key - a column
masterkey that has theENCLAVE_COMPUTATIONSproperty specified in the columnmasterkey metadata object inside the database. The columnmasterkey metadata object must also contain a valid signature of the metadata properties. Para obter mais informações, consulte CREATE COLUMN MASTER KEY (Transact-SQL) -
Enclave-enabled column encryption key - a column encryption key that is encrypted with an enclave-enabled column
masterkey. Only enclave-enabled column encryption keys can be used for computations inside the secure enclave.
Para obter mais informações, consulte Gerenciar chaves para Always Encrypted com enclaves seguros.
Enclave-enabled columns
An enclave-enabled column is a database column encrypted with an enclave-enabled column encryption key.
Confidential computing capabilities for enclave-enabled columns
Os dois principais benefícios do Always Encrypted com enclaves seguros são a encriptação no local e consultas confidenciais avançadas.
Encriptação no local
A criptografia no local permite operações criptográficas em colunas de banco de dados no interior do enclave seguro, sem mover os dados do banco de dados. A encriptação no local melhora o desempenho e a fiabilidade das operações criptográficas. Você pode executar a criptografia no local usando a instrução ALTER TABLE (Transact-SQL).
As operações criptográficas suportadas no local são:
- Encrypting a plaintext column with an enclave-enabled column encryption key.
- Re-encrypting an encrypted enclave-enabled column to:
- Rotate a column encryption key - re-encrypt the column with a new enclave-enabled column encryption key.
- Change the encryption type of an enclave-enabled column, for example, from deterministic to randomized.
- Decrypting data stored in an enclave-enabled column (converting the column into a plaintext column).
In-place encryption is allowed with both deterministic and randomized encryption, as long as the column encryption keys involved in a cryptographic operation are enclave-enabled.
Consultas confidenciais
Observação
O SQL Server 2022 (16.x) adiciona suporte adicional para consultas confidenciais com operações JOIN, GROUP BY e ORDER BY em colunas criptografadas.
Confidential queries are DML queries that involve operations on enclave-enabled columns performed inside the secure enclave.
As operações apoiadas no interior dos enclaves seguros são as seguintes:
| Funcionamento | Banco de Dados SQL do Azure | SQL Server 2022 (16.x) | SQL Server 2019 (15.x) |
|---|---|---|---|
| Operadores de comparação | Suportado | Suportado | Suportado |
| BETWEEN (Transact-SQL) | Suportado | Suportado | Suportado |
| IN (Transact-SQL) | Suportado | Suportado | Suportado |
| LIKE (Transact-SQL) | Suportado | Suportado | Suportado |
| DISTINCT | Suportado | Suportado | Suportado |
| Junta-se | Suportado | Suportado | Only nested loop joins supported |
| SELECT - ORDER BY Clause (Transact-SQL) | Suportado | Suportado | Não suportado |
| SELECT - GROUP BY- Transact-SQL | Suportado | Suportado | Não suportado |
Observação
As operações acima dentro de enclaves seguros requerem criptografia aleatória. Deterministic encryption isn't supported. A comparação de igualdade continua a ser a operação disponível para colunas que utilizam encriptação determinística.
O nível de compatibilidade do banco de dados deve ser definido como SQL Server 2022 (160) ou superior.
No Banco de Dados SQL do Azure e no SQL Server 2022 (16.x), consultas confidenciais usando enclaves em uma coluna de cadeia de caracteres (char, nchar) exigem que a coluna use um agrupamento de ponto de código binário (_BIN2) ou um agrupamento UTF-8. In SQL Server 2019 (15.x), a_BIN2 collation is required.
For more information, see Run Transact-SQL statements using secure enclaves.
Indexes on enclave-enabled columns
Você pode criar índices não clusterizados em colunas habilitadas para enclave usando criptografia aleatória para fazer consultas DML confidenciais usando o enclave seguro serem executadas mais rapidamente.
Para garantir que um índice em uma coluna criptografada usando criptografia aleatória não vaze dados confidenciais, os valores de chave na estrutura de dados do índice (árvore B) são criptografados e classificados com base em seus valores de texto sem formatação. A classificação pelo valor de texto simples também é útil para processar consultas dentro do enclave. Quando o executor de consulta no Mecanismo de Banco de Dados usa um índice em uma coluna criptografada para cálculos dentro do enclave, ele pesquisa o índice para procurar valores específicos armazenados na coluna. Cada pesquisa pode envolver várias comparações. The query executor delegates each comparison to the enclave, which decrypts a value stored in the column and the encrypted index key value to be compared, it performs the comparison on plaintext and it returns the result of the comparison to the executor.
Creating indexes on columns that use randomized encryption and aren't enclave-enabled remains unsupported.
Um índice em uma coluna usando criptografia determinística é classificado com base em texto cifrado (não texto sem formatação), independentemente de a coluna estar habilitada para enclave ou não.
Para obter mais informações, consulte Criar e usar índices em colunas usando Always Encrypted com enclaves seguros. Para obter informações gerais sobre como funciona a indexação no motor de base de dados, consulte o artigo Índices Clusterizados e Não Clusterizados Descritos.
Recuperação de banco de dados
Se uma instância do SQL Server falhar, seus bancos de dados podem ser deixados em um estado em que os arquivos de dados podem conter algumas modificações de transações incompletas. Quando a instância é iniciada, ela executa um processo chamado recuperação de banco de dados, que envolve reverter todas as transações incompletas encontradas no log de transações para garantir que a integridade do banco de dados seja preservada. Se uma transação incompleta fez alterações em um índice, essas alterações também precisam ser desfeitas. Por exemplo, alguns valores de chave no índice podem precisar ser removidos ou reinseridos.
Important
Microsoft strongly recommends enabling Accelerated database recovery (ADR) for your database, before creating the first index on an enclave-enabled column encrypted with randomized encryption. O ADR é habilitado por padrão no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure. O ADR está disponível, mas não habilitado por padrão no SQL Server 2019 (15.x) e posterior.
With the traditional database recovery process (that follows the ARIES recovery model), to undo a change to an index, the Database Engine needs to wait until an application provides the column encryption key for the column to the enclave, which can take a long time. Accelerated database recovery (ADR) dramatically reduces the number of undo operations that must be deferred because a column encryption key isn't available in the cache inside the enclave. Consequentemente, aumenta substancialmente a disponibilidade do banco de dados, minimizando a chance de uma nova transação ser bloqueada. Com o ADR habilitado, o Mecanismo de Banco de Dados ainda pode precisar de uma chave de criptografia de coluna para concluir a limpeza de versões de dados antigas, mas ele faz isso como uma tarefa em segundo plano que não afeta a disponibilidade do banco de dados ou as transações do usuário. You might see error messages in the error log, indicating failed cleanup operations due to a missing column encryption key.
Considerações de segurança
As seguintes considerações de segurança aplicam-se ao Always Encrypted com enclaves seguros.
- Os enclaves VBS ajudam a proteger seus dados contra ataques dentro da VM. No entanto, eles não fornecem nenhuma proteção contra ataques usando contas de sistema privilegiadas originadas do host. Os enclaves Intel SGX protegem os dados contra ataques provenientes do SO convidado e do SO anfitrião.
- O uso do atestado de enclave é recomendado se ele estiver disponível para seu ambiente e se você estiver preocupado em proteger seus dados contra ataques de usuários com acesso de administrador no nível do sistema operacional à máquina que hospeda seu banco de dados. Se você usar atestado, precisará garantir que o serviço de atestado e sua configuração sejam gerenciados por um administrador confiável. Além disso, ambos os serviços de certificação suportados oferecem diferentes políticas e modos de atestado, alguns dos quais realizam verificação mínima do enclave e seu ambiente, e são projetados para teste e desenvolvimento. Siga de perto as diretrizes específicas do seu serviço de certificação para garantir que você esteja usando as configurações e políticas recomendadas para suas implantações de produção.
- Encrypting a column using randomized encryption with an enclave-enabled column encryption key might result in leaking the order of data stored in the column, as such columns support range comparisons. Por exemplo, se uma coluna criptografada, contendo salários de funcionários, tiver um índice, um DBA mal-intencionado poderá verificar o índice para encontrar o valor máximo de salário criptografado e identificar uma pessoa com o salário máximo (supondo que o nome da pessoa não esteja criptografado).
- Se você usar o Always Encrypted para proteger dados confidenciais contra acesso não autorizado por DBAs, não compartilhe as chaves de coluna
masterou as chaves de criptografia de coluna com os DBAs. Um DBA pode gerenciar índices em colunas criptografadas sem ter acesso direto às chaves usando o cache de chaves de criptografia de coluna dentro do enclave.
Considerações sobre continuidade de negócios, recuperação de desastres e migração de dados
Ao configurar uma solução de alta disponibilidade ou recuperação de desastres para um banco de dados usando Always Encrypted com enclaves seguros, certifique-se de que todas as réplicas de banco de dados possam usar um enclave seguro. Se um enclave estiver disponível para a réplica primária, mas não para a réplica secundária, qualquer instrução que tente usar a funcionalidade do Always Encrypted com enclaves seguros falhará após o failover.
Ao copiar ou migrar um banco de dados usando Always Encrypted com enclaves seguros, certifique-se de que o ambiente de destino sempre ofereça suporte a enclaves. Otherwise, statements that use enclaves won't work on the copy or the migrated database.
Aqui estão as considerações específicas que você deve ter em mente:
SQL Server
- Ao configurar um grupo de disponibilidade Always On, certifique-se de que cada instância do SQL Server que hospeda um banco de dados no grupo de disponibilidade ofereça suporte a Always Encrypted com enclaves seguros e tenha um enclave e um atestado configurados.
- Ao restaurar a partir de um arquivo de backup de um banco de dados que usa a funcionalidade Always Encrypted com enclaves seguros em uma instância do SQL Server que não tenha o enclave configurado, a operação de restauração será bem-sucedida e todas as funcionalidades que não dependem do enclave estarão disponíveis. No entanto, qualquer instrução subsequente usando a funcionalidade enclave falhará, e os índices em colunas habilitadas para enclave usando criptografia aleatória se tornarão inválidos. O mesmo se aplica ao anexar um banco de dados usando Always Encrypted com enclaves seguros na instância que não tem o enclave configurado.
- If your database contains indexes on enclave-enabled columns using randomized encryption, make sure to enable Accelerated database recovery (ADR) in the database before creating a database backup. O ADR assegurará que a base de dados, incluindo os índices, esteja disponível imediatamente após o restauro da base de dados. Para obter mais informações, consulte Database Recovery.
Banco de Dados SQL do Azure
- When configuring active geo-replication, make sure a secondary database supports secure enclaves, if the primary database does.
No SQL Server e na Base de Dados SQL do Azure, ao migrar a sua base de dados usando um ficheiro bacpac, você precisa remover todos os índices de colunas com enclave ativado usando criptografia aleatória antes de criar o ficheiro bacpac.
Limitações conhecidas
Always Encrypted with secure enclaves addresses some limitations of Always Encrypted by supporting in-place encryption and richer confidential queries with indexes, as explained in Confidential computing capabilities for enclave-enabled columns.
As restantes limitações de Always Encrypted listadas em Limitações aplicam-se igualmente ao Always Encrypted com enclaves seguros.
As seguintes limitações são específicas do Always Encrypted com enclaves seguros:
- Não é possível criar índices clusterizados em colunas habilitadas para enclave usando criptografia aleatória.
- Enclave-enabled columns using randomized encryption can't be primary key columns and can't be referenced by foreign key constraints or unique key constraints.
- In SQL Server 2019 (15.x) (this limitation doesn't apply to Azure SQL Database or SQL Server 2022 (16.x)) only nested loop joins (using indexes, if available) are supported on enclave-enabled columns using randomized encryption. For information about other differences among different products, see Confidential queries.
- In-place cryptographic operations can't be combined with any other changes of column metadata, except changing a collation within the same code page and nullability. Por exemplo, você não pode criptografar, criptografar novamente ou descriptografar uma coluna E alterar um tipo de dados da coluna em uma única instrução
ALTER TABLE/ALTER COLUMNTransact-SQL. Use two separate statements. - Using enclave-enabled keys for columns in in-memory tables isn't supported.
- As expressões que definem colunas computadas não podem executar nenhum cálculo em colunas habilitadas para enclave usando criptografia aleatória (mesmo que os cálculos estejam entre as operações suportadas listadas em Consultas confidenciais).
- Escape characters aren't supported in parameters of the LIKE operator on enclave-enabled columns using randomized encryption.
- As consultas com o operador LIKE ou um operador de comparação que tenha um parâmetro de consulta usando um dos seguintes tipos de dados (que se tornam objetos grandes após a criptografia) ignoram índices e executam verificações de tabela.
-
nchar[n]envarchar[n], se n for maior que 3967. -
char[n],varchar[n],binary[n],varbinary[n], se n for maior que 7935.
-
- Os únicos armazéns de chaves com suporte para armazenar chaves de coluna
mastercom suporte para enclave são o Repositório de Certificados do Windows e o Cofre de Chaves do Azure. - Quando você restaura um banco de dados habilitado para enclave VBS, é essencial reconfigurar a configuração do enclave VBS novamente.
Conteúdo relacionado
- Always Encrypted with secure enclaves documentation
- Azure SQL Database Always Encrypted, SIGMOD '20: Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data
- Tutorial: Introdução ao uso do Always Encrypted com enclaves seguros
- Configure and use Always Encrypted with secure enclaves
- Always Encrypted with secure enclaves demos/samples
- exemplos do SQL Server
- Computação Confidencial do Azure