O TDE CMK de nível de banco de dados está disponível para o Banco de Dados SQL do Azure (todas as edições do Banco de Dados SQL). Ele não está disponível para Instância Gerenciada SQL do Azure, SQL Server local, VMs do Azure e Azure Synapse Analytics (pools SQL dedicados (anteriormente SQL DW)).
O mesmo guia pode ser aplicado para configurar chaves gerenciadas pelo cliente no nível do banco de dados no mesmo locatário, excluindo o parâmetro de ID do cliente federado. Para obter mais informações sobre chaves gerenciadas pelo cliente no nível do banco de dados, consulte Criptografia de dados transparente (TDE) com chaves gerenciadas pelo cliente no nível do banco de dados.
Neste guia, percorremos as etapas para criar, atualizar e recuperar um Banco de Dados SQL do Azure com criptografia de dados transparente (TDE) e chaves gerenciadas pelo cliente (CMK) no nível do banco de dados, utilizando uma identidade gerenciada atribuída pelo usuário para acessar o Cofre de Chaves do Azure. O Cofre da Chave do Azure está em um locatário do Microsoft Entra diferente do Banco de Dados SQL do Azure. Para obter mais informações, consulte Chaves gerenciadas pelo cliente entre locatários com criptografia de dados transparente.
Este guia pressupõe que você tenha dois locatários do Microsoft Entra.
O primeiro consiste no recurso Banco de Dados SQL do Azure, um aplicativo Microsoft Entra multilocatário e uma identidade gerenciada atribuída pelo usuário.
O segundo locatário abriga o Cofre da Chave do Azure.
Para obter instruções abrangentes sobre como configurar a CMK entre locatários e as permissões RBAC necessárias para configurar aplicativos Microsoft Entra e o Azure Key Vault, consulte um dos seguintes guias:
As permissões RBAC necessárias para CMK no nível do banco de dados são as mesmas permissões necessárias para a CMK no nível do servidor. Especificamente, as mesmas permissões RBAC que são aplicáveis ao usar o Cofre de Chaves do Azure, identidades gerenciadas e CMK entre locatários para TDE no nível do servidor são aplicáveis no nível do banco de dados. Para obter mais informações sobre gerenciamento de chaves e política de acesso, consulte Gerenciamento de chaves.
Recursos necessários no primeiro locatário
Para o propósito deste tutorial, assumiremos que o primeiro locatário pertence a um fornecedor independente de software (ISV) e o segundo locatário é de seu cliente. Para obter mais informações sobre esse cenário, consulte Chaves gerenciadas pelo cliente entre locatários com criptografia de dados transparente.
Antes de podermos configurar o TDE para o Banco de Dados SQL do Azure com uma CMK entre locatários, precisamos ter um aplicativo Microsoft Entra multilocatário configurado com uma identidade gerenciada atribuída pelo usuário atribuída como uma credencial de identidade federada para o aplicativo. Siga um dos guias nos Pré-requisitos.
No primeiro locatário onde você deseja criar o Banco de Dados SQL do Azure, crie e configure um aplicativo Microsoft Entra multilocatário.
Registre o nome e a ID do aplicativo. Isso pode ser encontrado no portal>do Azure, aplicativos Microsoft Entra ID>Enterprise e procure o aplicativo criado.
Recursos necessários no segundo locatário
No segundo locatário onde o Cofre da Chave do Azure reside, crie uma entidade de serviço (aplicativo) usando a ID do aplicativo registrado do primeiro locatário. Aqui estão alguns exemplos de como registrar o aplicativo multilocatário. Substitua <TenantID> e pela ID do locatário do cliente da ID do Microsoft Entra e <ApplicationID>pela ID do aplicativo multilocatário, respectivamente:
Criar um novo Banco de Dados SQL do Azure com chaves gerenciadas pelo cliente no nível do banco de dados
A seguir estão exemplos para criar um banco de dados no Banco de Dados SQL do Azure com uma identidade gerenciada atribuída pelo usuário e como definir uma chave gerenciada pelo cliente entre locatários no nível do banco de dados. A identidade gerenciada atribuída pelo usuário é necessária para configurar uma chave gerenciada pelo cliente para criptografia de dados transparente durante a fase de criação do banco de dados.
Se você ainda não estiver conectado ao portal do Azure, entre quando solicitado.
Em Bancos de dados SQL, deixe Tipo de recurso definido como Banco de dados único e selecione Criar.
Na guia Noções básicas do formulário Criar Banco de Dados SQL, em Detalhes do projeto, selecione a Assinatura do Azure, o grupo de recursos e o Servidor desejados para seu banco de dados. Em seguida, use um nome exclusivo para o nome do banco de dados. Se você não criou um servidor lógico para o Banco de Dados SQL do Azure, consulte Criar servidor configurado com TDE com chave gerenciada pelo cliente (CMK) entre locatários para referência.
Quando chegar à guia Segurança , selecione Configurar criptografia de dados transparente.
No menu Criptografia de dados transparente, selecione Chave gerenciada pelo cliente (CMK) no nível do banco de dados.
Para Identidade Gerenciada Atribuída pelo Usuário, selecione Configurar para habilitar uma identidade de banco de dados e Adicionar uma identidade gerenciada atribuída ao recurso se uma identidade desejada não estiver listada no menu Identidade. Em seguida, selecione Aplicar.
No menu Criptografia de dados transparente, selecione Alterar chave. Selecione a Assinatura, o Cofre da chave, a Chave e a Versão desejados para a chave gerenciada pelo cliente a ser usada para TDE. Selecione o botão Selecionar. Depois de selecionar uma chave, você também pode adicionar chaves de banco de dados adicionais, conforme necessário, usando o URI ( identificador de objeto) do cofre da Chave do Azure no menu Criptografia de dados transparente.
A rotação automática de chaves também pode ser ativada no nível do banco de dados usando a caixa de seleção Rotação automática de chaves no menu Criptografia dedados transparente.
Selecione Aplicar para continuar a criar o banco de dados.
Selecione Rever + criar na parte inferior da página
Na página Rever + criar, depois de rever, selecione Criar.
Nota
A criação do banco de dados falhará se a identidade gerenciada atribuída pelo usuário não tiver as permissões corretas habilitadas no cofre de chaves. A identidade gerenciada atribuída pelo usuário precisará das permissões Get, wrapKey e unwrapKey no cofre de chaves. Para obter mais informações, consulte Identidades gerenciadas para criptografia de dados transparente com chave gerenciada pelo cliente.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Crie um banco de dados configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente entre locatários usando o comando az sql db create . O identificador de chave do segundo locatário pode ser usado no encryption-protector campo. A ID do aplicativo multilocatário pode ser usada no federated-client-id campo. O --encryption-protector-auto-rotation parâmetro pode ser usado para habilitar a rotação automática de chaves no nível do banco de dados.
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Crie um banco de dados configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente entre locatários no nível do banco de dados usando o PowerShell.
<ResourceGroupName>: Nome do grupo de recursos para o seu servidor lógico SQL do Azure
<DatabaseName>: Usar um nome exclusivo do banco de dados SQL do Azure
<ServerName>: Usar um nome de servidor lógico SQL exclusivo do Azure
<UserAssignedIdentityId>: A lista de identidades gerenciadas atribuídas pelo usuário a serem atribuídas ao servidor (pode ser uma ou várias)
<CustomerManagedKeyId>: O identificador de chave do segundo inquilino Key Vault
<FederatedClientId>: A ID do aplicativo multilocatário
-EncryptionProtectorAutoRotation: Pode ser usado para habilitar a rotação automática de chaves no nível do banco de dados
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Aqui está um exemplo de um modelo ARM que cria um Banco de Dados SQL do Azure com uma identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente no nível do banco de dados. Para uma CMK entre locatários, use o Identificador de Chave do segundo cofre de chave do locatário e a ID do Aplicativo do aplicativo multilocatário.
Use uma implantação personalizada no portal do Azure e crie seu próprio modelo no editor. Em seguida, salve a configuração depois de colar no exemplo.
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Atualizar um Banco de Dados SQL do Azure existente com chaves gerenciadas pelo cliente no nível do banco de dados
Seguem-se exemplos de atualização de uma base de dados existente na Base de Dados SQL do Azure com uma identidade gerida atribuída pelo utilizador e como definir uma chave gerida pelo cliente entre inquilinos ao nível da base de dados. A identidade gerenciada atribuída pelo usuário é necessária para configurar uma chave gerenciada pelo cliente para criptografia de dados transparente durante a fase de criação do banco de dados.
Em Segurança, selecione Identidade. Adicione uma identidade gerenciada atribuída ao usuário para este banco de dados e selecione Salvar
Agora vá para o menu Criptografia de dados em Segurança para seu banco de dados. Selecione Chave gerenciada pelo cliente (CMK) no nível do banco de dados. A Identidade do Banco de Dados para o banco de dados já deve estar Habilitada , pois você configurou a identidade na última etapa.
Selecione Alterar chave. Selecione a Assinatura, o Cofre da chave, a Chave e a Versão desejados para a chave gerenciada pelo cliente a ser usada para TDE. Selecione o botão Selecionar. Depois de selecionar uma chave, você também pode adicionar chaves de banco de dados adicionais, conforme necessário, usando o URI ( identificador de objeto) do cofre da Chave do Azure no menu Criptografia de Dados .
Marque a caixa de seleção Rotação automática de chaves se quiser habilitar a rotação automática de chaves no nível do banco de dados.
Selecione Guardar.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Atualize um banco de dados configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente entre locatários usando o comando az sql db create . O identificador de chave do segundo locatário pode ser usado no encryption-protector campo. A ID do aplicativo multilocatário pode ser usada no federated-client-id campo.
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. O --encryption-protector-auto-rotation parâmetro pode ser usado para habilitar a rotação automática de chaves no nível do banco de dados.
A lista é uma lista separada por espaço de chaves que devem ser adicionadas no banco de dados e $keysToRemove é uma lista $keys separada por espaço de chaves que devem ser removidas do banco de dados
Atualize um banco de dados configurado com identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente entre locatários no nível do banco de dados usando o PowerShell.
<ResourceGroupName>: Nome do grupo de recursos para o seu servidor lógico SQL do Azure
<DatabaseName>: Usar um nome exclusivo do banco de dados SQL do Azure
<ServerName>: Usar um nome de servidor lógico SQL exclusivo do Azure
<UserAssignedIdentityId>: A lista de identidades gerenciadas atribuídas pelo usuário a serem atribuídas ao servidor (pode ser uma ou várias)
<CustomerManagedKeyId>: O identificador de chave do segundo inquilino Key Vault
<FederatedClientId>: A ID do aplicativo multilocatário
<ListOfKeys>: A lista separada por vírgulas das chaves gerenciadas pelo cliente no nível do banco de dados a serem adicionadas ao banco de dados
<ListOfKeysToRemove>: A lista separada por vírgulas das chaves gerenciadas pelo cliente no nível do banco de dados a serem removidas do banco de dados
-EncryptionProtectorAutoRotation: Pode ser usado para habilitar a rotação automática de chaves no nível do banco de dados
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Aqui está um exemplo de um modelo ARM que atualiza um Banco de Dados SQL do Azure com uma identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente no nível do banco de dados. Para uma CMK entre locatários, use o Identificador de Chave do Cofre da Chave do segundo locatário e a ID do Aplicativo do aplicativo multilocatário.
Use uma implantação personalizada no portal do Azure e crie seu próprio modelo no editor. Em seguida, salve a configuração depois de colar no exemplo.
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI se parece com /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Para remover uma chave do banco de dados, o valor do dicionário de chaves de uma chave específica deve ser passado como nulo. Por exemplo, "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Exibir as configurações de chave gerenciadas pelo cliente no nível do banco de dados em um Banco de Dados SQL do Azure
A seguir estão exemplos de recuperação das chaves gerenciadas pelo cliente no nível do banco de dados para um banco de dados. Por padrão, o recurso Microsoft.Sql/servers/databases ARM mostra apenas o protetor TDE e a identidade gerenciada configurados no banco de dados. Para expandir a lista completa de chaves, use o parâmetro, -ExpandKeyList. Além disso, filtros como -KeysFilter "current" e um valor point-in-time (por exemplo, 2023-01-01) podem ser usados para recuperar as chaves atuais usadas e as chaves usadas no passado em um ponto específico no tempo. Esses filtros são suportados apenas para consultas de banco de dados individuais e não para consultas no nível do servidor.
Para exibir as chaves gerenciadas pelo cliente no nível do banco de dados no portal do Azure, vá para o menu Criptografia de Dados do recurso do banco de dados SQL.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Use a API REST 2022-08-01-preview para o Banco de Dados SQL do Azure.
Recupere as configurações básicas de chave gerenciadas pelo cliente no nível do banco de dados de um banco de dados.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Recupere as configurações básicas de chave gerenciadas pelo cliente no nível do banco de dados de um banco de dados e todas as chaves já adicionadas
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Recuperar as configurações básicas de chave gerenciadas pelo cliente no nível do banco de dados de um banco de dados e as chaves atuais em uso
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Recuperar as configurações básicas de chave gerenciadas pelo cliente no nível do banco de dados de um banco de dados e as chaves em uso em um determinado momento
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
Listar todas as chaves em um servidor lógico
Para buscar a lista de todas as chaves (e não apenas o protetor primário) usadas por cada banco de dados no servidor, ela deve ser consultada individualmente com os filtros de chave. A seguir está um exemplo de uma consulta do PowerShell para listar cada chave no servidor lógico.
Revalidar a chave gerenciada pelo cliente no nível do banco de dados em um Banco de Dados SQL do Azure
No caso de um protetor TDE inacessível, conforme descrito em Transparent Data Encryption (TDE) com CMK, uma vez que o acesso à chave tenha sido corrigido, uma operação de revalidação de chave pode ser usada para tornar o banco de dados acessível. Consulte as instruções ou comandos a seguir para obter exemplos.
Usando o portal do Azure, localize seu recurso de banco de dados SQL. Depois de selecionar o recurso do banco de dados SQL, vá para a guia Criptografia de Dados Transparente do menu Criptografia de Dados nas Configurações de segurança. Se o banco de dados tiver perdido o acesso ao Cofre da Chave do Azure, um botão Revalidar chave será exibido e você terá a opção de revalidar a chave existente selecionando Repetir chave existente ou outra chave selecionando Selecionar chave de backup.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Use a API REST 2022-08-01-preview para o Banco de Dados SQL do Azure.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Reverter a chave gerenciada pelo cliente no nível do banco de dados em um Banco de Dados SQL do Azure
Um banco de dados configurado com CMK no nível do banco de dados pode ser revertido para a criptografia no nível do servidor se o servidor estiver configurado com uma chave gerenciada pelo serviço usando os seguintes comandos.
Para reverter a configuração de chave gerenciada pelo cliente no nível do banco de dados para a chave de criptografia no nível do servidor no portal do Azure, vá para a guia Criptografia de Dados Transparente do menu Criptografia de Dados do recurso do banco de dados SQL. Selecione Chave de criptografia no nível do servidor e selecione Salvar para salvar as configurações.
Nota
Para usar a configuração de chave de criptografia no nível do servidor para bancos de dados individuais, o servidor lógico do Banco de Dados SQL do Azure deve ser configurado para usar a chave gerenciada pelo Serviço para TDE.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Use a API REST 2022-08-01-preview para o Banco de Dados SQL do Azure.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Próximos passos
Verifique a seguinte documentação sobre várias operações CMK no nível do banco de dados: