database-anonymizer/README.md
2024-04-01 18:42:35 +02:00

181 lines
3.9 KiB
Markdown

# Database Anonimizer
**Database Anonymizer** is a tool written in GO that allows **anonymizing or deleting data from a MySQL or PostgreSQL database**.
It addresses various use cases such as **providing developers with an anonymized copy of a database** or **satisfying the need to anonymize or delete data in accordance with GDPR (General Data Protection Regulation) requirements. data protection)**, depending on the retention periods. defined in the processing register.
The project includes a vast array of fakers. It also enables data generation via Twig-written templates. You can specify precise rules for each table or global rules applied to all tables in your configuration.
## Usage
### Configuration
The configuration is written in YAML. Here's a complete example:
```
rules:
columns:
phone: phone_e164number
generators:
person_name: [display_name]
actions:
- table: user
virtual_columns:
domain: internet_domain
columns:
firstname: person_firstname
lastname: person_lastname
email: "{{ (firstname ~ '.' ~ lastname ~ '@' ~ domain)|lower }}"
- table: company
columns:
name: company_name
- table: access_log
query: 'select * from access_log where date < (NOW() - INTERVAL 6 MONTH)'
delete: true
- table: user_ip
primary_key: [user_id, ip_id]
delete: true
```
### Exécution
To display help, use `-h`:
```
database-anonymizer -h
```
Here are examples for MySQL and PostgreSQL:
```
database-anonymizer --dsn "mysql://username:password@tcp(db_host)/db_name" --schema ./schema.yaml
database-anonymizer --dsn "postgres://postgres:postgres@localhost:5432/test" --schema ./schema.yaml
```
### List of fakers
- address
- address_buildingnumber
- address_city
- address_cityprefix
- address_citysuffix
- address_country
- address_countryabbr
- address_countrycode
- address_latitude
- address_longitude
- address_postcode
- address_secondaryaddress
- address_state
- address_stateabbr
- address_streetaddress
- address_streetname
- address_streetsuffix
- app_name
- app_version
- beer_alcohol
- beer_blg
- beer_hop
- beer_ibu
- beer_malt
- beer_name
- beer_style
- blood_name
- boolean_bool
- car_category
- car_fueltype
- car_maker
- car_model
- car_plate
- car_transmissiongear
- color_css
- color_colorname
- color_hex
- color_rgb
- color_safecolorname
- company_bs
- company_catchphrase
- company_ein
- company_jobtitle
- company_name
- company_suffix
- crypto_bech32address
- crypto_bitcoinaddress
- crypto_etheriumaddress
- crypto_p2pkhaddress
- crypto_p2shaddress
- currency_code
- currency_country
- currency_currency
- currency_number
- emoji_emoji
- emoji_emojicode
- file_extension
- file_filenamewithextension
- food_fruit
- food_vegetable
- gamer_tag
- gender_abbr
- gender_name
- genre_name
- internet_companyemail
- internet_domain
- internet_email
- internet_freeemail
- internet_freeemaildomain
- internet_httpmethod
- internet_ipv4
- internet_ipv6
- internet_localipv4
- internet_macaddress
- internet_password
- internet_query
- internet_safeemail
- internet_slug
- internet_statuscode
- internet_statuscodemessage
- internet_statuscodewithmessage
- internet_tld
- internet_url
- internet_user
- language_language
- language_languageabbr
- language_programminglanguage
- mimetype_mimetype
- music_genre
- music_name
- payment_creditcardexpirationdatestring
- payment_creditcardnumber
- payment_creditcardtype
- person_firstname
- person_firstnamefemale
- person_firstnamemale
- person_gender
- person_lastname
- person_name
- person_namefemale
- person_namemale
- person_ssn
- person_suffix
- person_title
- pet_cat
- pet_dog
- pet_name
- phone_areacode
- phone_e164number
- phone_exchangecode
- phone_number
- phone_tollfreeareacode
- phone_toolfreenumber
- time_ampm
- time_century
- time_dayofmonth
- time_monthname
- time_timezone
- time_year
- useragent_chrome
- useragent_firefox
- useragent_internetexplorer
- useragent_opera
- useragent_safari
- useragent_useragent