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
@@ -0,0 +1,136 @@
1
+ # encoding: utf-8
2
+
3
+ require 'resources/azure/azure_backend'
4
+ require 'uri'
5
+
6
+ module Inspec::Resources
7
+ class AzureVirtualMachineDataDisk < AzureResourceBase
8
+ name 'azure_virtual_machine_data_disk'
9
+
10
+ desc '
11
+ Inspec Resource to ensure that the data disks attached to a machine are correct
12
+ '
13
+
14
+ supports platform: 'azure'
15
+
16
+ # Create a filter table so that tests on the disk can be performed
17
+ filter = FilterTable.create
18
+ filter.add_accessor(:where)
19
+ .add_accessor(:entries)
20
+ .add_accessor(:has_data_disks?)
21
+ .add_accessor(:count)
22
+ .add(:exists?) { |x| !x.entries.empty? }
23
+ .add(:disk, field: :disk)
24
+ .add(:number, field: :number)
25
+ .add(:name, field: :name)
26
+ .add(:size, field: :size)
27
+ .add(:vhd_uri, field: :vhd_uri)
28
+ .add(:storage_account_name, field: :storage_account_name)
29
+ .add(:lun, field: :lun)
30
+ .add(:caching, field: :caching)
31
+ .add(:create_option, field: :create_option)
32
+ .add(:is_managed_disk?, field: :is_managed_disk?)
33
+ .add(:storage_account_type, field: :storage_account_type)
34
+ .add(:subscription_id, field: :subscription_id)
35
+ .add(:resource_group, field: :resource_group)
36
+ filter.connect(self, :datadisk_details)
37
+
38
+ # Constructor for the resource. This calls the parent constructor to
39
+ # get the generic resource for the specified machine. This will provide
40
+ # static methods that are documented
41
+ #
42
+ # @author Russell Seymour
43
+ def initialize(opts = {})
44
+ # The generic resource needs to pass back a Microsoft.Compute/virtualMachines object so force it
45
+ opts[:type] = 'Microsoft.Compute/virtualMachines'
46
+ super(opts)
47
+
48
+ # Get the data disks
49
+ resources
50
+ end
51
+
52
+ # Return information about the disks and add to the filter table so that
53
+ # assertions can be performed
54
+ #
55
+ # @author Russell Seymour
56
+ def datadisk_details
57
+ return if failed_resource?
58
+ # Iterate around the data disks on the machine
59
+ properties.storageProfile.dataDisks.each_with_index.map do |datadisk, index|
60
+ # Call function to parse the data disks and return an object based on the parameters
61
+ parse_datadisk(datadisk, index)
62
+ end
63
+ end
64
+
65
+ # Return boolean to denote if the machine has data disks attached or not
66
+ def has_data_disks?
67
+ !entries.empty?
68
+ end
69
+
70
+ # Return an integer stating how many data disks are attached to the machine
71
+ def count
72
+ entries.count
73
+ end
74
+
75
+ # Return boolean to state if the machine is using managed disks for data disks
76
+ def has_managed_disks?
77
+ # iterate around the entries
78
+ result = entries.each.select { |e| e[:is_managed_disk?] }
79
+ result.empty? ? false : true
80
+ end
81
+
82
+ private
83
+
84
+ # Parse the data disk to determine if these are managed disks or in a storage account
85
+ # for example. The disk index, name and size will be returned
86
+ #
87
+ # params object disk Object containing the details of the disk
88
+ # params integer index Index denoting which disk number this is on the machine
89
+ #
90
+ # return hashtable
91
+ def parse_datadisk(disk, index)
92
+ # Configure parsed hashtable to hold the information
93
+ # Initialise this with common attributes from the different types of disk
94
+ parsed = {
95
+ disk: index,
96
+ number: index + 1,
97
+ lun: disk.lun,
98
+ name: disk.name,
99
+ size: disk.diskSizeGB,
100
+ caching: disk.caching,
101
+ create_option: disk.createOption,
102
+ }
103
+
104
+ # Determine if the current disk is a managed disk or not
105
+ if defined?(disk.vhd)
106
+ # As this is in a storage account this is not a managed disk
107
+ parsed[:is_managed_disk?] = false
108
+
109
+ # Set information about the disk
110
+ # Parse the uri of the disk URI so that the storage account can be retrieved
111
+ uri = URI.parse(disk.vhd.uri)
112
+ parsed[:vhd_uri] = disk.vhd.uri
113
+ parsed[:storage_account_name] = uri.host.split('.').first
114
+
115
+ elsif defined?(disk.managedDisk)
116
+ # State that this is a managed disk
117
+ parsed[:is_managed_disk?] = true
118
+
119
+ # Get information about the managed disk
120
+ parsed[:storage_account_type] = disk.managedDisk.storageAccountType
121
+ parsed[:id] = disk.managedDisk.id
122
+
123
+ # Break up the ID string so that the following information can get retreived
124
+ # - subscription_id
125
+ # - resource_group
126
+ id_parts = parsed[:id].split(%r{/}).reject(&:empty?)
127
+
128
+ parsed[:subscription_id] = id_parts[1]
129
+ parsed[:resource_group] = id_parts[3]
130
+ end
131
+
132
+ # return the parsed object
133
+ parsed
134
+ end
135
+ end
136
+ end
@@ -1,6 +1,4 @@
1
1
  # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
2
 
5
3
  require 'utils/command_wrapper'
6
4
  require 'resources/command'
@@ -8,6 +6,7 @@ require 'resources/command'
8
6
  module Inspec::Resources
9
7
  class Bash < Cmd
10
8
  name 'bash'
9
+ supports platform: 'unix'
11
10
  desc 'Run a command or script in BASH.'
12
11
  example "
13
12
  describe bash('ls -al /') do
@@ -1,12 +1,11 @@
1
1
  # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
2
 
5
3
  require 'resources/file'
6
4
 
7
5
  module Inspec::Resources
8
6
  class Bond < FileResource
9
7
  name 'bond'
8
+ supports platform: 'unix'
10
9
  desc 'Use the bond InSpec audit resource to test a logical, bonded network interface (i.e. "two or more network interfaces aggregated into a single, logical network interface"). On Linux platforms, any value in the /proc/net/bonding directory may be tested.'
11
10
  example "
12
11
  describe bond('bond0') do
@@ -1,6 +1,4 @@
1
1
  # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
2
 
5
3
  # Usage:
6
4
  # describe bridge('br0') do
@@ -11,6 +9,7 @@
11
9
  module Inspec::Resources
12
10
  class Bridge < Inspec.resource(1)
13
11
  name 'bridge'
12
+ supports platform: 'unix'
14
13
  desc 'Use the bridge InSpec audit resource to test basic network bridge properties, such as name, if an interface is defined, and the associations for any defined interface.'
15
14
  example "
16
15
  describe bridge 'br0' do
@@ -1,11 +1,11 @@
1
1
  # encoding: utf-8
2
2
  # copyright: 2015, Vulcano Security GmbH
3
- # author: Dominik Richter
4
- # author: Christoph Hartmann
5
3
 
6
4
  module Inspec::Resources
7
5
  class Cmd < Inspec.resource(1)
8
6
  name 'command'
7
+ supports platform: 'unix'
8
+ supports platform: 'windows'
9
9
  desc 'Use the command InSpec audit resource to test an arbitrary command that is run on the system.'
10
10
  example "
11
11
  describe command('ls -al /') do
@@ -1,7 +1,4 @@
1
1
  # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- # author: Markus Grobelin
5
2
 
6
3
  # Usage:
7
4
  # describe cpan('DBD::Pg') do
@@ -12,6 +9,7 @@
12
9
  module Inspec::Resources
13
10
  class CpanPackage < Inspec.resource(1)
14
11
  name 'cpan'
12
+ supports platform: 'unix'
15
13
  desc 'Use the `cpan` InSpec audit resource to test Perl modules that are installed by system packages or the CPAN installer.'
16
14
  example "
17
15
  describe cpan('DBD::Pg') do
@@ -1,7 +1,4 @@
1
1
  # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
- # author: Markus Grobelin
5
2
 
6
3
  # Usage:
7
4
  # describe cran('DBI') do
@@ -12,6 +9,7 @@
12
9
  module Inspec::Resources
13
10
  class CranPackage < Inspec.resource(1)
14
11
  name 'cran'
12
+ supports platform: 'unix'
15
13
  desc 'Use the `cran` InSpec audit resource to test R modules that are installed from CRAN package repository.'
16
14
  example "
17
15
  describe cran('DBI') do
@@ -6,6 +6,7 @@ require 'utils/filter'
6
6
  module Inspec::Resources
7
7
  class Crontab < Inspec.resource(1)
8
8
  name 'crontab'
9
+ supports platform: 'unix'
9
10
  desc 'Use the crontab InSpec audit resource to test the contents of the crontab for a given user which contains information about scheduled tasks owned by that user.'
10
11
  example "
11
12
  describe crontab(user: 'root') do
@@ -1,6 +1,4 @@
1
1
  # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
2
 
5
3
  # Parses a csv document
6
4
  # This implementation was inspired by a blog post
@@ -8,6 +6,10 @@
8
6
  module Inspec::Resources
9
7
  class CsvConfig < JsonConfig
10
8
  name 'csv'
9
+ supports platform: 'unix'
10
+ supports platform: 'windows'
11
+ supports platform: 'esx'
12
+ supports platform: 'cisco'
11
13
  desc 'Use the csv InSpec audit resource to test configuration data in a CSV file.'
12
14
  example "
13
15
  describe csv('example.csv') do
@@ -1,11 +1,10 @@
1
1
  # encoding: utf-8
2
- # author: Doc Walker
3
2
 
4
3
  require 'openssl'
5
4
 
6
5
  class DhParams < Inspec.resource(1)
7
6
  name 'dh_params'
8
-
7
+ supports platform: 'unix'
9
8
  desc '
10
9
  Use the `dh_params` InSpec audit resource to test Diffie-Hellman (DH)
11
10
  parameters.
@@ -1,12 +1,12 @@
1
1
  # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
2
 
5
3
  require 'resources/file'
6
4
 
7
5
  module Inspec::Resources
8
6
  class Directory < FileResource
9
7
  name 'directory'
8
+ supports platform: 'unix'
9
+ supports platform: 'windows'
10
10
  desc 'Use the directory InSpec audit resource to test if the file type is a directory. This is equivalent to using the file InSpec audit resource and the be_directory matcher, but provides a simpler and more direct way to test directories. All of the matchers available to file may be used with directory.'
11
11
  example "
12
12
  describe directory('path') do
@@ -2,9 +2,6 @@
2
2
  #
3
3
  # Copyright 2017, Christoph Hartmann
4
4
  #
5
- # author: Christoph Hartmann
6
- # author: Patrick Muench
7
- # author: Dominik Richter
8
5
 
9
6
  require 'utils/filter'
10
7
  require 'hashie/mash'
@@ -84,7 +81,7 @@ module Inspec::Resources
84
81
  # - docker_image
85
82
  class Docker < Inspec.resource(1)
86
83
  name 'docker'
87
-
84
+ supports platform: 'unix'
88
85
  desc "
89
86
  A resource to retrieve information about docker
90
87
  "
@@ -1,10 +1,6 @@
1
1
  # encoding: utf-8
2
2
  #
3
3
  # Copyright 2017, Christoph Hartmann
4
- #
5
- # author: Christoph Hartmann
6
- # author: Patrick Muench
7
- # author: Dominik Richter
8
4
 
9
5
  require_relative 'docker_object'
10
6
 
@@ -13,6 +9,7 @@ module Inspec::Resources
13
9
  include Inspec::Resources::DockerObject
14
10
 
15
11
  name 'docker_container'
12
+ supports platform: 'unix'
16
13
  desc ''
17
14
  example "
18
15
  describe docker_container('an-echo-server') do
@@ -1,10 +1,6 @@
1
1
  # encoding: utf-8
2
2
  #
3
3
  # Copyright 2017, Christoph Hartmann
4
- #
5
- # author: Christoph Hartmann
6
- # author: Patrick Muench
7
- # author: Dominik Richter
8
4
 
9
5
  require_relative 'docker_object'
10
6
 
@@ -13,6 +9,7 @@ module Inspec::Resources
13
9
  include Inspec::Resources::DockerObject
14
10
 
15
11
  name 'docker_image'
12
+ supports platform: 'unix'
16
13
  desc ''
17
14
  example "
18
15
  describe docker_image('alpine:latest') do
File without changes
@@ -1,11 +1,6 @@
1
1
  # encoding: utf-8
2
2
  #
3
3
  # Copyright 2017, Christoph Hartmann
4
- #
5
- # author: Christoph Hartmann
6
- # author: Patrick Muench
7
- # author: Dominik Richter
8
- # author: Matt Kulka
9
4
 
10
5
  require_relative 'docker_object'
11
6
 
@@ -14,6 +9,7 @@ module Inspec::Resources
14
9
  include Inspec::Resources::DockerObject
15
10
 
16
11
  name 'docker_service'
12
+ supports platform: 'unix'
17
13
  desc 'Swarm-mode service'
18
14
  example "
19
15
  describe docker_service('service1') do
@@ -7,6 +7,7 @@ require 'resources/package'
7
7
  module Inspec::Resources
8
8
  class Elasticsearch < Inspec.resource(1)
9
9
  name 'elasticsearch'
10
+ supports platform: 'unix'
10
11
  desc "Use the Elasticsearch InSpec audit resource to test the status of nodes in
11
12
  an Elasticsearch cluster."
12
13
 
@@ -1,12 +1,12 @@
1
1
  # encoding: utf-8
2
2
  # copyright:
3
- # author: Matthew Dromazos
4
3
 
5
4
  require 'utils/parser'
6
5
 
7
6
  module Inspec::Resources
8
7
  class EtcFstab < Inspec.resource(1)
9
8
  name 'etc_fstab'
9
+ supports platform: 'unix'
10
10
  desc 'Use the etc_fstab InSpec audit resource to check the configuration of the etc/fstab file.'
11
11
  example "
12
12
  nfs_systems = etc_fstab.nfs_file_systems.entries
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
  # copyright: 2015, Vulcano Security GmbH
3
- # author: Christoph Hartmann
4
- # author: Dominik Richter
5
3
 
6
4
  # The file format consists of
7
5
  # - group name
@@ -29,6 +27,7 @@ module Inspec::Resources
29
27
  include CommentParser
30
28
 
31
29
  name 'etc_group'
30
+ supports platform: 'unix'
32
31
  desc 'Use the etc_group InSpec audit resource to test groups that are defined on Linux and UNIX platforms. The /etc/group file stores details about each group---group name, password, group identifier, along with a comma-separate list of users that belong to the group.'
33
32
  example "
34
33
  describe etc_group do
@@ -1,10 +1,10 @@
1
1
  # encoding: utf-8
2
- # author: Matthew Dromazos
3
2
 
4
3
  require 'utils/parser'
5
4
 
6
5
  class EtcHosts < Inspec.resource(1)
7
6
  name 'etc_hosts'
7
+ supports platform: 'unix'
8
8
  desc 'Use the etc_hosts InSpec audit resource to find an
9
9
  ip_address and its associated hosts'
10
10
  example "
@@ -1,11 +1,11 @@
1
1
  # encoding: utf-8
2
- # author: Matthew Dromazos
3
2
 
4
3
  require 'utils/parser'
5
4
 
6
5
  module Inspec::Resources
7
6
  class EtcHostsAllow < Inspec.resource(1)
8
7
  name 'etc_hosts_allow'
8
+ supports platform: 'unix'
9
9
  desc 'Use the etc_hosts_allow InSpec audit resource to test the connections
10
10
  the client will allow. Controlled by the /etc/hosts.allow file.'
11
11
  example "
@@ -101,6 +101,7 @@ module Inspec::Resources
101
101
 
102
102
  class EtcHostsDeny < EtcHostsAllow
103
103
  name 'etc_hosts_deny'
104
+ supports platform: 'unix'
104
105
  desc 'Use the etc_hosts_deny InSpec audit resource to test the connections
105
106
  the client will deny. Controlled by the /etc/hosts.deny file.'
106
107
  example "
@@ -1,7 +1,5 @@
1
1
  # encoding: utf-8
2
2
  # copyright: 2015, Vulcano Security GmbH
3
- # author: Dominik Richter
4
- # author: Christoph Hartmann
5
3
 
6
4
  require 'shellwords'
7
5
 
@@ -21,6 +19,8 @@ module Inspec::Resources
21
19
  include LinuxMountParser
22
20
 
23
21
  name 'file'
22
+ supports platform: 'unix'
23
+ supports platform: 'windows'
24
24
  desc 'Use the file InSpec audit resource to test all system file types, including files, directories, symbolic links, named pipes, sockets, character devices, block devices, and doors.'
25
25
  example "
26
26
  describe file('path') do