Proteger um banco de dados e um servidor

Concluído

Autenticação e autorização de banco de dados são como você tradicionalmente protegeria seu banco de dados de código aberto. Hospedar esse banco de dados no Azure dá a você a chance de aumentar essa proteção.

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

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

Proteger os seus dados

PostgreSQL e 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 itens nesses bancos de dados. Você deve continuar a gerenciar usuários e privilégios da mesma forma 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 aos seus servidores. Esta proteção funciona a três níveis:

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

As seções a seguir discutem esses itens com mais detalhes.

Filtrar 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. Você adiciona regras de firewall para habilitar o tráfego de blocos designados de endereços IP, conforme descrito nos módulos anteriores. É recomendável que você revise 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, deverá abrir o firewall para esses serviços. No portal do Azure, na página Segurança da conexão do seu 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 ele esteja ATIVADO.

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

Nota

Pode levar até cinco minutos para que quaisquer alterações feitas no firewall fiquem ativas.

Em algumas situações, abrir o servidor para todos os serviços do Azure pode ser excessivo. Se você estiver executando as versões de uso geral ou memória otimizada do Banco de Dados do Azure para MySQL ou PostgreSQL, filtrará o tráfego no nível da rede virtual usando as regras de rede virtual do Azure. Uma regra de rede virtual permite que o tráfego originado de suas próprias redes virtuais acesse o servidor. O tráfego de outras redes será bloqueado.

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

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

Permitir acesso a clientes no intervalo 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

Remova FirewallRule1. O acesso será negado aos clientes no intervalo de endereços desta regra

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 start-ip-address e end-ip-address o valor de 0.0.0.0.

Você cria e gerencia regras de rede virtual de maneira semelhante, usando os az msysql server vnet-rule comandos.

Proteja o tráfego usando SSL

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

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

Proteja 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 monitoriza o acesso ao seu servidor e procura padrões de comportamento invulgar ou potencialmente malicioso. Quando esse comportamento é detetado, você organiza o envio de um alerta para endereços de e-mail especificados.

Os padrões de atividade incomum detetados incluem:

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

Pode ativar a Proteção Avançada contra Ameaças a partir da página Proteção Avançada contra Ameaças para o 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 Banco de Dados do Azure para MySQL ou serviço PostgreSQL faz backup automaticamente do seu servidor de acordo com a seguinte agenda:

  • 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 backup de todo o servidor. Não é possível fazer backup de bancos de dados individuais e não é possível forçar manualmente um backup.

Definir opções de backup

Você usa esses backups para restaurar para qualquer ponto no tempo para o qual você reteve 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 — backups com redundância local são mantidos na mesma região do servidor e backups com redundância geográfica são copiados para data centers em outras regiões. A opção de redundância geográfica só está disponível para servidores nos níveis de preços de uso geral e memória otimizada. Você define as opções de backup na página Níveis de Preços 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

A Base de Dados do Azure para MySQL ou PostgreSQL suporta dois tipos de operações de restauro de servidor: point-in-time e geo-restauro. 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 tenha sido excluído. Ao excluir um servidor, você também exclui os backups associados a ele.

Restauro para um ponto anterior no tempo

Uma restauração point-in-time cria um novo servidor usando os backups do servidor original e rola o servidor para a hora especificada. Você inicia uma operação de restauração usando o comando Restaurar na barra de ferramentas na página Visão geral do seu servidor no portal do Azure. Ser-lhe-á pedido 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 az mysql/postgres server restoreAzure dá suporte aos comandos se você preferir executar operações de restauração a partir da 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"

Restauro geográfico

Uma restauração geográfica é uma restauração completa de um servidor, usando um backup mantido em armazenamento com redundância geográfica. Ao criar um novo servidor usando o portal do Azure, você especifica 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 az mysql/postgres server georestore comandos para fazer uma restauração geográfica a partir da linha de comando.

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