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 +4 -4
- data/.circleci/config.yml +9 -4
- data/.github/workflows/acceptance_test_mariadb.yml +57 -1
- data/.github/workflows/acceptance_test_mysql.yml +1 -1
- data/.rubocop.yml +7 -1
- data/.rubocop_todo.yml +105 -0
- data/.ruby-version +1 -1
- data/CHANGELOG.md +10 -0
- data/Dockerfile +3 -1
- data/Gemfile +20 -0
- data/Gemfile.lock +67 -51
- data/README.md +18 -8
- data/acceptance/expected_query_result.txt +36 -30
- data/acceptance/import_dumpfile.sql +3 -1
- data/acceptance/masking.yml +2 -0
- data/acceptance/run_test.sh +1 -1
- data/docker-compose/mariadb1010.yml +17 -0
- data/docker-compose/mariadb1011.yml +17 -0
- data/docker-compose/mariadb105.yml +17 -0
- data/docker-compose/mariadb106.yml +17 -0
- data/docker-compose/mariadb107.yml +17 -0
- data/docker-compose/mariadb108.yml +17 -0
- data/docker-compose/mariadb109.yml +17 -0
- data/lib/masking/cli/error_message.rb +1 -1
- data/lib/masking/config/target_columns/column.rb +19 -5
- data/lib/masking/config/target_columns/method/string_binary_distinctor.rb +3 -3
- data/lib/masking/config/target_columns/method/type/base.rb +25 -0
- data/lib/masking/config/target_columns/method/type/binary.rb +19 -0
- data/lib/masking/config/target_columns/method/type/boolean.rb +27 -0
- data/lib/masking/config/target_columns/method/type/date.rb +28 -0
- data/lib/masking/config/target_columns/method/type/extension/ignore_null.rb +24 -0
- data/lib/masking/config/target_columns/method/type/float.rb +19 -0
- data/lib/masking/config/target_columns/method/type/integer.rb +19 -0
- data/lib/masking/config/target_columns/method/{null.rb → type/null.rb} +5 -5
- data/lib/masking/config/target_columns/method/type/string.rb +37 -0
- data/lib/masking/config/target_columns/method/type/time.rb +26 -0
- data/lib/masking/config/target_columns/method.rb +14 -10
- data/lib/masking/insert_statement/sql_builder.rb +2 -2
- data/lib/masking/insert_statement.rb +1 -1
- data/lib/masking/sql_dump_line.rb +1 -0
- data/lib/masking/version.rb +1 -1
- data/masking.gemspec +1 -18
- metadata +24 -181
- data/lib/masking/config/target_columns/method/binary.rb +0 -23
- data/lib/masking/config/target_columns/method/boolean.rb +0 -29
- data/lib/masking/config/target_columns/method/date.rb +0 -30
- data/lib/masking/config/target_columns/method/float.rb +0 -23
- data/lib/masking/config/target_columns/method/integer.rb +0 -23
- data/lib/masking/config/target_columns/method/string.rb +0 -33
- data/lib/masking/config/target_columns/method/time.rb +0 -28
metadata
CHANGED
@@ -1,183 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: 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
|
- Chikahiro Tokoro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake-notes
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: ruby-prof
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ">="
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: mdl
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: codecov
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rspec
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: simplecov
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: pry
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - ">="
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: pry-byebug
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: tapp
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
11
|
+
date: 2023-04-03 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
181
13
|
description: Command line tool for anonymizing database records by parsing a SQL dump
|
182
14
|
file and build new SQL dump file with masking sensitive/credential data.
|
183
15
|
email:
|
@@ -196,6 +28,7 @@ files:
|
|
196
28
|
- ".gitignore"
|
197
29
|
- ".mdlrc"
|
198
30
|
- ".rubocop.yml"
|
31
|
+
- ".rubocop_todo.yml"
|
199
32
|
- ".ruby-version"
|
200
33
|
- CHANGELOG.md
|
201
34
|
- CODE_OF_CONDUCT.md
|
@@ -223,9 +56,16 @@ files:
|
|
223
56
|
- docker-compose/acceptance_test.sh
|
224
57
|
- docker-compose/mariadb100.yml
|
225
58
|
- docker-compose/mariadb101.yml
|
59
|
+
- docker-compose/mariadb1010.yml
|
60
|
+
- docker-compose/mariadb1011.yml
|
226
61
|
- docker-compose/mariadb102.yml
|
227
62
|
- docker-compose/mariadb103.yml
|
228
63
|
- docker-compose/mariadb104.yml
|
64
|
+
- docker-compose/mariadb105.yml
|
65
|
+
- docker-compose/mariadb106.yml
|
66
|
+
- docker-compose/mariadb107.yml
|
67
|
+
- docker-compose/mariadb108.yml
|
68
|
+
- docker-compose/mariadb109.yml
|
229
69
|
- docker-compose/mariadb55.yml
|
230
70
|
- docker-compose/mysql55.yml
|
231
71
|
- docker-compose/mysql56.yml
|
@@ -241,15 +81,17 @@ files:
|
|
241
81
|
- lib/masking/config/target_columns.rb
|
242
82
|
- lib/masking/config/target_columns/column.rb
|
243
83
|
- lib/masking/config/target_columns/method.rb
|
244
|
-
- lib/masking/config/target_columns/method/binary.rb
|
245
|
-
- lib/masking/config/target_columns/method/boolean.rb
|
246
|
-
- lib/masking/config/target_columns/method/date.rb
|
247
|
-
- lib/masking/config/target_columns/method/float.rb
|
248
|
-
- lib/masking/config/target_columns/method/integer.rb
|
249
|
-
- lib/masking/config/target_columns/method/null.rb
|
250
|
-
- lib/masking/config/target_columns/method/string.rb
|
251
84
|
- lib/masking/config/target_columns/method/string_binary_distinctor.rb
|
252
|
-
- lib/masking/config/target_columns/method/
|
85
|
+
- lib/masking/config/target_columns/method/type/base.rb
|
86
|
+
- lib/masking/config/target_columns/method/type/binary.rb
|
87
|
+
- lib/masking/config/target_columns/method/type/boolean.rb
|
88
|
+
- lib/masking/config/target_columns/method/type/date.rb
|
89
|
+
- lib/masking/config/target_columns/method/type/extension/ignore_null.rb
|
90
|
+
- lib/masking/config/target_columns/method/type/float.rb
|
91
|
+
- lib/masking/config/target_columns/method/type/integer.rb
|
92
|
+
- lib/masking/config/target_columns/method/type/null.rb
|
93
|
+
- lib/masking/config/target_columns/method/type/string.rb
|
94
|
+
- lib/masking/config/target_columns/method/type/time.rb
|
253
95
|
- lib/masking/config/target_columns/table.rb
|
254
96
|
- lib/masking/data_mask_processor.rb
|
255
97
|
- lib/masking/data_mask_processor/cache.rb
|
@@ -265,7 +107,8 @@ files:
|
|
265
107
|
homepage: https://github.com/kibitan/masking
|
266
108
|
licenses:
|
267
109
|
- MIT
|
268
|
-
metadata:
|
110
|
+
metadata:
|
111
|
+
rubygems_mfa_required: 'true'
|
269
112
|
post_install_message:
|
270
113
|
rdoc_options: []
|
271
114
|
require_paths:
|
@@ -281,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
281
124
|
- !ruby/object:Gem::Version
|
282
125
|
version: '0'
|
283
126
|
requirements: []
|
284
|
-
rubygems_version: 3.
|
127
|
+
rubygems_version: 3.4.6
|
285
128
|
signing_key:
|
286
129
|
specification_version: 4
|
287
130
|
summary: Command line tool for anonymizing databese records
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class Binary
|
8
|
-
def initialize(value)
|
9
|
-
@binary = value
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
"_binary '#{binary}'".b
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :binary
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class Boolean
|
8
|
-
def initialize(value)
|
9
|
-
@boolean = value
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
boolean_format.to_s
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :boolean
|
19
|
-
|
20
|
-
# NOTE: 11.1.1 Numeric Type Overview, chapter BOOL, BOOLEAN
|
21
|
-
# https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html
|
22
|
-
def boolean_format
|
23
|
-
boolean ? 1 : 0
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'date'
|
4
|
-
|
5
|
-
module Masking
|
6
|
-
class Config
|
7
|
-
class TargetColumns
|
8
|
-
class Method
|
9
|
-
class Date
|
10
|
-
def initialize(value)
|
11
|
-
@date = value.strftime(FORMAT)
|
12
|
-
end
|
13
|
-
|
14
|
-
def call
|
15
|
-
"'#{date_format}'"
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
attr_reader :date
|
21
|
-
FORMAT = '%Y-%m-%d'
|
22
|
-
|
23
|
-
def date_format
|
24
|
-
date
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class Float
|
8
|
-
def initialize(value)
|
9
|
-
@float = value.to_s
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
float
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :float
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class Integer
|
8
|
-
def initialize(value)
|
9
|
-
@integer = value.to_s
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
integer
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :integer
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class String
|
8
|
-
def initialize(value)
|
9
|
-
@string = value
|
10
|
-
@sequence = 0
|
11
|
-
end
|
12
|
-
|
13
|
-
def call
|
14
|
-
("'" + output + "'").b
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
SEQUENTIAL_NUMBER_PLACEHOLDER = '%{n}' # rubocop:disable Style/FormatStringToken
|
20
|
-
attr_reader :string
|
21
|
-
|
22
|
-
def output
|
23
|
-
string.sub(SEQUENTIAL_NUMBER_PLACEHOLDER, sequence.to_s)
|
24
|
-
end
|
25
|
-
|
26
|
-
def sequence
|
27
|
-
@sequence += 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Masking
|
4
|
-
class Config
|
5
|
-
class TargetColumns
|
6
|
-
class Method
|
7
|
-
class Time
|
8
|
-
def initialize(value)
|
9
|
-
@time = value.strftime(FORMAT)
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
"'#{time_format}'"
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :time
|
19
|
-
FORMAT = '%Y-%m-%d %H:%M:%S'
|
20
|
-
|
21
|
-
def time_format
|
22
|
-
time
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|