Configurar a replicação geográfica e a restauração de backup para Transparent Data Encryption com chaves gerenciadas pelo cliente no nível do banco de dados
A CMK de TDE no nível do banco de dados está disponível para o Banco de Dados SQL do Azure (todas as edições do Banco de Dados SQL). Ela não está disponível para a Instância Gerenciada de SQL do Azure, SQL Servers locais, VMs do Azure e Azure Synapse Analytics [pools de SQL dedicados (antigo SQL DW)].
Neste guia, percorremos as etapas para configurar a replicação geográfica e a restauração de backup em um Banco de Dados SQL do Azure. O Banco de Dados SQL do Azure é configurado com Transparent Data Encryption (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 Azure Key Vault. O Azure Key Vault e o servidor lógico para SQL do Azure estão no mesmo locatário do Microsoft Entra para este guia, mas podem estar em locatários diferentes.
Observação
O Microsoft Entra ID era anteriormente conhecido como Azure Active Directory (Azure AD).
Depois que o banco de dados for criado ou restaurado, o menu Transparent Data Encryption no portal do Azure mostrará o novo banco de dados com as mesmas configurações que o banco de dados de origem, mas pode ter chaves ausentes. Em todos os casos em que um novo banco de dados é criado a partir de um banco de dados de origem, o número de chaves exibidas para um banco de dados de destino na lista de chaves de banco de dados adicionais do portal do Azure pode ser menor do que o número de chaves exibidas para um banco de dados de origem. Isso ocorre porque o número de chaves exibidas depende dos requisitos de recursos individuais usados para criar um banco de dados de destino. Para listar todas as chaves disponíveis para um banco de dados recém-criado, use as APIs disponíveis em Exibir as configurações de chave gerenciada pelo cliente no nível do banco de dados em um banco de dados SQL do Azure.
Criar um Banco de Dados SQL do Azure com chaves gerenciadas pelo cliente no nível do banco de dados como secundária ou cópia
Use as instruções ou os comandos a seguir para criar uma réplica secundária ou copiar o destino de um Banco de Dados SQL do Azure configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Uma identidade gerenciada atribuída pelo usuário é obrigatória para configurar uma chave gerenciada pelo cliente para Transparent Data Encryption durante a fase de criação do servidor.
Criar uma cópia de banco de dados que tenha chaves gerenciadas pelo cliente no nível do banco de dados
Para criar um banco de dados no Banco de Dados SQL do Azure como uma cópia com chaves gerenciadas pelo cliente no nível do banco de dados, siga estas etapas:
Acesse o portal do Azure e navegue até o Banco de Dados SQL do Azure configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Acesse a guia Transparent Data Encryption do menu Criptografia de dados e verifique a lista de chaves atualmente em uso pelo banco de dados.
Crie uma cópia do banco de dados selecionando Copiar no menu Visão geral do banco de dados.
O menu Criar Banco de Dados SQL – Copiar banco de dados é exibido. Use um servidor diferente para esse banco de dados, mas as mesmas configurações que o banco de dados que você está tentando copiar. Na seção Gerenciamento de Chaves de Transparent Data Encryption, selecione Configurar transparent data encryption.
Quando o menu Transparent Data Encryption for exibido, examine as configurações da CMK desse banco de dados de cópia. As configurações e as chaves devem ser preenchidas com a mesma identidade e chaves usadas no banco de dados de origem.
Selecione Aplicar para continuar e, em seguida, selecione Examinar + criar e Criar para criar o banco de dados de cópia.
Criar uma réplica secundária que tenha chaves gerenciadas pelo cliente no nível do banco de dados
Acesse o portal do Azure e navegue até o Banco de Dados SQL do Azure configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Acesse o menu Transparent Data Encryption e verifique a lista de chaves atualmente em uso pelo banco de dados.
Nas configurações de gerenciamento de dados para o banco de dados, selecione Réplicas. Selecione Criar réplica para criar uma réplica secundária do banco de dados.
O menu Criar Banco de Dados SQL – Replicação geográfica é exibido. Use um servidor secundário para esse banco de dados, mas as mesmas configurações que o banco de dados que você está tentando replicar. Na seção Gerenciamento de Chaves de Transparent Data Encryption, selecione Configurar transparent data encryption.
Quando o menu Transparent Data Encryption for exibido, examine as configurações da CMK desta réplica de banco de dados. As configurações e as chaves devem ser preenchidas com a mesma identidade e chaves usadas no banco de dados primário.
Selecione Aplicar para continuar e, em seguida, selecione Examinar + criar e Criar para criar o banco de dados de cópia.
Para saber como instalar versão atual da CLI do Azure, confira o artigo Instalar a CLI do Azure.
Prepare a lista de chaves atuais em uso pelo banco de dados primário usando o parâmetro expand-keys com current como o keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter current
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como secundário e forneça a lista preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e a ID do cliente federada para configuração do acesso entre locatários).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
az sql db replica create -g $resourceGroup -s $serverName -n $databaseName --partner-server $secondaryServer --partner-database $secondaryDatabase --partner-resource-group $secondaryResourceGroup -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys é uma lista separada por espaço de chaves recuperadas do banco de dados de origem.
Para criar uma cópia do banco de dados, use az sql db copy com os mesmos parâmetros.
# Create a copy of a database configured with database level customer-managed keys
az sql db copy -g $resourceGroup -s $serverName -n $databaseName --dest-name $secondaryDatabase -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Preencha a lista de chaves atuais em uso pelo banco de dados primário usando o comando Get-AzSqlDatabase e os parâmetros -ExpandKeyList e -KeysFilter "current". Exclua -KeysFilter se você quiser recuperar todas as chaves.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como secundário usando o comando New-AzSqlDatabaseSecondary e forneça a lista preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e a ID do cliente federada se estiver configurando o acesso entre locatários) na chamada à API usando os parâmetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessário, -FederatedClientId).
# Create a secondary replica with Active Geo Replication with the same name as the primary database
$database = Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName <SecondaryResourceGroupName> -PartnerServerName <SecondaryServerName> -AllowConnections "All" -AssignIdentity -UserAssignedIdentityId <UserAssignedIdentityId> -EncryptionProtector <CustomerManagedKeyId> -FederatedClientId <FederatedClientId>
-KeyList $database.Keys.Keys
Para criar uma cópia do banco de dados, New-AzSqlDatabaseCopy pode ser usado com os mesmos parâmetros.
Veja um exemplo de um modelo do ARM que cria uma réplica secundária e uma cópia de um Banco de Dados SQL do Azure configurada com uma identidade gerenciada atribuída pelo usuário e a TDE gerenciada pelo cliente no nível do banco de dados.
Preencha a lista de chaves atuais em uso pelo banco de dados primário usando a seguinte solicitação de API REST:
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'))
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como secundário e forneça a lista preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e a ID do cliente federada, se estiver configurando o acesso entre locatários) no modelo do ARM como o parâmetro keys_to_add.
Restaurar um Banco de Dados SQL do Azure com chaves gerenciadas pelo cliente no nível do banco de dados
Esta seção orienta você nas etapas para restaurar um Banco de Dados SQL do Azure configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Uma identidade gerenciada atribuída pelo usuário é obrigatória para configurar uma chave gerenciada pelo cliente para Transparent Data Encryption durante a fase de criação do servidor.
Recuperação pontual
A seção a seguir descreve como restaurar um banco de dados configurado com chaves gerenciadas pelo cliente no nível do banco de dados em um determinado momento. Para saber mais sobre a recuperação de backup do Banco de Dados SQL, consulte Recuperar um banco de dados SQL .
Acesse o portal do Azure e navegue até o Banco de Dados SQL do Azure configurado com chaves gerenciadas pelo cliente no nível do banco de dados que você deseja restaurar.
Para restaurar o banco de dados para um ponto no tempo, selecione Restaurar no menu Visão geral do banco de dados.
O menu Criar Banco de Dados SQL – Restaurar banco de dados é exibido. Preencha os detalhes necessários da origem e do banco de dados. Na seção Gerenciamento de Chaves de Transparent Data Encryption, selecione Configurar transparent data encryption.
Quando o menu Transparent Data Encryption for exibido, examine as configurações da CMK do banco de dados. As configurações e as chaves devem ser preenchidas com a mesma identidade e chaves usadas no banco de dados que você está tentando restaurar.
Selecione Aplicar para continuar e, em seguida, selecione Examinar + criar e Criar para criar o banco de dados de cópia.
Para saber como instalar versão atual da CLI do Azure, confira o artigo Instalar a CLI do Azure.
Preencha a lista de chaves usadas pelo banco de dados primário usando o parâmetro expand-keys com o momento da restauração como keys-filter.
az sql db show --name $databaseName --resource-group $resourceGroup --server $serverName --expand-keys --keys-filter $timestamp
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como um destino de restauração e forneça a lista preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e a ID do cliente federada para configurar o acesso entre locatários).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys é uma lista separada por espaço de chaves recuperadas do banco de dados de origem.
Preencha a lista de chaves usadas pelo banco de dados primário usando o comando Get-AzSqlDatabase e os parâmetros -ExpandKeyList e -KeysFilter "2023-01-01" (2023-01-01 é um exemplo do momento em que você deseja restaurar o banco de dados). Exclua -KeysFilter se você quiser recuperar todas as chaves.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro -FromPointInTimeBackup e forneça a lista preenchida de chaves obtida nas etapas acima e a identidade acima (e a ID do cliente federada para configurar o acesso entre locatários) na chamada à API usando os parâmetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessário, -FederatedClientId).
A seção a seguir descreve como restaurar um banco de dados excluído que foi configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Para saber mais sobre a recuperação de backup do Banco de Dados SQL, consulte Recuperar um banco de dados SQL .
Acesse o portal do Azure e navegue até o servidor lógico do banco de dados excluído que você deseja restaurar. Em Gerenciamento de dados, selecione Bancos de dados excluídos.
Selecione o banco de dados excluído que você deseja restaurar.
O menu Criar Banco de Dados SQL – Restaurar banco de dados é exibido. Preencha os detalhes necessários da origem e do banco de dados. Na seção Gerenciamento de Chaves de Transparent Data Encryption, selecione Configurar transparent data encryption.
Quando o menu Transparent Data Encryption for exibido, configure as seções Identidade Gerenciada Atribuída pelo Usuário, Chave Gerenciada pelo Cliente e Chaves de Banco de Dados Adicionais para o seu banco de dados.
Selecione Aplicar para continuar e, em seguida, selecione Examinar + criar e Criar para criar o banco de dados de cópia.
Para saber como instalar versão atual da CLI do Azure, confira o artigo Instalar a CLI do Azure.
Preencha a lista de chaves usadas pelo banco de dados removido usando o parâmetro expand-keys. É recomendável passar todas as chaves que o banco de dados de origem estava usando. Você também pode tentar uma restauração com as chaves fornecidas no momento da exclusão usando o parâmetro keys-filter.
az sql db show-deleted --name $databaseName --resource-group $resourceGroup --server $serverName --restorable-dropped-database-id "databaseName,133201549661600000" --expand-keys
Importante
restorable-dropped-database-id pode ser recuperado listando todos os bancos de dados removidos restauráveis no servidor e tem o formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como um destino de restauração e forneça a lista preenchida de chaves obtidas do banco de dados de origem excluído e a identidade acima (e a ID do cliente federada para configurar o acesso entre locatários).
# Create a restored database
az sql db restore --dest-name $destName --name $databaseName --resource-group $resourceGroup --server $serverName --subscription $subscriptionId --time $timestamp -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys --deleted-time "2023-02-06T11:02:46.160000+00:00"
Importante
$keys é uma lista de chaves recuperadas do banco de dados de origem separadas por espaço.
Preencha a lista de chaves usadas pelo banco de dados primário usando o comando Get-AzSqlDeletedDatabaseBackup e o parâmetro -ExpandKeyList. É recomendável passar todas as chaves que o banco de dados de origem estava usando. Você também pode tentar uma restauração com as chaves fornecidas no momento da exclusão usando o parâmetro -KeysFilter.
DatabaseId pode ser recuperado listando todos os bancos de dados removidos restauráveis no servidor e tem o formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro -FromDeletedDatabaseBackup e forneça a lista preenchida de chaves obtidas nas etapas acima e a identidade acima (e a ID do cliente federado se estiver configurando o acesso entre locatários) na chamada à API usando os parâmetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessário, -FederatedClientId).
A seção a seguir descreve como restaurar um backup replicado geograficamente do banco de dados configurado com chaves gerenciadas pelo cliente no nível do banco de dados. Para saber mais sobre a recuperação de backup do Banco de Dados SQL, consulte Recuperar um banco de dados SQL .
Acesse o portal do Azure e navegue até o servidor lógico no qual você deseja restaurar o banco de dados.
No menu Visão geral, selecione Criar banco de dados.
O menu Criar Banco de Dados SQL é exibido. Preencha as guias Básico e rede para o novo banco de dados. Em Configurações adicionais, selecione Backup para a seção Usar dados existentes e selecione um backup replicado geograficamente.
Vá para a guia Segurança. Na seção Gerenciamento de Chaves de Transparent Data Encryption, selecione Configurar transparent data encryption.
Quando o menu Transparent Data Encryption for exibido, selecione Chave gerenciada pelo cliente (CMK) no nível do banco de dados. A identidade gerenciada atribuída pelo usuário, a chave gerenciada pelo cliente e as chaves de banco de dados adicionais devem corresponder ao banco de dados de origem que você deseja restaurar. Verifique se a identidade gerenciada atribuída pelo usuário tem acesso ao cofre de chaves que contém a chave gerenciada pelo cliente que foi usada no backup.
Selecione Aplicar para continuar e, em seguida, selecione Examinar + criar e Criar para criar o banco de dados de backup.
Para saber como instalar versão atual da CLI do Azure, confira o artigo Instalar a CLI do Azure.
Preencha a lista de chaves usadas pelo backup com replicação geográfica do banco de dados configurado com chaves gerenciadas pelo cliente no nível do banco de dados usando o parâmetro expand-keys.
az sql db geo-backup --database-name $databaseName --g $resourceGroup --server $serverName --expand-keys
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Crie um banco de dados como um destino de restauração geográfica e forneça a lista preenchida de chaves obtida do banco de dados de origem excluído e a identidade acima (e a ID do cliente federada para configurar o acesso entre locatários).
# Create a geo restored database
az sql db geo-backup restore --geo-backup-id "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/recoverableDatabases/{databaseName}" --dest-database $destName --resource-group $resourceGroup --dest-server $destServerName -i --encryption-protector $encryptionProtector --user-assigned-identity-id $umi --keys $keys
Importante
$keys é uma lista de chaves recuperadas do banco de dados de origem separadas por espaço.
Preencha a lista de chaves usadas pelo banco de dados primário usando o comando Get-AzSqlDatabaseGeoBackup e o -ExpandKeyList para recuperar todas as chaves.
DatabaseId pode ser recuperado listando todos os bancos de dados removidos restauráveis no servidor e tem o formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federada se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro -FromGeoBackup e forneça a lista preenchida de chaves obtidas nas etapas acima e a identidade acima (e a ID do cliente federado se estiver configurando o acesso entre locatários) na chamada à API usando os parâmetros -KeyList, -AssignIdentity, -UserAssignedIdentityId, -EncryptionProtector (e, se necessário, -FederatedClientId).
Os backups LTR (retenção de longo prazo) não fornecem a lista de chaves usadas pelo backup. Para restaurar um backup LTR, todas as chaves usadas pelo banco de dados de origem precisam ser passadas para o destino de restauração LTR.
Opção de rotação automática de chave para bancos de dados copiados ou restaurados
Os bancos de dados recém-copiados ou restaurados podem ser configurados para girar automaticamente a chave gerenciada pelo cliente usada para a Transparent Data Encryption. Para obter informações sobre como habilitar a rotação automática de chave no portal do Azure ou usando APIs, confira Rotação automática da chave no nível de banco de dados.
Próximas etapas
Verifique a seguinte documentação em várias operações de CMK no nível do banco de dados: