sábado, 1 de julho de 2017

#15 – Para que serve

Em 28/06/2017

Resultado de imagem para backup de dados

Introdução

Quando pensamos nas possibilidades de perda de dados ou informações, normalmente um dos recursos mais conhecidos e utilizados por todos é o bom e velho backup, capacidade que ao longo dos anos também evoluiu muito e hoje pode ser feito de maneira muito simples, tanto para um pen-drive como diretamente para um repositório disponibilidade de maneira on-line não tão falada e prosperada Cloud Computing.
Mas se fazer o backup é algo simples, imagine então o processo de restauração deste conteúdo que também se torna cada vez mais ágil, rápida e fácil. Você já pensou nisso? Não adianta fazer o backup e pensar “estou seguro, fiz o backup do meu banco de dados, quando eu precisar basta restaurar”, parece ser algo que nunca vai acontecer, mas não é o que atualmente estamos vendo.
Pensando neste sentido seu eu que pergunto: “E se por acaso o seu backup foi roubado, sequestrado, enfim alguém mal intencionado acabou se apoderando dos seus dados?” Isso parece ser bastante assustador e perigoso, foi justamente pensando nisso que a partir da versão CTP2 do Microsoft SQL Server 2014, o time de engenheiros, desenvolvedores e especialistas da Microsoft decidiram adicionar de forma nativa a capacidade de criarmos backups diretamente em uma instância ou servidor SQL Server fazendo uso de criptografia de dados através dos já conhecidos algoritmos, por mais simples que isso possa parecer até a versão 2012 do Microsoft SQL Server não tínhamos esta funcionalidade disponibilidade no produto de forma nativa e totalmente suportada para nossos bancos de dados, tínhamos a necessidade de utilizar ferramentas de terceiros para aplicar este tipo de recurso.

Native Backup Encryption

Através desta nova funcionalidade ao executar um procedimento ou rotina de backup de banco de dados, o Microsoft SQL Server sabendo da escolha deste recurso além de criar um arquivo contendo todo conteúdo estabelecido para o banco de dados selecionado, também realizará para o mesmo arquivo que esta sendo criado a aplicação de uma camada de criptografia de dados, onde de uma maneira direta o conteúdo armazenado neste arquivo de backup estará totalmente criptografado.
Dentre as principais características existentes para esta funcionalidade, para que esta capacidade de adicionar uma camada de criptografia diretamente para todo o backup, torna-se necessário o uso de alguns recursos adicionais em nosso banco de dados para que seja possível criarmos backups criptografados, estou me referindo ao uso de certificados e chaves assimétricas em conjunto com os algoritmos suportados pelo SQL Server sendo eles:
  • AES 128;
  • AES 192;
  • AES 256; e 
  • Triple DES.

Utilizando o Native Backup Encryption

Como já destacado anteriormente, antes de criarmos um backup criptografado de nosso banco de dados, temos a necessidade de criamos um certificado de segurança para garantir que todo conteúdo existente esta sendo validado e possui um mecanismo de segurança.
Para começarmos, vamos realizar o primeiro passo que consiste na criação do nosso Banco de Dados chamado NativeBackupEncryption,em seguida criaremos nossa chave assimétrica e na sequência o certificado denominado CertNativeBackupEncryption. Vale ressaltar, que tanto o certificado como também a chave assimétrica serão obrigatoriamente armazenadas na banco de dados de sistema Master. Para isso utilizaremos o Bloco de Código 1 apresentado a seguir:
— Bloco de Código 1 —
Create Database NativeBackupEncryption
Go

Use Master
Go

Create Master Key Encryption By Password = ‘Backup@@01’
Go

Create Certificate CertNativeBackupEncryption
With Subject = ‘Certificado para Criptografia de Backup’;
Go

Perfeito o primeiro passo já foi realizado e podemos observar nas árvores de recursos do nosso banco de dados que tanto o certificado como principalmente a chave assimétrica estão criadas, conforme ilustra a Figura 1 apresentada abaixo:
Figura 1 – Certificado CertNativeBackupEncryption criado.

Nosso segundo passo também é um dos mais importantes, para conseguirmos aplicar a criptografia em nosso backup de dados, consiste basicamente no procedimento de backup da nossa chave assimétrica em conjunto com o backup do certificado CertNativeBackupEncryption, para que posteriormente seja possível realizar o backup criptografado.
Vale ressaltar que se este procedimento não venha a ser realizado o Microsoft SQL Server durante o processo de Backup Database emitirá um alerta informando a necessidade que este procedimento venha a ser realizado.
Vamos então executar o segundo passo através do Bloco de Código 2apresentado na sequência:
— Bloco de Código 2 —
Backup Certificate CertNativeBackupEncryption
To File = ‘S:\MSSQL-2016\Backup\Backup-Certificate-CertNativeBackupEncryption.cert’
With Private Key
(
File = ‘S:\MSSQL-2016\Backup\Backup-Master-Key-File.key’,

Encryption By Password = ‘Backup@@01’

)
Go

Legal, legal, conseguimos realizar o backup da nosso Certificado e também do nossa Chave Assimétrica, observe que no procedimento de backup do certificado estamos informando o uso do nossa chave assimétrica na instrução With Private Key, passando como parâmetros os mesmos valores informados para o backup da chave.
A Figura 2 ilustra o local de armazenamento dos arquivos gerados após o backup da chave assimétrica e do certificado:
Figura 2 – Arquivos de backup da chave e certificados criados e armazenados.

Importante: Por questões de facilidade os arquivos de backup foram criados no mesmo local, mas pensando em segurança e boas práticas é altamente recomendável que cada arquivo de backup seja criado e armazenado em locais distintos por questões óbvias de segurança.
Agora que os backups de chave assimétrica e certificados foram realizados, vamos executar nosso último passo que consiste justamente na realização do Backup do nosso banco de dados NativeBackupEncryption aplicando as técnicas de compressão de dados para economia de espaço em disco e principalmente o uso da opção Encrytpion que nos permite escolher o algoritmo de criptografia e qual certificado a nível de servidor vamos utilizar, sendo assim, podemos executar o Bloco de Código 3 apresentado a seguir:
— Bloco de Código 3 —

Backup Database NativeBackupEncryption
To Disk = ‘S:\MSSQL-2016\Backup\Backup-NativeBackupEncryption.Bak’
With Compression,
Encryption 
(Algorithm = AES_256,
Server Certificate = CertNativeBackupEncryption)
Go

Muito bem, como todo procedimento de backup, ao final da execução do comando Backup Database o Management Studio apresenta aquele tradicional conjunto de informações relacionadas ao nosso backup, algo que também não é diferente quando fazendo uso de um backup criptografado. A Figura 3 apresentado o arquivo de backup Backup-NativeBackupEncryption.Bak criado e armazenado após a conclusão da execução do comando Backup Database:
Figura 3 – Arquivo NativeBackupEncryption.Bak criado e armazenado em disco.

Estamos quase no final, continuando mais um pouco, vamos garantir e comprovar que realmente nosso backup foi criptografado. Você pode estar querendo ter a certeza que nosso backup esta criptografado, para realizarmos as conhecida prova dos nove, vamos fazer uso do tradicional comando Restore HeaderOnly, através do Bloco de Código 4 declarado abaixo:
— Bloco de Código 4 —
Restore HeaderOnly
From Disk = ‘S:\MSSQL-2016\Backup\Backup-NativeBackupEncryption.Bak’
Go

Para ilustrar o resultado obtido apos a execução do bloco de código 4, podemos observar os valores apresentados nas colunas: KeyAlgorithm, EncryptorThumbprint e EncryptorType, conforme apresenta a Figura 4.
Figura 4 – Informações referentes ao uso da criptografia no arquivo de backup.

Note que estão sendo apresentados para as respectivas colunas o algoritmo que utilizamos no procedimento de backup e seus respectivos encryptors, mecanismos utilizados para aplicar a criptografia.
Sensacional, conseguimos criar um backup com criptografia de seu conteúdo de forma nativa, sem ter a necessidade de utilizar ferramentas ou recursos de terceiros, fazendo uso total das funcionalidades e características existentes no Microsoft SQL Server. Mesmo assim, alguns pontos importantes devem ser destacados antes de concluirmos mais um post, a seguir destaco os benefícios e limitações do Native Backup Encryption.

Benefícios

  1. O uso deste tipo de recurso com certeza poderá trazer aos organizações e profissionais de banco de dados um grande benefício no que se relacionada as questões de segurança e armazenamento de dados após o processo de backup.
  2. Caso você esteja utilizando atualmente uma ferramenta de terceiros para backups criptografados, você pode comparar essa ferramenta com a funcionalidade e o desempenho de backups criptografados nativos e ver se isso preenche sua exigência.

Limitações

  1. O Native Backup Encryption não esta disponível nas edições Express e Web do Microsoft SQL Server.
  2. O processo de appending capacidade de abrir um arquivo de backup já existente e adicionar o novo conteúdo ao seu final não é suportado para backups criptografados.

Referências

Links

Caso você ainda não tenha acessado os posts anteriores desta sessão, fique tranquilo é fácil e rápido, basta selecionar um dos links apresentados a seguir:

Conclusão

Durante muito tempo este foi um dos recursos mais esperados e aguardos pelos profissionais do Microsoft SQL Server, principalmente pela necessidade até então da aquisição de ferramentas de terceiros, o que gerava custos, bem como, para realizar um procedimento simples trabalhar com dois produtos distintos ao mesmo tempo, o que para alguns pode parecer dificultoso.
Neste post fizemos uso do algoritmo AES_256 considerado por muitos profissionais um dos mais seguros, mas vale a pena fazer uso e comparação dos demais para justamente identificar suas diferenças de comportamento ainda mais se levarmos em consideração diferenças no tempo de execução de um backup criptografado com outro algoritmo.
Mas esse desafio e análise vou deixar para você!!!

Nenhum comentário:

Postar um comentário