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,12 +1,16 @@
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 AwsIamGroup < Inspec.resource(1)
2
- name 'aws_iam_group'
3
- desc 'Verifies settings for AWS IAM Group'
6
+ name "aws_iam_group"
7
+ desc "Verifies settings for AWS IAM Group"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_group('mygroup') 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 :group_name, :users
@@ -22,11 +26,11 @@ class AwsIamGroup < Inspec.resource(1)
22
26
  raw_params: raw_params,
23
27
  allowed_params: [:group_name],
24
28
  allowed_scalar_name: :group_name,
25
- allowed_scalar_type: String,
29
+ allowed_scalar_type: String
26
30
  )
27
31
 
28
32
  if validated_params.empty?
29
- raise ArgumentError, 'You must provide a group_name to aws_iam_group.'
33
+ raise ArgumentError, "You must provide a group_name to aws_iam_group."
30
34
  end
31
35
 
32
36
  validated_params
@@ -1,18 +1,22 @@
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 AwsIamGroups < Inspec.resource(1)
2
- name 'aws_iam_groups'
3
- desc 'Verifies settings for AWS IAM groups in bulk'
6
+ name "aws_iam_groups"
7
+ desc "Verifies settings for AWS IAM groups in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_groups 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
 
13
17
  def validate_params(resource_params)
14
18
  unless resource_params.empty?
15
- raise ArgumentError, 'aws_iam_groups does not accept resource parameters.'
19
+ raise ArgumentError, "aws_iam_groups does not accept resource parameters."
16
20
  end
17
21
  resource_params
18
22
  end
@@ -23,7 +27,7 @@ class AwsIamGroups < Inspec.resource(1)
23
27
  filter.install_filter_methods_on_resource(self, :table)
24
28
 
25
29
  def to_s
26
- 'IAM Groups'
30
+ "IAM Groups"
27
31
  end
28
32
 
29
33
  def fetch_from_api
@@ -1,7 +1,10 @@
1
- # author: Viktor Yakovlyev
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
2
5
  class AwsIamPasswordPolicy < Inspec.resource(1)
3
- name 'aws_iam_password_policy'
4
- desc 'Verifies iam password policy'
6
+ name "aws_iam_password_policy"
7
+ desc "Verifies iam password policy"
5
8
 
6
9
  example <<~EXAMPLE
7
10
  describe aws_iam_password_policy do
@@ -12,7 +15,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
12
15
  its('requires_uppercase_characters?') { should be true }
13
16
  end
14
17
  EXAMPLE
15
- supports platform: 'aws'
18
+ supports platform: "aws"
16
19
 
17
20
  # TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
18
21
  def initialize(conn = nil)
@@ -41,7 +44,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
41
44
  # The AWS error here is unhelpful:
42
45
  # "unable to sign request without credentials set"
43
46
  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."
44
- fail_resource('No AWS credentials available')
47
+ fail_resource("No AWS credentials available")
45
48
  rescue Aws::Errors::ServiceError => e
46
49
  fail_resource e.message
47
50
  end
@@ -59,7 +62,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
59
62
  end
60
63
 
61
64
  def to_s
62
- 'IAM Password-Policy'
65
+ "IAM Password-Policy"
63
66
  end
64
67
 
65
68
  def exists?
@@ -73,12 +76,12 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
73
76
  end
74
77
 
75
78
  def max_password_age_in_days
76
- raise 'this policy does not expire passwords' unless expire_passwords?
79
+ raise "this policy does not expire passwords" unless expire_passwords?
77
80
  @policy.max_password_age
78
81
  end
79
82
 
80
83
  def number_of_passwords_to_remember
81
- raise 'this policy does not prevent password reuse' \
84
+ raise "this policy does not prevent password reuse" \
82
85
  unless prevent_password_reuse?
83
86
  @policy.password_reuse_prevention
84
87
  end
@@ -92,13 +95,13 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
92
95
  :expire_passwords,
93
96
  ].each do |matcher_stem|
94
97
  # Create our predicates (for example, 'require_symbols?')
95
- stem_with_question_mark = (matcher_stem.to_s + '?').to_sym
98
+ stem_with_question_mark = (matcher_stem.to_s + "?").to_sym
96
99
  define_method stem_with_question_mark do
97
100
  @policy.send(matcher_stem)
98
101
  end
99
102
  # RSpec will expose that as (for example) `be_require_symbols`.
100
103
  # To undo that, we have to make a matcher alias.
101
- stem_with_be = ('be_' + matcher_stem.to_s).to_sym
104
+ stem_with_be = ("be_" + matcher_stem.to_s).to_sym
102
105
  RSpec::Matchers.alias_matcher matcher_stem, stem_with_be
103
106
  end
104
107
 
@@ -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-iam"
4
+
1
5
  class AwsIamPolicies < Inspec.resource(1)
2
- name 'aws_iam_policies'
3
- desc 'Verifies settings for AWS IAM Policies in bulk'
6
+ name "aws_iam_policies"
7
+ desc "Verifies settings for AWS IAM Policies in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_policies 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_iam_policies does not accept resource parameters.'
18
+ raise ArgumentError, "aws_iam_policies does not accept resource parameters."
15
19
  end
16
20
  resource_params
17
21
  end
@@ -24,7 +28,7 @@ class AwsIamPolicies < Inspec.resource(1)
24
28
  filter.install_filter_methods_on_resource(self, :table)
25
29
 
26
30
  def to_s
27
- 'IAM Policies'
31
+ "IAM Policies"
28
32
  end
29
33
 
30
34
  def fetch_from_api
@@ -1,16 +1,20 @@
1
- require 'json'
2
- require 'set'
3
- require 'uri'
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
5
+ require "json"
6
+ require "set"
7
+ require "uri"
4
8
 
5
9
  class AwsIamPolicy < Inspec.resource(1)
6
- name 'aws_iam_policy'
7
- desc 'Verifies settings for individual AWS IAM Policy'
10
+ name "aws_iam_policy"
11
+ desc "Verifies settings for individual AWS IAM Policy"
8
12
  example <<~EXAMPLE
9
13
  describe aws_iam_policy('AWSSupportAccess') do
10
14
  it { should be_attached }
11
15
  end
12
16
  EXAMPLE
13
- supports platform: 'aws'
17
+ supports platform: "aws"
14
18
 
15
19
  include AwsSingularResourceMixin
16
20
 
@@ -37,7 +41,7 @@ class AwsIamPolicy < Inspec.resource(1)
37
41
  end
38
42
 
39
43
  def attached?
40
- !attachment_count.zero?
44
+ attachment_count > 0
41
45
  end
42
46
 
43
47
  def attached_users
@@ -85,8 +89,8 @@ class AwsIamPolicy < Inspec.resource(1)
85
89
  def statement_count
86
90
  return nil unless exists?
87
91
  # Typically it is an array of statements
88
- if policy['Statement'].is_a? Array
89
- policy['Statement'].count
92
+ if policy["Statement"].is_a? Array
93
+ policy["Statement"].count
90
94
  else
91
95
  # But if there is one statement, it is permissable to degenerate the array,
92
96
  # and place the statement as a hash directly under the 'Statement' key
@@ -160,8 +164,8 @@ class AwsIamPolicy < Inspec.resource(1)
160
164
  # directly in policy['Statement'], rather than in an
161
165
  # Array within it. See arn:aws:iam::aws:policy/AWSCertificateManagerReadOnly
162
166
  # Thus, coerce to Array.
163
- policy['Statement'] = [policy['Statement']] if policy['Statement'].is_a? Hash
164
- policy['Statement'].map do |statement|
167
+ policy["Statement"] = [policy["Statement"]] if policy["Statement"].is_a? Hash
168
+ policy["Statement"].map do |statement|
165
169
  # Coerce some values into arrays
166
170
  %w{Action Resource}.each do |field|
167
171
  if statement.key?(field)
@@ -226,7 +230,7 @@ class AwsIamPolicy < Inspec.resource(1)
226
230
  raw_params: raw_params,
227
231
  allowed_params: [:policy_name],
228
232
  allowed_scalar_name: :policy_name,
229
- allowed_scalar_type: String,
233
+ allowed_scalar_type: String
230
234
  )
231
235
 
232
236
  if validated_params.empty?
@@ -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-iam"
4
+
1
5
  class AwsIamRole < Inspec.resource(1)
2
- name 'aws_iam_role'
3
- desc 'Verifies settings for an IAM Role'
6
+ name "aws_iam_role"
7
+ desc "Verifies settings for an IAM Role"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_role('my-role') 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 :description, :role_name
@@ -22,10 +26,10 @@ class AwsIamRole < Inspec.resource(1)
22
26
  raw_params: raw_params,
23
27
  allowed_params: [:role_name],
24
28
  allowed_scalar_name: :role_name,
25
- allowed_scalar_type: String,
29
+ allowed_scalar_type: String
26
30
  )
27
31
  if validated_params.empty?
28
- raise ArgumentError, 'You must provide a role_name to aws_iam_role.'
32
+ raise ArgumentError, "You must provide a role_name to aws_iam_role."
29
33
  end
30
34
  validated_params
31
35
  end
@@ -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-iam"
4
+
1
5
  class AwsIamRootUser < Inspec.resource(1)
2
- name 'aws_iam_root_user'
3
- desc 'Verifies settings for AWS root account'
6
+ name "aws_iam_root_user"
7
+ desc "Verifies settings for AWS root account"
4
8
  example <<~EXAMPLE
5
9
  describe aws_iam_root_user do
6
10
  it { should have_access_key }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  # TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
12
16
  def initialize(conn = nil)
@@ -21,7 +25,7 @@ class AwsIamRootUser < Inspec.resource(1)
21
25
  # The AWS error here is unhelpful:
22
26
  # "unable to sign request without credentials set"
23
27
  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."
24
- fail_resource('No AWS credentials available')
28
+ fail_resource("No AWS credentials available")
25
29
  rescue Aws::Errors::ServiceError => e
26
30
  fail_resource e.message
27
31
  end
@@ -39,11 +43,11 @@ class AwsIamRootUser < Inspec.resource(1)
39
43
  end
40
44
 
41
45
  def has_access_key?
42
- summary_account['AccountAccessKeysPresent'] == 1
46
+ summary_account["AccountAccessKeysPresent"] == 1
43
47
  end
44
48
 
45
49
  def has_mfa_enabled?
46
- summary_account['AccountMFAEnabled'] == 1
50
+ summary_account["AccountMFAEnabled"] == 1
47
51
  end
48
52
 
49
53
  # if the root account has a Virtual MFA device then it will have a special
@@ -51,7 +55,7 @@ class AwsIamRootUser < Inspec.resource(1)
51
55
  def has_virtual_mfa_enabled?
52
56
  mfa_device_pattern = %r{arn:aws:iam::\d{12}:mfa\/root-account-mfa-device}
53
57
 
54
- virtual_mfa_devices.any? { |d| mfa_device_pattern =~ d['serial_number'] }
58
+ virtual_mfa_devices.any? { |d| mfa_device_pattern =~ d["serial_number"] }
55
59
  end
56
60
 
57
61
  def has_hardware_mfa_enabled?
@@ -59,7 +63,7 @@ class AwsIamRootUser < Inspec.resource(1)
59
63
  end
60
64
 
61
65
  def to_s
62
- 'AWS Root-User'
66
+ "AWS Root-User"
63
67
  end
64
68
 
65
69
  private
@@ -1,10 +1,10 @@
1
- # author: Alex Bedley
2
- # author: Steffanie Freeman
3
- # author: Simon Varlow
4
- # author: Chris Redekop
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
5
5
  class AwsIamUser < Inspec.resource(1)
6
- name 'aws_iam_user'
7
- desc 'Verifies settings for AWS IAM user'
6
+ name "aws_iam_user"
7
+ desc "Verifies settings for AWS IAM user"
8
8
  example <<~EXAMPLE
9
9
  describe aws_iam_user(username: 'test_user') do
10
10
  it { should have_mfa_enabled }
@@ -13,7 +13,7 @@ class AwsIamUser < Inspec.resource(1)
13
13
  it { should_not have_attached_user_policies }
14
14
  end
15
15
  EXAMPLE
16
- supports platform: 'aws'
16
+ supports platform: "aws"
17
17
 
18
18
  include AwsSingularResourceMixin
19
19
  attr_reader :access_keys, :attached_policy_names, :attached_policy_arns, \
@@ -22,7 +22,7 @@ class AwsIamUser < Inspec.resource(1)
22
22
  alias has_console_password? has_console_password
23
23
 
24
24
  def name
25
- Inspec.deprecate(:properties_aws_iam_user, 'The aws_iam_user `name` property is deprecated. Please use `username` instead')
25
+ Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_user `name` property is deprecated. Please use `username` instead")
26
26
  username
27
27
  end
28
28
 
@@ -47,22 +47,22 @@ class AwsIamUser < Inspec.resource(1)
47
47
  raw_params: raw_params,
48
48
  allowed_params: [:username, :aws_user_struct, :name, :user],
49
49
  allowed_scalar_name: :username,
50
- allowed_scalar_type: String,
50
+ allowed_scalar_type: String
51
51
  )
52
52
  # If someone passed :name, rename it to :username
53
53
  if validated_params.key?(:name)
54
- Inspec.deprecate(:properties_aws_iam_user, 'The aws_iam_users `name` property is deprecated. Please use `username` instead')
54
+ Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_users `name` property is deprecated. Please use `username` instead")
55
55
  validated_params[:username] = validated_params.delete(:name)
56
56
  end
57
57
 
58
58
  # If someone passed :user, rename it to :aws_user_struct
59
59
  if validated_params.key?(:user)
60
- Inspec.deprecate(:properties_aws_iam_user, 'The aws_iam_users `user` property is deprecated. Please use `aws_user_struct` instead')
60
+ Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_users `user` property is deprecated. Please use `aws_user_struct` instead")
61
61
  validated_params[:aws_user_struct] = validated_params.delete(:user)
62
62
  end
63
63
 
64
64
  if validated_params.empty?
65
- raise ArgumentError, 'You must provide a username to aws_iam_user.'
65
+ raise ArgumentError, "You must provide a username to aws_iam_user."
66
66
  end
67
67
  validated_params
68
68
  end
@@ -1,10 +1,10 @@
1
- # author: Alex Bedley
2
- # author: Steffanie Freeman
3
- # author: Simon Varlow
4
- # author: Chris Redekop
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-iam"
4
+
5
5
  class AwsIamUsers < Inspec.resource(1)
6
- name 'aws_iam_users'
7
- desc 'Verifies settings for AWS IAM users'
6
+ name "aws_iam_users"
7
+ desc "Verifies settings for AWS IAM users"
8
8
  example <<~EXAMPLE
9
9
  describe aws_iam_users.where(has_mfa_enabled?: false) do
10
10
  it { should_not exist }
@@ -19,7 +19,7 @@ class AwsIamUsers < Inspec.resource(1)
19
19
  it { should_not exist }
20
20
  end
21
21
  EXAMPLE
22
- supports platform: 'aws'
22
+ supports platform: "aws"
23
23
 
24
24
  include AwsPluralResourceMixin
25
25
 
@@ -90,7 +90,7 @@ class AwsIamUsers < Inspec.resource(1)
90
90
  def validate_params(raw_params)
91
91
  # No params yet
92
92
  unless raw_params.empty?
93
- raise ArgumentError, 'aws_iam_users does not accept resource parameters'
93
+ raise ArgumentError, "aws_iam_users does not accept resource parameters"
94
94
  end
95
95
  raw_params
96
96
  end
@@ -116,14 +116,14 @@ class AwsIamUsers < Inspec.resource(1)
116
116
  user[:password_ever_used?] = !password_last_used.nil?
117
117
  user[:password_never_used?] = password_last_used.nil?
118
118
  if user[:password_ever_used?]
119
- user[:password_last_used_days_ago] = ((Time.now - password_last_used) / (24*60*60)).to_i
119
+ user[:password_last_used_days_ago] = ((Time.now - password_last_used) / (24 * 60 * 60)).to_i
120
120
  end
121
121
  end
122
122
  @table
123
123
  end
124
124
 
125
125
  def to_s
126
- 'IAM Users'
126
+ "IAM Users"
127
127
  end
128
128
 
129
129
  #===========================================================================#
@@ -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-kms"
4
+
1
5
  class AwsKmsKey < Inspec.resource(1)
2
- name 'aws_kms_key'
3
- desc 'Verifies settings for an individual AWS KMS Key'
6
+ name "aws_kms_key"
7
+ desc "Verifies settings for an individual AWS KMS Key"
4
8
  example <<~EXAMPLE
5
9
  describe aws_kms_key('arn:aws:kms:us-east-1::key/4321dcba-21io-23de-85he-ab0987654321') do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
13
 
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
  attr_reader :key_id, :arn, :creation_date, :key_usage, :key_state, :description,
@@ -27,7 +31,7 @@ class AwsKmsKey < Inspec.resource(1)
27
31
  end
28
32
 
29
33
  def created_days_ago
30
- ((Time.now - creation_date)/(24*60*60)).to_i unless creation_date.nil?
34
+ ((Time.now - creation_date) / (24 * 60 * 60)).to_i unless creation_date.nil?
31
35
  end
32
36
 
33
37
  private
@@ -37,7 +41,7 @@ class AwsKmsKey < Inspec.resource(1)
37
41
  raw_params: raw_params,
38
42
  allowed_params: [:key_id],
39
43
  allowed_scalar_name: :key_id,
40
- allowed_scalar_type: String,
44
+ allowed_scalar_type: String
41
45
  )
42
46
 
43
47
  if validated_params.empty?
@@ -66,9 +70,9 @@ class AwsKmsKey < Inspec.resource(1)
66
70
  @key_state = @key[:key_state]
67
71
  @deletion_date = @key[:deletion_date]
68
72
  @valid_to = @key[:valid_to]
69
- @external = @key[:origin] == 'EXTERNAL'
70
- @has_key_expiration = @key[:expiration_model] == 'KEY_MATERIAL_EXPIRES'
71
- @managed_by_aws = @key[:key_manager] == 'AWS'
73
+ @external = @key[:origin] == "EXTERNAL"
74
+ @has_key_expiration = @key[:expiration_model] == "KEY_MATERIAL_EXPIRES"
75
+ @managed_by_aws = @key[:key_manager] == "AWS"
72
76
 
73
77
  resp = backend.get_key_rotation_status(query)
74
78
  @has_rotation_enabled = resp.key_rotation_enabled unless resp.empty?