Data-at-Rest no MySQL 8.4 — Parte 2: Integração do Keyring Vault com OpenBao

Introdução

No primeiro post relacionado a Data-at-Rest Parte 1, eu demonstrei como realizar a utilização do keyring_file, que funciona como esperado, mas ainda assim tem uma grande vulnerabilidade, no caso de acesso não autorizado ao servidor.

Neste segundo blog irei apresentar como externalizar as chaves com o keyring_vault, utilizando o OpenBao como vault. O OpenBao é um projeto open source de gerenciamento de segredos (key-values (KV), políticas, tokens, audit), criado a partir de um fork open source do HashiCorp Vault.

Ambiente

No exemplo abaixo, utilizarei dois servidores: um será o nosso OpenBao, que chamaremos de vault server, e o outro será a instalação do MySQL.

Não serão abordadas neste post a instalação e a inicialização do OpenBao. Realizaremos apenas as configurações necessárias para o MySQL.

Configuração

Após instalado e inicializado, vamos logar ao bao. Para isso, será necessária a senha root inicial.

Após logar, iremos criar o secrets engine com path mysql-keyring e utilizando o key-value version 2:

Tendo secrets engine criado, vamos criar a política para o Mysql Keyring, no exemplo abaixo damos acesso a alguns paths somente leitura, e para os paths relacionados à gravação e leitura de chaves damos acesso de leitura e escrita (metadata e data para prod/app/mysql01):

Após as políticas criadas, vamos criar o token para o uso no MySQL. Este é o token que será utilizado para configurar o keyring vault. Para criar, precisamos passar a política criada acima na criação do token:

Configuração no MySQL

Assim como no keyring_file, precisamos criar o arquivo de manifesto em <basedir>/bin/mysqld.my (ex.: /usr/sbin/mysqld.my):

Porém, note que, acima, o valor do campo components mudou para component_keyring_vault. 

Adicionando as informações do OpenBao Vault no arquivo de configuração /usr/lib64/mysql/plugin/component_keyring_vault.cnf:

Corrigindo permissões e reiniciando MySQL

Validando integração
Componente ativo

Esperado: Component_name = component_keyring_vault, Status = Active, Vault_url e Secret_mount_point corretos.

Sanity check no OpenBao

Após o MySQL materializar chaves (ex.: ALTER INSTANCE ROTATE INNODB MASTER KEY), podemos ver que a chave foi criada no bao:

Sanity check no MySQL similar ao do blog post anterior

Checando create_options de cada tabela:

Realizando teste do blog anterior para chegar à criptografia dos dados:

Rotacionando a chave de criptografia

Verificando se há uma nova chave no Opan Bao:

Conclusão

keyring_vault component + OpenBao é um caminho mais seguro e mais próximo de produção para data-at-rest no MySQL/Percona Server 8.4. Evita situações em que haja acesso não autorizado aos arquivos do banco de dados, o que dificulta a leitura direta dos arquivos.

Referências
COMPARTILHE:
Picture of Roberto de Bem

Roberto de Bem

Roberto de Bem é Database Engineer na Percona e entusiasta de Open Source. Sempre que possível, contribuo com pull requests, principalmente para projetos e produtos da Percona. Formado em Sistemas de Informação, trabalha com bancos de dados desde 2017, com foco em MySQL. Oracle Certified Professional – MySQL 8.0. Oracle ACE Apprentice.
Picture of Roberto de Bem

Roberto de Bem

Roberto de Bem é Database Engineer na Percona e entusiasta de Open Source. Sempre que possível, contribuo com pull requests, principalmente para projetos e produtos da Percona. Formado em Sistemas de Informação, trabalha com bancos de dados desde 2017, com foco em MySQL. Oracle Certified Professional – MySQL 8.0. Oracle ACE Apprentice.

PARTICIPE

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

POSTADO POR
Picture of Roberto de Bem

Roberto de Bem

Roberto de Bem é Database Engineer na Percona e entusiasta de Open Source. Sempre que possível, contribuo com pull requests, principalmente para projetos e produtos da Percona. Formado em Sistemas de Informação, trabalha com bancos de dados desde 2017, com foco em MySQL. Oracle Certified Professional – MySQL 8.0. Oracle ACE Apprentice.
PARCEIROS