Configure a replicação geográfica e a restauração de backup para criptografia de dados transparente com chaves gerenciadas pelo cliente no nível do banco de dados
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)).
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 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 e o servidor lógico para o Azure SQL estão no mesmo locatário do Microsoft Entra para este guia, mas podem estar em locatários diferentes.
O mesmo guia pode ser aplicado para configurar chaves gerenciadas pelo cliente no nível do banco de dados em um locatário diferente, incluindo o parâmetro de ID do cliente federado. Para obter mais informações, consulte Gerenciamento de identidades e chaves para TDE com chaves gerenciadas pelo cliente no nível do banco de dados.
Importante
Depois que o banco de dados for criado ou restaurado, o menu Criptografia de Dados Transparente no portal do Azure mostrará o novo banco de dados com as mesmas configurações do 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 gerenciadas 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 comandos a seguir para criar uma réplica secundária ou um destino de cópia 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 é necessária para configurar uma chave gerenciada pelo cliente para criptografia de dados transparente durante a fase de criação do banco de dados.
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:
Vá para 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 Criptografia de Dados Transparente do menu Criptografia de Dados e verifique a lista de chaves atuais 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 do banco de dados que você está tentando copiar. Na seção Gerenciamento de chaves de criptografia de dados transparente, selecione Configurar criptografia de dados transparente.
Quando o menu Criptografia de dados transparente for exibido, revise as configurações de CMK para esse banco de dados de cópia. As configurações e 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 Rever + criar e Criar para criar a cópia da base de dados.
Criar uma réplica secundária que tenha chaves gerenciadas pelo cliente no nível do banco de dados
Vá para 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 Criptografia de Dados Transparente e verifique a lista de chaves atuais em uso pelo banco de dados.
Em 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 - Réplica Geográfica é exibido. Use um servidor secundário para esse banco de dados, mas as mesmas configurações do banco de dados que você está tentando replicar. Na seção Gerenciamento de chaves de criptografia de dados transparente, selecione Configurar criptografia de dados transparente.
Quando o menu Criptografia de Dados Transparente for exibido, examine as configurações de CMK para essa réplica de banco de dados. As configurações e 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 Rever + criar e Criar para criar a cópia da base de dados.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Pré-preencha a lista de chaves atuais em uso pelo banco de dados primário usando o expand-keys parâmetro 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 federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como secundário e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e ID de cliente federado se configurar o 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, az sql db copy pode ser usado 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
Pré-preencha a lista de chaves atuais em uso pelo banco de dados primário usando o comando Get-AzSqlDatabase e os -ExpandKeyList parâmetros and -KeysFilter "current" . Exclua -KeysFilter se desejar recuperar todas as chaves.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como secundário usando o comando New-AzSqlDatabaseSecondary e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e ID de cliente federado se configurar o acesso entre locatários) na chamada de API usando os -KeyListparâmetros , , , -EncryptionProtector (e se necessário, -AssignIdentity-FederatedClientId-UserAssignedIdentityId).
# 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.
Aqui está um exemplo de um modelo ARM que cria uma réplica secundária e uma cópia de um Banco de Dados SQL do Azure configurado com uma identidade gerenciada atribuída pelo usuário e TDE gerenciada pelo cliente no nível do banco de dados.
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.
Pré-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 federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como secundário e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e ID do cliente federado se configurar o acesso entre locatários) no modelo ARM como 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ê pelas 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 é necessária para configurar uma chave gerenciada pelo cliente para criptografia de dados transparente durante a fase de criação do banco de dados.
Restauro para um ponto anterior no tempo
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 para um determinado ponto no tempo. Para saber mais sobre a recuperação de backup para o Banco de dados SQL, consulte Recuperar um banco de dados no Banco de dados SQL.
Vá para 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 de origem e banco de dados necessários. Na seção Gerenciamento de chaves de criptografia de dados transparente, selecione Configurar criptografia de dados transparente.
Quando o menu Criptografia de dados transparente for exibido, revise as configurações de CMK para o banco de dados. As configurações e 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 Rever + criar e Criar para criar a cópia da base de dados.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Pré-preencha a lista de chaves usadas pelo banco de dados primário usando o parâmetro com seu ponto de restauração no tempo como o expand-keyskeys-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 federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como um destino de restauração e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem e a identidade acima (e ID de cliente federado se 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.
Pré-preencha a lista de chaves usadas pelo banco de dados primário usando o comando Get-AzSqlDatabase e os -ExpandKeyList parâmetros e -KeysFilter "2023-01-01" (2023-01-01 é um exemplo do ponto no tempo para o qual você deseja restaurar o banco de dados). Exclua -KeysFilter se desejar recuperar todas as chaves.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federado se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro e forneça a lista pré-preenchida de chaves obtidas nas etapas acima e a identidade acima (e ID de cliente federado se configurar o -FromPointInTimeBackup acesso entre locatários) na chamada de API usando os -KeyListparâmetros , , , -EncryptionProtector (e se necessário, -AssignIdentity-UserAssignedIdentityId-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 para o Banco de dados SQL, consulte Recuperar um banco de dados no Banco de dados SQL.
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 de origem e banco de dados necessários. Na seção Gerenciamento de chaves de criptografia de dados transparente, selecione Configurar criptografia de dados transparente.
Quando o menu Criptografia de Dados Transparente for exibido, configure a seção Identidade Gerenciada Atribuída pelo Usuário, Chave Gerenciada pelo Cliente e Chaves de Banco de Dados Adicionais para seu banco de dados.
Selecione Aplicar para continuar e, em seguida, selecione Rever + criar e Criar para criar a cópia da base de dados.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Pré-preencha a lista de chaves usadas pelo banco de dados descartado usando o expand-keys parâmetro. É 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 keys-filter parâmetro.
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 descartados restauráveis no servidor e é do formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como destino de restauração e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem excluído e a identidade acima (e ID de cliente federado se 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 separada por espaço de chaves recuperadas do banco de dados de origem.
Pré-preencha a lista de chaves usadas pelo banco de dados primário usando o comando Get-AzSqlDeletedDatabaseBackup e o -ExpandKeyList parâmetro. É 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 -KeysFilter parâmetro.
DatabaseId pode ser recuperado listando todos os bancos de dados descartados restauráveis no servidor e é do formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federado se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro e forneça a lista pré-preenchida de chaves obtidas nas etapas acima e a identidade acima (e ID de cliente federado se configurar o -FromDeletedDatabaseBackup acesso entre locatários) na chamada de API usando os -KeyListparâmetros , , , -EncryptionProtector (e se necessário, -AssignIdentity-UserAssignedIdentityId-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 para o Banco de dados SQL, consulte Recuperar um banco de dados no Banco de dados SQL.
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 seu 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 criptografia de dados transparente, selecione Configurar criptografia de dados transparente.
Quando o menu Criptografia de dados transparente 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 Rever + criar e Criar para criar a base de dados de cópia de segurança.
Para obter informações sobre como instalar a versão atual da CLI do Azure, consulte Instalar o artigo da CLI do Azure.
Pré-preencha a lista de chaves usadas pelo backup geográfico do banco de dados configurado com chaves gerenciadas pelo cliente no nível do banco de dados usando o expand-keys parâmetro.
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 federado se estiver configurando o acesso entre locatários).
Crie um novo banco de dados como um destino de restauração geográfica e forneça a lista pré-preenchida de chaves obtidas do banco de dados de origem excluído e a identidade acima (e ID de cliente federado se 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 separada por espaço de chaves recuperadas do banco de dados de origem.
Pré-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 descartados restauráveis no servidor e é do formato databaseName,deletedTimestamp.
Selecione a identidade gerenciada atribuída pelo usuário (e a ID do cliente federado se estiver configurando o acesso entre locatários).
Use o comando Restore-AzSqlDatabase com o parâmetro e forneça a lista pré-preenchida de chaves obtidas nas etapas acima e a identidade acima (e ID de cliente federado se configurar o -FromGeoBackup acesso entre locatários) na chamada de API usando os -KeyListparâmetros , , , -EncryptionProtector (e se necessário, -AssignIdentity-UserAssignedIdentityId-FederatedClientId).
Os backups de retenção de longo prazo (LTR) 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 devem ser passadas para o destino de restauração LTR.
Opção de rotação automática de chaves 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 criptografia de dados transparente. Para obter informações sobre como habilitar a rotação automática de chaves no portal do Azure ou usando APIs, consulte Rotação automática de chaves no nível do banco de dados.
Próximos passos
Verifique a seguinte documentação sobre várias operações CMK no nível do banco de dados: