fluent-plugin-masking 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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