Como implementar a recuperação após desastre através do serviço de cópia de segurança e restauro na Gestão de API do Azure
APLICA-SE A: Developer | Básico | Padrão | Prémio
Ao publicar e gerenciar suas APIs por meio do Gerenciamento de API do Azure, você está aproveitando a tolerância a falhas e os recursos de infraestrutura que, de outra forma, projetaria, implementaria e gerenciaria manualmente. A plataforma Azure atenua uma grande fração de falhas potenciais a uma fração do custo.
Para se recuperar de problemas de disponibilidade que afetam seu serviço de Gerenciamento de API, esteja pronto para reconstituir seu serviço em outra região a qualquer momento. Dependendo do seu objetivo de tempo de recuperação, convém manter um serviço em espera em uma ou mais regiões. Você também pode tentar manter sua configuração e conteúdo sincronizados com o serviço ativo de acordo com seu objetivo de ponto de recuperação. Os recursos de backup e restauração de gerenciamento de API fornecem os blocos de construção necessários para implementar a estratégia de recuperação de desastres.
As operações de backup e restauração também podem ser usadas para replicar a configuração do serviço de Gerenciamento de API entre ambientes operacionais, por exemplo, desenvolvimento e preparação. Tenha cuidado que os dados de tempo de execução, como usuários e assinaturas, também serão copiados, o que nem sempre pode ser desejável.
Este artigo mostra como automatizar as operações de backup e restauração de sua instância de Gerenciamento de API usando uma conta de armazenamento externo. As etapas mostradas aqui usam os cmdlets Backup-AzApiManagement e Restore-AzApiManagement do Azure PowerShell ou o Api Management Service - Backup and Api Management Service - Restore REST APIs.
Aviso
Cada cópia de segurança expira após 30 dias. Se você tentar restaurar um backup após o período de expiração de 30 dias ter expirado, a restauração falhará com uma Cannot restore: backup expired
mensagem.
Importante
A operação de restauração não altera a configuração personalizada do nome do host do serviço de destino. Recomendamos usar o mesmo nome de host personalizado e certificado TLS para serviços ativos e em espera, para que, após a conclusão da operação de restauração, o tráfego possa ser redirecionado para a instância em espera por uma simples alteração CNAME DNS.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Pré-requisitos
Uma instância de serviço de Gerenciamento de API. Se você não tiver uma, consulte Criar uma instância de serviço de Gerenciamento de API.
Uma conta de armazenamento do Azure. Se não tiver uma, consulte Criar uma conta de armazenamento.
- Crie um contêiner na conta de armazenamento para armazenar os dados de backup.
A versão mais recente do Azure PowerShell, se você planeja usar cmdlets do Azure PowerShell. Se ainda não o fez, instale o Azure PowerShell.
Configurar o acesso à conta de armazenamento
Ao executar uma operação de backup ou restauração, você precisa configurar o acesso à conta de armazenamento. O Gerenciamento de API dá suporte a dois mecanismos de acesso ao armazenamento: uma chave de acesso do Armazenamento do Azure ou uma identidade gerenciada do Gerenciamento de API.
Configurar chave de acesso à conta de armazenamento
O Azure gera duas chaves de acesso de conta de armazenamento de 512 bits para cada conta de armazenamento. Essas chaves podem ser usadas para autorizar o acesso aos dados em sua conta de armazenamento por meio da autorização de Chave Compartilhada. Para visualizar, recuperar e gerenciar as chaves, consulte Gerenciar chaves de acesso da conta de armazenamento.
Configurar identidade gerenciada do Gerenciamento de API
Nota
O uso de uma identidade gerenciada pelo Gerenciamento de API para operações de armazenamento durante o backup e a restauração é suportado na versão 2021-04-01-preview
da API REST de Gerenciamento de API ou posterior.
Habilite uma identidade gerenciada atribuída pelo sistema ou pelo usuário para o Gerenciamento de API em sua instância de Gerenciamento de API.
- Se você habilitar uma identidade gerenciada atribuída pelo usuário, anote a ID do Cliente da identidade.
- Se você fizer backup e restaurar para diferentes instâncias de Gerenciamento de API, habilite uma identidade gerenciada nas instâncias de origem e de destino.
Atribua a identidade à função de Colaborador de Dados de Blob de Armazenamento , com escopo para a conta de armazenamento usada para backup e restauração. Para atribuir a função, use o portal do Azure ou outras ferramentas do Azure.
Fazer backup de um serviço de Gerenciamento de API
Entre com o Azure PowerShell.
Nos seguintes exemplos:
- Uma instância de Gerenciamento de API chamada myapim está no grupo de recursos apimresourcegroup.
- Uma conta de armazenamento chamada backupstorageaccount está no grupo de recursos storageresourcegroup. A conta de armazenamento tem um contêiner chamado backups.
- Um blob de backup será criado com o nome ContosoBackup.apimbackup.
Definir variáveis no PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acesso usando chave de acesso de armazenamento
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $blobName
Acesso usando identidade gerenciada
Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.
Acesso usando identidade gerenciada atribuída ao sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acesso usando identidade gerenciada atribuída pelo usuário
Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos identityresourcegroup.
$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";
$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid
O backup é uma operação de longa execução que pode levar vários minutos para ser concluída. Durante esse tempo, o gateway de API continua a lidar com solicitações, mas o estado do serviço é Atualizando.
Restaurar um serviço de Gerenciamento de API
Atenção
Evite alterações na configuração do serviço (por exemplo, APIs, políticas, aparência do portal do desenvolvedor) enquanto a operação de restauração estiver em andamento. As alterações podem ser substituídas.
Nos exemplos a seguir,
- Uma instância de Gerenciamento de API chamada myapim é restaurada a partir do blob de backup chamado ContosoBackup.apimbackup na conta de armazenamento backupstorageaccount.
- O blob de backup está em um contêiner chamado backups.
Definir variáveis no PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acesso usando chave de acesso de armazenamento
$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName -SourceBlobName $blobName
Acesso usando identidade gerenciada
Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.
Acesso usando identidade gerenciada atribuída ao sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acesso usando identidade gerenciada atribuída pelo usuário
Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos identityresourcegroup.
$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";
$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid
A restauração é uma operação de longa duração que pode levar até 45 minutos ou mais para ser concluída.
Restrições
- A restauração de um backup é garantida apenas por 30 dias desde o momento de sua criação.
- Enquanto o backup estiver em andamento, evite alterações de gerenciamento no serviço, como upgrade ou downgrade de nível de preço, alteração no nome de domínio e muito mais.
- As alterações feitas na configuração do serviço (por exemplo, APIs, políticas e aparência do portal do desenvolvedor) enquanto a operação de backup está em processo podem ser excluídas do backup e serão perdidas.
- O backup não captura dados de log pré-agregados usados em relatórios mostrados na janela do Google Analytics no portal do Azure.
- O CORS (Cross-Origin Resource Sharing) não deve ser habilitado no serviço Blob na conta de armazenamento.
- O nível de preço do serviço que está sendo restaurado deve corresponder ao nível de preço do serviço de backup que está sendo restaurado.
Restrições de rede de armazenamento
Se a conta de armazenamento estiver habilitada para firewall, é recomendável usar a identidade gerenciada atribuída pelo sistema da instância de Gerenciamento de API para acessar a conta. Certifique-se de que a conta de armazenamento conceda acesso a serviços confiáveis do Azure.
O que não é feito backup
- Os dados de uso usados para criar relatórios analíticos não são incluídos no backup. Use a API REST de Gerenciamento de API do Azure para recuperar periodicamente relatórios de análise para proteção.
- Certificados TLS/SSL de domínio personalizados.
- Certificados de autoridade de certificação personalizados, que incluem certificados intermediários ou raiz carregados pelo cliente.
- Configurações de integração de rede virtual.
- Configuração de identidade gerenciada.
- Configuração de diagnóstico do Azure Monitor.
- Configurações de protocolos e cifras .
- Conteúdo do portal do desenvolvedor.
A frequência com que você executa backups de serviço afeta seu objetivo de ponto de recuperação. Para minimizá-lo, recomendamos implementar backups regulares e executar backups sob demanda depois de fazer alterações no serviço de Gerenciamento de API.
Próximos passos
Confira os seguintes recursos relacionados para o processo de backup/restauração:
- Automatizar a Cópia de Segurança da Gestão de API e restaurar com o Logic Apps
- Como mover o Gerenciamento de API do Azure entre regiões
- A camada Premium do Gerenciamento de API também oferece suporte à redundância de zona, que fornece resiliência e alta disponibilidade para uma instância de serviço em uma região específica do Azure (local).