inspec 1.51.25 → 2.0.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (482) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/CHANGELOG.md +24 -19
  4. data/Gemfile +3 -1
  5. data/LICENSE +0 -0
  6. data/MAINTAINERS.md +0 -0
  7. data/MAINTAINERS.toml +0 -0
  8. data/README.md +22 -3
  9. data/Rakefile +117 -0
  10. data/docs/.gitignore +0 -0
  11. data/docs/README.md +0 -0
  12. data/docs/dsl_inspec.md +0 -0
  13. data/docs/dsl_resource.md +0 -0
  14. data/docs/glossary.md +0 -0
  15. data/docs/habitat.md +0 -0
  16. data/docs/inspec_and_friends.md +0 -0
  17. data/docs/matchers.md +0 -0
  18. data/docs/migration.md +0 -0
  19. data/docs/platforms.md +119 -0
  20. data/docs/plugin_kitchen_inspec.md +0 -0
  21. data/docs/profiles.md +0 -0
  22. data/docs/reporters.md +0 -0
  23. data/docs/resources/aide_conf.md.erb +6 -8
  24. data/docs/resources/apache.md.erb +2 -1
  25. data/docs/resources/apache_conf.md.erb +2 -1
  26. data/docs/resources/apt.md.erb +2 -1
  27. data/docs/resources/audit_policy.md.erb +3 -2
  28. data/docs/resources/auditd.md.erb +2 -1
  29. data/docs/resources/auditd_conf.md.erb +3 -3
  30. data/docs/resources/aws_cloudtrail_trail.md.erb +140 -0
  31. data/docs/resources/aws_cloudtrail_trails.md.erb +81 -0
  32. data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -0
  33. data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -0
  34. data/docs/resources/aws_ec2_instance.md.erb +106 -0
  35. data/docs/resources/aws_iam_access_key.md.erb +123 -0
  36. data/docs/resources/aws_iam_access_keys.md.erb +198 -0
  37. data/docs/resources/aws_iam_group.md.erb +46 -0
  38. data/docs/resources/aws_iam_groups.md.erb +43 -0
  39. data/docs/resources/aws_iam_password_policy.md.erb +76 -0
  40. data/docs/resources/aws_iam_policies.md.erb +82 -0
  41. data/docs/resources/aws_iam_policy.md.erb +146 -0
  42. data/docs/resources/aws_iam_role.md.erb +65 -0
  43. data/docs/resources/aws_iam_root_user.md.erb +58 -0
  44. data/docs/resources/aws_iam_user.md.erb +64 -0
  45. data/docs/resources/aws_iam_users.md.erb +90 -0
  46. data/docs/resources/aws_kms_keys.md.erb +84 -0
  47. data/docs/resources/aws_route_table.md.erb +47 -0
  48. data/docs/resources/aws_s3_bucket.md.erb +134 -0
  49. data/docs/resources/aws_security_group.md.erb +152 -0
  50. data/docs/resources/aws_security_groups.md.erb +92 -0
  51. data/docs/resources/aws_sns_topic.md.erb +63 -0
  52. data/docs/resources/aws_subnet.md.erb +134 -0
  53. data/docs/resources/aws_subnets.md.erb +126 -0
  54. data/docs/resources/aws_vpc.md.erb +120 -0
  55. data/docs/resources/aws_vpcs.md.erb +48 -0
  56. data/docs/resources/azure_generic_resource.md.erb +140 -0
  57. data/docs/resources/azure_resource_group.md.erb +284 -0
  58. data/docs/resources/azure_virtual_machine.md.erb +314 -0
  59. data/docs/resources/azure_virtual_machine_data_disk.md.erb +182 -0
  60. data/docs/resources/bash.md.erb +2 -1
  61. data/docs/resources/bond.md.erb +2 -1
  62. data/docs/resources/bridge.md.erb +5 -2
  63. data/docs/resources/bsd_service.md.erb +3 -1
  64. data/docs/resources/command.md.erb +2 -1
  65. data/docs/resources/cpan.md.erb +4 -3
  66. data/docs/resources/cran.md.erb +2 -1
  67. data/docs/resources/crontab.md.erb +2 -1
  68. data/docs/resources/csv.md.erb +2 -1
  69. data/docs/resources/dh_params.md.erb +2 -1
  70. data/docs/resources/directory.md.erb +4 -2
  71. data/docs/resources/docker.md.erb +2 -1
  72. data/docs/resources/docker_container.md.erb +5 -2
  73. data/docs/resources/docker_image.md.erb +2 -1
  74. data/docs/resources/docker_service.md.erb +2 -1
  75. data/docs/resources/elasticsearch.md.erb +12 -1
  76. data/docs/resources/etc_fstab.md.erb +2 -1
  77. data/docs/resources/etc_group.md.erb +2 -1
  78. data/docs/resources/etc_hosts.md.erb +4 -1
  79. data/docs/resources/etc_hosts_allow.md.erb +2 -1
  80. data/docs/resources/etc_hosts_deny.md.erb +2 -1
  81. data/docs/resources/file.md.erb +6 -3
  82. data/docs/resources/filesystem.md.erb +2 -1
  83. data/docs/resources/firewalld.md.erb +4 -3
  84. data/docs/resources/gem.md.erb +2 -1
  85. data/docs/resources/group.md.erb +2 -1
  86. data/docs/resources/grub_conf.md.erb +2 -2
  87. data/docs/resources/host.md.erb +2 -1
  88. data/docs/resources/http.md.erb +4 -7
  89. data/docs/resources/iis_app.md.erb +3 -1
  90. data/docs/resources/iis_site.md.erb +4 -1
  91. data/docs/resources/inetd_conf.md.erb +2 -3
  92. data/docs/resources/ini.md.erb +6 -2
  93. data/docs/resources/interface.md.erb +5 -2
  94. data/docs/resources/iptables.md.erb +2 -1
  95. data/docs/resources/json.md.erb +2 -1
  96. data/docs/resources/kernel_module.md.erb +2 -1
  97. data/docs/resources/kernel_parameter.md.erb +3 -3
  98. data/docs/resources/key_rsa.md.erb +5 -3
  99. data/docs/resources/launchd_service.md.erb +2 -1
  100. data/docs/resources/limits_conf.md.erb +4 -2
  101. data/docs/resources/login_def.md.erb +2 -2
  102. data/docs/resources/mount.md.erb +2 -1
  103. data/docs/resources/mssql_session.md.erb +2 -1
  104. data/docs/resources/mysql_conf.md.erb +2 -1
  105. data/docs/resources/mysql_session.md.erb +2 -1
  106. data/docs/resources/nginx.md.erb +1 -0
  107. data/docs/resources/nginx_conf.md.erb +2 -1
  108. data/docs/resources/npm.md.erb +2 -1
  109. data/docs/resources/ntp_conf.md.erb +2 -1
  110. data/docs/resources/oneget.md.erb +2 -1
  111. data/docs/resources/oracledb_session.md.erb +2 -1
  112. data/docs/resources/os.md.erb +4 -3
  113. data/docs/resources/os_env.md.erb +2 -1
  114. data/docs/resources/package.md.erb +3 -2
  115. data/docs/resources/packages.md.erb +2 -1
  116. data/docs/resources/parse_config.md.erb +2 -1
  117. data/docs/resources/parse_config_file.md.erb +3 -2
  118. data/docs/resources/passwd.md.erb +2 -1
  119. data/docs/resources/pip.md.erb +2 -1
  120. data/docs/resources/port.md.erb +2 -1
  121. data/docs/resources/postgres_conf.md.erb +2 -1
  122. data/docs/resources/postgres_hba_conf.md.erb +2 -1
  123. data/docs/resources/postgres_ident_conf.md.erb +2 -1
  124. data/docs/resources/postgres_session.md.erb +2 -1
  125. data/docs/resources/powershell.md.erb +2 -1
  126. data/docs/resources/processes.md.erb +3 -1
  127. data/docs/resources/rabbitmq_config.md.erb +2 -1
  128. data/docs/resources/registry_key.md.erb +2 -1
  129. data/docs/resources/runit_service.md.erb +2 -1
  130. data/docs/resources/security_policy.md.erb +2 -1
  131. data/docs/resources/service.md.erb +2 -1
  132. data/docs/resources/shadow.md.erb +2 -1
  133. data/docs/resources/ssh_config.md.erb +2 -1
  134. data/docs/resources/sshd_config.md.erb +2 -1
  135. data/docs/resources/ssl.md.erb +2 -1
  136. data/docs/resources/sys_info.md.erb +2 -1
  137. data/docs/resources/systemd_service.md.erb +2 -1
  138. data/docs/resources/sysv_service.md.erb +2 -1
  139. data/docs/resources/upstart_service.md.erb +2 -1
  140. data/docs/resources/user.md.erb +3 -1
  141. data/docs/resources/users.md.erb +2 -1
  142. data/docs/resources/vbscript.md.erb +2 -1
  143. data/docs/resources/virtualization.md.erb +2 -1
  144. data/docs/resources/windows_feature.md.erb +2 -1
  145. data/docs/resources/windows_hotfix.md.erb +2 -1
  146. data/docs/resources/windows_task.md.erb +49 -43
  147. data/docs/resources/wmi.md.erb +2 -1
  148. data/docs/resources/x509_certificate.md.erb +1 -0
  149. data/docs/resources/xinetd_conf.md.erb +2 -1
  150. data/docs/resources/xml.md.erb +2 -1
  151. data/docs/resources/yaml.md.erb +2 -1
  152. data/docs/resources/yum.md.erb +2 -1
  153. data/docs/resources/zfs_dataset.md.erb +2 -1
  154. data/docs/resources/zfs_pool.md.erb +2 -1
  155. data/docs/ruby_usage.md +0 -0
  156. data/docs/shared/matcher_be.md.erb +0 -0
  157. data/docs/shared/matcher_cmp.md.erb +0 -0
  158. data/docs/shared/matcher_eq.md.erb +0 -0
  159. data/docs/shared/matcher_include.md.erb +0 -0
  160. data/docs/shared/matcher_match.md.erb +0 -0
  161. data/docs/shell.md +0 -0
  162. data/examples/README.md +0 -0
  163. data/examples/inheritance/README.md +0 -0
  164. data/examples/inheritance/controls/example.rb +0 -0
  165. data/examples/inheritance/inspec.yml +0 -0
  166. data/examples/kitchen-ansible/.kitchen.yml +0 -0
  167. data/examples/kitchen-ansible/Gemfile +0 -0
  168. data/examples/kitchen-ansible/README.md +0 -0
  169. data/examples/kitchen-ansible/files/nginx.repo +0 -0
  170. data/examples/kitchen-ansible/tasks/main.yml +0 -0
  171. data/examples/kitchen-ansible/test/integration/default/default.yml +0 -0
  172. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +0 -0
  173. data/examples/kitchen-chef/.kitchen.yml +0 -0
  174. data/examples/kitchen-chef/Berksfile +0 -0
  175. data/examples/kitchen-chef/Gemfile +0 -0
  176. data/examples/kitchen-chef/README.md +0 -0
  177. data/examples/kitchen-chef/metadata.rb +0 -0
  178. data/examples/kitchen-chef/recipes/default.rb +0 -0
  179. data/examples/kitchen-chef/recipes/nginx.rb +0 -0
  180. data/examples/kitchen-chef/test/integration/default/web_spec.rb +0 -0
  181. data/examples/kitchen-puppet/.kitchen.yml +0 -0
  182. data/examples/kitchen-puppet/Gemfile +0 -0
  183. data/examples/kitchen-puppet/Puppetfile +0 -0
  184. data/examples/kitchen-puppet/README.md +0 -0
  185. data/examples/kitchen-puppet/manifests/site.pp +0 -0
  186. data/examples/kitchen-puppet/metadata.json +0 -0
  187. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +0 -0
  188. data/examples/meta-profile/README.md +0 -0
  189. data/examples/meta-profile/controls/example.rb +0 -0
  190. data/examples/meta-profile/inspec.yml +0 -0
  191. data/examples/profile-attribute.yml +0 -0
  192. data/examples/profile-attribute/README.md +0 -0
  193. data/examples/profile-attribute/controls/example.rb +0 -0
  194. data/examples/profile-attribute/inspec.yml +0 -0
  195. data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -0
  196. data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -0
  197. data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -0
  198. data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -0
  199. data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -0
  200. data/examples/profile-aws/inspec.yml +11 -0
  201. data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -0
  202. data/examples/profile-azure/controls/azure_vm_example.rb +29 -0
  203. data/examples/profile-azure/inspec.yml +11 -0
  204. data/examples/profile-sensitive/README.md +0 -0
  205. data/examples/profile-sensitive/controls/sensitive-failures.rb +0 -0
  206. data/examples/profile-sensitive/controls/sensitive.rb +0 -0
  207. data/examples/profile-sensitive/inspec.yml +0 -0
  208. data/examples/profile/README.md +0 -0
  209. data/examples/profile/controls/example.rb +0 -0
  210. data/examples/profile/controls/gordon.rb +0 -0
  211. data/examples/profile/controls/meta.rb +0 -0
  212. data/examples/profile/inspec.yml +0 -0
  213. data/examples/profile/libraries/gordon_config.rb +0 -0
  214. data/inspec.gemspec +1 -1
  215. data/lib/bundles/README.md +0 -0
  216. data/lib/bundles/inspec-artifact.rb +0 -0
  217. data/lib/bundles/inspec-artifact/README.md +0 -0
  218. data/lib/bundles/inspec-artifact/cli.rb +0 -0
  219. data/lib/bundles/inspec-compliance.rb +0 -0
  220. data/lib/bundles/inspec-compliance/.kitchen.yml +0 -0
  221. data/lib/bundles/inspec-compliance/README.md +0 -0
  222. data/lib/bundles/inspec-compliance/api/login.rb +0 -0
  223. data/lib/bundles/inspec-compliance/bootstrap.sh +0 -0
  224. data/lib/bundles/inspec-compliance/cli.rb +12 -35
  225. data/lib/bundles/inspec-compliance/configuration.rb +0 -0
  226. data/lib/bundles/inspec-compliance/http.rb +0 -0
  227. data/lib/bundles/inspec-compliance/images/cc-token.png +0 -0
  228. data/lib/bundles/inspec-compliance/support.rb +0 -0
  229. data/lib/bundles/inspec-compliance/target.rb +0 -0
  230. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +0 -0
  231. data/lib/bundles/inspec-habitat.rb +0 -0
  232. data/lib/bundles/inspec-habitat/cli.rb +0 -0
  233. data/lib/bundles/inspec-habitat/log.rb +0 -0
  234. data/lib/bundles/inspec-habitat/profile.rb +0 -0
  235. data/lib/bundles/inspec-init.rb +0 -0
  236. data/lib/bundles/inspec-init/README.md +0 -0
  237. data/lib/bundles/inspec-init/cli.rb +0 -0
  238. data/lib/bundles/inspec-init/templates/profile/README.md +0 -0
  239. data/lib/bundles/inspec-init/templates/profile/controls/example.rb +1 -1
  240. data/lib/bundles/inspec-init/templates/profile/inspec.yml +0 -0
  241. data/lib/bundles/inspec-init/templates/profile/libraries/.gitkeep +0 -0
  242. data/lib/bundles/inspec-supermarket.rb +0 -0
  243. data/lib/bundles/inspec-supermarket/README.md +0 -0
  244. data/lib/bundles/inspec-supermarket/api.rb +0 -0
  245. data/lib/bundles/inspec-supermarket/cli.rb +11 -3
  246. data/lib/bundles/inspec-supermarket/target.rb +0 -0
  247. data/lib/fetchers/git.rb +0 -0
  248. data/lib/fetchers/local.rb +0 -0
  249. data/lib/fetchers/mock.rb +0 -0
  250. data/lib/fetchers/url.rb +0 -0
  251. data/lib/inspec.rb +0 -0
  252. data/lib/inspec/archive/tar.rb +0 -0
  253. data/lib/inspec/archive/zip.rb +0 -0
  254. data/lib/inspec/backend.rb +0 -0
  255. data/lib/inspec/base_cli.rb +2 -4
  256. data/lib/inspec/cached_fetcher.rb +0 -0
  257. data/lib/inspec/cli.rb +15 -11
  258. data/lib/inspec/completions/bash.sh.erb +0 -0
  259. data/lib/inspec/completions/fish.sh.erb +0 -0
  260. data/lib/inspec/completions/zsh.sh.erb +0 -0
  261. data/lib/inspec/control_eval_context.rb +0 -0
  262. data/lib/inspec/dependencies/cache.rb +0 -0
  263. data/lib/inspec/dependencies/dependency_set.rb +0 -0
  264. data/lib/inspec/dependencies/lockfile.rb +0 -0
  265. data/lib/inspec/dependencies/requirement.rb +0 -0
  266. data/lib/inspec/dependencies/resolver.rb +0 -0
  267. data/lib/inspec/describe.rb +0 -0
  268. data/lib/inspec/dsl.rb +0 -0
  269. data/lib/inspec/dsl_shared.rb +0 -0
  270. data/lib/inspec/env_printer.rb +0 -0
  271. data/lib/inspec/errors.rb +0 -0
  272. data/lib/inspec/exceptions.rb +0 -0
  273. data/lib/inspec/expect.rb +0 -0
  274. data/lib/inspec/fetcher.rb +0 -0
  275. data/lib/inspec/file_provider.rb +0 -0
  276. data/lib/inspec/formatters.rb +0 -0
  277. data/lib/inspec/formatters/base.rb +43 -1
  278. data/lib/inspec/formatters/json_rspec.rb +0 -0
  279. data/lib/inspec/formatters/show_progress.rb +0 -0
  280. data/lib/inspec/library_eval_context.rb +0 -0
  281. data/lib/inspec/log.rb +0 -0
  282. data/lib/inspec/metadata.rb +3 -9
  283. data/lib/inspec/method_source.rb +0 -0
  284. data/lib/inspec/objects.rb +0 -0
  285. data/lib/inspec/objects/attribute.rb +0 -0
  286. data/lib/inspec/objects/control.rb +0 -0
  287. data/lib/inspec/objects/describe.rb +0 -0
  288. data/lib/inspec/objects/each_loop.rb +0 -0
  289. data/lib/inspec/objects/list.rb +0 -0
  290. data/lib/inspec/objects/or_test.rb +0 -0
  291. data/lib/inspec/objects/ruby_helper.rb +0 -0
  292. data/lib/inspec/objects/tag.rb +0 -0
  293. data/lib/inspec/objects/test.rb +0 -0
  294. data/lib/inspec/objects/value.rb +0 -0
  295. data/lib/inspec/plugins.rb +0 -0
  296. data/lib/inspec/plugins/cli.rb +0 -0
  297. data/lib/inspec/plugins/fetcher.rb +0 -0
  298. data/lib/inspec/plugins/resource.rb +10 -9
  299. data/lib/inspec/plugins/secret.rb +0 -0
  300. data/lib/inspec/plugins/source_reader.rb +0 -0
  301. data/lib/inspec/polyfill.rb +0 -0
  302. data/lib/inspec/profile.rb +0 -0
  303. data/lib/inspec/profile_context.rb +0 -0
  304. data/lib/inspec/profile_vendor.rb +0 -0
  305. data/lib/inspec/reporters.rb +0 -0
  306. data/lib/inspec/reporters/base.rb +0 -0
  307. data/lib/inspec/reporters/cli.rb +12 -51
  308. data/lib/inspec/reporters/json.rb +3 -26
  309. data/lib/inspec/reporters/json_min.rb +0 -0
  310. data/lib/inspec/reporters/junit.rb +0 -0
  311. data/lib/inspec/require_loader.rb +0 -0
  312. data/lib/inspec/resource.rb +11 -1
  313. data/lib/inspec/rule.rb +0 -0
  314. data/lib/inspec/runner.rb +10 -8
  315. data/lib/inspec/runner_mock.rb +0 -0
  316. data/lib/inspec/runner_rspec.rb +18 -2
  317. data/lib/inspec/runtime_profile.rb +0 -0
  318. data/lib/inspec/schema.rb +25 -4
  319. data/lib/inspec/secrets.rb +0 -0
  320. data/lib/inspec/secrets/yaml.rb +0 -0
  321. data/lib/inspec/shell.rb +0 -0
  322. data/lib/inspec/shell_detector.rb +0 -0
  323. data/lib/inspec/source_reader.rb +0 -0
  324. data/lib/inspec/version.rb +1 -1
  325. data/lib/matchers/matchers.rb +1 -59
  326. data/lib/resource_support/aws.rb +40 -0
  327. data/lib/resource_support/aws/aws_backend_base.rb +12 -0
  328. data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -0
  329. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -0
  330. data/lib/resource_support/aws/aws_resource_mixin.rb +66 -0
  331. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -0
  332. data/lib/resources/aide_conf.rb +1 -1
  333. data/lib/resources/apache.rb +1 -2
  334. data/lib/resources/apache_conf.rb +2 -4
  335. data/lib/resources/apt.rb +1 -2
  336. data/lib/resources/audit_policy.rb +1 -2
  337. data/lib/resources/auditd.rb +1 -3
  338. data/lib/resources/auditd_conf.rb +1 -2
  339. data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -0
  340. data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -0
  341. data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -0
  342. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -0
  343. data/lib/resources/aws/aws_ec2_instance.rb +157 -0
  344. data/lib/resources/aws/aws_iam_access_key.rb +106 -0
  345. data/lib/resources/aws/aws_iam_access_keys.rb +144 -0
  346. data/lib/resources/aws/aws_iam_group.rb +56 -0
  347. data/lib/resources/aws/aws_iam_groups.rb +45 -0
  348. data/lib/resources/aws/aws_iam_password_policy.rb +116 -0
  349. data/lib/resources/aws/aws_iam_policies.rb +46 -0
  350. data/lib/resources/aws/aws_iam_policy.rb +119 -0
  351. data/lib/resources/aws/aws_iam_role.rb +51 -0
  352. data/lib/resources/aws/aws_iam_root_user.rb +60 -0
  353. data/lib/resources/aws/aws_iam_user.rb +111 -0
  354. data/lib/resources/aws/aws_iam_users.rb +96 -0
  355. data/lib/resources/aws/aws_kms_keys.rb +46 -0
  356. data/lib/resources/aws/aws_route_table.rb +61 -0
  357. data/lib/resources/aws/aws_s3_bucket.rb +115 -0
  358. data/lib/resources/aws/aws_security_group.rb +93 -0
  359. data/lib/resources/aws/aws_security_groups.rb +68 -0
  360. data/lib/resources/aws/aws_sns_topic.rb +53 -0
  361. data/lib/resources/aws/aws_subnet.rb +88 -0
  362. data/lib/resources/aws/aws_subnets.rb +53 -0
  363. data/lib/resources/aws/aws_vpc.rb +69 -0
  364. data/lib/resources/aws/aws_vpcs.rb +45 -0
  365. data/lib/resources/azure/azure_backend.rb +377 -0
  366. data/lib/resources/azure/azure_generic_resource.rb +59 -0
  367. data/lib/resources/azure/azure_resource_group.rb +152 -0
  368. data/lib/resources/azure/azure_virtual_machine.rb +264 -0
  369. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -0
  370. data/lib/resources/bash.rb +1 -2
  371. data/lib/resources/bond.rb +1 -2
  372. data/lib/resources/bridge.rb +1 -2
  373. data/lib/resources/command.rb +2 -2
  374. data/lib/resources/cpan.rb +1 -3
  375. data/lib/resources/cran.rb +1 -3
  376. data/lib/resources/crontab.rb +1 -0
  377. data/lib/resources/csv.rb +4 -2
  378. data/lib/resources/dh_params.rb +1 -2
  379. data/lib/resources/directory.rb +2 -2
  380. data/lib/resources/docker.rb +1 -4
  381. data/lib/resources/docker_container.rb +1 -4
  382. data/lib/resources/docker_image.rb +1 -4
  383. data/lib/resources/docker_object.rb +0 -0
  384. data/lib/resources/docker_service.rb +1 -5
  385. data/lib/resources/elasticsearch.rb +1 -0
  386. data/lib/resources/etc_fstab.rb +1 -1
  387. data/lib/resources/etc_group.rb +1 -2
  388. data/lib/resources/etc_hosts.rb +1 -1
  389. data/lib/resources/etc_hosts_allow_deny.rb +2 -1
  390. data/lib/resources/file.rb +2 -2
  391. data/lib/resources/filesystem.rb +1 -1
  392. data/lib/resources/firewalld.rb +1 -1
  393. data/lib/resources/gem.rb +2 -3
  394. data/lib/resources/groups.rb +4 -2
  395. data/lib/resources/grub_conf.rb +1 -1
  396. data/lib/resources/host.rb +2 -2
  397. data/lib/resources/http.rb +20 -22
  398. data/lib/resources/iis_app.rb +1 -0
  399. data/lib/resources/iis_site.rb +1 -0
  400. data/lib/resources/inetd_conf.rb +1 -2
  401. data/lib/resources/ini.rb +2 -2
  402. data/lib/resources/interface.rb +2 -3
  403. data/lib/resources/iptables.rb +1 -2
  404. data/lib/resources/json.rb +4 -2
  405. data/lib/resources/kernel_module.rb +1 -4
  406. data/lib/resources/kernel_parameter.rb +1 -1
  407. data/lib/resources/key_rsa.rb +2 -2
  408. data/lib/resources/limits_conf.rb +1 -2
  409. data/lib/resources/login_def.rb +1 -2
  410. data/lib/resources/mount.rb +1 -3
  411. data/lib/resources/mssql_session.rb +1 -3
  412. data/lib/resources/mysql.rb +1 -2
  413. data/lib/resources/mysql_conf.rb +2 -1
  414. data/lib/resources/mysql_session.rb +2 -3
  415. data/lib/resources/nginx.rb +1 -2
  416. data/lib/resources/nginx_conf.rb +1 -2
  417. data/lib/resources/npm.rb +2 -2
  418. data/lib/resources/ntp_conf.rb +1 -2
  419. data/lib/resources/oneget.rb +1 -2
  420. data/lib/resources/oracledb_session.rb +2 -3
  421. data/lib/resources/os.rb +2 -12
  422. data/lib/resources/os_env.rb +2 -2
  423. data/lib/resources/package.rb +2 -2
  424. data/lib/resources/packages.rb +1 -2
  425. data/lib/resources/parse_config.rb +2 -2
  426. data/lib/resources/passwd.rb +1 -23
  427. data/lib/resources/pip.rb +2 -2
  428. data/lib/resources/platform.rb +19 -22
  429. data/lib/resources/port.rb +2 -2
  430. data/lib/resources/postgres.rb +1 -3
  431. data/lib/resources/postgres_conf.rb +2 -3
  432. data/lib/resources/postgres_hba_conf.rb +1 -2
  433. data/lib/resources/postgres_ident_conf.rb +1 -2
  434. data/lib/resources/postgres_session.rb +2 -3
  435. data/lib/resources/powershell.rb +1 -2
  436. data/lib/resources/processes.rb +2 -2
  437. data/lib/resources/rabbitmq_conf.rb +1 -2
  438. data/lib/resources/registry_key.rb +1 -1
  439. data/lib/resources/security_policy.rb +1 -2
  440. data/lib/resources/service.rb +8 -3
  441. data/lib/resources/shadow.rb +1 -2
  442. data/lib/resources/ssh_conf.rb +2 -2
  443. data/lib/resources/ssl.rb +2 -2
  444. data/lib/resources/sys_info.rb +2 -0
  445. data/lib/resources/toml.rb +0 -0
  446. data/lib/resources/users.rb +4 -2
  447. data/lib/resources/vbscript.rb +1 -2
  448. data/lib/resources/virtualization.rb +1 -1
  449. data/lib/resources/windows_feature.rb +1 -2
  450. data/lib/resources/windows_hotfix.rb +1 -1
  451. data/lib/resources/windows_task.rb +1 -2
  452. data/lib/resources/wmi.rb +1 -2
  453. data/lib/resources/x509_certificate.rb +2 -2
  454. data/lib/resources/xinetd.rb +1 -2
  455. data/lib/resources/xml.rb +2 -1
  456. data/lib/resources/yaml.rb +4 -2
  457. data/lib/resources/yum.rb +1 -2
  458. data/lib/resources/zfs_dataset.rb +1 -1
  459. data/lib/resources/zfs_pool.rb +1 -1
  460. data/lib/source_readers/flat.rb +0 -0
  461. data/lib/source_readers/inspec.rb +0 -0
  462. data/lib/utils/command_wrapper.rb +0 -0
  463. data/lib/utils/convert.rb +0 -0
  464. data/lib/utils/database_helpers.rb +0 -0
  465. data/lib/utils/erlang_parser.rb +0 -0
  466. data/lib/utils/filter.rb +0 -0
  467. data/lib/utils/filter_array.rb +0 -0
  468. data/lib/utils/find_files.rb +0 -0
  469. data/lib/utils/hash.rb +0 -0
  470. data/lib/utils/json_log.rb +0 -0
  471. data/lib/utils/latest_version.rb +0 -0
  472. data/lib/utils/modulator.rb +0 -0
  473. data/lib/utils/nginx_parser.rb +0 -0
  474. data/lib/utils/object_traversal.rb +0 -0
  475. data/lib/utils/parser.rb +0 -0
  476. data/lib/utils/plugin_registry.rb +0 -0
  477. data/lib/utils/simpleconfig.rb +0 -12
  478. data/lib/utils/spdx.rb +0 -0
  479. data/lib/utils/spdx.txt +0 -0
  480. metadata +81 -6
  481. data/docs/resources/auditd_rules.md.erb +0 -116
  482. data/lib/resources/auditd_rules.rb +0 -205
File without changes
@@ -162,12 +162,6 @@ class Inspec::InspecCLI < Inspec::BaseCLI
162
162
  diagnose(o)
163
163
  configure_logger(o)
164
164
 
165
- # TODO: REMOVE for inspec 2.0
166
- if o.key?('cache')
167
- o[:vendor_cache] = o[:cache]
168
- o[:logger].warn '[DEPRECATED] The use of `--cache` is being deprecated in InSpec 2.0. Please use `--vendor-cache` instead.'
169
- end
170
-
171
165
  runner = Inspec::Runner.new(o)
172
166
  targets.each { |target| runner.add_target(target) }
173
167
 
@@ -184,17 +178,27 @@ class Inspec::InspecCLI < Inspec::BaseCLI
184
178
  option :format, type: :string
185
179
  def detect
186
180
  o = opts(:detect).dup
187
- o[:command] = 'os.params'
181
+ o[:command] = 'platform.params'
188
182
  (_, res) = run_command(o)
189
183
  if o['format'] == 'json'
190
184
  puts res.to_json
191
185
  else
192
- headline('Operating System Details')
193
- %w{name family release arch}.each { |item|
194
- puts format('%-10s %s', item.to_s.capitalize + ':',
195
- mark_text(res[item.to_sym]))
186
+ headline('Platform Details')
187
+ %w{name families release arch}.each { |item|
188
+ data = res[item.to_sym]
189
+
190
+ # Format Array for better output if applicable
191
+ data = data.join(', ') if data.is_a?(Array)
192
+
193
+ # Do not output fields of data is missing ('unknown' is fine)
194
+ next if data.nil?
195
+
196
+ puts format('%-10s %s', item.to_s.capitalize + ':', mark_text(data))
196
197
  }
197
198
  end
199
+ rescue ArgumentError, RuntimeError, Train::UserError => e
200
+ $stderr.puts e.message
201
+ exit 1
198
202
  rescue StandardError => e
199
203
  pretty_handle_exception(e)
200
204
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -23,6 +23,7 @@ module Inspec::Formatters
23
23
  run_data[:version] = Inspec::VERSION
24
24
  run_data[:statistics] = {
25
25
  duration: summary.duration,
26
+ controls: statistics,
26
27
  }
27
28
  end
28
29
 
@@ -84,6 +85,47 @@ module Inspec::Formatters
84
85
 
85
86
  private
86
87
 
88
+ def all_unique_controls
89
+ unique_controls = Set.new
90
+ run_data[:profiles].each do |profile|
91
+ profile[:controls].map { |control| unique_controls.add(control) }
92
+ end
93
+
94
+ unique_controls
95
+ end
96
+
97
+ def statistics
98
+ failed = 0
99
+ skipped = 0
100
+ passed = 0
101
+
102
+ all_unique_controls.each do |control|
103
+ next unless control[:results]
104
+ if control[:results].any? { |r| r[:status] == 'failed' }
105
+ failed += 1
106
+ elsif control[:results].any? { |r| r[:status] == 'skipped' }
107
+ skipped += 1
108
+ else
109
+ passed += 1
110
+ end
111
+ end
112
+
113
+ total = failed + passed + skipped
114
+
115
+ {
116
+ total: total,
117
+ passed: {
118
+ total: passed,
119
+ },
120
+ skipped: {
121
+ total: skipped,
122
+ },
123
+ failed: {
124
+ total: failed,
125
+ },
126
+ }
127
+ end
128
+
87
129
  def exception_message(exception)
88
130
  if exception.is_a?(RSpec::Core::MultipleExceptionError)
89
131
  exception.all_exceptions.map(&:message).uniq.join("\n\n")
@@ -111,7 +153,7 @@ module Inspec::Formatters
111
153
  status: example.execution_result.status.to_s,
112
154
  code_desc: code_description,
113
155
  run_time: example.execution_result.run_time,
114
- start_time: example.execution_result.started_at.to_s,
156
+ start_time: example.execution_result.started_at.to_datetime.rfc3339.to_s,
115
157
  resource_title: example.metadata[:described_class] || example.metadata[:example_group][:description],
116
158
  expectation_message: format_expectation_message(example),
117
159
  }
File without changes
File without changes
File without changes
File without changes
@@ -54,15 +54,9 @@ module Inspec
54
54
  end
55
55
 
56
56
  def inspec_requirement
57
- inspec_in_supports = params[:supports].find { |x| !x[:inspec].nil? }
58
- if inspec_in_supports
59
- warn '[DEPRECATED] The use of inspec.yml `supports:inspec` is deprecated and will be removed in InSpec 2.0. Please use `inspec_version` instead.'
60
- Gem::Requirement.create(inspec_in_supports[:inspec])
61
- else
62
- # using Gem::Requirement here to allow nil values which
63
- # translate to [">= 0"]
64
- Gem::Requirement.create(params[:inspec_version])
65
- end
57
+ # using Gem::Requirement here to allow nil values which
58
+ # translate to [">= 0"]
59
+ Gem::Requirement.create(params[:inspec_version])
66
60
  end
67
61
 
68
62
  def supports_runtime?
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -43,7 +43,7 @@ module Inspec
43
43
  Inspec::Resource.registry
44
44
  end
45
45
 
46
- def __register(name, obj) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
46
+ def __register(name, obj) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
47
47
  cl = Class.new(obj) do # rubocop:disable Metrics/BlockLength
48
48
  attr_reader :resource_exception_message
49
49
 
@@ -57,7 +57,14 @@ module Inspec
57
57
  @__resource_name__ = name
58
58
 
59
59
  # check resource supports
60
- check_supports unless @supports.nil?
60
+ supported = true
61
+ supported = check_supports unless @supports.nil?
62
+ if defined?(Train::Transports::Mock::Connection) && backend.backend.class == Train::Transports::Mock::Connection
63
+ # do not exit out for tests
64
+ elsif supported == false
65
+ # do not run resource initalize if we are unsupported
66
+ return
67
+ end
61
68
 
62
69
  # call the resource initializer
63
70
  begin
@@ -83,6 +90,7 @@ module Inspec
83
90
  status = inspec.platform.supported?(@supports)
84
91
  skip_msg = "Resource #{@__resource_name__.capitalize} is not supported on platform #{inspec.platform.name}/#{inspec.platform.release}."
85
92
  skip_resource(skip_msg) unless status
93
+ status
86
94
  end
87
95
 
88
96
  def skip_resource(message)
@@ -94,13 +102,6 @@ module Inspec
94
102
  @resource_skipped
95
103
  end
96
104
 
97
- def resource_skipped
98
- warn('[DEPRECATION] Use `resource_exception_message` for the resource skipped message. This method will be removed in InSpec 2.0.')
99
- # Returning `nil` here to match previous behavior
100
- return nil if @resource_skipped == false
101
- @resource_exception_message
102
- end
103
-
104
105
  def fail_resource(message)
105
106
  @resource_failed = true
106
107
  @resource_exception_message = message
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -7,9 +7,6 @@ module Inspec::Reporters
7
7
  # Most currently available Windows terminals have poor support
8
8
  # for ANSI extended colors
9
9
  COLORS = {
10
- 'critical' => "\033[0;1;31m",
11
- 'major' => "\033[0;1;31m",
12
- 'minor' => "\033[0;36m",
13
10
  'failed' => "\033[0;1;31m",
14
11
  'passed' => "\033[0;1;32m",
15
12
  'skipped' => "\033[0;37m",
@@ -19,9 +16,6 @@ module Inspec::Reporters
19
16
  # Most currently available Windows terminals have poor support
20
17
  # for UTF-8 characters so use these boring indicators
21
18
  INDICATORS = {
22
- 'critical' => '[CRIT]',
23
- 'major' => '[MAJR]',
24
- 'minor' => '[MINR]',
25
19
  'failed' => '[FAIL]',
26
20
  'skipped' => '[SKIP]',
27
21
  'passed' => '[PASS]',
@@ -30,9 +24,6 @@ module Inspec::Reporters
30
24
  else
31
25
  # Extended colors for everyone else
32
26
  COLORS = {
33
- 'critical' => "\033[38;5;9m",
34
- 'major' => "\033[38;5;208m",
35
- 'minor' => "\033[0;36m",
36
27
  'failed' => "\033[38;5;9m",
37
28
  'passed' => "\033[38;5;41m",
38
29
  'skipped' => "\033[38;5;247m",
@@ -42,9 +33,6 @@ module Inspec::Reporters
42
33
  # Groovy UTF-8 characters for everyone else...
43
34
  # ...even though they probably only work on Mac
44
35
  INDICATORS = {
45
- 'critical' => '×',
46
- 'major' => '∅',
47
- 'minor' => '⊚',
48
36
  'failed' => '×',
49
37
  'skipped' => '↺',
50
38
  'passed' => '✔',
@@ -177,27 +165,15 @@ module Inspec::Reporters
177
165
  end
178
166
 
179
167
  def profile_summary
180
- return @profile_summary unless @profile_summary.nil?
181
-
182
168
  failed = 0
183
169
  skipped = 0
184
170
  passed = 0
185
- critical = 0
186
- major = 0
187
- minor = 0
188
171
 
189
172
  all_unique_controls.each do |control|
190
173
  next if control[:id].start_with? '(generated from '
191
174
  next unless control[:results]
192
175
  if control[:results].any? { |r| r[:status] == 'failed' }
193
176
  failed += 1
194
- if control[:impact] >= 0.7
195
- critical += 1
196
- elsif control[:impact] >= 0.4
197
- major += 1
198
- else
199
- minor += 1
200
- end
201
177
  elsif control[:results].any? { |r| r[:status] == 'skipped' }
202
178
  skipped += 1
203
179
  else
@@ -207,22 +183,15 @@ module Inspec::Reporters
207
183
 
208
184
  total = failed + passed + skipped
209
185
 
210
- @profile_summary = {
186
+ {
211
187
  'total' => total,
212
- 'failed' => {
213
- 'total' => failed,
214
- 'critical' => critical,
215
- 'major' => major,
216
- 'minor' => minor,
217
- },
188
+ 'failed' => failed,
218
189
  'skipped' => skipped,
219
190
  'passed' => passed,
220
191
  }
221
192
  end
222
193
 
223
194
  def tests_summary
224
- return @tests_summary unless @tests_summary.nil?
225
-
226
195
  total = 0
227
196
  failed = 0
228
197
  skipped = 0
@@ -241,7 +210,12 @@ module Inspec::Reporters
241
210
  end
242
211
  end
243
212
 
244
- @tests_summary = { 'total' => total, 'failed' => failed, 'skipped' => skipped, 'passed' => passed }
213
+ {
214
+ 'total' => total,
215
+ 'failed' => failed,
216
+ 'skipped' => skipped,
217
+ 'passed' => passed,
218
+ }
245
219
  end
246
220
 
247
221
  def print_profile_summary
@@ -249,11 +223,11 @@ module Inspec::Reporters
249
223
  return unless summary['total'] > 0
250
224
 
251
225
  success_str = summary['passed'] == 1 ? '1 successful control' : "#{summary['passed']} successful controls"
252
- failed_str = summary['failed']['total'] == 1 ? '1 control failure' : "#{summary['failed']['total']} control failures"
226
+ failed_str = summary['failed'] == 1 ? '1 control failure' : "#{summary['failed']} control failures"
253
227
  skipped_str = summary['skipped'] == 1 ? '1 control skipped' : "#{summary['skipped']} controls skipped"
254
228
 
255
229
  success_color = summary['passed'] > 0 ? 'passed' : 'no_color'
256
- failed_color = summary['failed']['total'] > 0 ? 'failed' : 'no_color'
230
+ failed_color = summary['failed'] > 0 ? 'failed' : 'no_color'
257
231
  skipped_color = summary['skipped'] > 0 ? 'skipped' : 'no_color'
258
232
 
259
233
  s = format(
@@ -301,11 +275,6 @@ module Inspec::Reporters
301
275
  end
302
276
 
303
277
  class Control
304
- IMPACT_SCORES = {
305
- critical: 0.7,
306
- major: 0.4,
307
- }.freeze
308
-
309
278
  attr_reader :data
310
279
 
311
280
  def initialize(control_hash)
@@ -358,12 +327,8 @@ module Inspec::Reporters
358
327
  'skipped'
359
328
  elsif results.nil? || results.empty? || results.all? { |r| r[:status] == 'passed' }
360
329
  'passed'
361
- elsif impact >= IMPACT_SCORES[:critical]
362
- 'critical'
363
- elsif impact >= IMPACT_SCORES[:major]
364
- 'major'
365
330
  else
366
- 'minor'
331
+ 'failed'
367
332
  end
368
333
  end
369
334
 
@@ -374,12 +339,8 @@ module Inspec::Reporters
374
339
  'passed'
375
340
  elsif impact.nil?
376
341
  'unknown'
377
- elsif impact >= IMPACT_SCORES[:critical]
378
- 'critical'
379
- elsif impact >= IMPACT_SCORES[:major]
380
- 'major'
381
342
  else
382
- 'minor'
343
+ 'failed'
383
344
  end
384
345
  end
385
346
 
@@ -12,10 +12,10 @@ module Inspec::Reporters
12
12
  {
13
13
  platform: platform,
14
14
  profiles: profiles,
15
- statistics: { duration: run_data[:statistics][:duration] },
15
+ statistics: {
16
+ duration: run_data[:statistics][:duration],
17
+ },
16
18
  version: run_data[:version],
17
- controls: controls,
18
- other_checks: run_data[:other_checks],
19
19
  }
20
20
  end
21
21
 
@@ -28,28 +28,6 @@ module Inspec::Reporters
28
28
  }
29
29
  end
30
30
 
31
- def controls
32
- controls = []
33
- return controls if run_data[:controls].nil?
34
-
35
- run_data[:controls].each do |c|
36
- control = {
37
- status: c[:status],
38
- start_time: c[:start_time],
39
- run_time: c[:run_time],
40
- code_desc: c[:code_desc],
41
- }
42
- control[:resource] = c[:resource] if c[:resource]
43
- control[:skip_message] = c[:skip_message] if c[:skip_message]
44
- control[:message] = c[:message] if c[:message]
45
- control[:exception] = c[:exception] if c[:exception]
46
- control[:backtrace] = c[:backtrace] if c[:backtrace]
47
-
48
- controls << control
49
- end
50
- controls
51
- end
52
-
53
31
  def profile_results(control)
54
32
  results = []
55
33
  return results if control[:results].nil?
@@ -127,7 +105,6 @@ module Inspec::Reporters
127
105
  copyright_email: p[:copyright_email],
128
106
  supports: p[:supports],
129
107
  attributes: p[:attributes],
130
- depends: p[:depends],
131
108
  groups: profile_groups(p),
132
109
  controls: profile_controls(p),
133
110
  }