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 +5 -5
- data/Gemfile.lock +5 -5
- data/fluent-plugin-masking.gemspec +1 -1
- data/lib/fluent/plugin/filter_masking.rb +11 -5
- data/lib/fluent/plugin/helpers.rb +17 -0
- data/lib/fluent/plugin/version.rb +1 -1
- data/test/test_filter_masking.rb +11 -0
- data/test/test_helpers.rb +42 -0
- metadata +11 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1c38cb2f6e5f95c87452557e16ccaeedafd724eb
|
4
|
+
data.tar.gz: 3a0e9de85b4ffef48c6760a7071595e0897ed597
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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.
|
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 (
|
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
|
-
|
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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
data/test/test_filter_masking.rb
CHANGED
@@ -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.
|
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-
|
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:
|
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:
|
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
|
-
|
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
|