{"id":35225855,"url":"https://github.com/y-ken/fluent-plugin-anonymizer","last_synced_at":"2026-03-27T02:42:44.518Z","repository":{"id":11950205,"uuid":"14520769","full_name":"y-ken/fluent-plugin-anonymizer","owner":"y-ken","description":"Fluentd filter output plugin to anonymize records with MD5/SHA1/SHA256/SHA384/SHA512 algorithms. This data masking plugin protects privacy data such as ID, email, phone number, IPv4/IPv6 address and so on.","archived":false,"fork":false,"pushed_at":"2024-02-27T09:54:17.000Z","size":84,"stargazers_count":57,"open_issues_count":5,"forks_count":14,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-03-24T08:34:10.768Z","etag":null,"topics":["anonymize","fluentd","ruby"],"latest_commit_sha":null,"homepage":"http://rubygems.org/gems/fluent-plugin-anonymizer","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/y-ken.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-11-19T10:07:48.000Z","updated_at":"2026-01-07T19:23:37.000Z","dependencies_parsed_at":"2024-06-20T21:58:49.650Z","dependency_job_id":"75a8d90d-0cbe-4d1f-b01b-0fbb57ca156b","html_url":"https://github.com/y-ken/fluent-plugin-anonymizer","commit_stats":{"total_commits":101,"total_committers":6,"mean_commits":"16.833333333333332","dds":0.5643564356435644,"last_synced_commit":"f41872f3d8e466fe67e09bd1b9f98e78b253543c"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/y-ken/fluent-plugin-anonymizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-ken%2Ffluent-plugin-anonymizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-ken%2Ffluent-plugin-anonymizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-ken%2Ffluent-plugin-anonymizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-ken%2Ffluent-plugin-anonymizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/y-ken","download_url":"https://codeload.github.com/y-ken/fluent-plugin-anonymizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-ken%2Ffluent-plugin-anonymizer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31011582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-27T02:33:22.146Z","status":"ssl_error","status_checked_at":"2026-03-27T02:33:21.763Z","response_time":164,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anonymize","fluentd","ruby"],"created_at":"2025-12-30T01:05:53.242Z","updated_at":"2026-03-27T02:42:44.510Z","avatar_url":"https://github.com/y-ken.png","language":"Ruby","readme":"# fluent-plugin-anonymizer [![Build Status](https://travis-ci.org/y-ken/fluent-plugin-anonymizer.png?branch=master)](https://travis-ci.org/y-ken/fluent-plugin-anonymizer)\n\n## Overview\n\nFluentd filter plugin to anonymize records with [OpenSSL::Digest](https://docs.ruby-lang.org/ja/latest/class/OpenSSL=3a=3aDigest.html) of MD5/SHA1/SHA256/SHA384/SHA512 algorithms. This data masking plugin protects privacy data such as UserID, Email, Phone number, IPv4/IPv6 address and so on.\n\n## Requirements\n\n| fluent-plugin-anonymizer | fluentd    | ruby   |\n|--------------------|------------|--------|\n|  1.0.0            | v0.14.x | \u003e= 2.1 |\n|  0.5.1            | v0.12.x | \u003e= 1.9 |\n\n\n## Installation\n\ninstall with gem or td-agent-gem command as:\n\n```\n# for system installed fluentd\n$ gem install fluent-plugin-anonymizer\n\n# for td-agent2 (with fluentd v0.12)\n$ sudo td-agent-gem install fluent-plugin-anonymizer -v 0.5.1\n\n# for td-agent3 (with fluentd v1.0)\n$ sudo td-agent-gem install fluent-plugin-anonymizer -v 1.0.0\n```\n\nFor more details, see [Plugin Management](https://docs.fluentd.org/v1.0/articles/plugin-management)\n\n## Tutorial\n\n### Filter Plugin\n\n#### configuration\n\n```text\n\u003csource\u003e\n  @type dummy\n  tag raw.dummy\n  dummy [\n  {\"host\":\"10.102.3.80\",\"member_id\":\"12345\", \"mail\":\"example@example.com\"},\n  {\"host\":\"2001:db8:0:8d3:0:8a2e::\",\"member_id\":\"61f6c1b5f19e0a7f73dd52a23534085bf01f2c67\",\"mail\":\"eeb890d74b8c1c4cd1e35a3ea62166e0b770f4f4\"}\n  ]\n\u003c/source\u003e\n\n\u003cfilter raw.**\u003e\n  @type anonymizer\n\n  # Specify hashing keys with comma\n  \u003cmask sha1\u003e\n    keys user_id, member_id, mail\n    # Set hash salt with any strings for more security\n    salt mysaltstring\n  \u003c/mask\u003e\n  # Specify rounding address keys with comma and subnet mask\n  \u003cmask network\u003e\n    keys  host\n    ipv4_mask_bits  24\n    ipv6_mask_bits  104\n  \u003c/mask\u003e\n\u003c/filter\u003e\n\n\u003cmatch raw.**\u003e\n  @type stdout\n\u003c/match\u003e\n ```\n\n#### result\n\nThis sample result has made with the above configuration into \"fluent.conf\".\n\n```text\n$ fluentd -c fluent.conf\n2017-12-25 15:00:00.091048000 +0900 raw.dummy: {\"host\":\"10.102.3.0\",\"member_id\":\"5ab2cebb0537866c4a0cd2e2f3502c0976b788da\",\"mail\":\"7e9d6dbefa72d56056c8c740b34b5c0bbfec8d87\"}\n2017-12-25 15:00:01.005351000 +0900 raw.dummy: {\"host\":\"2001:db8:0:8d3:0:8a2e::\",\"member_id\":\"445514dfcd82b2a8b94ec6763afa6e349e78c5f8\",\"mail\":\"54608576c8d815a4ffd595a3c1fe72751ed04424\"}\n2017-12-25 15:00:02.024865000 +0900 raw.dummy: {\"host\":\"10.102.3.0\",\"member_id\":\"b14a8f98019ec84c6fe329d5af62c46bb45348f8\",\"mail\":\"723da8084da3438d9287b44e5a714b70e10a9755\"}\n2017-12-25 15:00:03.053852000 +0900 raw.dummy: {\"host\":\"2001:db8:0:8d3:0:8a2e::\",\"member_id\":\"d38ebb9b96c0cbffd4136935c7f6fe9dd05980cd\",\"mail\":\"b6f9d777831cbecfd2ea806f5f62f79a275bbb82\"}\n```\n\n## Parameters\n\n### mask section\n\nMask section will use following configuration syntax:\n\n```aconf\n\u003cmask ARGUMENTS\u003e\n  PARAMETERS\n\u003c/mask\u003e\n```\n\n#### Parameters\n\n* `arguments`\n  * `md5`\n  * `sha1`\n  * `sha256`\n  * `sha384`\n  * `sha512`\n  * `uri_path`\n  * `network`\n\n* `keys` (default: [])\n\nSpecify one or more keys that will be applied hash algorithm.\n\n* `key_pattern` (default: nil)\n\nSpecify pattern of keys that will be applied hash algorithm.\n\n* `value_pattern` (default: nil)\n\nSpecify pattern of value that will be applied hash algorithm.\n\n* `value_in_subnet` (default: nil)\n\nSpecify network of value that will be applied hash algorithm.\n\n* `salt` (default: none)\n\nThis salt affects for `keys` settings.\nIt is recommend to set a hash salt to prevent rainbow table attacks.\n\n* `mask_array_elements` (default: false)\n\nIf true, mask all elements in the array that specified by keys or key_pattern.\n\n* `ipv4_mask_bits` (default: nil)\n* `ipv6_mask_bits` (default: nil)\n\nRound number for following one or more keys. It makes easy to aggregate calculation.\n\n| ipv4_mask_bits   |      input      |    output     |\n|------------------|-----------------|---------------|\n|               24 | 192.168.200.100 | 192.168.200.0 |\n|               16 | 192.168.200.100 | 192.168.0.0   |\n|                8 | 192.168.200.100 | 192.0.0.0     |\n\n\n## Notes\n\n* hashing nested value behavior is compatible with [LogStash::Filters::Anonymize](https://github.com/logstash-plugins/logstash-filter-anonymize/blob/master/lib/logstash/filters/anonymize.rb) does. For further details, please check it out the test code at [test_emit_nest_value](https://github.com/y-ken/fluent-plugin-anonymizer/blob/master/test/plugin/test_filter_anonymizer.rb#L231).\n\n* How to reproduce anonymized string with another way?\n\nYou can reproduce same result with both ways.\n\n```\n\u003cfilter raw.**\u003e\n  @type anonymizer\n  \u003cmask sha512\u003e\n    keys email_for_sha512\n    salt \n  \u003c/mask\u003e\n\u003c/filter\u003e\n```\n\n```\n$ echo -n \"example@gmail.com\" | openssl sha512\n(stdin)= 7759b39ee43dda414560836863675714eb2040e8c305cb4180fc850937ccbfcfc0c2fcab65ca8509a861b1703a33678b330c418263e9a29f80747102f972cee0\n```\n\n## Blog Articles\n\n* 個人情報を難読化するfluent-plugin-anonymizerをリリースしました #fluentd - Y-Ken Studio  \nhttp://y-ken.hatenablog.com/entry/fluent-plugin-anonymizer-has-released\n\n## TODO\n\nPull requests are very welcome!!\n\n## Copyright\n\nCopyright © 2013- Kentaro Yoshida ([@yoshi_ken](https://twitter.com/yoshi_ken))\n\n## License\n\nApache License, Version 2.0\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-ken%2Ffluent-plugin-anonymizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fy-ken%2Ffluent-plugin-anonymizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-ken%2Ffluent-plugin-anonymizer/lists"}