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,11 +1,10 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
3
  module Inspec::Resources
5
4
  class Postgres < Inspec.resource(1)
6
- name 'postgres'
7
- supports platform: 'unix'
8
- desc 'The \'postgres\' resource is a helper for the \'postgres_conf\', \'postgres_hba_conf\', \'postgres_ident_conf\' & \'postgres_session\' resources. Please use those instead.'
5
+ name "postgres"
6
+ supports platform: "unix"
7
+ desc "The 'postgres' resource is a helper for the 'postgres_conf', 'postgres_hba_conf', 'postgres_ident_conf' & 'postgres_session' resources. Please use those instead."
9
8
 
10
9
  attr_reader :service, :data_dir, :conf_dir, :conf_path, :version, :cluster
11
10
  def initialize
@@ -16,16 +15,16 @@ module Inspec::Resources
16
15
  # print warnings if the dirs do not exist
17
16
  verify_dirs
18
17
 
19
- if !@version.nil? && !@conf_dir.empty?
20
- @conf_path = File.join @conf_dir, 'postgresql.conf'
18
+ if !@version.to_s.empty? && !@conf_dir.to_s.empty?
19
+ @conf_path = File.join @conf_dir, "postgresql.conf"
21
20
  else
22
21
  @conf_path = nil
23
- return skip_resource 'Seems like PostgreSQL is not installed on your system'
22
+ return skip_resource "Seems like PostgreSQL is not installed on your system"
24
23
  end
25
24
  end
26
25
 
27
26
  def to_s
28
- 'PostgreSQL'
27
+ "PostgreSQL"
29
28
  end
30
29
 
31
30
  private
@@ -38,19 +37,20 @@ module Inspec::Resources
38
37
  # Debian allows multiple versions of postgresql to be
39
38
  # installed as well as multiple "clusters" to be configured.
40
39
  #
41
- @version = version_from_psql || version_from_dir('/etc/postgresql')
42
- @cluster = cluster_from_dir("/etc/postgresql/#{@version}")
43
- @conf_dir = "/etc/postgresql/#{@version}/#{@cluster}"
44
- @data_dir = "/var/lib/postgresql/#{@version}/#{@cluster}"
40
+ @version = version_from_psql || version_from_dir("/etc/postgresql")
41
+ if !@version.to_s.empty?
42
+ @cluster = cluster_from_dir("/etc/postgresql/#{@version}")
43
+ @conf_dir = "/etc/postgresql/#{@version}/#{@cluster}"
44
+ @data_dir = "/var/lib/postgresql/#{@version}/#{@cluster}"
45
+ end
45
46
  else
46
47
  @version = version_from_psql
47
- if @version.nil?
48
- if inspec.directory('/var/lib/pgsql/data').exist?
49
- warn 'Unable to determine PostgreSQL version: psql did not return
50
- a version number and unversioned data directories were found.'
51
- nil
48
+ if @version.to_s.empty?
49
+ if inspec.directory("/var/lib/pgsql/data").exist?
50
+ warn "Unable to determine PostgreSQL version: psql did not return" \
51
+ "a version number and unversioned data directories were found."
52
52
  else
53
- @version = version_from_dir('/var/lib/pgsql')
53
+ @version = version_from_dir("/var/lib/pgsql")
54
54
  end
55
55
  end
56
56
  @data_dir = locate_data_dir_location_by_version(@version)
@@ -59,7 +59,7 @@ module Inspec::Resources
59
59
  end
60
60
 
61
61
  def determine_service
62
- @service = 'postgresql'
62
+ @service = "postgresql"
63
63
  if @version.to_i >= 10
64
64
  @service += "-#{@version.to_i}"
65
65
  elsif @version.to_f >= 9.4
@@ -68,17 +68,21 @@ module Inspec::Resources
68
68
  end
69
69
 
70
70
  def verify_dirs
71
- warn "Default postgresql configuration directory: #{@conf_dir} does not exist. " \
72
- "Postgresql may not be installed or we've misidentified the configuration " \
73
- 'directory.' unless inspec.directory(@conf_dir).exist?
71
+ unless inspec.directory(@conf_dir).exist?
72
+ warn "Default postgresql configuration directory: #{@conf_dir} does not exist. " \
73
+ "Postgresql may not be installed or we've misidentified the configuration " \
74
+ "directory."
75
+ end
74
76
 
75
- warn "Default postgresql data directory: #{@data_dir} does not exist. " \
76
- "Postgresql may not be installed or we've misidentified the data " \
77
- 'directory.' unless inspec.directory(@data_dir).exist?
77
+ unless inspec.directory(@data_dir).exist?
78
+ warn "Default postgresql data directory: #{@data_dir} does not exist. " \
79
+ "Postgresql may not be installed or we've misidentified the data " \
80
+ "directory."
81
+ end
78
82
  end
79
83
 
80
84
  def version_from_psql
81
- return unless inspec.command('psql').exist?
85
+ return unless inspec.command("psql").exist?
82
86
  inspec.command("psql --version | awk '{ print $NF }' | awk -F. '{ print $1\".\"$2 }'").stdout.strip
83
87
  end
84
88
 
@@ -87,9 +91,9 @@ module Inspec::Resources
87
91
  "/var/lib/pgsql/#{ver}/data",
88
92
  # for 10, the versions are just stored in `10` although their version `10.7`
89
93
  "/var/lib/pgsql/#{ver.to_i}/data",
90
- '/var/lib/pgsql/data',
91
- '/var/lib/postgres/data',
92
- '/var/lib/postgresql/data',
94
+ "/var/lib/pgsql/data",
95
+ "/var/lib/postgres/data",
96
+ "/var/lib/postgresql/data",
93
97
  ]
94
98
 
95
99
  data_dir_loc = dir_list.detect { |i| inspec.directory(i).exist? }
@@ -121,17 +125,21 @@ module Inspec::Resources
121
125
  end
122
126
 
123
127
  def dir_to_version(dir)
124
- dir.chomp.split('/').last
128
+ dir.chomp.split("/").last
125
129
  end
126
130
 
127
131
  def cluster_from_dir(dir)
128
132
  # Main is the default cluster name on debian use it if it
129
133
  # exists.
130
134
  if inspec.directory("#{dir}/main").exist?
131
- 'main'
135
+ "main"
132
136
  else
133
137
  dirs = inspec.command("ls -d #{dir}/*/").stdout.lines
134
- first = dirs.first.chomp.split('/').last
138
+ if dirs.empty?
139
+ warn "No postgresql clusters configured or incorrect base dir #{dir}"
140
+ return nil
141
+ end
142
+ first = dirs.first.chomp.split("/").last
135
143
  if dirs.count > 1
136
144
  warn "Multiple postgresql clusters configured or incorrect base dir #{dir}"
137
145
  warn "Using the first directory found: #{first}"
@@ -1,17 +1,17 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
- require 'utils/simpleconfig'
5
- require 'utils/find_files'
6
- require 'utils/file_reader'
7
- require 'resources/postgres'
3
+ require "inspec/utils/object_traversal"
4
+ require "inspec/utils/simpleconfig"
5
+ require "inspec/utils/find_files"
6
+ require "inspec/utils/file_reader"
7
+ require "inspec/resources/postgres"
8
8
 
9
9
  module Inspec::Resources
10
10
  class PostgresConf < Inspec.resource(1)
11
- name 'postgres_conf'
12
- supports platform: 'unix'
13
- supports platform: 'windows'
14
- desc 'Use the postgres_conf InSpec audit resource to test the contents of the configuration file for PostgreSQL, typically located at /etc/postgresql/<version>/main/postgresql.conf or /var/lib/postgres/data/postgresql.conf, depending on the platform.'
11
+ name "postgres_conf"
12
+ supports platform: "unix"
13
+ supports platform: "windows"
14
+ desc "Use the postgres_conf InSpec audit resource to test the contents of the configuration file for PostgreSQL, typically located at /etc/postgresql/<version>/main/postgresql.conf or /var/lib/postgres/data/postgresql.conf, depending on the platform."
15
15
  example <<~EXAMPLE
16
16
  describe postgres_conf do
17
17
  its('max_connections') { should eq '5' }
@@ -25,7 +25,7 @@ module Inspec::Resources
25
25
  def initialize(conf_path = nil)
26
26
  @conf_path = conf_path || inspec.postgres.conf_path
27
27
  if @conf_path.nil?
28
- return skip_resource 'PostgreSQL conf path is not set'
28
+ return skip_resource "PostgreSQL conf path is not set"
29
29
  end
30
30
  @conf_dir = File.expand_path(File.dirname(@conf_path))
31
31
  @files_contents = {}
@@ -61,13 +61,13 @@ module Inspec::Resources
61
61
  end
62
62
 
63
63
  def to_s
64
- 'PostgreSQL Configuration'
64
+ "PostgreSQL Configuration"
65
65
  end
66
66
 
67
67
  private
68
68
 
69
69
  def read_content
70
- @content = ''
70
+ @content = ""
71
71
  @params = {}
72
72
 
73
73
  to_read = [@conf_path]
@@ -93,16 +93,16 @@ module Inspec::Resources
93
93
  end
94
94
 
95
95
  def include_files(params, base_dir)
96
- include_files = Array(params['include']) || []
97
- include_files += Array(params['include_if_exists']) || []
96
+ include_files = Array(params["include"]) || []
97
+ include_files += Array(params["include_if_exists"]) || []
98
98
  include_files.map! do |f|
99
99
  Pathname.new(f).absolute? ? f : File.join(base_dir, f)
100
100
  end
101
101
 
102
- dirs = Array(params['include_dir']) || []
102
+ dirs = Array(params["include_dir"]) || []
103
103
  dirs.each do |dir|
104
- dir = File.join(base_dir, dir) if dir[0] != '/'
105
- include_files += find_files(dir, depth: 1, type: 'file')
104
+ dir = File.join(base_dir, dir) if dir[0] != "/"
105
+ include_files += find_files(dir, depth: 1, type: "file")
106
106
  end
107
107
  include_files
108
108
  end
@@ -1,12 +1,10 @@
1
- # encoding: utf-8
2
-
3
- require 'resources/postgres'
4
- require 'utils/file_reader'
1
+ require "inspec/resources/postgres"
2
+ require "inspec/utils/file_reader"
5
3
 
6
4
  module Inspec::Resources
7
5
  class PostgresHbaConf < Inspec.resource(1)
8
- name 'postgres_hba_conf'
9
- supports platform: 'unix'
6
+ name "postgres_hba_conf"
7
+ supports platform: "unix"
10
8
  desc 'Use the `postgres_hba_conf` InSpec audit resource to test the client
11
9
  authentication data defined in the pg_hba.conf file.'
12
10
  example <<~EXAMPLE
@@ -21,19 +19,19 @@ module Inspec::Resources
21
19
 
22
20
  # @todo add checks to ensure that we have data in our file
23
21
  def initialize(hba_conf_path = nil)
24
- @conf_file = hba_conf_path || File.expand_path('pg_hba.conf', inspec.postgres.conf_dir)
25
- @content = ''
22
+ @conf_file = hba_conf_path || File.expand_path("pg_hba.conf", inspec.postgres.conf_dir)
23
+ @content = ""
26
24
  @params = {}
27
25
  read_content
28
26
  end
29
27
 
30
28
  filter = FilterTable.create
31
- filter.register_column(:type, field: 'type')
32
- .register_column(:database, field: 'database')
33
- .register_column(:user, field: 'user')
34
- .register_column(:address, field: 'address')
35
- .register_column(:auth_method, field: 'auth_method')
36
- .register_column(:auth_params, field: 'auth_params')
29
+ filter.register_column(:type, field: "type")
30
+ .register_column(:database, field: "database")
31
+ .register_column(:user, field: "user")
32
+ .register_column(:address, field: "address")
33
+ .register_column(:auth_method, field: "auth_method")
34
+ .register_column(:auth_params, field: "auth_params")
37
35
 
38
36
  filter.install_filter_methods_on_resource(self, :params)
39
37
 
@@ -60,9 +58,9 @@ module Inspec::Resources
60
58
  @content = clean_conf_file(config_file)
61
59
  @params = parse_conf(@content)
62
60
  @params.each do |line|
63
- if line['type'] == 'local'
64
- line['auth_method'] = line['address']
65
- line['address'] = ''
61
+ if line["type"] == "local"
62
+ line["auth_method"] = line["address"]
63
+ line["address"] = ""
66
64
  end
67
65
  end
68
66
  end
@@ -76,12 +74,12 @@ module Inspec::Resources
76
74
  def parse_line(line)
77
75
  x = line.split(/\s+/)
78
76
  {
79
- 'type' => x[0],
80
- 'database' => x[1],
81
- 'user' => x[2],
82
- 'address' => x[3],
83
- 'auth_method' => x[4],
84
- 'auth_params' => ('' if x.length == 4) || x[5..-1].join(' '),
77
+ "type" => x[0],
78
+ "database" => x[1],
79
+ "user" => x[2],
80
+ "address" => x[3],
81
+ "auth_method" => x[4],
82
+ "auth_params" => ("" if x.length == 4) || x[5..-1].join(" "),
85
83
  }
86
84
  end
87
85
  end
@@ -1,12 +1,10 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/file_reader'
4
- require 'resources/postgres'
1
+ require "inspec/utils/file_reader"
2
+ require "inspec/resources/postgres"
5
3
 
6
4
  module Inspec::Resources
7
5
  class PostgresIdentConf < Inspec.resource(1)
8
- name 'postgres_ident_conf'
9
- supports platform: 'unix'
6
+ name "postgres_ident_conf"
7
+ supports platform: "unix"
10
8
  desc 'Use the postgres_ident_conf InSpec audit resource to test the client
11
9
  authentication data is controlled by a pg_ident.conf file.'
12
10
  example <<~EXAMPLE
@@ -20,16 +18,16 @@ module Inspec::Resources
20
18
  attr_reader :params, :conf_file
21
19
 
22
20
  def initialize(ident_conf_path = nil)
23
- @conf_file = ident_conf_path || File.expand_path('pg_ident.conf', inspec.postgres.conf_dir)
21
+ @conf_file = ident_conf_path || File.expand_path("pg_ident.conf", inspec.postgres.conf_dir)
24
22
  @content = nil
25
23
  @params = nil
26
24
  read_content
27
25
  end
28
26
 
29
27
  filter = FilterTable.create
30
- filter.register_column(:map_name, field: 'map_name')
31
- .register_column(:system_username, field: 'system_username')
32
- .register_column(:pg_username, field: 'pg_username')
28
+ filter.register_column(:map_name, field: "map_name")
29
+ .register_column(:system_username, field: "system_username")
30
+ .register_column(:pg_username, field: "pg_username")
33
31
 
34
32
  filter.install_filter_methods_on_resource(self, :params)
35
33
 
@@ -49,7 +47,7 @@ module Inspec::Resources
49
47
  end
50
48
 
51
49
  def read_content
52
- @content = ''
50
+ @content = ""
53
51
  @params = {}
54
52
  @content = filter_comments(read_file(@conf_file))
55
53
  @params = parse_conf(@content)
@@ -64,9 +62,9 @@ module Inspec::Resources
64
62
  def parse_line(line)
65
63
  x = line.split(/\s+/)
66
64
  {
67
- 'map_name' => x[0],
68
- 'system_username' => x[1],
69
- 'pg_username' => x[2],
65
+ "map_name" => x[0],
66
+ "system_username" => x[1],
67
+ "pg_username" => x[2],
70
68
  }
71
69
  end
72
70
 
@@ -1,7 +1,6 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
- require 'shellwords'
3
+ require "shellwords"
5
4
 
6
5
  module Inspec::Resources
7
6
  class Lines
@@ -22,10 +21,10 @@ module Inspec::Resources
22
21
  end
23
22
 
24
23
  class PostgresSession < Inspec.resource(1)
25
- name 'postgres_session'
26
- supports platform: 'unix'
27
- supports platform: 'windows'
28
- desc 'Use the postgres_session InSpec audit resource to test SQL commands run against a PostgreSQL database.'
24
+ name "postgres_session"
25
+ supports platform: "unix"
26
+ supports platform: "windows"
27
+ desc "Use the postgres_session InSpec audit resource to test SQL commands run against a PostgreSQL database."
29
28
  example <<~EXAMPLE
30
29
  sql = postgres_session('username', 'password', 'host')
31
30
  query('sql_query', ['database_name'])` contains the query and (optional) database to execute
@@ -41,9 +40,9 @@ module Inspec::Resources
41
40
  EXAMPLE
42
41
 
43
42
  def initialize(user, pass, host = nil)
44
- @user = user || 'postgres'
43
+ @user = user || "postgres"
45
44
  @pass = pass
46
- @host = host || 'localhost'
45
+ @host = host || "localhost"
47
46
  end
48
47
 
49
48
  def query(query, db = [])
@@ -64,7 +63,7 @@ module Inspec::Resources
64
63
  end
65
64
 
66
65
  def create_psql_cmd(query, db = [])
67
- dbs = db.map { |x| "-d #{x}" }.join(' ')
66
+ dbs = db.map { |x| "-d #{x}" }.join(" ")
68
67
  "PGPASSWORD='#{@pass}' psql -U #{@user} #{dbs} -h #{@host} -A -t -c #{escaped_query(query)}"
69
68
  end
70
69
  end
@@ -1,12 +1,12 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
2
+ require "inspec/resources/command"
3
3
 
4
4
  module Inspec::Resources
5
- class PowershellScript < Cmd
6
- name 'powershell'
7
- supports platform: 'windows'
8
- supports platform: 'unix'
9
- desc 'Use the powershell InSpec audit resource to test a Windows PowerShell script on the Microsoft Windows platform.'
5
+ class Powershell < Cmd
6
+ name "powershell"
7
+ supports platform: "windows"
8
+ supports platform: "unix"
9
+ desc "Use the powershell InSpec audit resource to test a Windows PowerShell script on the Microsoft Windows platform."
10
10
  example <<~EXAMPLE
11
11
  script = <<-EOH
12
12
  # your powershell script
@@ -21,15 +21,15 @@ module Inspec::Resources
21
21
  # PowerShell is the default shell on Windows, use the `command` resource
22
22
  return super(script) if inspec.os.windows?
23
23
 
24
- unless inspec.command('pwsh').exist?
25
- raise Inspec::Exceptions::ResourceSkipped, 'Can not find `pwsh` command'
24
+ unless inspec.command("pwsh").exist?
25
+ raise Inspec::Exceptions::ResourceSkipped, "Can not find `pwsh` command"
26
26
  end
27
27
 
28
28
  # Prevent progress stream from leaking into stderr
29
29
  command = "$ProgressPreference='SilentlyContinue';" + script
30
30
 
31
31
  # Encode as Base64 to remove any quotes/escapes/etc issues
32
- command = command.encode('UTF-16LE', 'UTF-8')
32
+ command = command.encode("UTF-16LE", "UTF-8")
33
33
  command = Base64.strict_encode64(command)
34
34
 
35
35
  # Use the `command` resource to execute the command via `pwsh`
@@ -47,17 +47,21 @@ module Inspec::Resources
47
47
  end
48
48
 
49
49
  def to_s
50
- 'Powershell'
50
+ "Powershell"
51
51
  end
52
52
  end
53
53
 
54
+ PowershellScript = Powershell
55
+
54
56
  # this is deprecated syntax and will be removed in future versions
55
- class LegacyPowershellScript < PowershellScript
56
- name 'script'
57
+ class LegacyPowershell < Powershell
58
+ name "script"
57
59
 
58
60
  def initialize(script)
59
- Inspec.deprecate(:resource_script, 'The `script` resource is deprecated. Please use `powershell` instead.')
61
+ Inspec.deprecate(:resource_script, "The `script` resource is deprecated. Please use `powershell` instead.")
60
62
  super(script)
61
63
  end
62
64
  end
65
+
66
+ LegacyPowershellScript = LegacyPowershell
63
67
  end