Active Record Encryption

Dicas - 25/Abr/2021 - por Henrique Morato

Ainda não disponível em versões estáveis do Rails (na data de publicação desse artigo), mas a funcionalidade Active Record Encryption vem para ajudar a encriptar informações no banco de dados usando Active Record.

A documentação ainda está sendo atualizada, mas pode ser lida aqui. Para testar a funcionalidade, você pode usar versão do Rails disponível na brach main:

# Gemfile

gem 'rails', github: ‘rails/rails’

Para começar temos que criar uma nova migração no banco:

$ rails db:encryption:init

Então ele vai pedir para algumas chaves serem adicionadas nas credenciais:

$ rails credentials:edit

E você vai colar no arquivo as chaves que aparecem no terminal, algo como:

# credentials.yml
active_record_encryption:
  primary_key: Psjg0jf4N2v2LPf5voJtKeTIER8dXSiD
  deterministic_key: oAefbbvvfoJ8fuBNADCRtSOk6u0Go7Na
  key_derivation_salt: 0SioNonc66n1DzWz3ahJHW42Zr9dBUsg

Agora basta usar a configuração no seu Model:

encrypts :atributo_encriptado

A biblioteca encripta o atributo antes de salvar no banco de dados e vai decriptar quando o valor for buscado.

Na documentação há várias outras opções para usar a funcionalidade com outras bibliotecas como o ActionText, entre outras, que vocês podem explorar.

Foto de perfil do autor
Henrique Morato

Dev