fluent-plugin-masking 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.gitlab-ci.yml +15 -17
- data/Gemfile.lock +1 -1
- data/lib/fluent/plugin/filter_masking.rb +3 -3
- data/lib/fluent/plugin/version.rb +1 -1
- data/test/fields-to-mask +3 -1
- data/test/test_filter_masking.rb +23 -28
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3af98b34958dbe69aded48cc35ea83ebeada5e020773f041dcf0f787ce70dfdf
|
4
|
+
data.tar.gz: 7a19b3898868e5bc8d6118419287c59f777be1d56cf177aa059df29c4d13edaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 874630b83c4dc1131521af3444c3f3bc1d1638a929e73049817cfdacfb55353587c8d1bfa424ebee4b3669d3c488ee38a5ae74b88ec545ef1e64d92a963ffd5f
|
7
|
+
data.tar.gz: 8574105ab4603323527e4d5d000043dd0c201990530afec23634f3195b815cacd6853748d60c0855eadbf26baafd718a0f3239b5289e0b906353c6be06063b86
|
data/.gitignore
CHANGED
data/.gitlab-ci.yml
CHANGED
@@ -11,24 +11,24 @@ before_script:
|
|
11
11
|
- bundle install -j $(nproc) --path vendor # Install dependencies into ./vendor/ruby
|
12
12
|
|
13
13
|
stages:
|
14
|
-
- test
|
15
|
-
- release
|
14
|
+
- test
|
15
|
+
- release
|
16
16
|
|
17
17
|
variables:
|
18
18
|
DOCKER_TLS_CERTDIR: ""
|
19
19
|
|
20
20
|
unit-test:
|
21
21
|
tags:
|
22
|
-
|
22
|
+
- dcos-multi-runner
|
23
23
|
stage: test
|
24
24
|
script:
|
25
|
-
|
25
|
+
- bundle exec rake test
|
26
26
|
except:
|
27
|
-
|
27
|
+
- tags
|
28
28
|
|
29
29
|
.release: &release
|
30
30
|
tags:
|
31
|
-
|
31
|
+
- dcos-multi-runner
|
32
32
|
stage: release
|
33
33
|
before_script:
|
34
34
|
- echo "Setup ssh inside the runner.."
|
@@ -45,19 +45,17 @@ unit-test:
|
|
45
45
|
- cd $CI_PROJECT_NAME
|
46
46
|
- git reset --hard $CI_COMMIT_SHA
|
47
47
|
script:
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
- export VERSION=$(cat ./lib/fluent/plugin/version.rb | grep VERSION | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.]\).*/\1/p' | sed 's/"$//')
|
57
|
-
- gem push fluent-plugin-masking-$VERSION.gem
|
48
|
+
- mkdir -p ~/.gem
|
49
|
+
- 'echo -e "---\n:rubygems_api_key: $GEM_HOST_API_KEY" > ~/.gem/credentials && echo "created gem credentials"'
|
50
|
+
- chmod 0600 ~/.gem/credentials
|
51
|
+
- gem install gem-release
|
52
|
+
- gem bump fluent-plugin-masking --version $TYPE --file ./lib/fluent/plugin/version.rb --commit --push --tag
|
53
|
+
- gem build fluent-plugin-masking.gemspec
|
54
|
+
- export VERSION=$(cat ./lib/fluent/plugin/version.rb | grep VERSION | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,4\}[0-9][^.]\).*/\1/p' | sed 's/"$//')
|
55
|
+
- gem push fluent-plugin-masking-$VERSION.gem
|
58
56
|
when: manual
|
59
57
|
only:
|
60
|
-
|
58
|
+
- master
|
61
59
|
|
62
60
|
release:patch:
|
63
61
|
extends: .release
|
data/Gemfile.lock
CHANGED
@@ -16,12 +16,12 @@ module Fluent
|
|
16
16
|
# the original record is return
|
17
17
|
def maskRecord(record)
|
18
18
|
maskedRecord = record
|
19
|
-
|
19
|
+
|
20
20
|
begin
|
21
21
|
recordStr = record.to_s
|
22
|
-
|
23
22
|
@fields_to_mask.each do | fieldToMask |
|
24
|
-
recordStr = recordStr.gsub(/
|
23
|
+
recordStr = recordStr.gsub(/(?::#{fieldToMask}=>")(.*?)(?:")/m, ":#{fieldToMask}=>\"#{MASK_STRING}\"") # mask element in hash object
|
24
|
+
recordStr = recordStr.gsub(/\\+"#{fieldToMask}\\+":\\+.+?((?=(}\\+",)|,( *|)(\s|\\+)\")|(?=}"$))/m, "\\\"#{fieldToMask}\\\":\\\"#{MASK_STRING}\\\"") # mask element in json string
|
25
25
|
end
|
26
26
|
|
27
27
|
maskedRecord = strToHash(recordStr)
|
data/test/fields-to-mask
CHANGED
data/test/test_filter_masking.rb
CHANGED
@@ -6,6 +6,7 @@ require "fluent/test/driver/filter"
|
|
6
6
|
require "fluent/test/helpers"
|
7
7
|
require "./lib/fluent/plugin/filter_masking.rb"
|
8
8
|
|
9
|
+
|
9
10
|
MASK_STRING = "*******"
|
10
11
|
|
11
12
|
class YourOwnFilterTest < Test::Unit::TestCase
|
@@ -32,59 +33,53 @@ class YourOwnFilterTest < Test::Unit::TestCase
|
|
32
33
|
d.filtered_records
|
33
34
|
end
|
34
35
|
|
35
|
-
# sub_test_case 'configured with invalid configuration' do
|
36
|
-
# test 'empty configuration' do
|
37
|
-
# assert_raise(Fluent::ConfigError) do
|
38
|
-
# create_driver('')
|
39
|
-
# end
|
40
|
-
# end
|
41
|
-
|
42
|
-
# test 'param1 should reject too short string' do
|
43
|
-
# conf = %[
|
44
|
-
# param1 a
|
45
|
-
# ]
|
46
|
-
# assert_raise(Fluent::ConfigError) do
|
47
|
-
# create_driver(conf)
|
48
|
-
# end
|
49
|
-
# end
|
50
|
-
# # ...
|
51
|
-
# end
|
52
|
-
|
53
36
|
sub_test_case 'plugin will mask all fields that need masking' do
|
54
|
-
test 'mask
|
37
|
+
test 'mask field in hash object' do
|
38
|
+
conf = CONFIG
|
39
|
+
messages = [
|
40
|
+
{:not_masked_field=>"mickey-the-dog", :email=>"mickey-the-dog@zooz.com"}
|
41
|
+
]
|
42
|
+
expected = [
|
43
|
+
{:not_masked_field=>"mickey-the-dog", :email=>MASK_STRING}
|
44
|
+
]
|
45
|
+
filtered_records = filter(conf, messages)
|
46
|
+
assert_equal(expected, filtered_records)
|
47
|
+
end
|
48
|
+
|
49
|
+
test 'mask field in json string' do
|
55
50
|
conf = CONFIG
|
56
51
|
messages = [
|
57
|
-
{
|
52
|
+
{ :body => "{\"first_name\":\"mickey\",\"last_name\":\"the-dog\", \"type\":\"puggle\"}" }
|
58
53
|
]
|
59
54
|
expected = [
|
60
|
-
{ "first_name"
|
55
|
+
{ :body => "{\"first_name\":\"*******\",\"last_name\":\"*******\", \"type\":\"puggle\"}" }
|
61
56
|
]
|
62
57
|
filtered_records = filter(conf, messages)
|
63
58
|
assert_equal(expected, filtered_records)
|
64
59
|
end
|
65
60
|
|
66
|
-
test 'mask
|
61
|
+
test 'mask field in nested json string' do
|
67
62
|
conf = CONFIG
|
68
63
|
messages = [
|
69
|
-
{
|
64
|
+
{ :body => "{\"first_name\":\"mickey\",\"last_name\":\"the-dog\",\"address\":\"{\"street\":\"Austin\",\"number\":\"89\"}\", \"type\":\"puggle\"}" }
|
70
65
|
]
|
71
66
|
expected = [
|
72
|
-
{
|
67
|
+
{ :body => "{\"first_name\":\"*******\",\"last_name\":\"*******\",\"address\":\"{\"street\":\"*******\",\"number\":\"*******\"}\", \"type\":\"puggle\"}" }
|
73
68
|
]
|
74
69
|
filtered_records = filter(conf, messages)
|
75
70
|
assert_equal(expected, filtered_records)
|
76
71
|
end
|
77
72
|
|
78
|
-
test 'mask
|
73
|
+
test 'mask field in nested json escaped strubg' do
|
79
74
|
conf = CONFIG
|
80
75
|
messages = [
|
81
|
-
{
|
76
|
+
{ :body => "{\"first_name\":\"mickey\",\"last_name\":\"the-dog\",\"address\":\"{\\\"street\":\\\"Austin\\\",\\\"number\":\\\"89\\\"}\", \"type\":\"puggle\"}" }
|
82
77
|
]
|
83
78
|
expected = [
|
84
|
-
{
|
79
|
+
{ :body => "{\"first_name\":\"*******\",\"last_name\":\"*******\",\"address\":\"{\"street\":\"*******\",\"number\":\"*******\"}\", \"type\":\"puggle\"}" }
|
85
80
|
]
|
86
81
|
filtered_records = filter(conf, messages)
|
87
82
|
assert_equal(expected, filtered_records)
|
88
83
|
end
|
89
84
|
end
|
90
|
-
end
|
85
|
+
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.0.
|
4
|
+
version: 1.0.4
|
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-08-
|
12
|
+
date: 2019-08-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|