Proteger um banco de dados e um servidor

Concluído

Tradicionalmente, você protegeria seu banco de dados open-source usando a autenticação e a autorização do banco de dados. Hospedar esse banco de dados no Azure oferece a oportunidade de aumentar essa proteção.

Como desenvolvedor de banco de dados para o AdventureWorks, você gostaria de melhorar a proteção do Banco de Dados do Azure para PostgreSQL de suas empresas.

Nesta unidade, você verá qual proteção adicional é possível agora que migrou seu banco de dados PostgreSQL local para o Azure.

Proteger seus dados

O PostgreSQL e o MySQL têm seus próprios mecanismos de autenticação e autorização que controlam quais usuários têm permissão para acessar bancos de dados e os privilégios que eles têm sobre os itens nesses bancos de dados. Você deve continuar a gerenciar usuários e privilégios da mesma maneira que fazia antes da migração. Lembre-se de que você pode usar ferramentas administrativas, como pgAdmin e MySQL Workbench, para se conectar a servidores hospedados pelo Azure.

No entanto, o Azure fornece proteção adicional para seus servidores. Essa proteção opera em três níveis:

  1. Ele controla o acesso ao servidor, filtrando o tráfego de fontes desconhecidas ou não confiáveis.
  2. Ele protege o tráfego, garantindo que ele não possa ser manipulado ou interceptado enquanto flui de um cliente para o servidor e vice-versa.
  3. Ele protege o próprio servidor contra ameaças externas comuns.

As seções a seguir discutem esses itens detalhadamente.

Filtrar o tráfego com regras de firewall

O Banco de Dados do Azure para MySQL ou PostgreSQL é executado dentro de um firewall gerenciado pela Microsoft. Por padrão, nada pode passar por esse firewall. Adicione regras de firewall para habilitar o tráfego de blocos de endereços IP designados, conforme descrito nos módulos anteriores. É recomendável que você examine ativamente os endereços IP que têm permissão para enviar tráfego em intervalos frequentes e remova os endereços IP para clientes que não são mais necessários.

Se você estiver executando outros serviços do Azure que precisam usar seus bancos de dados, abra o firewall para esses serviços. Na portal do Azure, na página Segurança de conexão do serviço Banco de Dados do Azure para MySQL ou PostgreSQL, selecione a configuração de ação Permitir acesso aos serviços do Azure para que ela fique ATIVADA.

Image highlighting the Allow access to Azure services action setting in the firewall configuration for Azure Database for MySQL or PostgreSQL

Observação

Pode levar até cinco minutos para que as alterações feitas no firewall se tornem ativas.

Em algumas situações, abrir o servidor para todos os serviços do Azure pode ser muito excessivo. Se você estiver executando as versões de Uso Geral ou Otimizado para Memória do Banco de Dados do Azure para MySQL ou PostgreSQL, filtre o tráfego no nível da rede virtual usando as regras de rede virtual do Azure. Com uma regra de rede virtual, você pode permitir o tráfego originado de suas próprias redes virtuais para acessar o servidor. O tráfego de outras redes será bloqueado.

Image showing the virtual network rules for Azure Database for MySQL or PostgreSQL

Se você precisar criar scripts de tarefas de manutenção de firewall, use a CLI do Azure. Os exemplos a seguir, que adicionam, excluem e exibem regras de firewall, usam o comando az mysql que realiza operações no Banco de Dados do Azure para MySQL. Se você estiver executando um comando PostgreSQL, use os comandos az postgres correspondentes — os parâmetros são os mesmos:

Permitir acesso a clientes no intervalo de 13.83.152.0 a 13.83.152.15

az mysql server firewall-rule create \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1 \
    --start-ip-address 13.83.152.0 \
    --end-ip-address 13.83.152.15

Listar todas as regras de firewall

az mysql server firewall-rule list \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name]

Exibir os detalhes de FirewallRule1

az mysql server firewall-rule show \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Remover FirewallRule1. Os clientes no intervalo de endereços para esta regra terão o acesso negado

az mysql server firewall-rule delete \
    --resource-group [resource group name] \
    --server-name [Azure Database for MySQL server name] \
    --name FirewallRule1

Para habilitar o acesso aos serviços do Azure, crie uma regra de firewall com um valor start-ip-address e end-ip-address de 0.0.0.0.

Crie e gerencie regras de rede virtual de maneira semelhante, usando os az msysql server vnet-rule comandos.

Proteger o tráfego usando SSL

A proteção SSL do Banco de Dados do Azure para MySQL ou PostgreSQL está habilitada por padrão. Você pode desabilitar e reabilitar o SSL usando a configuração Impor conexão SSL na página Segurança da conexão no serviço Banco de Dados do Azure para MySQL ou PostgreSQL no portal do Azure:

Image highlighting the Enforce SSL connection setting on the Connection security page for Azure Database for MySQL or PostgreSQL

Proteger o servidor usando a proteção avançada contra ameaças do Azure

A proteção avançada contra ameaças é uma camada adicional de segurança fornecida pelo Azure. A proteção avançada contra ameaças monitora o acesso ao seu servidor e procura padrões de comportamento incomum ou potencialmente mal-intencionado. Quando esse comportamento é detectado, você organiza o envio de um alerta para endereços de email especificados.

Os padrões de atividade incomum detectados incluem:

  • Acesso de um local inesperado ou incomum.
  • Acesso de um data center do Azure incomum.
  • Acesso de um aplicativo que pode ser prejudicial, como uma ferramenta de ataque reconhecida.
  • Um grande número de logons com falha em sucessão rápida, indicando um possível ataque de força bruta.

Você pode habilitar a proteção avançada contra ameaças na página Proteção avançada contra ameaças para seu serviço no portal do Azure:

Image showing the Advanced Threat Protection page for Azure Database for MySQL or PostgreSQL

Fazer backup e restaurar um servidor

O serviço Banco de Dados do Azure para MySQL ou PostgreSQL faz o backup automaticamente de seu servidor de acordo com o seguinte agendamento:

  • Um backup completo é feito semanalmente com o primeiro backup completo ocorrendo assim que o servidor é criado.
  • Um backup diferencial é feito duas vezes por dia.
  • Um backup de log de transações é feito a cada cinco minutos.

É feito o backup do servidor inteiro. Não é possível fazer backup de bancos de dados individuais e você não pode forçar um backup manualmente.

Definir opções de backup

Você usa esses backups para restaurar para qualquer momento para o qual você manteve os arquivos de backup. Por padrão, os backups são mantidos por sete dias, mas você pode mantê-los por até 35 dias. Você também especifica como os backups são armazenados — os backups com redundância local são mantidos na mesma região que o servidor, e os backups com redundância geográfica são copiados para data centers em outras regiões. A opção com redundância geográfica está disponível apenas nas camadas de preços Uso Geral e Otimizado para Memória. Defina as opções de backup na página Tipos de Preço para seu servidor no portal do Azure:

Image showing the backup configuration section of the pricing tiers page for Azure Database for MySQL or PostgreSQL

Restaurar um servidor

O Banco de Dados do Azure para MySQL ou PostgreSQL dá suporte a dois tipos de operações de restauração do servidor: ponto no tempo e restauração geográfica. Em ambos os casos, a ação de restauração cria um novo servidor. O servidor original permanece disponível. Se desejar que os aplicativos usem os dados restaurados, você deverá reconfigurá-los para usar o novo servidor. Além disso, você deve se lembrar de abrir o firewall do novo servidor para permitir que clientes e serviços se conectem.

Importante

Não é possível restaurar um servidor que foi excluído. Quando você exclui um servidor, também exclui os backups associados a ele.

Restauração em um momento determinado

Uma restauração pontual cria um novo servidor usando os backups do seu servidor original e reverte o servidor para a hora especificada. Inicie uma operação de restauração usando o comando Restaurar na barra de ferramentas da página Visão geral do servidor no portal do Azure. Você será solicitado a fornecer o nome de um novo servidor e um ponto no tempo.

Image showing the point-in-time restore page for Azure Database for MySQL or PostgreSQL

A CLI do Azure dará suporte aos az mysql/postgres server restorecomandos se você preferir executar operações de restauração na linha de comando. Por exemplo:

az mysql server restore \
    --resource-group [resource group name] \
    --name [new Azure Database for MySQL server name] \
    --source-server [original Azure Database for MySQL server name] \
    --restore-point-in-time "2019-10-23T02:10:00+08:00"

Restauração geográfica

Uma restauração geográfica é uma restauração completa de um servidor, usando um backup mantido no armazenamento com redundância geográfica. Quando você criar um novo servidor usando o portal do Azure, especifique um backup com redundância geográfica como a fonte de dados. Quando o novo servidor for criado, ele será preenchido com os bancos de dados neste backup.

Image showing the server details section when creating an Azure Database for MySQL or PostgreSQL server

A CLI do Azure fornece os comandos az mysql/postgres server georestore para fazer uma restauração geográfica na linha de comando.

Pode levar até uma hora para replicar um backup com redundância geográfica para outra região. Isso poderá resultar na perda de até uma hora de dados se você precisar fazer uma restauração geográfica de uma região diferente.