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,15 +1,15 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
- require 'utils/filter'
5
- require 'ostruct'
3
+ require "inspec/utils/filter"
4
+ require "ostruct"
5
+ require "inspec/resources/command"
6
6
 
7
7
  module Inspec::Resources
8
8
  class Processes < Inspec.resource(1)
9
- name 'processes'
10
- supports platform: 'unix'
11
- supports platform: 'windows'
12
- desc 'Use the processes InSpec audit resource to test properties for programs that are running on the system.'
9
+ name "processes"
10
+ supports platform: "unix"
11
+ supports platform: "windows"
12
+ desc "Use the processes InSpec audit resource to test properties for programs that are running on the system."
13
13
  example <<~EXAMPLE
14
14
  describe processes('mysqld') do
15
15
  its('entries.length') { should eq 1 }
@@ -33,10 +33,10 @@ module Inspec::Resources
33
33
  if grep.class == String
34
34
  # if windows ignore case as we can't make up our minds
35
35
  if inspec.os.windows?
36
- grep = '(?i)' + grep
36
+ grep = "(?i)" + grep
37
37
  else
38
- grep = '(/[^/]*)*' + grep unless grep[0] == '/'
39
- grep = '^' + grep + '(\s|$)'
38
+ grep = "(/[^/]*)*" + grep unless grep[0] == "/"
39
+ grep = "^" + grep + '(\s|$)'
40
40
  end
41
41
  grep = Regexp.new(grep)
42
42
  end
@@ -56,23 +56,23 @@ module Inspec::Resources
56
56
  end
57
57
 
58
58
  def list
59
- Inspec.deprecate(:property_processes_list, 'The processes `list` property is deprecated. Please use `entries` instead.')
59
+ Inspec.deprecate(:property_processes_list, "The processes `list` property is deprecated. Please use `entries` instead.")
60
60
  @list
61
61
  end
62
62
 
63
63
  filter = FilterTable.create
64
- filter.register_column(:labels, field: 'label')
65
- .register_column(:pids, field: 'pid')
66
- .register_column(:cpus, field: 'cpu')
67
- .register_column(:mem, field: 'mem')
68
- .register_column(:vsz, field: 'vsz')
69
- .register_column(:rss, field: 'rss')
70
- .register_column(:tty, field: 'tty')
71
- .register_column(:states, field: 'stat')
72
- .register_column(:start, field: 'start')
73
- .register_column(:time, field: 'time')
74
- .register_column(:users, field: 'user')
75
- .register_column(:commands, field: 'command')
64
+ filter.register_column(:labels, field: "label")
65
+ .register_column(:pids, field: "pid")
66
+ .register_column(:cpus, field: "cpu")
67
+ .register_column(:mem, field: "mem")
68
+ .register_column(:vsz, field: "vsz")
69
+ .register_column(:rss, field: "rss")
70
+ .register_column(:tty, field: "tty")
71
+ .register_column(:states, field: "stat")
72
+ .register_column(:start, field: "start")
73
+ .register_column(:time, field: "time")
74
+ .register_column(:users, field: "user")
75
+ .register_column(:commands, field: "command")
76
76
  .install_filter_methods_on_resource(self, :filtered_processes)
77
77
 
78
78
  private
@@ -104,7 +104,7 @@ module Inspec::Resources
104
104
  command: 12,
105
105
  }
106
106
  else
107
- command = 'ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user,command'
107
+ command = "ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user,command"
108
108
  regex = /^\s*([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+(.*)$/
109
109
  field_map = {
110
110
  pid: 1,
@@ -125,7 +125,7 @@ module Inspec::Resources
125
125
 
126
126
  def ps_configuration_for_linux
127
127
  if busybox_ps?
128
- command = 'ps -o pid,vsz,rss,tty,stat,time,ruser,args'
128
+ command = "ps -o pid,vsz,rss,tty,stat,time,ruser,args"
129
129
  regex = /^\s*(\d+)\s+(\d+(?:\.\d+)?[gm]?)\s+(\d+(?:\.\d+)?[gm]?)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(.*)$/
130
130
  field_map = {
131
131
  pid: 1,
@@ -138,7 +138,7 @@ module Inspec::Resources
138
138
  command: 8,
139
139
  }
140
140
  else
141
- command = 'ps axo label,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user:32,command'
141
+ command = "ps axo label,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user:32,command"
142
142
  regex = /^(.+?)\s+(\d+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+([^ ]+)\s+(\w{3} \d{2}|\d{2}:\d{2}:\d{2})\s+([^ ]+)\s+([^ ]+)\s+(.*)$/
143
143
  field_map = {
144
144
  label: 1,
@@ -160,15 +160,15 @@ module Inspec::Resources
160
160
  end
161
161
 
162
162
  def busybox_ps?
163
- @busybox_ps ||= inspec.command('ps --help').stderr.include?('BusyBox')
163
+ @busybox_ps ||= inspec.command("ps --help").stderr.include?("BusyBox")
164
164
  end
165
165
 
166
166
  def convert_to_kilobytes(param)
167
167
  return param.to_i unless param.is_a?(String)
168
168
 
169
- if param.end_with?('g')
169
+ if param.end_with?("g")
170
170
  (param[0..-2].to_f * 1024 * 1024).to_i
171
- elsif param.end_with?('m')
171
+ elsif param.end_with?("m")
172
172
  (param[0..-2].to_f * 1024).to_i
173
173
  else
174
174
  param.to_i
@@ -1,15 +1,14 @@
1
- # encoding: utf-8
2
-
3
- require 'utils/erlang_parser'
4
- require 'utils/file_reader'
1
+ require "inspec/utils/erlang_parser"
2
+ require "inspec/utils/file_reader"
5
3
 
6
4
  module Inspec::Resources
7
- class RabbitmqConf < Inspec.resource(1)
8
- name 'rabbitmq_config'
9
- supports platform: 'unix'
10
- desc 'Use the rabbitmq_config InSpec resource to test configuration data '\
11
- 'for the RabbitMQ service located in /etc/rabbitmq/rabbitmq.config on '\
12
- 'Linux and UNIX platforms.'
5
+ class RabbitmqConfig < Inspec.resource(1)
6
+ name "rabbitmq_conf" # TODO: this is an alias. do we want this?
7
+ name "rabbitmq_config"
8
+ supports platform: "unix"
9
+ desc "Use the rabbitmq_config InSpec resource to test configuration data "\
10
+ "for the RabbitMQ service located in /etc/rabbitmq/rabbitmq.config on "\
11
+ "Linux and UNIX platforms."
13
12
  example <<~EXAMPLE
14
13
  describe rabbitmq_config.params('rabbit', 'ssl_listeners') do
15
14
  it { should cmp 5671 }
@@ -19,7 +18,7 @@ module Inspec::Resources
19
18
  include FileReader
20
19
 
21
20
  def initialize(conf_path = nil)
22
- @conf_path = conf_path || '/etc/rabbitmq/rabbitmq.config'
21
+ @conf_path = conf_path || "/etc/rabbitmq/rabbitmq.config"
23
22
  @content = read_file_content(@conf_path, allow_empty: true)
24
23
  end
25
24
 
@@ -1,11 +1,11 @@
1
- # encoding: utf-8
2
1
  # copyright: 2015, Vulcano Security GmbH
3
2
 
4
- require 'json'
3
+ require "json"
4
+ require "inspec/resources/powershell"
5
5
 
6
6
  # Three constructor methods are available:
7
7
  # 1. resistry_key(path'):
8
- # describe registry_key('Task Scheduler','HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule') do
8
+ # describe registry_key('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule') do
9
9
  # its('Start') { should eq 2 }
10
10
  # end
11
11
  #
@@ -47,9 +47,9 @@ require 'json'
47
47
 
48
48
  module Inspec::Resources
49
49
  class RegistryKey < Inspec.resource(1)
50
- name 'registry_key'
51
- supports platform: 'windows'
52
- desc 'Use the registry_key InSpec audit resource to test key values in the Microsoft Windows registry.'
50
+ name "registry_key"
51
+ supports platform: "windows"
52
+ desc "Use the registry_key InSpec audit resource to test key values in the Microsoft Windows registry."
53
53
  example <<~EXAMPLE
54
54
  describe registry_key('path\to\key') do
55
55
  its('name') { should eq 'value' }
@@ -71,7 +71,7 @@ module Inspec::Resources
71
71
  @options[:path] = reg_key
72
72
  end
73
73
 
74
- return skip_resource 'The `registry_key` resource is not supported on your OS yet.' if !inspec.os.windows?
74
+ return skip_resource "The `registry_key` resource is not supported on your OS yet." if !inspec.os.windows?
75
75
  end
76
76
 
77
77
  def exists?
@@ -80,7 +80,7 @@ module Inspec::Resources
80
80
 
81
81
  def has_value?(value)
82
82
  val = registry_key(@options[:path])
83
- !val.nil? && registry_property_value(val, '(default)') == value ? true : false
83
+ !val.nil? && registry_property_value(val, "(default)") == value ? true : false
84
84
  end
85
85
 
86
86
  def has_property?(property_name, property_type = nil)
@@ -140,13 +140,13 @@ module Inspec::Resources
140
140
  def registry_property_value(regkey, property)
141
141
  return nil if !registry_property_exists(regkey, property)
142
142
  # always ensure the key is lower case
143
- regkey[prep_prop(property)]['value']
143
+ regkey[prep_prop(property)]["value"]
144
144
  end
145
145
 
146
146
  def registry_property_type(regkey, property)
147
147
  return nil if !registry_property_exists(regkey, property)
148
148
  # always ensure the key is lower case
149
- regkey[prep_prop(property)]['type']
149
+ regkey[prep_prop(property)]["type"]
150
150
  end
151
151
 
152
152
  def registry_key(path)
@@ -197,7 +197,7 @@ module Inspec::Resources
197
197
  @registry_cache
198
198
  end
199
199
 
200
- def children_keys(path, filter = '')
200
+ def children_keys(path, filter = "")
201
201
  return @children_cache if defined?(@children_cache)
202
202
  filter = filter.source if filter.is_a? ::Regexp
203
203
  script = <<-EOH
@@ -274,17 +274,17 @@ module Inspec::Resources
274
274
 
275
275
  def format_key_from_options
276
276
  key = @options[:key]
277
- return '' unless key
277
+ return "" unless key
278
278
 
279
279
  key.start_with?('\\') ? key : "\\#{key}"
280
280
  end
281
281
  end
282
282
 
283
283
  class WindowsRegistryKey < RegistryKey
284
- name 'windows_registry_key'
284
+ name "windows_registry_key"
285
285
 
286
286
  def initialize(name)
287
- Inspec.deprecate(:resource_windows_registry_key, 'The `windows_registry_key` resource is deprecated. Please use `registry_key` instead.')
287
+ Inspec.deprecate(:resource_windows_registry_key, "The `windows_registry_key` resource is deprecated. Please use `registry_key` instead.")
288
288
  super(name)
289
289
  end
290
290
  end
@@ -0,0 +1 @@
1
+ require "inspec/resources/powershell"
@@ -1,11 +1,12 @@
1
- # encoding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
3
+ require "inspec/resources/command"
4
+
4
5
  module Inspec::Resources
5
6
  class SecurityIdentifier < Inspec.resource(1)
6
- name 'security_identifier'
7
- supports platform: 'windows'
8
- desc 'Resource that returns a Security Identifier for a given entity name in Windows.'
7
+ name "security_identifier"
8
+ supports platform: "windows"
9
+ desc "Resource that returns a Security Identifier for a given entity name in Windows."
9
10
  example <<~EXAMPLE
10
11
  describe security_identifier(group: 'Everyone') do
11
12
  it { should exist }
@@ -17,7 +18,7 @@ module Inspec::Resources
17
18
  supported_opt_keys = [:user, :group, :unspecified]
18
19
  raise ArgumentError, "Invalid security_identifier param '#{opts}'. Please pass a hash with these supported keys: #{supported_opt_keys}" unless opts.respond_to?(:keys)
19
20
  raise ArgumentError, "Unsupported security_identifier options '#{opts.keys - supported_opt_keys}'. Supported keys: #[supported_opt_keys]" unless (opts.keys - supported_opt_keys).empty?
20
- raise ArgumentError, 'Specifying more than one of :user :group or :unspecified for security_identifier is not supported' unless opts.keys && (opts.keys & supported_opt_keys).length == 1
21
+ raise ArgumentError, "Specifying more than one of :user :group or :unspecified for security_identifier is not supported" unless opts.keys && (opts.keys & supported_opt_keys).length == 1
21
22
  if opts[:user]
22
23
  @type = :user
23
24
  @name = opts[:user]
@@ -30,7 +31,7 @@ module Inspec::Resources
30
31
  @type = :unspecified
31
32
  @name = opts[:unspecified]
32
33
  end
33
- raise ArgumentError, 'Specify one of :user :group or :unspecified for security_identifier' unless @name
34
+ raise ArgumentError, "Specify one of :user :group or :unspecified for security_identifier" unless @name
34
35
  @sids = nil
35
36
  end
36
37
 
@@ -66,19 +67,19 @@ module Inspec::Resources
66
67
  end
67
68
 
68
69
  def wmi_results(type)
69
- query = 'wmic '
70
+ query = "wmic "
70
71
  case type
71
72
  when :group
72
- query += 'group'
73
+ query += "group"
73
74
  when :user
74
- query += 'useraccount'
75
+ query += "useraccount"
75
76
  end
76
77
  query += " where 'Name=\"#{@name}\"' get Name\",\"SID /format:csv"
77
78
  # Example output:
78
79
  # inspec> command("wmic useraccount where 'Name=\"Administrator\"' get Name\",\"SID /format:csv").stdout
79
80
  # => "\r\n\r\nNode,Name,SID\r\n\r\nComputer1,Administrator,S-1-5-21-650485088-1194226989-968533923-500\r\n\r\n"
80
81
  # Remove the \r characters, split on \n\n, ignore the CSV header row
81
- inspec.command(query).stdout.strip.tr("\r", '').split("\n\n")[1..-1].map { |entry| entry.split(',') }
82
+ inspec.command(query).stdout.strip.tr("\r", "").split("\n\n")[1..-1].map { |entry| entry.split(",") }
82
83
  end
83
84
  end
84
85
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  #
3
2
  # Security Configuration and Analysis
4
3
  #
@@ -11,64 +10,66 @@
11
10
  # All local GPO parameters can be examined via Registry, but not all security
12
11
  # parameters. Therefore we need a combination of Registry and secedit output
13
12
 
14
- require 'hashie'
13
+ require "hashie"
14
+ require "inspec/resources/command"
15
+ require "inspec/utils/simpleconfig"
15
16
 
16
17
  module Inspec::Resources
17
18
  # known and supported MS privilege rights
18
19
  # @see https://technet.microsoft.com/en-us/library/dd277311.aspx
19
20
  # @see https://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx
20
21
  MS_PRIVILEGES_RIGHTS = [
21
- 'SeNetworkLogonRight',
22
- 'SeBackupPrivilege',
23
- 'SeChangeNotifyPrivilege',
24
- 'SeSystemtimePrivilege',
25
- 'SeCreatePagefilePrivilege',
26
- 'SeDebugPrivilege',
27
- 'SeRemoteShutdownPrivilege',
28
- 'SeAuditPrivilege',
29
- 'SeIncreaseQuotaPrivilege',
30
- 'SeIncreaseBasePriorityPrivilege',
31
- 'SeLoadDriverPrivilege',
32
- 'SeBatchLogonRight',
33
- 'SeServiceLogonRight',
34
- 'SeInteractiveLogonRight',
35
- 'SeSecurityPrivilege',
36
- 'SeSystemEnvironmentPrivilege',
37
- 'SeProfileSingleProcessPrivilege',
38
- 'SeSystemProfilePrivilege',
39
- 'SeAssignPrimaryTokenPrivilege',
40
- 'SeRestorePrivilege',
41
- 'SeShutdownPrivilege',
42
- 'SeTakeOwnershipPrivilege',
43
- 'SeUndockPrivilege',
44
- 'SeManageVolumePrivilege',
45
- 'SeRemoteInteractiveLogonRight',
46
- 'SeImpersonatePrivilege',
47
- 'SeCreateGlobalPrivilege',
48
- 'SeIncreaseWorking',
49
- 'SeTimeZonePrivilege',
50
- 'SeCreateSymbolicLinkPrivilege',
51
- 'SeDenyNetworkLogonRight', # Deny access to this computer from the network
52
- 'SeDenyInteractiveLogonRight', # Deny logon locally
53
- 'SeDenyBatchLogonRight', # Deny logon as a batch job
54
- 'SeDenyServiceLogonRight', # Deny logon as a service
55
- 'SeTcbPrivilege',
56
- 'SeMachineAccountPrivilege',
57
- 'SeCreateTokenPrivilege',
58
- 'SeCreatePermanentPrivilege',
59
- 'SeEnableDelegationPrivilege',
60
- 'SeLockMemoryPrivilege',
61
- 'SeSyncAgentPrivilege',
62
- 'SeUnsolicitedInputPrivilege',
63
- 'SeTrustedCredManAccessPrivilege',
64
- 'SeRelabelPrivilege', # the privilege to change a Windows integrity label (new to Windows Vista)
65
- 'SeDenyRemoteInteractiveLogonRight', # Deny logon through Terminal Services
22
+ "SeNetworkLogonRight",
23
+ "SeBackupPrivilege",
24
+ "SeChangeNotifyPrivilege",
25
+ "SeSystemtimePrivilege",
26
+ "SeCreatePagefilePrivilege",
27
+ "SeDebugPrivilege",
28
+ "SeRemoteShutdownPrivilege",
29
+ "SeAuditPrivilege",
30
+ "SeIncreaseQuotaPrivilege",
31
+ "SeIncreaseBasePriorityPrivilege",
32
+ "SeLoadDriverPrivilege",
33
+ "SeBatchLogonRight",
34
+ "SeServiceLogonRight",
35
+ "SeInteractiveLogonRight",
36
+ "SeSecurityPrivilege",
37
+ "SeSystemEnvironmentPrivilege",
38
+ "SeProfileSingleProcessPrivilege",
39
+ "SeSystemProfilePrivilege",
40
+ "SeAssignPrimaryTokenPrivilege",
41
+ "SeRestorePrivilege",
42
+ "SeShutdownPrivilege",
43
+ "SeTakeOwnershipPrivilege",
44
+ "SeUndockPrivilege",
45
+ "SeManageVolumePrivilege",
46
+ "SeRemoteInteractiveLogonRight",
47
+ "SeImpersonatePrivilege",
48
+ "SeCreateGlobalPrivilege",
49
+ "SeIncreaseWorking",
50
+ "SeTimeZonePrivilege",
51
+ "SeCreateSymbolicLinkPrivilege",
52
+ "SeDenyNetworkLogonRight", # Deny access to this computer from the network
53
+ "SeDenyInteractiveLogonRight", # Deny logon locally
54
+ "SeDenyBatchLogonRight", # Deny logon as a batch job
55
+ "SeDenyServiceLogonRight", # Deny logon as a service
56
+ "SeTcbPrivilege",
57
+ "SeMachineAccountPrivilege",
58
+ "SeCreateTokenPrivilege",
59
+ "SeCreatePermanentPrivilege",
60
+ "SeEnableDelegationPrivilege",
61
+ "SeLockMemoryPrivilege",
62
+ "SeSyncAgentPrivilege",
63
+ "SeUnsolicitedInputPrivilege",
64
+ "SeTrustedCredManAccessPrivilege",
65
+ "SeRelabelPrivilege", # the privilege to change a Windows integrity label (new to Windows Vista)
66
+ "SeDenyRemoteInteractiveLogonRight", # Deny logon through Terminal Services
66
67
  ].freeze
67
68
 
68
69
  class SecurityPolicy < Inspec.resource(1)
69
- name 'security_policy'
70
- supports platform: 'windows'
71
- desc 'Use the security_policy InSpec audit resource to test security policies on the Microsoft Windows platform.'
70
+ name "security_policy"
71
+ supports platform: "windows"
72
+ desc "Use the security_policy InSpec audit resource to test security policies on the Microsoft Windows platform."
72
73
  example <<~EXAMPLE
73
74
  describe security_policy do
74
75
  its('SeNetworkLogonRight') { should include 'S-1-5-11' }
@@ -107,7 +108,7 @@ module Inspec::Resources
107
108
  end
108
109
 
109
110
  def to_s
110
- 'Security Policy'
111
+ "Security Policy"
111
112
  end
112
113
 
113
114
  private
@@ -138,7 +139,7 @@ module Inspec::Resources
138
139
 
139
140
  conf = SimpleConfig.new(
140
141
  @content,
141
- assignment_regex: /^\s*(.*)=\s*(\S*)\s*$/,
142
+ assignment_regex: /^\s*(.*)=\s*(\S*)\s*$/
142
143
  )
143
144
  @params = convert_hash(conf.params)
144
145
  end
@@ -151,14 +152,14 @@ module Inspec::Resources
151
152
  # special handling for SID array
152
153
  elsif val =~ /[,]{0,1}\*\S/
153
154
  if @translate_sid
154
- val.split(',').map { |v|
155
+ val.split(",").map do |v|
155
156
  object_name = inspec.command("(New-Object System.Security.Principal.SecurityIdentifier(\"#{v.sub('*S', 'S')}\")).Translate( [System.Security.Principal.NTAccount]).Value").stdout.to_s.strip
156
- object_name.empty? || object_name.nil? ? v.sub('*S', 'S') : object_name
157
- }
157
+ object_name.empty? || object_name.nil? ? v.sub("*S", "S") : object_name
158
+ end
158
159
  else
159
- val.split(',').map { |v|
160
- v.sub('*S', 'S')
161
- }
160
+ val.split(",").map do |v|
161
+ v.sub("*S", "S")
162
+ end
162
163
  end
163
164
  # special handling for string values with "
164
165
  elsif !(m = /^\"(.*)\"$/.match(val)).nil?