inspec 4.3.2 → 4.6.3

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.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +36 -38
  3. data/README.md +37 -21
  4. data/etc/deprecations.json +10 -0
  5. data/etc/plugin_filters.json +8 -0
  6. data/inspec.gemspec +38 -39
  7. data/lib/bundles/inspec-compliance/api.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  9. data/lib/bundles/inspec-compliance/http.rb +1 -1
  10. data/lib/bundles/inspec-compliance/support.rb +1 -1
  11. data/lib/bundles/inspec-compliance/target.rb +1 -1
  12. data/lib/bundles/inspec-supermarket.rb +3 -7
  13. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  14. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  15. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  16. data/lib/fetchers/git.rb +14 -15
  17. data/lib/fetchers/local.rb +6 -10
  18. data/lib/fetchers/mock.rb +3 -5
  19. data/lib/fetchers/url.rb +42 -44
  20. data/lib/inspec.rb +23 -24
  21. data/lib/inspec/archive/tar.rb +2 -6
  22. data/lib/inspec/archive/zip.rb +3 -7
  23. data/lib/inspec/backend.rb +8 -9
  24. data/lib/inspec/base_cli.rb +64 -65
  25. data/lib/inspec/cached_fetcher.rb +2 -3
  26. data/lib/inspec/cli.rb +136 -97
  27. data/lib/inspec/config.rb +71 -61
  28. data/lib/inspec/control_eval_context.rb +22 -18
  29. data/lib/inspec/dependencies/cache.rb +2 -3
  30. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  31. data/lib/inspec/dependencies/lockfile.rb +8 -9
  32. data/lib/inspec/dependencies/requirement.rb +7 -8
  33. data/lib/inspec/dependencies/resolver.rb +5 -7
  34. data/lib/inspec/describe.rb +2 -6
  35. data/lib/inspec/dist.rb +20 -0
  36. data/lib/inspec/dsl.rb +4 -7
  37. data/lib/inspec/dsl_shared.rb +1 -2
  38. data/lib/inspec/env_printer.rb +11 -12
  39. data/lib/inspec/errors.rb +0 -4
  40. data/lib/inspec/exceptions.rb +0 -1
  41. data/lib/inspec/expect.rb +5 -8
  42. data/lib/inspec/fetcher.rb +7 -10
  43. data/lib/inspec/file_provider.rb +24 -24
  44. data/lib/inspec/formatters.rb +3 -3
  45. data/lib/inspec/formatters/base.rb +8 -8
  46. data/lib/inspec/globals.rb +2 -2
  47. data/lib/inspec/impact.rb +5 -7
  48. data/lib/inspec/input_registry.rb +84 -33
  49. data/lib/inspec/library_eval_context.rb +3 -6
  50. data/lib/inspec/log.rb +1 -5
  51. data/lib/inspec/metadata.rb +17 -16
  52. data/lib/inspec/method_source.rb +5 -9
  53. data/lib/inspec/objects.rb +10 -12
  54. data/lib/inspec/objects/control.rb +7 -9
  55. data/lib/inspec/objects/describe.rb +9 -11
  56. data/lib/inspec/objects/each_loop.rb +1 -3
  57. data/lib/inspec/objects/input.rb +24 -26
  58. data/lib/inspec/objects/list.rb +4 -6
  59. data/lib/inspec/objects/or_test.rb +2 -4
  60. data/lib/inspec/objects/ruby_helper.rb +3 -5
  61. data/lib/inspec/objects/tag.rb +0 -2
  62. data/lib/inspec/objects/test.rb +9 -11
  63. data/lib/inspec/objects/value.rb +3 -5
  64. data/lib/inspec/plugin/v1.rb +2 -2
  65. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  66. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  67. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  68. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  69. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  70. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  71. data/lib/inspec/plugin/v1/registry.rb +0 -4
  72. data/lib/inspec/plugin/v2.rb +8 -8
  73. data/lib/inspec/plugin/v2/activator.rb +1 -1
  74. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  75. data/lib/inspec/plugin/v2/filter.rb +13 -13
  76. data/lib/inspec/plugin/v2/installer.rb +36 -24
  77. data/lib/inspec/plugin/v2/loader.rb +28 -28
  78. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  79. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  80. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  81. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  82. data/lib/inspec/plugin/v2/registry.rb +7 -7
  83. data/lib/inspec/polyfill.rb +0 -3
  84. data/lib/inspec/profile.rb +55 -63
  85. data/lib/inspec/profile_context.rb +27 -30
  86. data/lib/inspec/profile_vendor.rb +6 -9
  87. data/lib/inspec/reporters.rb +24 -24
  88. data/lib/inspec/reporters/automate.rb +17 -19
  89. data/lib/inspec/reporters/base.rb +1 -1
  90. data/lib/inspec/reporters/cli.rb +88 -91
  91. data/lib/inspec/reporters/json.rb +2 -4
  92. data/lib/inspec/reporters/json_automate.rb +1 -3
  93. data/lib/inspec/reporters/json_min.rb +1 -3
  94. data/lib/inspec/reporters/junit.rb +26 -28
  95. data/lib/inspec/reporters/yaml.rb +1 -3
  96. data/lib/inspec/require_loader.rb +0 -4
  97. data/lib/inspec/resource.rb +4 -125
  98. data/lib/inspec/resources.rb +121 -0
  99. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  100. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  101. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  102. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  103. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  104. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  105. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  106. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  107. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  108. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  109. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  110. data/lib/{resources → inspec/resources}/command.rb +11 -10
  111. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  112. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  113. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  114. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  115. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  116. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  117. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  118. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  119. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  120. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  121. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  122. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  123. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  124. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  125. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  126. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  127. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  128. data/lib/{resources → inspec/resources}/file.rb +80 -79
  129. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  130. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  131. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  132. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  133. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  134. data/lib/{resources → inspec/resources}/host.rb +31 -29
  135. data/lib/{resources → inspec/resources}/http.rb +24 -24
  136. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  137. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  138. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  139. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  140. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  141. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  142. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  143. data/lib/{resources → inspec/resources}/json.rb +8 -10
  144. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  145. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  146. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  147. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  148. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  149. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  150. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  151. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  152. data/lib/inspec/resources/mysql.rb +81 -0
  153. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  154. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  155. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  156. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  157. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  158. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  159. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  160. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  161. data/lib/{resources → inspec/resources}/os.rb +6 -8
  162. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  163. data/lib/{resources → inspec/resources}/package.rb +66 -65
  164. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  165. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  166. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  167. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  168. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  169. data/lib/{resources → inspec/resources}/port.rb +134 -136
  170. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  171. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  172. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  173. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  174. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  175. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  176. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  177. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  178. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  179. data/lib/inspec/resources/script.rb +1 -0
  180. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  181. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  182. data/lib/{resources → inspec/resources}/service.rb +74 -75
  183. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  184. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  185. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  186. data/lib/inspec/resources/sys_info.rb +30 -0
  187. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  188. data/lib/{resources → inspec/resources}/users.rb +65 -65
  189. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  190. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  191. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  192. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  193. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  194. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  195. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  196. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  197. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  198. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  199. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  200. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  201. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  202. data/lib/inspec/rspec_extensions.rb +24 -8
  203. data/lib/inspec/rule.rb +14 -15
  204. data/lib/inspec/runner.rb +28 -28
  205. data/lib/inspec/runner_mock.rb +1 -5
  206. data/lib/inspec/runner_rspec.rb +18 -20
  207. data/lib/inspec/runtime_profile.rb +2 -5
  208. data/lib/inspec/schema.rb +142 -143
  209. data/lib/inspec/secrets.rb +3 -7
  210. data/lib/inspec/secrets/yaml.rb +3 -5
  211. data/lib/inspec/shell.rb +11 -15
  212. data/lib/inspec/shell_detector.rb +6 -7
  213. data/lib/inspec/source_reader.rb +4 -8
  214. data/lib/inspec/ui.rb +33 -39
  215. data/lib/inspec/ui_table_helper.rb +12 -0
  216. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  217. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  218. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  219. data/lib/inspec/utils/deprecation.rb +6 -0
  220. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  221. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  222. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  223. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  224. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  225. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  226. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  227. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  228. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  229. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  230. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  231. data/lib/inspec/utils/json_log.rb +15 -0
  232. data/lib/inspec/utils/latest_version.rb +13 -0
  233. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  234. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  235. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  236. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  237. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  238. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  239. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  240. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  241. data/lib/inspec/utils/telemetry.rb +3 -3
  242. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  243. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  244. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  245. data/lib/inspec/version.rb +1 -1
  246. data/lib/matchers/matchers.rb +22 -25
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  248. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  249. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  250. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  256. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  257. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  258. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  259. data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
  260. data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
  261. data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
  262. data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
  263. data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
  264. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  265. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  266. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  267. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  268. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  269. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  270. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
  271. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
  272. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
  273. data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
  274. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
  275. data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
  276. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
  277. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  278. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  279. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  280. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  281. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  282. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  283. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  284. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  285. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  286. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  287. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  288. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
  289. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
  290. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
  291. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
  292. data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
  293. data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
  294. data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
  295. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  296. data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
  297. data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
  298. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  299. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  300. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  301. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
  302. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
  303. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
  304. data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
  305. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  306. data/lib/resource_support/aws.rb +67 -67
  307. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
  308. data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
  309. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
  310. data/lib/resources/aws/aws_billing_report.rb +15 -8
  311. data/lib/resources/aws/aws_billing_reports.rb +10 -7
  312. data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
  313. data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
  314. data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
  315. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
  316. data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
  317. data/lib/resources/aws/aws_config_recorder.rb +10 -6
  318. data/lib/resources/aws/aws_ebs_volume.rb +12 -8
  319. data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
  320. data/lib/resources/aws/aws_ec2_instance.rb +14 -11
  321. data/lib/resources/aws/aws_ec2_instances.rb +9 -5
  322. data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
  323. data/lib/resources/aws/aws_eks_cluster.rb +13 -9
  324. data/lib/resources/aws/aws_elb.rb +9 -5
  325. data/lib/resources/aws/aws_elbs.rb +9 -5
  326. data/lib/resources/aws/aws_flow_log.rb +17 -13
  327. data/lib/resources/aws/aws_iam_access_key.rb +15 -11
  328. data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
  329. data/lib/resources/aws/aws_iam_group.rb +9 -5
  330. data/lib/resources/aws/aws_iam_groups.rb +9 -5
  331. data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
  332. data/lib/resources/aws/aws_iam_policies.rb +9 -5
  333. data/lib/resources/aws/aws_iam_policy.rb +16 -12
  334. data/lib/resources/aws/aws_iam_role.rb +9 -5
  335. data/lib/resources/aws/aws_iam_root_user.rb +12 -8
  336. data/lib/resources/aws/aws_iam_user.rb +12 -12
  337. data/lib/resources/aws/aws_iam_users.rb +10 -10
  338. data/lib/resources/aws/aws_kms_key.rb +12 -8
  339. data/lib/resources/aws/aws_kms_keys.rb +9 -5
  340. data/lib/resources/aws/aws_rds_instance.rb +11 -8
  341. data/lib/resources/aws/aws_route_table.rb +11 -7
  342. data/lib/resources/aws/aws_route_tables.rb +10 -6
  343. data/lib/resources/aws/aws_s3_bucket.rb +14 -11
  344. data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
  345. data/lib/resources/aws/aws_s3_buckets.rb +9 -7
  346. data/lib/resources/aws/aws_security_group.rb +16 -12
  347. data/lib/resources/aws/aws_security_groups.rb +12 -8
  348. data/lib/resources/aws/aws_sns_subscription.rb +15 -11
  349. data/lib/resources/aws/aws_sns_topic.rb +10 -6
  350. data/lib/resources/aws/aws_sns_topics.rb +9 -5
  351. data/lib/resources/aws/aws_sqs_queue.rb +18 -14
  352. data/lib/resources/aws/aws_subnet.rb +11 -7
  353. data/lib/resources/aws/aws_subnets.rb +9 -5
  354. data/lib/resources/aws/aws_vpc.rb +10 -6
  355. data/lib/resources/aws/aws_vpcs.rb +9 -5
  356. data/lib/resources/azure/azure_backend.rb +20 -18
  357. data/lib/resources/azure/azure_generic_resource.rb +13 -15
  358. data/lib/resources/azure/azure_resource_group.rb +17 -19
  359. data/lib/resources/azure/azure_virtual_machine.rb +6 -8
  360. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
  361. data/lib/source_readers/flat.rb +6 -10
  362. data/lib/source_readers/inspec.rb +8 -12
  363. metadata +141 -142
  364. data/lib/resources/mysql.rb +0 -82
  365. data/lib/resources/sys_info.rb +0 -28
  366. data/lib/utils/deprecation.rb +0 -6
  367. data/lib/utils/json_log.rb +0 -18
  368. data/lib/utils/latest_version.rb +0 -22
@@ -1,10 +1,10 @@
1
- # encoding: utf-8
1
+ require "inspec/resources/docker"
2
2
 
3
3
  module Inspec::Resources
4
4
  class DockerPlugin < Inspec.resource(1)
5
- name 'docker_plugin'
6
- supports platform: 'unix'
7
- desc 'Retrieves info about docker plugins'
5
+ name "docker_plugin"
6
+ supports platform: "unix"
7
+ desc "Retrieves info about docker plugins"
8
8
  example <<~EXAMPLE
9
9
  describe docker_plugin('rexray/ebs') do
10
10
  it { should exist }
@@ -55,9 +55,9 @@ module Inspec::Resources
55
55
  def object_info
56
56
  return @info if defined?(@info)
57
57
  opts = @opts
58
- @info = inspec.docker.plugins.where {
58
+ @info = inspec.docker.plugins.where do
59
59
  (name == opts[:name]) || (!id.nil? && !opts[:id].nil? && (id == opts[:id]))
60
- }
60
+ end
61
61
  end
62
62
  end
63
63
  end
@@ -1,16 +1,16 @@
1
- # encoding: utf-8
2
1
  #
3
2
  # Copyright 2017, Christoph Hartmann
4
3
 
5
- require_relative 'docker_object'
4
+ require "inspec/resources/docker"
5
+ require_relative "docker_object"
6
6
 
7
7
  module Inspec::Resources
8
8
  class DockerService < Inspec.resource(1)
9
9
  include Inspec::Resources::DockerObject
10
10
 
11
- name 'docker_service'
12
- supports platform: 'unix'
13
- desc 'Swarm-mode service'
11
+ name "docker_service"
12
+ supports platform: "unix"
13
+ desc "Swarm-mode service"
14
14
  example <<~EXAMPLE
15
15
  describe docker_service('service1') do
16
16
  it { should exist }
@@ -82,9 +82,9 @@ module Inspec::Resources
82
82
  def object_info
83
83
  return @info if defined?(@info)
84
84
  opts = @opts
85
- @info = inspec.docker.services.where {
85
+ @info = inspec.docker.services.where do
86
86
  name == opts[:name] || image == opts[:image] || (!id.nil? && !opts[:id].nil? && (id == opts[:id] || id.start_with?(opts[:id])))
87
- }
87
+ end
88
88
  end
89
89
  end
90
90
  end
@@ -1,13 +1,11 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/filter'
4
- require 'hashie/mash'
5
- require 'resources/package'
1
+ require "inspec/utils/filter"
2
+ require "hashie/mash"
3
+ require "inspec/resources/package"
6
4
 
7
5
  module Inspec::Resources
8
6
  class Elasticsearch < Inspec.resource(1)
9
- name 'elasticsearch'
10
- supports platform: 'unix'
7
+ name "elasticsearch"
8
+ supports platform: "unix"
11
9
  desc "Use the Elasticsearch InSpec audit resource to test the status of nodes in
12
10
  an Elasticsearch cluster."
13
11
 
@@ -25,39 +23,39 @@ module Inspec::Resources
25
23
 
26
24
  filter = FilterTable.create
27
25
  filter.register_custom_matcher(:exists?) { |x| !x.entries.empty? }
28
- filter.register_column(:cluster_name, field: 'cluster_name')
29
- .register_column(:node_name, field: 'name')
30
- .register_column(:transport_address, field: 'transport_address')
31
- .register_column(:host, field: 'host')
32
- .register_column(:ip, field: 'ip')
33
- .register_column(:version, field: 'version')
34
- .register_column(:build_hash, field: 'build_hash')
35
- .register_column(:total_indexing_buffer, field: 'total_indexing_buffer')
36
- .register_column(:roles, field: 'roles')
37
- .register_column(:settings, field: 'settings')
38
- .register_column(:os, field: 'os')
39
- .register_column(:process, field: 'process')
40
- .register_column(:jvm, field: 'jvm')
41
- .register_column(:transport, field: 'transport')
42
- .register_column(:http, field: 'http')
43
- .register_column(:plugins, field: 'plugins')
44
- .register_column(:plugin_list, field: 'plugin_list')
45
- .register_column(:modules, field: 'modules')
46
- .register_column(:module_list, field: 'module_list')
47
- .register_column(:node_id, field: 'node_id')
48
- .register_column(:ingest, field: 'ingest')
49
- .register_custom_property(:node_count) { |t, _|
26
+ filter.register_column(:cluster_name, field: "cluster_name")
27
+ .register_column(:node_name, field: "name")
28
+ .register_column(:transport_address, field: "transport_address")
29
+ .register_column(:host, field: "host")
30
+ .register_column(:ip, field: "ip")
31
+ .register_column(:version, field: "version")
32
+ .register_column(:build_hash, field: "build_hash")
33
+ .register_column(:total_indexing_buffer, field: "total_indexing_buffer")
34
+ .register_column(:roles, field: "roles")
35
+ .register_column(:settings, field: "settings")
36
+ .register_column(:os, field: "os")
37
+ .register_column(:process, field: "process")
38
+ .register_column(:jvm, field: "jvm")
39
+ .register_column(:transport, field: "transport")
40
+ .register_column(:http, field: "http")
41
+ .register_column(:plugins, field: "plugins")
42
+ .register_column(:plugin_list, field: "plugin_list")
43
+ .register_column(:modules, field: "modules")
44
+ .register_column(:module_list, field: "module_list")
45
+ .register_column(:node_id, field: "node_id")
46
+ .register_column(:ingest, field: "ingest")
47
+ .register_custom_property(:node_count) do |t, _|
50
48
  t.entries.length
51
- }
49
+ end
52
50
 
53
51
  filter.install_filter_methods_on_resource(self, :nodes)
54
52
 
55
53
  attr_reader :nodes, :url
56
54
 
57
55
  def initialize(opts = {})
58
- return skip_resource 'Package `curl` not avaiable on the host' unless inspec.command('curl').exist?
56
+ return skip_resource "Package `curl` not avaiable on the host" unless inspec.command("curl").exist?
59
57
 
60
- @url = opts.fetch(:url, 'http://localhost:9200')
58
+ @url = opts.fetch(:url, "http://localhost:9200")
61
59
 
62
60
  username = opts.fetch(:username, nil)
63
61
  password = opts.fetch(:password, nil)
@@ -94,11 +92,11 @@ module Inspec::Resources
94
92
  private
95
93
 
96
94
  def parse_cluster(content)
97
- return [] unless content['nodes']
95
+ return [] unless content["nodes"]
98
96
 
99
97
  nodes = []
100
98
 
101
- content['nodes'].each do |node_id, node_data|
99
+ content["nodes"].each do |node_id, node_data|
102
100
  node_data = fix_mash_key_collision(node_data)
103
101
 
104
102
  node = Hashie::Mash.new(node_data)
@@ -134,13 +132,13 @@ module Inspec::Resources
134
132
  end
135
133
 
136
134
  def curl_command_string(username, password, ssl_verify)
137
- cmd_string = ['curl']
138
- cmd_string << '-k' unless ssl_verify
135
+ cmd_string = ["curl"]
136
+ cmd_string << "-k" unless ssl_verify
139
137
  cmd_string << "-H 'Content-Type: application/json'"
140
138
  cmd_string << " -u #{username}:#{password}" unless username.nil? || password.nil?
141
- cmd_string << URI.join(url, '_nodes')
139
+ cmd_string << URI.join(url, "_nodes")
142
140
 
143
- cmd_string.join(' ')
141
+ cmd_string.join(" ")
144
142
  end
145
143
 
146
144
  def verify_curl_success!(cmd)
@@ -150,18 +148,18 @@ module Inspec::Resources
150
148
  end
151
149
 
152
150
  if cmd.stderr =~ /Peer's Certificate issuer is not recognized/
153
- raise 'Connection refused - peer certificate issuer is not recognized'
151
+ raise "Connection refused - peer certificate issuer is not recognized"
154
152
  end
155
153
 
156
- raise "Error fetching Elastcsearch data from curl #{url}: #{cmd.stderr}" unless cmd.exit_status.zero?
154
+ raise "Error fetching Elastcsearch data from curl #{url}: #{cmd.stderr}" unless cmd.exit_status == 0
157
155
  end
158
156
 
159
157
  def verify_json_payload!(content)
160
- unless content['error'].nil?
158
+ unless content["error"].nil?
161
159
  raise "#{content['error']['type']}: #{content['error']['reason']}"
162
160
  end
163
161
 
164
- raise 'No successful nodes available in cluster' if content['_nodes']['successful'].zero?
162
+ raise "No successful nodes available in cluster" if content["_nodes"]["successful"] == 0
165
163
  end
166
164
  end
167
165
  end
@@ -1,14 +1,13 @@
1
- # encoding: utf-8
2
1
  # copyright:
3
2
 
4
- require 'utils/parser'
5
- require 'utils/file_reader'
3
+ require "inspec/utils/parser"
4
+ require "inspec/utils/file_reader"
6
5
 
7
6
  module Inspec::Resources
8
7
  class EtcFstab < Inspec.resource(1)
9
- name 'etc_fstab'
10
- supports platform: 'unix'
11
- desc 'Use the etc_fstab InSpec audit resource to check the configuration of the etc/fstab file.'
8
+ name "etc_fstab"
9
+ supports platform: "unix"
10
+ desc "Use the etc_fstab InSpec audit resource to check the configuration of the etc/fstab file."
12
11
  example <<~EXAMPLE
13
12
  nfs_systems = etc_fstab.nfs_file_systems.entries
14
13
  nfs_systems.each do |file_system|
@@ -30,7 +29,7 @@ module Inspec::Resources
30
29
  include FileReader
31
30
 
32
31
  def initialize(fstab_path = nil)
33
- @conf_path = fstab_path || '/etc/fstab'
32
+ @conf_path = fstab_path || "/etc/fstab"
34
33
  @files_contents = {}
35
34
  @content = nil
36
35
  @params = nil
@@ -38,12 +37,12 @@ module Inspec::Resources
38
37
  end
39
38
 
40
39
  filter = FilterTable.create
41
- filter.register_column(:device_name, field: 'device_name')
42
- .register_column(:mount_point, field: 'mount_point')
43
- .register_column(:file_system_type, field: 'file_system_type')
44
- .register_column(:mount_options, field: 'mount_options')
45
- .register_column(:dump_options, field: 'dump_options')
46
- .register_column(:file_system_options, field: 'file_system_options')
40
+ filter.register_column(:device_name, field: "device_name")
41
+ .register_column(:mount_point, field: "mount_point")
42
+ .register_column(:file_system_type, field: "file_system_type")
43
+ .register_column(:mount_options, field: "mount_options")
44
+ .register_column(:dump_options, field: "dump_options")
45
+ .register_column(:file_system_options, field: "file_system_options")
47
46
  .register_custom_matcher(:configured?) { |x| x.entries.any? }
48
47
 
49
48
  filter.install_filter_methods_on_resource(self, :params)
@@ -53,14 +52,14 @@ module Inspec::Resources
53
52
  end
54
53
 
55
54
  def home_mount_options
56
- return nil unless where { mount_point == '/home' }.configured?
57
- where { mount_point == '/home' }.entries[0].mount_options
55
+ return nil unless where { mount_point == "/home" }.configured?
56
+ where { mount_point == "/home" }.entries[0].mount_options
58
57
  end
59
58
 
60
59
  private
61
60
 
62
61
  def read_content
63
- @content = ''
62
+ @content = ""
64
63
  @params = {}
65
64
  @content = read_file(@conf_path)
66
65
  @params = parse_conf(@content)
@@ -68,20 +67,20 @@ module Inspec::Resources
68
67
 
69
68
  def parse_conf(content)
70
69
  content.map do |line|
71
- data, = parse_comment_line(line, comment_char: '#', standalone_comments: false)
72
- parse_line(data) unless data == ''
70
+ data, = parse_comment_line(line, comment_char: "#", standalone_comments: false)
71
+ parse_line(data) unless data == ""
73
72
  end.compact
74
73
  end
75
74
 
76
75
  def parse_line(line)
77
76
  attributes = line.split
78
77
  {
79
- 'device_name' => attributes[0],
80
- 'mount_point' => attributes[1],
81
- 'file_system_type' => attributes[2],
82
- 'mount_options' => attributes[3].split(','),
83
- 'dump_options' => attributes[4].to_i,
84
- 'file_system_options' => attributes[5].to_i,
78
+ "device_name" => attributes[0],
79
+ "mount_point" => attributes[1],
80
+ "file_system_type" => attributes[2],
81
+ "mount_options" => attributes[3].split(","),
82
+ "dump_options" => attributes[4].to_i,
83
+ "file_system_options" => attributes[5].to_i,
85
84
  }
86
85
  end
87
86
 
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
3
  # The file format consists of
@@ -18,18 +17,18 @@
18
17
  # its('users') { should include 'my_user' }
19
18
  # end
20
19
 
21
- require 'utils/convert'
22
- require 'utils/parser'
23
- require 'utils/file_reader'
20
+ require "inspec/utils/convert"
21
+ require "inspec/utils/parser"
22
+ require "inspec/utils/file_reader"
24
23
 
25
24
  module Inspec::Resources
26
25
  class EtcGroup < Inspec.resource(1)
27
26
  include Converter
28
27
  include CommentParser
29
28
 
30
- name 'etc_group'
31
- supports platform: 'unix'
32
- desc 'Use the etc_group InSpec audit resource to test groups that are defined on Linux and UNIX platforms. The /etc/group file stores details about each group---group name, password, group identifier, along with a comma-separate list of users that belong to the group.'
29
+ name "etc_group"
30
+ supports platform: "unix"
31
+ desc "Use the etc_group InSpec audit resource to test groups that are defined on Linux and UNIX platforms. The /etc/group file stores details about each group---group name, password, group identifier, along with a comma-separate list of users that belong to the group."
33
32
  example <<~EXAMPLE
34
33
  describe etc_group do
35
34
  its('gids') { should_not contain_duplicates }
@@ -42,25 +41,25 @@ module Inspec::Resources
42
41
 
43
42
  attr_accessor :gid, :entries
44
43
  def initialize(path = nil)
45
- @path = path || '/etc/group'
44
+ @path = path || "/etc/group"
46
45
  @entries = parse_group(@path)
47
46
  end
48
47
 
49
48
  def groups(filter = nil)
50
- (filter || @entries)&.map { |x| x['name'] }
49
+ (filter || @entries)&.map { |x| x["name"] }
51
50
  end
52
51
 
53
52
  def gids(filter = nil)
54
- (filter || @entries)&.map { |x| x['gid'] }
53
+ (filter || @entries)&.map { |x| x["gid"] }
55
54
  end
56
55
 
57
56
  def users(filter = nil)
58
57
  entries = filter || @entries
59
58
  return nil if entries.nil?
60
59
  # filter the user entry
61
- res = entries.map { |x|
62
- x['members'].split(',') if !x.nil? && !x['members'].nil?
63
- }.flatten
60
+ res = entries.map do |x|
61
+ x["members"].split(",") if !x.nil? && !x["members"].nil?
62
+ end.flatten
64
63
  # filter nil elements
65
64
  res.reject { |x| x.nil? || x.empty? }
66
65
  end
@@ -68,13 +67,13 @@ module Inspec::Resources
68
67
  def where(conditions = {})
69
68
  return if conditions.empty?
70
69
  fields = {
71
- name: 'name',
72
- group_name: 'name',
73
- password: 'password',
74
- gid: 'gid',
75
- group_id: 'gid',
76
- users: 'members',
77
- members: 'members',
70
+ name: "name",
71
+ group_name: "name",
72
+ password: "password",
73
+ gid: "gid",
74
+ group_id: "gid",
75
+ users: "members",
76
+ members: "members",
78
77
  }
79
78
  res = entries
80
79
 
@@ -90,7 +89,7 @@ module Inspec::Resources
90
89
  end
91
90
 
92
91
  def to_s
93
- '/etc/group'
92
+ "/etc/group"
94
93
  end
95
94
 
96
95
  private
@@ -107,19 +106,19 @@ module Inspec::Resources
107
106
 
108
107
  def parse_group_line(line)
109
108
  opts = {
110
- comment_char: '#',
109
+ comment_char: "#",
111
110
  standalone_comments: false,
112
111
  }
113
112
  line, _idx_nl = parse_comment_line(line, opts)
114
- x = line.split(':')
113
+ x = line.split(":")
115
114
  # abort if we have an empty or comment line
116
115
  return nil if x.empty?
117
116
  # map data
118
117
  {
119
- 'name' => x.at(0), # Name of the group.
120
- 'password' => x.at(1), # Group's encrypted password.
121
- 'gid' => convert_to_i(x.at(2)), # The group's decimal ID.
122
- 'members' => x.at(3), # Group members.
118
+ "name" => x.at(0), # Name of the group.
119
+ "password" => x.at(1), # Group's encrypted password.
120
+ "gid" => convert_to_i(x.at(2)), # The group's decimal ID.
121
+ "members" => x.at(3), # Group members.
123
122
  }
124
123
  end
125
124
  end
@@ -1,13 +1,11 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/parser'
4
- require 'utils/file_reader'
1
+ require "inspec/utils/parser"
2
+ require "inspec/utils/file_reader"
5
3
 
6
4
  class EtcHosts < Inspec.resource(1)
7
- name 'etc_hosts'
8
- supports platform: 'linux'
9
- supports platform: 'bsd'
10
- supports platform: 'windows'
5
+ name "etc_hosts"
6
+ supports platform: "linux"
7
+ supports platform: "bsd"
8
+ supports platform: "windows"
11
9
  desc 'Use the etc_hosts InSpec audit resource to find an
12
10
  ip_address and its associated hosts'
13
11
  example <<~EXAMPLE
@@ -23,7 +21,7 @@ class EtcHosts < Inspec.resource(1)
23
21
  include CommentParser
24
22
  include FileReader
25
23
 
26
- DEFAULT_UNIX_PATH = '/etc/hosts'.freeze
24
+ DEFAULT_UNIX_PATH = "/etc/hosts".freeze
27
25
  DEFAULT_WINDOWS_PATH = 'C:\windows\system32\drivers\etc\hosts'.freeze
28
26
 
29
27
  def initialize(hosts_path = nil)
@@ -33,9 +31,9 @@ class EtcHosts < Inspec.resource(1)
33
31
  end
34
32
 
35
33
  FilterTable.create
36
- .register_column(:ip_address, field: 'ip_address')
37
- .register_column(:primary_name, field: 'primary_name')
38
- .register_column(:all_host_names, field: 'all_host_names')
34
+ .register_column(:ip_address, field: "ip_address")
35
+ .register_column(:primary_name, field: "primary_name")
36
+ .register_column(:all_host_names, field: "all_host_names")
39
37
  .install_filter_methods_on_resource(self, :params)
40
38
 
41
39
  private
@@ -49,7 +47,7 @@ class EtcHosts < Inspec.resource(1)
49
47
  end
50
48
 
51
49
  def comment?
52
- parse_options = { comment_char: '#', standalone_comments: false }
50
+ parse_options = { comment_char: "#", standalone_comments: false }
53
51
 
54
52
  ->(data) { parse_comment_line(data, parse_options).first.empty? }
55
53
  end