fluent-plugin-masking 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: '08a7033570c7aaca9dc0a4830f4550ef5e353b9e5195dc3cfcc79eb68880fcae'
4
- data.tar.gz: '0845c7ee9ae72c13652cd9a517a71f0289c88f2144cf2afcad18370c1f1fa358'
2
+ SHA1:
3
+ metadata.gz: 1c38cb2f6e5f95c87452557e16ccaeedafd724eb
4
+ data.tar.gz: 3a0e9de85b4ffef48c6760a7071595e0897ed597
5
5
  SHA512:
6
- metadata.gz: 61a8a367ec559746eee72fd7e33a4d62b6f38777a18b3d5560c82dffcee5c65332ef8fbfd39e018b5dec34930e8a13cdbfa41356a796b4afc9c858eac7ce13d2
7
- data.tar.gz: 92b95fad73c342b281ce44d451ce0d52ddcce490d1b0753498671320b38ffb840840b02a44a2ab184d7be0fc636aa2f78ba6dbed6e1a3e8c32f4ebcd71ebe3dd
6
+ metadata.gz: 29c779485680fde08dd0e5fbe02899380c5002492e191760b4bbd6ca47638dc5dd1bdff19a901bf519b8673bacf1cdb8a63694466aa09a6f36bab981345db112
7
+ data.tar.gz: 1cdb78f278775ac82204d904669ac67a8b534d56b4ca7d62f5590c01440800f615dfae348a585379494362c6121377c9d6790348e82d2dfba20e52178c22f873
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fluent-plugin-masking (1.1.0)
4
+ fluent-plugin-masking (1.1.1)
5
5
  fluentd (>= 0.14.0)
6
6
 
7
7
  GEM
@@ -10,7 +10,7 @@ GEM
10
10
  concurrent-ruby (1.1.5)
11
11
  cool.io (1.5.4)
12
12
  dig_rb (1.0.1)
13
- fluentd (1.7.4)
13
+ fluentd (1.8.0)
14
14
  cool.io (>= 1.4.5, < 2.0.0)
15
15
  dig_rb (~> 1.0.0)
16
16
  http_parser.rb (>= 0.5.1, < 0.7.0)
@@ -18,7 +18,7 @@ GEM
18
18
  serverengine (>= 2.0.4, < 3.0.0)
19
19
  sigdump (~> 0.2.2)
20
20
  strptime (>= 0.2.2, < 1.0.0)
21
- tzinfo (~> 2.0)
21
+ tzinfo (>= 1.0, < 3.0)
22
22
  tzinfo-data (~> 1.0)
23
23
  yajl-ruby (~> 1.0)
24
24
  http_parser.rb (0.6.0)
@@ -45,11 +45,11 @@ PLATFORMS
45
45
  ruby
46
46
 
47
47
  DEPENDENCIES
48
- bundler
48
+ bundler (= 1.17.3)
49
49
  fluent-plugin-masking!
50
50
  rake (~> 12.0)
51
51
  test-unit (>= 3.1.0)
52
52
  test-unit-rr
53
53
 
54
54
  BUNDLED WITH
55
- 2.0.2
55
+ 1.17.3
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>= 2.1'
22
22
 
23
23
  spec.add_runtime_dependency "fluentd", ">= 0.14.0"
24
- spec.add_development_dependency "bundler"
24
+ spec.add_development_dependency "bundler", "1.17.3"
25
25
  spec.add_development_dependency "rake", "~> 12.0"
26
26
  spec.add_development_dependency "test-unit", ">= 3.1.0"
27
27
  spec.add_development_dependency "test-unit-rr"
@@ -1,8 +1,10 @@
1
1
  require 'fluent/filter'
2
+ require './lib/fluent/plugin/helpers.rb'
2
3
 
3
4
  module Fluent
4
5
  module Plugin
5
6
  class MaskingFilter < Filter
7
+ include Helpers
6
8
  Fluent::Plugin.register_filter("masking", self) # for "@type masking" in configuration
7
9
 
8
10
  MASK_STRING = "*******"
@@ -16,13 +18,17 @@ module Fluent
16
18
  def maskRecord(record)
17
19
  maskedRecord = record
18
20
  excludedFields = []
19
- @fieldsToExcludeJSONPathsArray.each do | field |
20
- field_value = record.dig(*field)
21
- if field_value != nil
22
- excludedFields = excludedFields + field_value.split(',')
21
+ begin
22
+ @fieldsToExcludeJSONPathsArray.each do | field |
23
+ field_value = myDig(record, field)
24
+ if field_value != nil
25
+ excludedFields = excludedFields + field_value.split(',')
26
+ end
23
27
  end
28
+ rescue Exception => e
29
+ $log.error "Failed to find mask exclude record: #{e}"
24
30
  end
25
- begin
31
+ begin
26
32
  recordStr = record.to_s
27
33
  @fields_to_mask_regex.each do | fieldToMaskRegex, fieldToMaskRegexStringReplacement |
28
34
  if !(excludedFields.include? @fields_to_mask_keys[fieldToMaskRegex])
@@ -0,0 +1,17 @@
1
+ module Helpers
2
+ def myDig(input, path)
3
+ curr = input
4
+ for segment in path do
5
+ if curr != nil && curr.is_a?(Hash)
6
+ if curr[segment] == nil # segment is not a symbol
7
+ curr = curr[segment.to_s] # segment as string
8
+ else
9
+ curr = curr[segment] # segment as symbol
10
+ end
11
+ else
12
+ return nil
13
+ end
14
+ end
15
+ curr
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module FilterMasking
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -132,5 +132,16 @@ class YourOwnFilterTest < Test::Unit::TestCase
132
132
  filtered_records = filter(conf, messages)
133
133
  assert_equal(expected, filtered_records)
134
134
  end
135
+ test 'mask field in json string with exclude' do
136
+ conf = CONFIG
137
+ messages = [
138
+ { :body => "{\"first_name\":\"mickey\",\"last_name\":\"the-dog\", \"type\":\"puggle\"}", :excludedField=>"first_name" }
139
+ ]
140
+ expected = [
141
+ { :body => "{\"first_name\":\"mickey\",\"last_name\":\"*******\", \"type\":\"puggle\"}", :excludedField=>"first_name" }
142
+ ]
143
+ filtered_records = filter(conf, messages)
144
+ assert_equal(expected, filtered_records)
145
+ end
135
146
  end
136
147
  end
@@ -0,0 +1,42 @@
1
+ require "test/unit"
2
+ require "./lib/fluent/plugin/helpers.rb"
3
+
4
+ class HelpersTest < Test::Unit::TestCase
5
+ m = Class.new do
6
+ include Helpers
7
+ end.new
8
+ sub_test_case "myDig function" do
9
+ test "Call function with nil" do
10
+ t = m.myDig(nil ,[:a])
11
+ assert_equal(t, nil)
12
+ end
13
+ test "Not found" do
14
+ t = m.myDig({:b => "t"},[:a])
15
+ assert_equal(t, nil)
16
+ end
17
+ test "Found symbol" do
18
+ t = m.myDig({:a => "t"},[:a])
19
+ assert_equal(t, "t")
20
+ end
21
+ test "Found string when given symbol" do
22
+ t = m.myDig({"a" => "t"},[:a])
23
+ assert_equal(t, "t")
24
+ end
25
+ test "Found symbol nested" do
26
+ t = m.myDig({:a => {:b => "t"}},[:a, :b])
27
+ assert_equal(t, "t")
28
+ end
29
+ test "Found string when given symbol nested" do
30
+ t = m.myDig({"a" => {"b" => "t"}},[:a, :b])
31
+ assert_equal(t, "t")
32
+ end
33
+ test "Found hybrid string/symbol when given symbol nested" do
34
+ t = m.myDig({"a" => {:b => "t"}},[:a, :b])
35
+ assert_equal(t, "t")
36
+ end
37
+ test "Does not dig in string" do
38
+ t = m.myDig({"a" => {:b => "t"}},[:a, :b, :c])
39
+ assert_equal(t, nil)
40
+ end
41
+ end
42
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-masking
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shai Moria
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-12-11 00:00:00.000000000 Z
12
+ date: 2019-12-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -29,16 +29,16 @@ dependencies:
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 1.17.3
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 1.17.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -97,9 +97,11 @@ files:
97
97
  - Rakefile
98
98
  - fluent-plugin-masking.gemspec
99
99
  - lib/fluent/plugin/filter_masking.rb
100
+ - lib/fluent/plugin/helpers.rb
100
101
  - lib/fluent/plugin/version.rb
101
102
  - test/fields-to-mask
102
103
  - test/test_filter_masking.rb
104
+ - test/test_helpers.rb
103
105
  homepage: https://github.com/PayU/fluent-plugin-masking
104
106
  licenses:
105
107
  - Apache-2.0
@@ -119,7 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
121
  - !ruby/object:Gem::Version
120
122
  version: '0'
121
123
  requirements: []
122
- rubygems_version: 3.0.3
124
+ rubyforge_project:
125
+ rubygems_version: 2.5.2.3
123
126
  signing_key:
124
127
  specification_version: 4
125
128
  summary: Fluentd filter plugin to mask sensitive or privacy records with `*******`
@@ -128,3 +131,4 @@ summary: Fluentd filter plugin to mask sensitive or privacy records with `******
128
131
  test_files:
129
132
  - test/fields-to-mask
130
133
  - test/test_filter_masking.rb
134
+ - test/test_helpers.rb