inspec-core 5.12.2 → 5.18.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/etc/deprecations.json +4 -0
  4. data/etc/keys/progress-2022-05-04.pem.pub +9 -0
  5. data/inspec-core.gemspec +1 -1
  6. data/lib/inspec/base_cli.rb +5 -0
  7. data/lib/inspec/cli.rb +64 -9
  8. data/lib/inspec/dependencies/dependency_set.rb +6 -2
  9. data/lib/inspec/dependency_loader.rb +5 -1
  10. data/lib/inspec/dsl.rb +18 -5
  11. data/lib/inspec/errors.rb +2 -0
  12. data/lib/inspec/exceptions.rb +2 -0
  13. data/lib/inspec/fetcher/url.rb +1 -1
  14. data/lib/inspec/file_provider.rb +36 -0
  15. data/lib/inspec/iaf_file.rb +127 -0
  16. data/lib/inspec/profile.rb +31 -14
  17. data/lib/inspec/resources/aide_conf.rb +4 -0
  18. data/lib/inspec/resources/apache.rb +4 -0
  19. data/lib/inspec/resources/apache_conf.rb +4 -0
  20. data/lib/inspec/resources/apt.rb +6 -1
  21. data/lib/inspec/resources/audit_policy.rb +5 -0
  22. data/lib/inspec/resources/auditd_conf.rb +4 -0
  23. data/lib/inspec/resources/bash.rb +4 -0
  24. data/lib/inspec/resources/bond.rb +4 -0
  25. data/lib/inspec/resources/bridge.rb +4 -0
  26. data/lib/inspec/resources/cassandradb_conf.rb +5 -0
  27. data/lib/inspec/resources/cassandradb_session.rb +8 -3
  28. data/lib/inspec/resources/chocolatey_package.rb +4 -0
  29. data/lib/inspec/resources/chrony_conf.rb +4 -0
  30. data/lib/inspec/resources/command.rb +5 -0
  31. data/lib/inspec/resources/cpan.rb +4 -0
  32. data/lib/inspec/resources/cran.rb +4 -0
  33. data/lib/inspec/resources/cron.rb +5 -0
  34. data/lib/inspec/resources/csv.rb +6 -1
  35. data/lib/inspec/resources/default_gateway.rb +61 -0
  36. data/lib/inspec/resources/dh_params.rb +4 -0
  37. data/lib/inspec/resources/docker_container.rb +4 -0
  38. data/lib/inspec/resources/docker_image.rb +4 -0
  39. data/lib/inspec/resources/docker_plugin.rb +4 -0
  40. data/lib/inspec/resources/docker_service.rb +4 -0
  41. data/lib/inspec/resources/etc_group.rb +4 -0
  42. data/lib/inspec/resources/etc_hosts_allow_deny.rb +5 -0
  43. data/lib/inspec/resources/file.rb +97 -1
  44. data/lib/inspec/resources/filesystem.rb +4 -0
  45. data/lib/inspec/resources/gem.rb +4 -0
  46. data/lib/inspec/resources/groups.rb +9 -0
  47. data/lib/inspec/resources/grub_conf.rb +4 -0
  48. data/lib/inspec/resources/host.rb +46 -3
  49. data/lib/inspec/resources/http.rb +4 -0
  50. data/lib/inspec/resources/ibmdb2_conf.rb +8 -0
  51. data/lib/inspec/resources/ibmdb2_session.rb +12 -3
  52. data/lib/inspec/resources/iis_app.rb +4 -0
  53. data/lib/inspec/resources/iis_app_pool.rb +4 -0
  54. data/lib/inspec/resources/iis_site.rb +4 -0
  55. data/lib/inspec/resources/inetd_conf.rb +4 -0
  56. data/lib/inspec/resources/interface.rb +4 -0
  57. data/lib/inspec/resources/ip6tables.rb +4 -0
  58. data/lib/inspec/resources/ipfilter.rb +4 -0
  59. data/lib/inspec/resources/ipnat.rb +4 -0
  60. data/lib/inspec/resources/iptables.rb +4 -0
  61. data/lib/inspec/resources/json.rb +4 -0
  62. data/lib/inspec/resources/kernel_module.rb +4 -0
  63. data/lib/inspec/resources/kernel_parameter.rb +4 -0
  64. data/lib/inspec/resources/key_rsa.rb +4 -0
  65. data/lib/inspec/resources/ksh.rb +4 -0
  66. data/lib/inspec/resources/limits_conf.rb +4 -0
  67. data/lib/inspec/resources/linux_audit_system.rb +81 -0
  68. data/lib/inspec/resources/login_defs.rb +4 -0
  69. data/lib/inspec/resources/mongodb.rb +4 -0
  70. data/lib/inspec/resources/mongodb_conf.rb +5 -0
  71. data/lib/inspec/resources/mongodb_session.rb +6 -1
  72. data/lib/inspec/resources/mount.rb +4 -0
  73. data/lib/inspec/resources/mssql_session.rb +4 -0
  74. data/lib/inspec/resources/mssql_sys_conf.rb +7 -0
  75. data/lib/inspec/resources/mysql_conf.rb +4 -0
  76. data/lib/inspec/resources/mysql_session.rb +8 -1
  77. data/lib/inspec/resources/nginx.rb +6 -1
  78. data/lib/inspec/resources/nginx_conf.rb +4 -0
  79. data/lib/inspec/resources/noop.rb +4 -0
  80. data/lib/inspec/resources/npm.rb +4 -0
  81. data/lib/inspec/resources/ntp_conf.rb +4 -0
  82. data/lib/inspec/resources/oneget.rb +4 -0
  83. data/lib/inspec/resources/opa_api.rb +10 -0
  84. data/lib/inspec/resources/opa_cli.rb +14 -0
  85. data/lib/inspec/resources/oracledb_conf.rb +5 -0
  86. data/lib/inspec/resources/oracledb_listener_conf.rb +4 -0
  87. data/lib/inspec/resources/oracledb_session.rb +10 -0
  88. data/lib/inspec/resources/os.rb +4 -0
  89. data/lib/inspec/resources/os_env.rb +4 -0
  90. data/lib/inspec/resources/package.rb +4 -0
  91. data/lib/inspec/resources/parse_config.rb +10 -1
  92. data/lib/inspec/resources/php_config.rb +72 -0
  93. data/lib/inspec/resources/pip.rb +4 -0
  94. data/lib/inspec/resources/platform.rb +4 -0
  95. data/lib/inspec/resources/postfix_conf.rb +4 -0
  96. data/lib/inspec/resources/postgres_conf.rb +4 -0
  97. data/lib/inspec/resources/postgres_session.rb +8 -4
  98. data/lib/inspec/resources/powershell.rb +4 -0
  99. data/lib/inspec/resources/processes.rb +17 -4
  100. data/lib/inspec/resources/rabbitmq_config.rb +4 -0
  101. data/lib/inspec/resources/registry_key.rb +4 -0
  102. data/lib/inspec/resources/security_identifier.rb +4 -0
  103. data/lib/inspec/resources/security_policy.rb +4 -0
  104. data/lib/inspec/resources/service.rb +80 -1
  105. data/lib/inspec/resources/ssh_config.rb +4 -0
  106. data/lib/inspec/resources/sybase_conf.rb +4 -0
  107. data/lib/inspec/resources/sybase_session.rb +4 -0
  108. data/lib/inspec/resources/sys_info.rb +4 -0
  109. data/lib/inspec/resources/timezone.rb +4 -0
  110. data/lib/inspec/resources/users.rb +4 -0
  111. data/lib/inspec/resources/vbscript.rb +5 -0
  112. data/lib/inspec/resources/virtualization.rb +4 -0
  113. data/lib/inspec/resources/windows_feature.rb +5 -1
  114. data/lib/inspec/resources/windows_firewall.rb +4 -0
  115. data/lib/inspec/resources/windows_firewall_rule.rb +4 -0
  116. data/lib/inspec/resources/windows_hotfix.rb +4 -0
  117. data/lib/inspec/resources/windows_task.rb +4 -0
  118. data/lib/inspec/resources/wmi.rb +4 -0
  119. data/lib/inspec/resources/x509_certificate.rb +59 -0
  120. data/lib/inspec/resources/x509_private_key.rb +93 -0
  121. data/lib/inspec/resources/yum.rb +4 -0
  122. data/lib/inspec/resources/zfs.rb +48 -0
  123. data/lib/inspec/resources/zfs_dataset.rb +4 -0
  124. data/lib/inspec/resources/zfs_pool.rb +4 -0
  125. data/lib/inspec/rule.rb +1 -1
  126. data/lib/inspec/secrets/yaml.rb +7 -1
  127. data/lib/inspec/ui.rb +1 -0
  128. data/lib/inspec/utils/yaml_profile_summary.rb +34 -0
  129. data/lib/inspec/version.rb +1 -1
  130. data/lib/plugins/inspec-reporter-html2/templates/body.html.erb +4 -4
  131. data/lib/plugins/inspec-reporter-html2/templates/control.html.erb +1 -1
  132. data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +1 -1
  133. data/lib/plugins/{inspec-artifact/inspec-artifact.gemspec → inspec-sign/inspec-sign.gemspec} +2 -2
  134. data/lib/plugins/inspec-sign/lib/inspec-sign/base.rb +161 -0
  135. data/lib/plugins/{inspec-artifact/lib/inspec-artifact → inspec-sign/lib/inspec-sign}/cli.rb +14 -23
  136. data/lib/plugins/inspec-sign/lib/inspec-sign.rb +12 -0
  137. data/lib/source_readers/inspec.rb +8 -2
  138. metadata +16 -8
  139. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +0 -187
  140. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +0 -12
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inspec-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.12.2
4
+ version: 5.18.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef InSpec Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-08 00:00:00.000000000 Z
11
+ date: 2022-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-telemetry
@@ -370,14 +370,14 @@ dependencies:
370
370
  requirements:
371
371
  - - "~>"
372
372
  - !ruby/object:Gem::Version
373
- version: '3.0'
373
+ version: '3.10'
374
374
  type: :runtime
375
375
  prerelease: false
376
376
  version_requirements: !ruby/object:Gem::Requirement
377
377
  requirements:
378
378
  - - "~>"
379
379
  - !ruby/object:Gem::Version
380
- version: '3.0'
380
+ version: '3.10'
381
381
  description: InSpec provides a framework for creating end-to-end infrastructure tests.
382
382
  You can use it for integration or even compliance testing. Create fully portable
383
383
  test profiles and use them in your workflow to ensure stability and security. Integrate
@@ -392,6 +392,7 @@ files:
392
392
  - Gemfile
393
393
  - LICENSE
394
394
  - etc/deprecations.json
395
+ - etc/keys/progress-2022-05-04.pem.pub
395
396
  - etc/plugin_filters.json
396
397
  - inspec-core.gemspec
397
398
  - lib/bundles/README.md
@@ -443,6 +444,7 @@ files:
443
444
  - lib/inspec/formatters/json_rspec.rb
444
445
  - lib/inspec/formatters/show_progress.rb
445
446
  - lib/inspec/globals.rb
447
+ - lib/inspec/iaf_file.rb
446
448
  - lib/inspec/impact.rb
447
449
  - lib/inspec/input.rb
448
450
  - lib/inspec/input_dsl_helpers.rb
@@ -520,6 +522,7 @@ files:
520
522
  - lib/inspec/resources/cron.rb
521
523
  - lib/inspec/resources/crontab.rb
522
524
  - lib/inspec/resources/csv.rb
525
+ - lib/inspec/resources/default_gateway.rb
523
526
  - lib/inspec/resources/dh_params.rb
524
527
  - lib/inspec/resources/directory.rb
525
528
  - lib/inspec/resources/docker.rb
@@ -566,6 +569,7 @@ files:
566
569
  - lib/inspec/resources/ksh.rb
567
570
  - lib/inspec/resources/launchd_service.rb
568
571
  - lib/inspec/resources/limits_conf.rb
572
+ - lib/inspec/resources/linux_audit_system.rb
569
573
  - lib/inspec/resources/linux_kernel_parameter.rb
570
574
  - lib/inspec/resources/login_defs.rb
571
575
  - lib/inspec/resources/lxc.rb
@@ -599,6 +603,7 @@ files:
599
603
  - lib/inspec/resources/parse_config.rb
600
604
  - lib/inspec/resources/parse_config_file.rb
601
605
  - lib/inspec/resources/passwd.rb
606
+ - lib/inspec/resources/php_config.rb
602
607
  - lib/inspec/resources/pip.rb
603
608
  - lib/inspec/resources/platform.rb
604
609
  - lib/inspec/resources/port.rb
@@ -645,10 +650,12 @@ files:
645
650
  - lib/inspec/resources/windows_task.rb
646
651
  - lib/inspec/resources/wmi.rb
647
652
  - lib/inspec/resources/x509_certificate.rb
653
+ - lib/inspec/resources/x509_private_key.rb
648
654
  - lib/inspec/resources/xinetd_conf.rb
649
655
  - lib/inspec/resources/xml.rb
650
656
  - lib/inspec/resources/yaml.rb
651
657
  - lib/inspec/resources/yum.rb
658
+ - lib/inspec/resources/zfs.rb
652
659
  - lib/inspec/resources/zfs_dataset.rb
653
660
  - lib/inspec/resources/zfs_pool.rb
654
661
  - lib/inspec/rspec_extensions.rb
@@ -709,13 +716,10 @@ files:
709
716
  - lib/inspec/utils/telemetry/data_series.rb
710
717
  - lib/inspec/utils/telemetry/global_methods.rb
711
718
  - lib/inspec/utils/telemetry/run_context_probe.rb
719
+ - lib/inspec/utils/yaml_profile_summary.rb
712
720
  - lib/inspec/version.rb
713
721
  - lib/matchers/matchers.rb
714
722
  - lib/plugins/README.md
715
- - lib/plugins/inspec-artifact/inspec-artifact.gemspec
716
- - lib/plugins/inspec-artifact/lib/inspec-artifact.rb
717
- - lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb
718
- - lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb
719
723
  - lib/plugins/inspec-compliance/README.md
720
724
  - lib/plugins/inspec-compliance/inspec-compliance.gemspec
721
725
  - lib/plugins/inspec-compliance/lib/inspec-compliance.rb
@@ -799,6 +803,10 @@ files:
799
803
  - lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit.rb
800
804
  - lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/reporter.rb
801
805
  - lib/plugins/inspec-reporter-junit/lib/inspec-reporter-junit/version.rb
806
+ - lib/plugins/inspec-sign/inspec-sign.gemspec
807
+ - lib/plugins/inspec-sign/lib/inspec-sign.rb
808
+ - lib/plugins/inspec-sign/lib/inspec-sign/base.rb
809
+ - lib/plugins/inspec-sign/lib/inspec-sign/cli.rb
802
810
  - lib/plugins/inspec-streaming-reporter-progress-bar/README.md
803
811
  - lib/plugins/inspec-streaming-reporter-progress-bar/inspec-streaming-reporter-progress-bar.gemspec
804
812
  - lib/plugins/inspec-streaming-reporter-progress-bar/lib/inspec-streaming-reporter-progress-bar.rb
@@ -1,187 +0,0 @@
1
- require "base64" unless defined?(Base64)
2
- require "openssl" unless defined?(OpenSSL)
3
- require "pathname" unless defined?(Pathname)
4
- require "set" unless defined?(Set)
5
- require "tempfile" unless defined?(Tempfile)
6
- require "yaml"
7
- require "inspec/dist"
8
- require "inspec/utils/json_profile_summary"
9
-
10
- module InspecPlugins
11
- module Artifact
12
- class Base
13
- include Inspec::Dist
14
-
15
- KEY_BITS = 2048
16
- KEY_ALG = OpenSSL::PKey::RSA
17
-
18
- INSPEC_PROFILE_VERSION_1 = "INSPEC-PROFILE-1".freeze
19
- INSPEC_REPORT_VERSION_1 = "INSPEC-REPORT-1".freeze
20
-
21
- ARTIFACT_DIGEST = OpenSSL::Digest::SHA512
22
- ARTIFACT_DIGEST_NAME = "SHA512".freeze
23
-
24
- VALID_PROFILE_VERSIONS = Set.new [INSPEC_PROFILE_VERSION_1]
25
- VALID_PROFILE_DIGESTS = Set.new [ARTIFACT_DIGEST_NAME]
26
-
27
- SIGNED_PROFILE_SUFFIX = "iaf".freeze
28
- SIGNED_REPORT_SUFFIX = "iar".freeze
29
-
30
- def self.keygen(options)
31
- key = KEY_ALG.new KEY_BITS
32
- puts "Generating private key"
33
- open "#{options["keyname"]}.pem.key", "w" do |io|
34
- io.write key.to_pem
35
- end
36
- puts "Generating public key"
37
- open "#{options["keyname"]}.pem.pub", "w" do |io|
38
- io.write key.public_key.to_pem
39
- end
40
- end
41
-
42
- def self.profile_sign(options)
43
- artifact = new
44
- path_to_profile = options["profile"]
45
-
46
- # Write inspec.json file within artifact
47
- write_inspec_json(path_to_profile, options)
48
-
49
- Dir.mktmpdir do |workdir|
50
- puts "Signing #{options["profile"]} with key #{options["keyname"]}"
51
- profile_md = artifact.read_profile_metadata(path_to_profile)
52
- artifact_filename = "#{profile_md["name"]}-#{profile_md["version"]}.#{SIGNED_PROFILE_SUFFIX}"
53
- tarfile = artifact.profile_compress(path_to_profile, profile_md, workdir)
54
- content = IO.binread(tarfile)
55
- signing_key = KEY_ALG.new File.read "#{options["keyname"]}.pem.key"
56
- sha = ARTIFACT_DIGEST.new
57
- signature = signing_key.sign sha, content
58
- # convert the signature to Base64
59
- signature_base64 = Base64.encode64(signature)
60
- tar_content = IO.binread(tarfile)
61
- File.open(artifact_filename, "wb") do |f|
62
- f.puts(INSPEC_PROFILE_VERSION_1)
63
- f.puts(options["keyname"])
64
- f.puts(ARTIFACT_DIGEST_NAME)
65
- f.puts(signature_base64)
66
- f.puts("") # newline separates artifact header with body
67
- f.write(tar_content)
68
- end
69
- puts "Successfully generated #{artifact_filename}"
70
- end
71
-
72
- # Cleanup
73
- File.delete("#{path_to_profile}/inspec.json")
74
- end
75
-
76
- def self.profile_verify(options)
77
- artifact = new
78
- file_to_verifiy = options["infile"]
79
- puts "Verifying #{file_to_verifiy}"
80
- artifact.verify(file_to_verifiy) do ||
81
- puts "Artifact is valid"
82
- end
83
- end
84
-
85
- def self.profile_install(options)
86
- artifact = new
87
- puts "Installing profile"
88
- file_to_verifiy = options["infile"]
89
- dest_dir = options["destdir"]
90
- artifact.verify(file_to_verifiy) do |content|
91
- Dir.mktmpdir do |workdir|
92
- tmpfile = Pathname.new(workdir).join("artifact_to_install.tar.gz")
93
- File.write(tmpfile, content)
94
- puts "Installing to #{dest_dir}"
95
- `tar xzf #{tmpfile} -C #{dest_dir}`
96
- end
97
- end
98
- end
99
-
100
- def read_profile_metadata(path_to_profile)
101
- begin
102
- p = Pathname.new(path_to_profile)
103
- p = p.join("inspec.yml")
104
- unless p.exist?
105
- raise "#{path_to_profile} doesn't appear to be a valid #{PRODUCT_NAME} profile"
106
- end
107
-
108
- yaml = YAML.load_file(p.to_s)
109
- yaml = yaml.to_hash
110
-
111
- unless yaml.key? "name"
112
- raise "Profile is invalid, name is not defined"
113
- end
114
-
115
- unless yaml.key? "version"
116
- raise "Profile is invalid, version is not defined"
117
- end
118
- rescue => e
119
- # rewrap it and pass it up to the CLI
120
- raise "Error reading #{PRODUCT_NAME} profile metadata: #{e}"
121
- end
122
-
123
- yaml
124
- end
125
-
126
- def profile_compress(path_to_profile, profile_md, workdir)
127
- profile_name = profile_md["name"]
128
- profile_version = profile_md["version"]
129
- outfile_name = "#{workdir}/#{profile_name}-#{profile_version}.tar.gz"
130
- `tar czf #{outfile_name} -C #{path_to_profile} .`
131
- outfile_name
132
- end
133
-
134
- def valid_header?(file_alg, file_version, file_keyname)
135
- public_keyfile = "#{file_keyname}.pem.pub"
136
- puts "Looking for #{public_keyfile} to verify artifact"
137
- unless File.exist? public_keyfile
138
- raise "Can't find #{public_keyfile}"
139
- end
140
-
141
- raise "Invalid artifact digest algorithm detected" unless VALID_PROFILE_DIGESTS.member?(file_alg)
142
- raise "Invalid artifact version detected" unless VALID_PROFILE_VERSIONS.member?(file_version)
143
- end
144
-
145
- def verify(file_to_verifiy, &content_block)
146
- f = File.open(file_to_verifiy, "r")
147
- file_version = f.readline.strip!
148
- file_keyname = f.readline.strip!
149
- file_alg = f.readline.strip!
150
-
151
- file_sig = ""
152
- # the signature is multi-line
153
- while (line = f.readline) != "\n"
154
- file_sig += line
155
- end
156
- file_sig.strip!
157
- f.close
158
-
159
- valid_header?(file_alg, file_version, file_keyname)
160
-
161
- public_keyfile = "#{file_keyname}.pem.pub"
162
- verification_key = KEY_ALG.new File.read public_keyfile
163
-
164
- f = File.open(file_to_verifiy, "r")
165
- while f.readline != "\n" do end
166
- content = f.read
167
-
168
- signature = Base64.decode64(file_sig)
169
- digest = ARTIFACT_DIGEST.new
170
- if verification_key.verify digest, signature, content
171
- content_block.yield(content)
172
- else
173
- raise "Artifact is invalid"
174
- end
175
- end
176
-
177
- def self.write_inspec_json(root_path, opts)
178
- profile = Inspec::Profile.for_path(root_path, opts)
179
- Inspec::Utils::JsonProfileSummary.produce_json(
180
- info: profile.info,
181
- write_path: "#{root_path}/inspec.json",
182
- suppress_output: true
183
- )
184
- end
185
- end
186
- end
187
- end
@@ -1,12 +0,0 @@
1
- module InspecPlugins
2
- module Artifact
3
- class Plugin < Inspec.plugin(2)
4
- plugin_name :'inspec-artifact'
5
-
6
- cli_command :artifact do
7
- require_relative "inspec-artifact/cli"
8
- InspecPlugins::Artifact::CLI
9
- end
10
- end
11
- end
12
- end