abide_dev_utils 0.5.2 → 0.6.0
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/abide_dev_utils.gemspec +2 -1
- data/lib/abide_dev_utils/cli/comply.rb +22 -20
- data/lib/abide_dev_utils/cli/puppet.rb +118 -11
- data/lib/abide_dev_utils/comply.rb +410 -99
- data/lib/abide_dev_utils/errors/comply.rb +13 -0
- data/lib/abide_dev_utils/errors/gcloud.rb +27 -0
- data/lib/abide_dev_utils/errors/ppt.rb +12 -0
- data/lib/abide_dev_utils/errors.rb +2 -0
- data/lib/abide_dev_utils/gcloud.rb +21 -0
- data/lib/abide_dev_utils/mixins.rb +16 -0
- data/lib/abide_dev_utils/ppt/class_utils.rb +184 -0
- data/lib/abide_dev_utils/ppt/coverage.rb +2 -3
- data/lib/abide_dev_utils/ppt.rb +135 -49
- data/lib/abide_dev_utils/version.rb +1 -1
- data/lib/abide_dev_utils/xccdf/cis/hiera.rb +67 -64
- data/lib/abide_dev_utils/xccdf/utils.rb +85 -0
- data/lib/abide_dev_utils/xccdf.rb +5 -0
- data/lib/abide_dev_utils.rb +1 -0
- metadata +24 -5
- data/lib/abide_dev_utils/utils/general.rb +0 -9
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'nokogiri'
|
|
4
|
+
require 'abide_dev_utils/validate'
|
|
5
|
+
require 'pry'
|
|
6
|
+
|
|
7
|
+
module AbideDevUtils
|
|
8
|
+
module XCCDF
|
|
9
|
+
module Utils
|
|
10
|
+
CONTROL_PREFIX = /^[\d.]+_/.freeze
|
|
11
|
+
UNDERSCORED = /(\s|\(|\)|-|\.)/.freeze
|
|
12
|
+
CIS_NEXT_GEN_WINDOWS = /(next_generation_windows_security)/.freeze
|
|
13
|
+
CIS_XPATHS = {
|
|
14
|
+
benchmark: {
|
|
15
|
+
all: 'xccdf:Benchmark',
|
|
16
|
+
title: 'xccdf:Benchmark/xccdf:title',
|
|
17
|
+
version: 'xccdf:Benchmark/xccdf:version'
|
|
18
|
+
},
|
|
19
|
+
profiles: {
|
|
20
|
+
all: 'xccdf:Benchmark/xccdf:Profile',
|
|
21
|
+
relative_title: './xccdf:title',
|
|
22
|
+
relative_select: './xccdf:select'
|
|
23
|
+
}
|
|
24
|
+
}.freeze
|
|
25
|
+
|
|
26
|
+
def parse(xccdf_file)
|
|
27
|
+
AbideDevUtils::Validate.file(xccdf_file)
|
|
28
|
+
File.open(xccdf_file) { |f| Nokogiri::XML(f) }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def normalize_string(str)
|
|
32
|
+
nstr = str.downcase
|
|
33
|
+
nstr.gsub!(/[^a-z0-9]$/, '')
|
|
34
|
+
nstr.gsub!(/^[^a-z]/, '')
|
|
35
|
+
nstr.gsub!(/^(l1_|l2_|ng_)/, '')
|
|
36
|
+
nstr.delete!('(/|\\|\+)')
|
|
37
|
+
nstr.gsub!(UNDERSCORED, '_')
|
|
38
|
+
nstr.strip!
|
|
39
|
+
nstr
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def normalize_profile_name(prof)
|
|
43
|
+
prof_name = normalize_string("profile_#{prof}")
|
|
44
|
+
prof_name.gsub!(NEXT_GEN_WINDOWS, 'ngws')
|
|
45
|
+
prof_name.strip!
|
|
46
|
+
prof_name
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def normalize_control_name(control, number_format: false)
|
|
50
|
+
return number_normalize_control(control) if number_format
|
|
51
|
+
|
|
52
|
+
name_normalize_control(control)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def name_normalize_control(control)
|
|
56
|
+
new_ctrl = control.split('benchmarks_rule_')[-1].gsub(CONTROL_PREFIX, '')
|
|
57
|
+
normalize_string(new_ctrl)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def number_normalize_control(control)
|
|
61
|
+
part = control.split('benchmarks_rule_')[-1]
|
|
62
|
+
numpart = CONTROL_PREFIX.match(part).to_s.chop.gsub(UNDERSCORED, '_')
|
|
63
|
+
"c#{numpart}"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def text_normalize_control(control)
|
|
67
|
+
control = control['idref'].to_s unless control.respond_to?(:split)
|
|
68
|
+
|
|
69
|
+
control.split('benchmarks_rule_')[-1].tr('_', ' ')
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def all_cis_recommendations(parsed_xccdf)
|
|
73
|
+
parsed_xccdf.xpath('//xccdf:select').uniq
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def find_cis_recommendation(name, recommendations, number_format: false)
|
|
77
|
+
recommendations.each do |reco|
|
|
78
|
+
if normalize_control_name(reco['idref'].to_s, number_format: number_format) == name
|
|
79
|
+
return text_normalize_control(reco['idref'].to_s)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
data/lib/abide_dev_utils.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: abide_dev_utils
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Heston Snodgrass
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-09-
|
|
11
|
+
date: 2021-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: nokogiri
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '6.
|
|
47
|
+
version: '6.23'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '6.
|
|
54
|
+
version: '6.23'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: jira-ruby
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -94,6 +94,20 @@ dependencies:
|
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
96
|
version: 4.0.0.beta4
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: google-cloud-storage
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '1.34'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '1.34'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: bundler
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -313,24 +327,29 @@ files:
|
|
|
313
327
|
- lib/abide_dev_utils/constants.rb
|
|
314
328
|
- lib/abide_dev_utils/errors.rb
|
|
315
329
|
- lib/abide_dev_utils/errors/base.rb
|
|
330
|
+
- lib/abide_dev_utils/errors/comply.rb
|
|
331
|
+
- lib/abide_dev_utils/errors/gcloud.rb
|
|
316
332
|
- lib/abide_dev_utils/errors/general.rb
|
|
317
333
|
- lib/abide_dev_utils/errors/jira.rb
|
|
318
334
|
- lib/abide_dev_utils/errors/ppt.rb
|
|
319
335
|
- lib/abide_dev_utils/errors/xccdf.rb
|
|
320
336
|
- lib/abide_dev_utils/files.rb
|
|
337
|
+
- lib/abide_dev_utils/gcloud.rb
|
|
321
338
|
- lib/abide_dev_utils/jira.rb
|
|
339
|
+
- lib/abide_dev_utils/mixins.rb
|
|
322
340
|
- lib/abide_dev_utils/output.rb
|
|
323
341
|
- lib/abide_dev_utils/ppt.rb
|
|
342
|
+
- lib/abide_dev_utils/ppt/class_utils.rb
|
|
324
343
|
- lib/abide_dev_utils/ppt/coverage.rb
|
|
325
344
|
- lib/abide_dev_utils/ppt/new_obj.rb
|
|
326
345
|
- lib/abide_dev_utils/prompt.rb
|
|
327
346
|
- lib/abide_dev_utils/resources/generic_spec.erb
|
|
328
|
-
- lib/abide_dev_utils/utils/general.rb
|
|
329
347
|
- lib/abide_dev_utils/validate.rb
|
|
330
348
|
- lib/abide_dev_utils/version.rb
|
|
331
349
|
- lib/abide_dev_utils/xccdf.rb
|
|
332
350
|
- lib/abide_dev_utils/xccdf/cis.rb
|
|
333
351
|
- lib/abide_dev_utils/xccdf/cis/hiera.rb
|
|
352
|
+
- lib/abide_dev_utils/xccdf/utils.rb
|
|
334
353
|
homepage: https://github.com/hsnodgrass/abide_dev_utils
|
|
335
354
|
licenses:
|
|
336
355
|
- MIT
|