inspec-core 2.1.67

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 (412) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3136 -0
  3. data/Gemfile +56 -0
  4. data/LICENSE +14 -0
  5. data/MAINTAINERS.md +33 -0
  6. data/MAINTAINERS.toml +52 -0
  7. data/README.md +453 -0
  8. data/bin/inspec +12 -0
  9. data/docs/.gitignore +2 -0
  10. data/docs/README.md +40 -0
  11. data/docs/dev/control-eval.md +62 -0
  12. data/docs/dsl_inspec.md +258 -0
  13. data/docs/dsl_resource.md +100 -0
  14. data/docs/glossary.md +99 -0
  15. data/docs/habitat.md +192 -0
  16. data/docs/inspec_and_friends.md +114 -0
  17. data/docs/matchers.md +169 -0
  18. data/docs/migration.md +293 -0
  19. data/docs/platforms.md +119 -0
  20. data/docs/plugin_kitchen_inspec.md +50 -0
  21. data/docs/profiles.md +378 -0
  22. data/docs/reporters.md +105 -0
  23. data/docs/resources/aide_conf.md.erb +76 -0
  24. data/docs/resources/apache.md.erb +67 -0
  25. data/docs/resources/apache_conf.md.erb +68 -0
  26. data/docs/resources/apt.md.erb +71 -0
  27. data/docs/resources/audit_policy.md.erb +47 -0
  28. data/docs/resources/auditd.md.erb +79 -0
  29. data/docs/resources/auditd_conf.md.erb +68 -0
  30. data/docs/resources/bash.md.erb +75 -0
  31. data/docs/resources/bond.md.erb +90 -0
  32. data/docs/resources/bridge.md.erb +57 -0
  33. data/docs/resources/bsd_service.md.erb +67 -0
  34. data/docs/resources/chocolatey_package.md.erb +58 -0
  35. data/docs/resources/command.md.erb +138 -0
  36. data/docs/resources/cpan.md.erb +79 -0
  37. data/docs/resources/cran.md.erb +64 -0
  38. data/docs/resources/crontab.md.erb +89 -0
  39. data/docs/resources/csv.md.erb +54 -0
  40. data/docs/resources/dh_params.md.erb +205 -0
  41. data/docs/resources/directory.md.erb +30 -0
  42. data/docs/resources/docker.md.erb +219 -0
  43. data/docs/resources/docker_container.md.erb +103 -0
  44. data/docs/resources/docker_image.md.erb +94 -0
  45. data/docs/resources/docker_service.md.erb +114 -0
  46. data/docs/resources/elasticsearch.md.erb +242 -0
  47. data/docs/resources/etc_fstab.md.erb +125 -0
  48. data/docs/resources/etc_group.md.erb +75 -0
  49. data/docs/resources/etc_hosts.md.erb +78 -0
  50. data/docs/resources/etc_hosts_allow.md.erb +74 -0
  51. data/docs/resources/etc_hosts_deny.md.erb +74 -0
  52. data/docs/resources/file.md.erb +526 -0
  53. data/docs/resources/filesystem.md.erb +41 -0
  54. data/docs/resources/firewalld.md.erb +107 -0
  55. data/docs/resources/gem.md.erb +79 -0
  56. data/docs/resources/group.md.erb +61 -0
  57. data/docs/resources/grub_conf.md.erb +101 -0
  58. data/docs/resources/host.md.erb +86 -0
  59. data/docs/resources/http.md.erb +197 -0
  60. data/docs/resources/iis_app.md.erb +122 -0
  61. data/docs/resources/iis_site.md.erb +135 -0
  62. data/docs/resources/inetd_conf.md.erb +94 -0
  63. data/docs/resources/ini.md.erb +76 -0
  64. data/docs/resources/interface.md.erb +58 -0
  65. data/docs/resources/iptables.md.erb +64 -0
  66. data/docs/resources/json.md.erb +63 -0
  67. data/docs/resources/kernel_module.md.erb +120 -0
  68. data/docs/resources/kernel_parameter.md.erb +53 -0
  69. data/docs/resources/key_rsa.md.erb +85 -0
  70. data/docs/resources/launchd_service.md.erb +57 -0
  71. data/docs/resources/limits_conf.md.erb +75 -0
  72. data/docs/resources/login_defs.md.erb +71 -0
  73. data/docs/resources/mount.md.erb +69 -0
  74. data/docs/resources/mssql_session.md.erb +60 -0
  75. data/docs/resources/mysql_conf.md.erb +99 -0
  76. data/docs/resources/mysql_session.md.erb +74 -0
  77. data/docs/resources/nginx.md.erb +79 -0
  78. data/docs/resources/nginx_conf.md.erb +138 -0
  79. data/docs/resources/npm.md.erb +60 -0
  80. data/docs/resources/ntp_conf.md.erb +60 -0
  81. data/docs/resources/oneget.md.erb +53 -0
  82. data/docs/resources/oracledb_session.md.erb +52 -0
  83. data/docs/resources/os.md.erb +141 -0
  84. data/docs/resources/os_env.md.erb +91 -0
  85. data/docs/resources/package.md.erb +120 -0
  86. data/docs/resources/packages.md.erb +67 -0
  87. data/docs/resources/parse_config.md.erb +103 -0
  88. data/docs/resources/parse_config_file.md.erb +138 -0
  89. data/docs/resources/passwd.md.erb +141 -0
  90. data/docs/resources/pip.md.erb +67 -0
  91. data/docs/resources/port.md.erb +137 -0
  92. data/docs/resources/postgres_conf.md.erb +79 -0
  93. data/docs/resources/postgres_hba_conf.md.erb +93 -0
  94. data/docs/resources/postgres_ident_conf.md.erb +76 -0
  95. data/docs/resources/postgres_session.md.erb +69 -0
  96. data/docs/resources/powershell.md.erb +102 -0
  97. data/docs/resources/processes.md.erb +109 -0
  98. data/docs/resources/rabbitmq_config.md.erb +41 -0
  99. data/docs/resources/registry_key.md.erb +158 -0
  100. data/docs/resources/runit_service.md.erb +57 -0
  101. data/docs/resources/security_policy.md.erb +47 -0
  102. data/docs/resources/service.md.erb +121 -0
  103. data/docs/resources/shadow.md.erb +146 -0
  104. data/docs/resources/ssh_config.md.erb +73 -0
  105. data/docs/resources/sshd_config.md.erb +83 -0
  106. data/docs/resources/ssl.md.erb +119 -0
  107. data/docs/resources/sys_info.md.erb +42 -0
  108. data/docs/resources/systemd_service.md.erb +57 -0
  109. data/docs/resources/sysv_service.md.erb +57 -0
  110. data/docs/resources/upstart_service.md.erb +57 -0
  111. data/docs/resources/user.md.erb +140 -0
  112. data/docs/resources/users.md.erb +127 -0
  113. data/docs/resources/vbscript.md.erb +55 -0
  114. data/docs/resources/virtualization.md.erb +57 -0
  115. data/docs/resources/windows_feature.md.erb +47 -0
  116. data/docs/resources/windows_hotfix.md.erb +53 -0
  117. data/docs/resources/windows_task.md.erb +95 -0
  118. data/docs/resources/wmi.md.erb +81 -0
  119. data/docs/resources/x509_certificate.md.erb +151 -0
  120. data/docs/resources/xinetd_conf.md.erb +156 -0
  121. data/docs/resources/xml.md.erb +85 -0
  122. data/docs/resources/yaml.md.erb +69 -0
  123. data/docs/resources/yum.md.erb +98 -0
  124. data/docs/resources/zfs_dataset.md.erb +53 -0
  125. data/docs/resources/zfs_pool.md.erb +47 -0
  126. data/docs/ruby_usage.md +203 -0
  127. data/docs/shared/matcher_be.md.erb +1 -0
  128. data/docs/shared/matcher_cmp.md.erb +43 -0
  129. data/docs/shared/matcher_eq.md.erb +3 -0
  130. data/docs/shared/matcher_include.md.erb +1 -0
  131. data/docs/shared/matcher_match.md.erb +1 -0
  132. data/docs/shell.md +217 -0
  133. data/examples/README.md +8 -0
  134. data/examples/inheritance/README.md +65 -0
  135. data/examples/inheritance/controls/example.rb +14 -0
  136. data/examples/inheritance/inspec.yml +15 -0
  137. data/examples/kitchen-ansible/.kitchen.yml +25 -0
  138. data/examples/kitchen-ansible/Gemfile +19 -0
  139. data/examples/kitchen-ansible/README.md +53 -0
  140. data/examples/kitchen-ansible/files/nginx.repo +6 -0
  141. data/examples/kitchen-ansible/tasks/main.yml +16 -0
  142. data/examples/kitchen-ansible/test/integration/default/default.yml +5 -0
  143. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -0
  144. data/examples/kitchen-chef/.kitchen.yml +20 -0
  145. data/examples/kitchen-chef/Berksfile +3 -0
  146. data/examples/kitchen-chef/Gemfile +19 -0
  147. data/examples/kitchen-chef/README.md +27 -0
  148. data/examples/kitchen-chef/metadata.rb +7 -0
  149. data/examples/kitchen-chef/recipes/default.rb +6 -0
  150. data/examples/kitchen-chef/recipes/nginx.rb +30 -0
  151. data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -0
  152. data/examples/kitchen-puppet/.kitchen.yml +23 -0
  153. data/examples/kitchen-puppet/Gemfile +20 -0
  154. data/examples/kitchen-puppet/Puppetfile +25 -0
  155. data/examples/kitchen-puppet/README.md +53 -0
  156. data/examples/kitchen-puppet/manifests/site.pp +33 -0
  157. data/examples/kitchen-puppet/metadata.json +11 -0
  158. data/examples/kitchen-puppet/modules/.gitkeep +0 -0
  159. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -0
  160. data/examples/meta-profile/README.md +37 -0
  161. data/examples/meta-profile/controls/example.rb +13 -0
  162. data/examples/meta-profile/inspec.yml +13 -0
  163. data/examples/profile-attribute.yml +2 -0
  164. data/examples/profile-attribute/README.md +14 -0
  165. data/examples/profile-attribute/controls/example.rb +11 -0
  166. data/examples/profile-attribute/inspec.yml +8 -0
  167. data/examples/profile-sensitive/README.md +29 -0
  168. data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -0
  169. data/examples/profile-sensitive/controls/sensitive.rb +9 -0
  170. data/examples/profile-sensitive/inspec.yml +8 -0
  171. data/examples/profile/README.md +48 -0
  172. data/examples/profile/controls/example.rb +23 -0
  173. data/examples/profile/controls/gordon.rb +36 -0
  174. data/examples/profile/controls/meta.rb +34 -0
  175. data/examples/profile/inspec.yml +10 -0
  176. data/examples/profile/libraries/gordon_config.rb +59 -0
  177. data/inspec-core.gemspec +43 -0
  178. data/lib/bundles/README.md +3 -0
  179. data/lib/bundles/inspec-artifact.rb +7 -0
  180. data/lib/bundles/inspec-artifact/README.md +1 -0
  181. data/lib/bundles/inspec-artifact/cli.rb +277 -0
  182. data/lib/bundles/inspec-compliance.rb +16 -0
  183. data/lib/bundles/inspec-compliance/.kitchen.yml +20 -0
  184. data/lib/bundles/inspec-compliance/README.md +193 -0
  185. data/lib/bundles/inspec-compliance/api.rb +360 -0
  186. data/lib/bundles/inspec-compliance/api/login.rb +193 -0
  187. data/lib/bundles/inspec-compliance/bootstrap.sh +41 -0
  188. data/lib/bundles/inspec-compliance/cli.rb +260 -0
  189. data/lib/bundles/inspec-compliance/configuration.rb +103 -0
  190. data/lib/bundles/inspec-compliance/http.rb +125 -0
  191. data/lib/bundles/inspec-compliance/images/cc-token.png +0 -0
  192. data/lib/bundles/inspec-compliance/support.rb +36 -0
  193. data/lib/bundles/inspec-compliance/target.rb +106 -0
  194. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -0
  195. data/lib/bundles/inspec-habitat.rb +12 -0
  196. data/lib/bundles/inspec-habitat/cli.rb +36 -0
  197. data/lib/bundles/inspec-habitat/log.rb +10 -0
  198. data/lib/bundles/inspec-habitat/profile.rb +391 -0
  199. data/lib/bundles/inspec-init.rb +8 -0
  200. data/lib/bundles/inspec-init/README.md +31 -0
  201. data/lib/bundles/inspec-init/cli.rb +97 -0
  202. data/lib/bundles/inspec-init/templates/profile/README.md +3 -0
  203. data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -0
  204. data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -0
  205. data/lib/bundles/inspec-init/templates/profile/libraries/.gitkeep +0 -0
  206. data/lib/bundles/inspec-supermarket.rb +13 -0
  207. data/lib/bundles/inspec-supermarket/README.md +45 -0
  208. data/lib/bundles/inspec-supermarket/api.rb +84 -0
  209. data/lib/bundles/inspec-supermarket/cli.rb +73 -0
  210. data/lib/bundles/inspec-supermarket/target.rb +34 -0
  211. data/lib/fetchers/git.rb +163 -0
  212. data/lib/fetchers/local.rb +74 -0
  213. data/lib/fetchers/mock.rb +35 -0
  214. data/lib/fetchers/url.rb +247 -0
  215. data/lib/inspec.rb +24 -0
  216. data/lib/inspec/archive/tar.rb +29 -0
  217. data/lib/inspec/archive/zip.rb +19 -0
  218. data/lib/inspec/backend.rb +93 -0
  219. data/lib/inspec/base_cli.rb +368 -0
  220. data/lib/inspec/cached_fetcher.rb +66 -0
  221. data/lib/inspec/cli.rb +292 -0
  222. data/lib/inspec/completions/bash.sh.erb +45 -0
  223. data/lib/inspec/completions/fish.sh.erb +34 -0
  224. data/lib/inspec/completions/zsh.sh.erb +61 -0
  225. data/lib/inspec/control_eval_context.rb +179 -0
  226. data/lib/inspec/dependencies/cache.rb +72 -0
  227. data/lib/inspec/dependencies/dependency_set.rb +92 -0
  228. data/lib/inspec/dependencies/lockfile.rb +115 -0
  229. data/lib/inspec/dependencies/requirement.rb +123 -0
  230. data/lib/inspec/dependencies/resolver.rb +86 -0
  231. data/lib/inspec/describe.rb +27 -0
  232. data/lib/inspec/dsl.rb +66 -0
  233. data/lib/inspec/dsl_shared.rb +33 -0
  234. data/lib/inspec/env_printer.rb +157 -0
  235. data/lib/inspec/errors.rb +14 -0
  236. data/lib/inspec/exceptions.rb +12 -0
  237. data/lib/inspec/expect.rb +45 -0
  238. data/lib/inspec/fetcher.rb +45 -0
  239. data/lib/inspec/file_provider.rb +275 -0
  240. data/lib/inspec/formatters.rb +3 -0
  241. data/lib/inspec/formatters/base.rb +259 -0
  242. data/lib/inspec/formatters/json_rspec.rb +20 -0
  243. data/lib/inspec/formatters/show_progress.rb +12 -0
  244. data/lib/inspec/library_eval_context.rb +58 -0
  245. data/lib/inspec/log.rb +11 -0
  246. data/lib/inspec/metadata.rb +247 -0
  247. data/lib/inspec/method_source.rb +24 -0
  248. data/lib/inspec/objects.rb +14 -0
  249. data/lib/inspec/objects/attribute.rb +75 -0
  250. data/lib/inspec/objects/control.rb +61 -0
  251. data/lib/inspec/objects/describe.rb +92 -0
  252. data/lib/inspec/objects/each_loop.rb +36 -0
  253. data/lib/inspec/objects/list.rb +15 -0
  254. data/lib/inspec/objects/or_test.rb +40 -0
  255. data/lib/inspec/objects/ruby_helper.rb +15 -0
  256. data/lib/inspec/objects/tag.rb +27 -0
  257. data/lib/inspec/objects/test.rb +87 -0
  258. data/lib/inspec/objects/value.rb +27 -0
  259. data/lib/inspec/plugins.rb +60 -0
  260. data/lib/inspec/plugins/cli.rb +24 -0
  261. data/lib/inspec/plugins/fetcher.rb +86 -0
  262. data/lib/inspec/plugins/resource.rb +135 -0
  263. data/lib/inspec/plugins/secret.rb +15 -0
  264. data/lib/inspec/plugins/source_reader.rb +40 -0
  265. data/lib/inspec/polyfill.rb +12 -0
  266. data/lib/inspec/profile.rb +513 -0
  267. data/lib/inspec/profile_context.rb +208 -0
  268. data/lib/inspec/profile_vendor.rb +66 -0
  269. data/lib/inspec/reporters.rb +60 -0
  270. data/lib/inspec/reporters/automate.rb +76 -0
  271. data/lib/inspec/reporters/base.rb +25 -0
  272. data/lib/inspec/reporters/cli.rb +356 -0
  273. data/lib/inspec/reporters/json.rb +116 -0
  274. data/lib/inspec/reporters/json_min.rb +48 -0
  275. data/lib/inspec/reporters/junit.rb +78 -0
  276. data/lib/inspec/require_loader.rb +33 -0
  277. data/lib/inspec/resource.rb +190 -0
  278. data/lib/inspec/rule.rb +280 -0
  279. data/lib/inspec/runner.rb +345 -0
  280. data/lib/inspec/runner_mock.rb +41 -0
  281. data/lib/inspec/runner_rspec.rb +175 -0
  282. data/lib/inspec/runtime_profile.rb +26 -0
  283. data/lib/inspec/schema.rb +213 -0
  284. data/lib/inspec/secrets.rb +19 -0
  285. data/lib/inspec/secrets/yaml.rb +30 -0
  286. data/lib/inspec/shell.rb +220 -0
  287. data/lib/inspec/shell_detector.rb +90 -0
  288. data/lib/inspec/source_reader.rb +29 -0
  289. data/lib/inspec/version.rb +8 -0
  290. data/lib/matchers/matchers.rb +339 -0
  291. data/lib/resources/aide_conf.rb +151 -0
  292. data/lib/resources/apache.rb +48 -0
  293. data/lib/resources/apache_conf.rb +149 -0
  294. data/lib/resources/apt.rb +149 -0
  295. data/lib/resources/audit_policy.rb +63 -0
  296. data/lib/resources/auditd.rb +231 -0
  297. data/lib/resources/auditd_conf.rb +46 -0
  298. data/lib/resources/bash.rb +35 -0
  299. data/lib/resources/bond.rb +69 -0
  300. data/lib/resources/bridge.rb +122 -0
  301. data/lib/resources/chocolatey_package.rb +78 -0
  302. data/lib/resources/command.rb +73 -0
  303. data/lib/resources/cpan.rb +58 -0
  304. data/lib/resources/cran.rb +64 -0
  305. data/lib/resources/crontab.rb +169 -0
  306. data/lib/resources/csv.rb +56 -0
  307. data/lib/resources/dh_params.rb +77 -0
  308. data/lib/resources/directory.rb +25 -0
  309. data/lib/resources/docker.rb +236 -0
  310. data/lib/resources/docker_container.rb +89 -0
  311. data/lib/resources/docker_image.rb +83 -0
  312. data/lib/resources/docker_object.rb +57 -0
  313. data/lib/resources/docker_service.rb +90 -0
  314. data/lib/resources/elasticsearch.rb +169 -0
  315. data/lib/resources/etc_fstab.rb +94 -0
  316. data/lib/resources/etc_group.rb +154 -0
  317. data/lib/resources/etc_hosts.rb +66 -0
  318. data/lib/resources/etc_hosts_allow_deny.rb +112 -0
  319. data/lib/resources/file.rb +298 -0
  320. data/lib/resources/filesystem.rb +31 -0
  321. data/lib/resources/firewalld.rb +143 -0
  322. data/lib/resources/gem.rb +70 -0
  323. data/lib/resources/groups.rb +215 -0
  324. data/lib/resources/grub_conf.rb +227 -0
  325. data/lib/resources/host.rb +306 -0
  326. data/lib/resources/http.rb +253 -0
  327. data/lib/resources/iis_app.rb +101 -0
  328. data/lib/resources/iis_site.rb +148 -0
  329. data/lib/resources/inetd_conf.rb +54 -0
  330. data/lib/resources/ini.rb +29 -0
  331. data/lib/resources/interface.rb +129 -0
  332. data/lib/resources/iptables.rb +80 -0
  333. data/lib/resources/json.rb +111 -0
  334. data/lib/resources/kernel_module.rb +107 -0
  335. data/lib/resources/kernel_parameter.rb +58 -0
  336. data/lib/resources/key_rsa.rb +63 -0
  337. data/lib/resources/limits_conf.rb +46 -0
  338. data/lib/resources/login_def.rb +57 -0
  339. data/lib/resources/mount.rb +88 -0
  340. data/lib/resources/mssql_session.rb +101 -0
  341. data/lib/resources/mysql.rb +82 -0
  342. data/lib/resources/mysql_conf.rb +127 -0
  343. data/lib/resources/mysql_session.rb +85 -0
  344. data/lib/resources/nginx.rb +96 -0
  345. data/lib/resources/nginx_conf.rb +226 -0
  346. data/lib/resources/npm.rb +48 -0
  347. data/lib/resources/ntp_conf.rb +51 -0
  348. data/lib/resources/oneget.rb +71 -0
  349. data/lib/resources/oracledb_session.rb +139 -0
  350. data/lib/resources/os.rb +36 -0
  351. data/lib/resources/os_env.rb +86 -0
  352. data/lib/resources/package.rb +370 -0
  353. data/lib/resources/packages.rb +111 -0
  354. data/lib/resources/parse_config.rb +112 -0
  355. data/lib/resources/passwd.rb +76 -0
  356. data/lib/resources/pip.rb +130 -0
  357. data/lib/resources/platform.rb +109 -0
  358. data/lib/resources/port.rb +771 -0
  359. data/lib/resources/postgres.rb +131 -0
  360. data/lib/resources/postgres_conf.rb +114 -0
  361. data/lib/resources/postgres_hba_conf.rb +90 -0
  362. data/lib/resources/postgres_ident_conf.rb +79 -0
  363. data/lib/resources/postgres_session.rb +71 -0
  364. data/lib/resources/powershell.rb +67 -0
  365. data/lib/resources/processes.rb +204 -0
  366. data/lib/resources/rabbitmq_conf.rb +51 -0
  367. data/lib/resources/registry_key.rb +297 -0
  368. data/lib/resources/security_policy.rb +180 -0
  369. data/lib/resources/service.rb +794 -0
  370. data/lib/resources/shadow.rb +159 -0
  371. data/lib/resources/ssh_conf.rb +97 -0
  372. data/lib/resources/ssl.rb +99 -0
  373. data/lib/resources/sys_info.rb +28 -0
  374. data/lib/resources/toml.rb +32 -0
  375. data/lib/resources/users.rb +654 -0
  376. data/lib/resources/vbscript.rb +68 -0
  377. data/lib/resources/virtualization.rb +247 -0
  378. data/lib/resources/windows_feature.rb +84 -0
  379. data/lib/resources/windows_hotfix.rb +35 -0
  380. data/lib/resources/windows_task.rb +102 -0
  381. data/lib/resources/wmi.rb +110 -0
  382. data/lib/resources/x509_certificate.rb +137 -0
  383. data/lib/resources/xinetd.rb +106 -0
  384. data/lib/resources/xml.rb +46 -0
  385. data/lib/resources/yaml.rb +43 -0
  386. data/lib/resources/yum.rb +180 -0
  387. data/lib/resources/zfs_dataset.rb +60 -0
  388. data/lib/resources/zfs_pool.rb +49 -0
  389. data/lib/source_readers/flat.rb +39 -0
  390. data/lib/source_readers/inspec.rb +75 -0
  391. data/lib/utils/command_wrapper.rb +27 -0
  392. data/lib/utils/convert.rb +12 -0
  393. data/lib/utils/database_helpers.rb +77 -0
  394. data/lib/utils/enumerable_delegation.rb +9 -0
  395. data/lib/utils/erlang_parser.rb +192 -0
  396. data/lib/utils/file_reader.rb +25 -0
  397. data/lib/utils/filter.rb +273 -0
  398. data/lib/utils/filter_array.rb +27 -0
  399. data/lib/utils/find_files.rb +47 -0
  400. data/lib/utils/hash.rb +41 -0
  401. data/lib/utils/json_log.rb +18 -0
  402. data/lib/utils/latest_version.rb +22 -0
  403. data/lib/utils/modulator.rb +12 -0
  404. data/lib/utils/nginx_parser.rb +105 -0
  405. data/lib/utils/object_traversal.rb +49 -0
  406. data/lib/utils/parser.rb +274 -0
  407. data/lib/utils/pkey_reader.rb +15 -0
  408. data/lib/utils/plugin_registry.rb +93 -0
  409. data/lib/utils/simpleconfig.rb +120 -0
  410. data/lib/utils/spdx.rb +13 -0
  411. data/lib/utils/spdx.txt +344 -0
  412. metadata +713 -0
@@ -0,0 +1,127 @@
1
+ ---
2
+ title: About the users Resource
3
+ platform: os
4
+ ---
5
+
6
+ # users
7
+
8
+ Use the `users` InSpec audit resource to look up all local users available on the system, and then test specific properties of those users. This resource does not return information about users that may be located on other systems, such as LDAP or Active Directory.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `users` resource block declares a user name, and then one (or more) matchers:
15
+
16
+ describe users.where(uid: 0).entries do
17
+ it { should eq ['root'] }
18
+ its('uids') { should eq [1234] }
19
+ its('gids') { should eq [1234] }
20
+ end
21
+
22
+ where
23
+
24
+ * `gid`, `group`, `groups`, `home`, `maxdays`, `mindays`, `shell`, `uid`, and `warndays` are valid matchers for this resource
25
+ * `where(uid: 0).entries` represents a filter that runs the test only against matching users
26
+
27
+ For example:
28
+
29
+ describe users.where { username =~ /.*/ } do
30
+ it { should exist }
31
+ end
32
+
33
+ or:
34
+
35
+ describe users.where { uid =~ /^S-1-5-[0-9-]+-501$/ } do
36
+ it { should exist }
37
+ end
38
+
39
+ <br>
40
+
41
+ ## Examples
42
+
43
+ The following examples show how to use this InSpec audit resource.
44
+
45
+ ### Use a regular expression to find users
46
+
47
+ describe users.where { uid =~ /S\-1\-5\-21\-\d+\-\d+\-\d+\-500/ } do
48
+ it { should exist }
49
+ end
50
+
51
+ <br>
52
+
53
+ ## Matchers
54
+
55
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
56
+
57
+ ### exist
58
+
59
+ The `exist` matcher tests if the named user exists:
60
+
61
+ it { should exist }
62
+
63
+ ### gid
64
+
65
+ The `gid` matcher tests the group identifier:
66
+
67
+ its('gid') { should eq 1234 } }
68
+
69
+ where `1234` represents the user identifier.
70
+
71
+ ### group
72
+
73
+ The `group` matcher tests the group to which the user belongs:
74
+
75
+ its('group') { should eq 'root' }
76
+
77
+ where `root` represents the group.
78
+
79
+ ### groups
80
+
81
+ The `groups` matcher tests two (or more) groups to which the user belongs:
82
+
83
+ its('groups') { should eq ['root', 'other']}
84
+
85
+ ### home
86
+
87
+ The `home` matcher tests the home directory path for the user:
88
+
89
+ its('home') { should eq '/root' }
90
+
91
+ ### maxdays
92
+
93
+ The `maxdays` matcher tests the maximum number of days between password changes:
94
+
95
+ its('maxdays') { should eq 99 }
96
+
97
+ where `99` represents the maximum number of days.
98
+
99
+ ### mindays
100
+
101
+ The `mindays` matcher tests the minimum number of days between password changes:
102
+
103
+ its('mindays') { should eq 0 }
104
+
105
+ where `0` represents the maximum number of days.
106
+
107
+ ### shell
108
+
109
+ The `shell` matcher tests the path to the default shell for the user:
110
+
111
+ its('shells') { should eq ['/bin/bash'] }
112
+
113
+ ### uid
114
+
115
+ The `uid` matcher tests the user identifier:
116
+
117
+ its('uid') { should eq 1234 } }
118
+
119
+ where `1234` represents the user identifier.
120
+
121
+ ### warndays
122
+
123
+ The `warndays` matcher tests the number of days a user is warned before a password must be changed:
124
+
125
+ its('warndays') { should eq 5 }
126
+
127
+ where `5` represents the number of days a user is warned.
@@ -0,0 +1,55 @@
1
+ ---
2
+ title: About the vbscript Resource
3
+ platform: windows
4
+ ---
5
+
6
+ # vbscript
7
+
8
+ Use the `vbscript` InSpec audit resource to test a VBScript on the Windows platform.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `vbscript` resource block tests the output of a VBScript on the Windows platform:
15
+
16
+ describe vbscript('script contents') do
17
+ its('stdout') { should eq 'output' }
18
+ end
19
+
20
+ where
21
+
22
+ * `'script_name'` is the name of the VBScript to test
23
+ * `('output')` is the expected output of the VBScript
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test a VBScript
32
+
33
+ A VBScript file similar to:
34
+
35
+ script = <<-EOH
36
+ WScript.Echo "hello"
37
+ EOH
38
+
39
+ may be tested for multiple lines:
40
+
41
+ describe vbscript(script) do
42
+ its('stdout') { should eq "hello\r\n" }
43
+ end
44
+
45
+ and tested for whitespace removal from standard output:
46
+
47
+ describe vbscript(script) do
48
+ its('strip') { should eq "hello" }
49
+ end
50
+
51
+ <br>
52
+
53
+ ## Matchers
54
+
55
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: About the virtualization Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # virtualization
7
+
8
+ Use the `virtualization` InSpec audit resource to test the virtualization platform on which the system is running.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ An `virtualization` resource block declares the virtualization platform that should be tested:
15
+
16
+ describe virtualization do
17
+ its('system') { should MATCHER 'value' }
18
+ end
19
+
20
+ where
21
+
22
+ * `('system')` is the name of the system information of the virtualization platform (e.g. docker, lxc, vbox, kvm, etc)
23
+ * `MATCHER` is a valid matcher for this resource
24
+ * `'value'` is the value to be tested
25
+
26
+ <br>
27
+
28
+ ## Examples
29
+
30
+ The following examples show how to use this InSpec audit resource.
31
+
32
+ ### Test for Docker
33
+
34
+ describe virtualization do
35
+ its('system') { should eq 'docker' }
36
+ end
37
+
38
+ ### Test for VirtualBox
39
+
40
+ describe virtualization do
41
+ its('system') { should eq 'vbox' }
42
+ its('role') { should eq 'guest' }
43
+ end
44
+
45
+ ### Detect the virtualization platform
46
+
47
+ if virtualization.system == 'vbox'
48
+ describe package('name') do
49
+ it { should be_installed }
50
+ end
51
+ end
52
+
53
+ <br>
54
+
55
+ ## Matchers
56
+
57
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,47 @@
1
+ ---
2
+ title: About the windows_feature Resource
3
+ platform: windows
4
+ ---
5
+
6
+ # windows_feature
7
+
8
+ Use the `windows_feature` InSpec audit resource to test features on Windows via the `Get-WindowsFeature` cmdlet.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `windows_feature` resource block declares the name of the Windows feature, tests if that feature is installed, and then returns information about that feature:
15
+
16
+ describe windows_feature('feature_name') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `('feature_name')` must specify a Windows feature name, such as `DHCP Server` or `IIS-Webserver`
23
+ * `be_installed` is a valid matcher for this resource
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test the DHCP Server feature
32
+
33
+ describe windows_feature('DHCP Server') do
34
+ it{ should be_installed }
35
+ end
36
+
37
+ <br>
38
+
39
+ ## Matchers
40
+
41
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
42
+
43
+ ### be_installed
44
+
45
+ The `be_installed` matcher tests if the named Windows feature is installed:
46
+
47
+ it { should be_installed }
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: About the windows_hotfix Resource
3
+ platform: windows
4
+ ---
5
+
6
+ # windows_hotfix
7
+
8
+ Use the `windows_hotfix` InSpec audit resource to test if the hotfix has been installed on a Windows system.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `windows_hotfix` resource block declares a hotfix to validate:
15
+
16
+ describe windows_hotfix('name') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `('name')` must specify the name of a hotfix, such as `'KB4012213'`
23
+ * `be_installed` is a valid matcher for this resource
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test if KB4012213 is installed
32
+
33
+ describe windows_hotfix('KB4012213') do
34
+ it { should be_installed }
35
+ end
36
+
37
+ ### Test that a hotfix is not installed
38
+
39
+ describe windows_hotfix('KB9999999') do
40
+ it { should_not be_installed }
41
+ end
42
+
43
+ <br>
44
+
45
+ ## Matchers
46
+
47
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
48
+
49
+ ### be_installed
50
+
51
+ The `be_installed` matcher tests if the named hotfix is installed on the system:
52
+
53
+ it { should be_installed }
@@ -0,0 +1,95 @@
1
+ ---
2
+ title: About the windows_task Resource
3
+ platform: windows
4
+ ---
5
+
6
+ # windows_task
7
+
8
+ Use the `windows_task` InSpec audit resource to test a scheduled tasks configuration on a Windows platform.
9
+ Microsoft and application vendors use scheduled tasks to perform a variety of system maintenance tasks but system administrators can schedule their own.
10
+
11
+ <br>
12
+
13
+ ## Syntax
14
+
15
+ A `windows_task` resource block declares the name of the task (as its full path) and tests its configuration:
16
+
17
+ describe windows_task('task name uri') do
18
+ its('parameter') { should eq 'value' }
19
+ it { should be_enabled }
20
+ end
21
+
22
+ where
23
+
24
+ * `'parameter'` must be a valid parameter defined within this resource ie `logon_mode`, `last_result`, `task_to_run`, `run_as_user`
25
+ * `'value'` will be used to compare the value gather from your chosen parameter
26
+ * `'be_enabled'` is an example of a valid matcher that checks the state of a task, other examples are `exist` or `be_disabled`
27
+
28
+ <br>
29
+
30
+ ## Examples
31
+
32
+ The following examples show how to use this InSpec resource.
33
+
34
+ ### Tests that a task is enabled
35
+
36
+ ```ruby
37
+ describe windows_task('\Microsoft\Windows\Time Synchronization\SynchronizeTime') do
38
+ it { should be_enabled }
39
+ end
40
+ ```
41
+
42
+ ### Tests that a task is disabled
43
+
44
+ ```ruby
45
+ describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
46
+ it { should be_disabled }
47
+ end
48
+ ```
49
+
50
+ ### Tests the configuration parameters of a task
51
+
52
+ ```ruby
53
+ describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
54
+ its('logon_mode') { should eq 'Interactive/Background' }
55
+ its('last_result') { should eq '1' }
56
+ its('task_to_run') { should cmp '%Windir%\system32\appidpolicyconverter.exe' }
57
+ its('run_as_user') { should eq 'LOCAL SERVICE' }
58
+ end
59
+ ```
60
+
61
+ ### Tests that a task is defined
62
+
63
+ ```ruby
64
+ describe windows_task('\Microsoft\Windows\Defrag\ScheduledDefrag') do
65
+ it { should exist }
66
+ end
67
+ ```
68
+
69
+ ## Gathering Tasknames
70
+
71
+ Rather then use the GUI you can use the `schtasks.exe` to output a full list of tasks available on the system
72
+
73
+ `schtasks /query /FO list`
74
+
75
+ rather than use the `list` output you can use `CSV` if it is easier.
76
+
77
+ Please make sure you use the full TaskName (include the prefix `\`) within your control
78
+
79
+ ```ruby
80
+ C:\>schtasks /query /FO list
81
+ ...
82
+ Folder: \Microsoft\Windows\Diagnosis
83
+ HostName: XPS15
84
+ TaskName: \Microsoft\Windows\Diagnosis\Scheduled
85
+ Next Run Time: N/A
86
+ Status: Ready
87
+ Logon Mode: Interactive/Background
88
+ ...
89
+ ```
90
+
91
+ <br>
92
+
93
+ ## Matchers
94
+
95
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: About the wmi Resource
3
+ platform: windows
4
+ ---
5
+
6
+ # wmi
7
+
8
+ Use the `wmi` InSpec audit resource to test WMI settings on the Windows platform.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `wmi` resource block tests WMI settings on the Windows platform:
15
+
16
+ describe wmi({
17
+ class: 'class_name'
18
+ namespace: 'path\\to\\setting'
19
+ filter: 'filter'
20
+ query: 'query'
21
+ }) do
22
+ its('setting_name') { should eq '' }
23
+ end
24
+
25
+ where
26
+
27
+ * `class`, `namespace`, `filter`, and `query` comprise a Ruby Hash of the WMI object
28
+ * `('class')` is the WMI class to which the setting belongs, such as `win32_service`
29
+ * `('namespace')` is path to that object, such as `root\\cimv2`
30
+ * Use `('filter')` fine-tune the information defined by the WMI class, such as to find a specific service (`filter: "name like '%winrm%'")`, to find a specific setting (`filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1'`), and so on
31
+ * Use `('query')` to run a query that returns data to be tested, such as `"SELECT Setting FROM RSOP_SecuritySettingBoolean WHERE KeyName='LSAAnonymousNameLookup' AND Precedence=1"`
32
+ * `('setting_name')` is a setting in the WMI object to be tested, and then `should eq ''` is the expected value for that setting
33
+
34
+ For example, both of the following tests will verify if WinRM is present on the target node. The first tests if WinRM belongs to the list of services running under the `win32_service` class:
35
+
36
+ describe wmi({class: 'win32_service'}) do
37
+ its('DisplayName') { should include 'Windows Remote Management (WS-Management)'}
38
+ end
39
+
40
+ and the second uses a filter in the Ruby Hash to first identify WinRM, and then perform additional tests:
41
+
42
+ describe wmi({
43
+ class: 'win32_service',
44
+ filter: "name like '%winrm%'"
45
+ }) do
46
+ its('Status') { should cmp 'ok' }
47
+ its('State') { should cmp 'Running' }
48
+ its('ExitCode') { should cmp 0 }
49
+ its('DisplayName') { should eq 'Windows Remote Management (WS-Management)'}
50
+ end
51
+
52
+ <br>
53
+
54
+ ## Examples
55
+
56
+ The following examples show how to use this InSpec audit resource.
57
+
58
+ ### Test a password expiration policy
59
+
60
+ describe wmi({
61
+ class: 'RSOP_SecuritySettingNumeric',
62
+ namespace: 'root\\rsop\\computer',
63
+ filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1'
64
+ }) do
65
+ its('Setting') { should eq 1 }
66
+ end
67
+
68
+ ### Test if an anonymous user can query the Local Security Authority (LSA)
69
+
70
+ describe wmi({
71
+ namespace: 'root\rsop\computer',
72
+ query: "SELECT Setting FROM RSOP_SecuritySettingBoolean WHERE KeyName='LSAAnonymousNameLookup' AND Precedence=1"
73
+ }) do
74
+ its('Setting') { should eq false }
75
+ end
76
+
77
+ <br>
78
+
79
+ ## Matchers
80
+
81
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).