Giter Club home page Giter Club logo

mysql_dump_anonymizer's Introduction

MySQL Dump Anonymizer

Este projeto é uma ferramenta CLI para gerar um arquivo dump mysql com valores de colunas anonimizadas, após ser fornecido um arquivo dump mysql como entrada. Uso:

python mysql_dump_anonymizer/main.py <dump original> --target_file <arquivo dump de saída> --config_file <arquivo .json de configurações>

O script automaticamente propaga os valores alterados para foreign keys correspondentes. Desta forma, não se deve configurá-lo para alterar tanto uma coluna "mãe" de uma foreign key quanto uma "filha".

Configuração inicial

Este projeto foi escrito em python +3.10 e utiliza o Poetry para gerenciar suas dependências. Consulte a documentação oficial para instalá-lo se ainda não o fez.

Ambiente virtual Python com Conda

  1. Para que o Poetry não gerencie seus ambientes virtuais, configure-o para não criar novos ambientes virtuais automaticamente (veja docs para mais detalhes).
    poetry config virtualenvs.create false
  2. Cirie um novo ambiente virtual com conda
    conda env create -f environment.yml
    
  3. Ative o ambiente virtual
    conda activate dump-anon
    

Intalação das dependências

```
poetry install
```

Arquivo de configuração

Para utilizar o script, é necessário um arquivo de configuração, para especificar que colunas devem ser alteradas. Abaixo, um exemplo de arquivo de configuração.

{
  "tables": [
    {
      "table_name": "test",
      "columns_to_change": [
        {
          "name": "type_code",
          "subtype": "UUID",
          "regex": null
        }
      ]
    },
    {
      "table_name": "sample",
      "columns_to_change": [
        {
          "name": "code",
          "subtype": null,
          "regex": "^[0-9A-Za-z-]{6,30}$"
        },
        {
          "name": "vial_code",
          "subtype": null,
          "regex": "^[0-9A-Za-z-]{6,30}$"
        }
      ]
    }
  ]
}

É necessário especificar, para cada tabela, que colunas devem ser alteradas (se alguma). Os campos "subtype" e "regex" são opcionais. Atualmente, "subtype" só suporta "UUID" ou null. Quando fornecido, o script gerará valores UUID4 para aquele campo. O campo "regex" é opcional, e quando fornecido, o script gerará valores aleatórios que obedecem àquele regex. Os regex devem ser simples (não conheço as limitações, mas são as limitações da biblioteca rtsr, que não as especifica em sua documentação).

mysql_dump_anonymizer's People

Contributors

joaopaulocastilho avatar gustavolm avatar alexsanderam avatar alesom avatar

Watchers

Igor Corrêa avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.