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,17 +1,21 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsEbsVolumes < Inspec.resource(1)
2
- name 'aws_ebs_volumes'
3
- desc 'Verifies settings for AWS EBS Volumes in bulk'
6
+ name "aws_ebs_volumes"
7
+ desc "Verifies settings for AWS EBS Volumes in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_ebs_volumes do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
  def validate_params(resource_params)
13
17
  unless resource_params.empty?
14
- raise ArgumentError, 'aws_ebs_volumes does not accept resource parameters.'
18
+ raise ArgumentError, "aws_ebs_volumes does not accept resource parameters."
15
19
  end
16
20
  resource_params
17
21
  end
@@ -23,7 +27,7 @@ class AwsEbsVolumes < Inspec.resource(1)
23
27
  filter.install_filter_methods_on_resource(self, :table)
24
28
 
25
29
  def to_s
26
- 'EBS Volumes'
30
+ "EBS Volumes"
27
31
  end
28
32
 
29
33
  def fetch_from_api
@@ -1,7 +1,10 @@
1
- # author: Christoph Hartmann
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
2
5
  class AwsEc2Instance < Inspec.resource(1)
3
- name 'aws_ec2_instance'
4
- desc 'Verifies settings for an EC2 instance'
6
+ name "aws_ec2_instance"
7
+ desc "Verifies settings for an EC2 instance"
5
8
 
6
9
  example <<~EXAMPLE
7
10
  describe aws_ec2_instance('i-123456') do
@@ -14,7 +17,7 @@ class AwsEc2Instance < Inspec.resource(1)
14
17
  it { should have_roles }
15
18
  end
16
19
  EXAMPLE
17
- supports platform: 'aws'
20
+ supports platform: "aws"
18
21
 
19
22
  # TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
20
23
  def initialize(opts, conn = nil)
@@ -33,7 +36,7 @@ class AwsEc2Instance < Inspec.resource(1)
33
36
  # The AWS error here is unhelpful:
34
37
  # "unable to sign request without credentials set"
35
38
  Inspec::Log.error "It appears that you have not set your AWS credentials. You may set them using environment variables, or using the 'aws://region/aws_credentials_profile' target. See https://www.inspec.io/docs/reference/platforms for details."
36
- fail_resource('No AWS credentials available')
39
+ fail_resource("No AWS credentials available")
37
40
  rescue Aws::Errors::ServiceError => e
38
41
  fail_resource e.message
39
42
  end
@@ -57,10 +60,10 @@ class AwsEc2Instance < Inspec.resource(1)
57
60
  first = @ec2_resource.instances(
58
61
  {
59
62
  filters: [{
60
- name: 'tag:Name',
63
+ name: "tag:Name",
61
64
  values: [@opts[:name]],
62
65
  }],
63
- },
66
+ }
64
67
  ).first
65
68
  # catch case where the instance is not known
66
69
  @instance_id = first.id unless first.nil?
@@ -88,7 +91,7 @@ class AwsEc2Instance < Inspec.resource(1)
88
91
  pending running shutting-down
89
92
  terminated stopping stopped unknown
90
93
  }.each do |state_name|
91
- define_method state_name.tr('-', '_') + '?' do
94
+ define_method state_name.tr("-", "_") + "?" do
92
95
  state == state_name
93
96
  end
94
97
  end
@@ -111,9 +114,9 @@ class AwsEc2Instance < Inspec.resource(1)
111
114
  # is to use dumb things, like arrays of strings - use security_group_ids instead.
112
115
  def security_groups
113
116
  catch_aws_errors do
114
- @security_groups ||= instance.security_groups.map { |sg|
117
+ @security_groups ||= instance.security_groups.map do |sg|
115
118
  { id: sg.group_id, name: sg.group_name }
116
- }
119
+ end
117
120
  end
118
121
  end
119
122
 
@@ -139,7 +142,7 @@ class AwsEc2Instance < Inspec.resource(1)
139
142
 
140
143
  if instance_profile
141
144
  roles = @iam_resource.instance_profile(
142
- instance_profile.arn.gsub(%r{^.*\/}, ''),
145
+ instance_profile.arn.gsub(%r{^.*\/}, "")
143
146
  ).roles
144
147
  else
145
148
  roles = nil
@@ -1,17 +1,21 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsEc2Instances < Inspec.resource(1)
2
- name 'aws_ec2_instances'
3
- desc 'Verifies settings for AWS EC2 Instances in bulk'
6
+ name "aws_ec2_instances"
7
+ desc "Verifies settings for AWS EC2 Instances in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_ec2_instances do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
  def validate_params(resource_params)
13
17
  unless resource_params.empty?
14
- raise ArgumentError, 'aws_ec2_instances does not accept resource parameters.'
18
+ raise ArgumentError, "aws_ec2_instances does not accept resource parameters."
15
19
  end
16
20
  resource_params
17
21
  end
@@ -23,7 +27,7 @@ class AwsEc2Instances < Inspec.resource(1)
23
27
  filter.install_filter_methods_on_resource(self, :table)
24
28
 
25
29
  def to_s
26
- 'EC2 Instances'
30
+ "EC2 Instances"
27
31
  end
28
32
 
29
33
  def fetch_from_api
@@ -1,13 +1,17 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ecs"
4
+
1
5
  class AwsEcsCluster < Inspec.resource(1)
2
- name 'aws_ecs_cluster'
3
- desc 'Verifies settings for an ECS cluster'
6
+ name "aws_ecs_cluster"
7
+ desc "Verifies settings for an ECS cluster"
4
8
 
5
9
  example <<~EXAMPLE
6
10
  describe aws_ecs_cluster('default') do
7
11
  it { should exist }
8
12
  end
9
13
  EXAMPLE
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
  attr_reader :cluster_arn, :cluster_name, :status,
@@ -25,7 +29,7 @@ class AwsEcsCluster < Inspec.resource(1)
25
29
  raw_params: raw_params,
26
30
  allowed_params: [:cluster_name],
27
31
  allowed_scalar_name: :cluster_name,
28
- allowed_scalar_type: String,
32
+ allowed_scalar_type: String
29
33
  )
30
34
 
31
35
  validated_params
@@ -61,9 +65,9 @@ class AwsEcsCluster < Inspec.resource(1)
61
65
  end
62
66
 
63
67
  def populate_as_missing
64
- @cluster_arn = ''
65
- @cluster_name = ''
66
- @status = ''
68
+ @cluster_arn = ""
69
+ @cluster_name = ""
70
+ @status = ""
67
71
  @registered_container_instances_count = 0
68
72
  @running_tasks_count = 0
69
73
  @pending_tasks_count = 0
@@ -1,13 +1,17 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-eks"
4
+
1
5
  class AwsEksCluster < Inspec.resource(1)
2
- name 'aws_eks_cluster'
3
- desc 'Verifies settings for an EKS cluster'
6
+ name "aws_eks_cluster"
7
+ desc "Verifies settings for an EKS cluster"
4
8
 
5
9
  example <<~EXAMPLE
6
10
  describe aws_eks_cluster('default') do
7
11
  it { should exist }
8
12
  end
9
13
  EXAMPLE
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
  attr_reader :version, :arn, :cluster_name, :certificate_authority, :name,
@@ -31,11 +35,11 @@ class AwsEksCluster < Inspec.resource(1)
31
35
  raw_params: raw_params,
32
36
  allowed_params: [:cluster_name],
33
37
  allowed_scalar_name: :cluster_name,
34
- allowed_scalar_type: String,
38
+ allowed_scalar_type: String
35
39
  )
36
40
 
37
41
  if validated_params.empty?
38
- raise ArgumentError, 'You must provide a cluster_name to aws_eks_cluster.'
42
+ raise ArgumentError, "You must provide a cluster_name to aws_eks_cluster."
39
43
  end
40
44
 
41
45
  validated_params
@@ -66,10 +70,10 @@ class AwsEksCluster < Inspec.resource(1)
66
70
  @vpc_id = cluster[:resources_vpc_config][:vpc_id]
67
71
  @role_arn = cluster[:role_arn]
68
72
  @status = cluster[:status]
69
- @active = cluster[:status] == 'ACTIVE'
70
- @failed = cluster[:status] == 'FAILED'
71
- @creating = cluster[:status] == 'CREATING'
72
- @deleting = cluster[:status] == 'DELETING'
73
+ @active = cluster[:status] == "ACTIVE"
74
+ @failed = cluster[:status] == "FAILED"
75
+ @creating = cluster[:status] == "CREATING"
76
+ @deleting = cluster[:status] == "DELETING"
73
77
  end
74
78
 
75
79
  def populate_as_missing
@@ -1,12 +1,16 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-elasticloadbalancing"
4
+
1
5
  class AwsElb < Inspec.resource(1)
2
- name 'aws_elb'
3
- desc 'Verifies settings for AWS Elastic Load Balancer'
6
+ name "aws_elb"
7
+ desc "Verifies settings for AWS Elastic Load Balancer"
4
8
  example <<~EXAMPLE
5
9
  describe aws_elb('myelb') do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsSingularResourceMixin
12
16
  attr_reader :availability_zones, :dns_name, :elb_name, :external_ports,
@@ -24,11 +28,11 @@ class AwsElb < Inspec.resource(1)
24
28
  raw_params: raw_params,
25
29
  allowed_params: [:elb_name],
26
30
  allowed_scalar_name: :elb_name,
27
- allowed_scalar_type: String,
31
+ allowed_scalar_type: String
28
32
  )
29
33
 
30
34
  if validated_params.empty?
31
- raise ArgumentError, 'You must provide a elb_name to aws_elb.'
35
+ raise ArgumentError, "You must provide a elb_name to aws_elb."
32
36
  end
33
37
 
34
38
  validated_params
@@ -1,17 +1,21 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-elasticloadbalancing"
4
+
1
5
  class AwsElbs < Inspec.resource(1)
2
- name 'aws_elbs'
3
- desc 'Verifies settings for AWS ELBs (classic Elastic Load Balancers) in bulk'
6
+ name "aws_elbs"
7
+ desc "Verifies settings for AWS ELBs (classic Elastic Load Balancers) in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_elbs do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
  def validate_params(resource_params)
13
17
  unless resource_params.empty?
14
- raise ArgumentError, 'aws_elbs does not accept resource parameters.'
18
+ raise ArgumentError, "aws_elbs does not accept resource parameters."
15
19
  end
16
20
  resource_params
17
21
  end
@@ -34,7 +38,7 @@ class AwsElbs < Inspec.resource(1)
34
38
  filter.connect(self, :table)
35
39
 
36
40
  def to_s
37
- 'AWS ELBs'
41
+ "AWS ELBs"
38
42
  end
39
43
 
40
44
  def fetch_from_api
@@ -1,7 +1,11 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsFlowLog < Inspec.resource(1)
2
- name 'aws_flow_log'
3
- supports platform: 'aws'
4
- desc 'This resource is used to test the attributes of a Flow Log.'
6
+ name "aws_flow_log"
7
+ supports platform: "aws"
8
+ desc "This resource is used to test the attributes of a Flow Log."
5
9
  example <<~EXAMPLE
6
10
  describe aws_flow_log('fl-9c718cf5') do
7
11
  it { should exist }
@@ -17,24 +21,24 @@ class AwsFlowLog < Inspec.resource(1)
17
21
  def resource_type
18
22
  case @resource_id
19
23
  when /^eni/
20
- @resource_type = 'eni'
24
+ @resource_type = "eni"
21
25
  when /^subnet/
22
- @resource_type = 'subnet'
26
+ @resource_type = "subnet"
23
27
  when /^vpc/
24
- @resource_type = 'vpc'
28
+ @resource_type = "vpc"
25
29
  end
26
30
  end
27
31
 
28
32
  def attached_to_eni?
29
- resource_type.eql?('eni') ? true : false
33
+ resource_type.eql?("eni") ? true : false
30
34
  end
31
35
 
32
36
  def attached_to_subnet?
33
- resource_type.eql?('subnet') ? true : false
37
+ resource_type.eql?("subnet") ? true : false
34
38
  end
35
39
 
36
40
  def attached_to_vpc?
37
- resource_type.eql?('vpc') ? true : false
41
+ resource_type.eql?("vpc") ? true : false
38
42
  end
39
43
 
40
44
  attr_reader :log_group_name, :resource_id, :flow_log_id
@@ -46,12 +50,12 @@ class AwsFlowLog < Inspec.resource(1)
46
50
  raw_params: raw_params,
47
51
  allowed_params: [:flow_log_id, :subnet_id, :vpc_id],
48
52
  allowed_scalar_name: :flow_log_id,
49
- allowed_scalar_type: String,
53
+ allowed_scalar_type: String
50
54
  )
51
55
 
52
56
  if validated_params.empty?
53
57
  raise ArgumentError,
54
- 'aws_flow_log requires a parameter: flow_log_id, subnet_id, or vpc_id'
58
+ "aws_flow_log requires a parameter: flow_log_id, subnet_id, or vpc_id"
55
59
  end
56
60
 
57
61
  validated_params
@@ -72,10 +76,10 @@ class AwsFlowLog < Inspec.resource(1)
72
76
 
73
77
  def filter_args
74
78
  if @flow_log_id
75
- { filter: [{ name: 'flow-log-id', values: [@flow_log_id] }] }
79
+ { filter: [{ name: "flow-log-id", values: [@flow_log_id] }] }
76
80
  elsif @subnet_id || @vpc_id
77
81
  filter = @subnet_id || @vpc_id
78
- { filter: [{ name: 'resource-id', values: [filter] }] }
82
+ { filter: [{ name: "resource-id", values: [filter] }] }
79
83
  end
80
84
  end
81
85
 
@@ -1,6 +1,10 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
1
5
  class AwsIamAccessKey < Inspec.resource(1)
2
- name 'aws_iam_access_key'
3
- desc 'Verifies settings for an individual IAM access key'
6
+ name "aws_iam_access_key"
7
+ desc "Verifies settings for an individual IAM access key"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_access_key(username: 'username', id: 'access-key id') do
6
10
  it { should exist }
@@ -9,7 +13,7 @@ class AwsIamAccessKey < Inspec.resource(1)
9
13
  its('last_used_date') { should be > Time.now - 90 * 86400 }
10
14
  end
11
15
  EXAMPLE
12
- supports platform: 'aws'
16
+ supports platform: "aws"
13
17
 
14
18
  include AwsSingularResourceMixin
15
19
  attr_reader :access_key_id, :create_date, :status, :username
@@ -20,22 +24,22 @@ class AwsIamAccessKey < Inspec.resource(1)
20
24
  raw_params: raw_params,
21
25
  allowed_params: [:username, :id, :access_key_id],
22
26
  allowed_scalar_name: :access_key_id,
23
- allowed_scalar_type: String,
27
+ allowed_scalar_type: String
24
28
  )
25
29
 
26
30
  # id and access_key_id are aliases; standardize on access_key_id
27
31
  recognized_params[:access_key_id] = recognized_params.delete(:id) if recognized_params.key?(:id)
28
32
 
29
33
  # Validate format of access_key_id
30
- if recognized_params[:access_key_id] and
31
- recognized_params[:access_key_id] !~ /^AKIA[0-9A-Z]{16}$/
32
- raise ArgumentError, 'Incorrect format for Access Key ID - expected AKIA followed ' \
33
- 'by 16 letters or numbers'
34
+ if recognized_params[:access_key_id] &&
35
+ recognized_params[:access_key_id] !~ (/^AKIA[0-9A-Z]{16}$/)
36
+ raise ArgumentError, "Incorrect format for Access Key ID - expected AKIA followed " \
37
+ "by 16 letters or numbers"
34
38
  end
35
39
 
36
40
  # One of username and access_key_id is required
37
41
  if recognized_params[:username].nil? && recognized_params[:access_key_id].nil?
38
- raise ArgumentError, 'You must provide at lease one of access_key_id or username to aws_iam_access_key'
42
+ raise ArgumentError, "You must provide at lease one of access_key_id or username to aws_iam_access_key"
39
43
  end
40
44
 
41
45
  recognized_params
@@ -43,7 +47,7 @@ class AwsIamAccessKey < Inspec.resource(1)
43
47
 
44
48
  def active?
45
49
  return nil unless exists?
46
- status == 'Active'
50
+ status == "Active"
47
51
  end
48
52
 
49
53
  def to_s
@@ -80,7 +84,7 @@ class AwsIamAccessKey < Inspec.resource(1)
80
84
  end
81
85
 
82
86
  if access_keys.count > 1
83
- raise 'More than one access key matched for aws_iam_access_key. Use more specific paramaters, such as access_key_id.'
87
+ raise "More than one access key matched for aws_iam_access_key. Use more specific paramaters, such as access_key_id."
84
88
  end
85
89
 
86
90
  @exists = true
@@ -1,12 +1,16 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
1
5
  class AwsIamAccessKeys < Inspec.resource(1)
2
- name 'aws_iam_access_keys'
3
- desc 'Verifies settings for AWS IAM Access Keys in bulk'
6
+ name "aws_iam_access_keys"
7
+ desc "Verifies settings for AWS IAM Access Keys in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_access_keys do
6
10
  it { should_not exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
 
@@ -15,15 +19,15 @@ class AwsIamAccessKeys < Inspec.resource(1)
15
19
  raw_params: raw_params,
16
20
  allowed_params: [:username, :id, :access_key_id, :created_date],
17
21
  allowed_scalar_name: :access_key_id,
18
- allowed_scalar_type: String,
22
+ allowed_scalar_type: String
19
23
  )
20
24
 
21
25
  # id and access_key_id are aliases; standardize on access_key_id
22
26
  recognized_params[:access_key_id] = recognized_params.delete(:id) if recognized_params.key?(:id)
23
- if recognized_params[:access_key_id] and
24
- recognized_params[:access_key_id] !~ /^AKIA[0-9A-Z]{16}$/
25
- raise 'Incorrect format for Access Key ID - expected AKIA followed ' \
26
- 'by 16 letters or numbers'
27
+ if recognized_params[:access_key_id] &&
28
+ recognized_params[:access_key_id] !~ (/^AKIA[0-9A-Z]{16}$/)
29
+ raise "Incorrect format for Access Key ID - expected AKIA followed " \
30
+ "by 16 letters or numbers"
27
31
  end
28
32
 
29
33
  recognized_params
@@ -56,7 +60,7 @@ class AwsIamAccessKeys < Inspec.resource(1)
56
60
  filter.install_filter_methods_on_resource(self, :table)
57
61
 
58
62
  def to_s
59
- 'IAM Access Keys'
63
+ "IAM Access Keys"
60
64
  end
61
65
 
62
66
  # Internal support class. This is used to fetch
@@ -123,12 +127,12 @@ class AwsIamAccessKeys < Inspec.resource(1)
123
127
 
124
128
  def add_synthetic_fields(key_info, user_details) # rubocop:disable Metrics/AbcSize
125
129
  key_info[:id] = key_info[:access_key_id]
126
- key_info[:active] = key_info[:status] == 'Active'
127
- key_info[:inactive] = key_info[:status] != 'Active'
128
- key_info[:created_hours_ago] = ((Time.now - key_info[:create_date]) / (60*60)).to_i
130
+ key_info[:active] = key_info[:status] == "Active"
131
+ key_info[:inactive] = key_info[:status] != "Active"
132
+ key_info[:created_hours_ago] = ((Time.now - key_info[:create_date]) / (60 * 60)).to_i
129
133
  key_info[:created_days_ago] = (key_info[:created_hours_ago] / 24).to_i
130
134
  key_info[:user_created_date] = user_details[:create_date]
131
- key_info[:created_with_user] = (key_info[:create_date] - key_info[:user_created_date]).abs < 1.0/24.0
135
+ key_info[:created_with_user] = (key_info[:create_date] - key_info[:user_created_date]).abs < 1.0 / 24.0
132
136
 
133
137
  # Last used is a separate API call
134
138
  iam_client = aws_service_client
@@ -139,8 +143,8 @@ class AwsIamAccessKeys < Inspec.resource(1)
139
143
  key_info[:never_used] = last_used.nil?
140
144
  key_info[:last_used_time] = last_used
141
145
  return unless last_used
142
- key_info[:last_used_hours_ago] = ((Time.now - last_used) / (60*60)).to_i
143
- key_info[:last_used_days_ago] = (key_info[:last_used_hours_ago]/24).to_i
146
+ key_info[:last_used_hours_ago] = ((Time.now - last_used) / (60 * 60)).to_i
147
+ key_info[:last_used_days_ago] = (key_info[:last_used_hours_ago] / 24).to_i
144
148
  end
145
149
  end
146
150
  end