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,79 @@
1
+ ---
2
+ title: About the cpan Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # cpan
7
+
8
+ Use the `cpan` InSpec audit resource to test Perl modules that are installed by system packages or the CPAN installer.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `cpan` resource block declares a package and (optionally) a package version:
15
+
16
+ describe cpan('package_name') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `'package_name'` is the name of the package, such as `'DBD::Pg'`
23
+ * `be_installed` tests to see if the package described above is installed
24
+
25
+ <br>
26
+
27
+ ## Resource Parameters
28
+
29
+ This resource uses package names and perl library paths as resource parameters.
30
+
31
+ <br>
32
+
33
+ ## Resource Parameter Examples
34
+
35
+ ### Test if DBD::Pg is installed on the system
36
+
37
+ describe cpan('DBD:Pg') do
38
+ it { should be_installed }
39
+ end
40
+
41
+ ### Test if DBD::Pg 3.7.0 is installed on the system
42
+
43
+ describe cpan('DBD::Pg') do
44
+ it { should be_installed }
45
+ its('version') { should eq '3.7.0' }
46
+ end
47
+
48
+ ### Test if DBD::Pg is installed within a custom PERL5LIB path on the system
49
+
50
+ Hint: You can pass multiple paths separated with a colon
51
+ `/path/to/perl5/lib:/usr/share/perl5/vendor_perl/lib/perl5`
52
+
53
+ describe cpan('DBD::Pg', '/home/jdoe/perl5/lib/perl5') do
54
+ it { should be_installed }
55
+ end
56
+
57
+ <br>
58
+
59
+ ## Property Examples
60
+
61
+ The following examples show how to use this InSpec audit resource.
62
+
63
+ ### version
64
+
65
+ The `version` property tests if the named package version is on the system:
66
+
67
+ its('version') { should eq '1.2.3' }
68
+
69
+ <br>
70
+
71
+ ## Matchers
72
+
73
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
74
+
75
+ ### be_installed
76
+
77
+ The `be_installed` matcher tests if the named package is installed on the system:
78
+
79
+ it { should be_installed }
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: About the cran Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # cran
7
+
8
+ Use the `cran` InSpec audit resource to test R modules that are installed from CRAN package repository.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `cran` resource block declares a package and (optionally) a package version:
15
+
16
+ describe cran('package_name') do
17
+ it { should be_installed }
18
+ end
19
+
20
+ where
21
+
22
+ * `'package_name'` is the name of the package, such as `'DBI'`
23
+ * `be_installed` tests to see if the package described above is installed
24
+
25
+ <br>
26
+
27
+ ## Examples
28
+
29
+ The following examples show how to use this InSpec audit resource.
30
+
31
+ ### Test if DBI is installed on the system
32
+
33
+ describe cran('DBI') do
34
+ it { should be_installed }
35
+ end
36
+
37
+ ### Test if DBI 0.5.1 is installed on the system
38
+
39
+ describe cran('DBI') do
40
+ it { should be_installed }
41
+ its('version') { should eq '0.5.1' }
42
+ end
43
+
44
+ <br>
45
+
46
+ ## Property Examples
47
+
48
+ ### version
49
+
50
+ The `version` property tests if the named package version is on the system:
51
+
52
+ its('version') { should eq '1.2.3' }
53
+
54
+ <br>
55
+
56
+ ## Matchers
57
+
58
+ This InSpec audit resource has the following matchers:
59
+
60
+ ### be_installed
61
+
62
+ The `be_installed` matcher tests if the named package is installed on the system:
63
+
64
+ it { should be_installed }
@@ -0,0 +1,89 @@
1
+ ---
2
+ title: About the crontab Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # crontab
7
+
8
+ Use the `crontab` InSpec audit resource to test the crontab entries for a particular user on the system. It recognizes special time strings (@yearly, @weekly, etc).
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `crontab` resource block declares a user (which defaults to the current user, if not specified), and then the details to be tested, such as the schedule elements for each crontab entry or the commands itself:
15
+
16
+ describe crontab do
17
+ its('commands') { should include '/some/scheduled/task.sh' }
18
+ end
19
+
20
+ <br>
21
+
22
+ ## Examples
23
+
24
+ The following examples show how to use this InSpec audit resource.
25
+
26
+ ### Test that root's crontab has a particular command
27
+
28
+ describe crontab('root') do
29
+ its('commands') { should include '/path/to/some/script' }
30
+ end
31
+
32
+ ### Test that myuser's crontab entry for command '/home/myuser/build.sh' runs every minute
33
+
34
+ describe crontab('myuser').commands('/home/myuser/build.sh') do
35
+ its('hours') { should cmp '*' }
36
+ its('minutes') { should cmp '*' }
37
+ end
38
+
39
+ ### Test that the logged-in user's crontab has no tasks set to run on every hour and every minute
40
+
41
+ describe crontab.where({'hour' => '*', 'minute' => '*'}) do
42
+ its('entries.length') { should cmp '0' }
43
+ end
44
+
45
+ ### Test that the logged-in user's crontab contains a single command that matches a pattern
46
+
47
+ describe crontab.where { command =~ /a partial command string/ } do
48
+ its('entries.length') { should cmp 1 }
49
+ end
50
+
51
+ ### Test a special time string (i.e., @yearly /root/annual_report.sh)
52
+
53
+ describe crontab.commands('/root/annual_report.sh') do
54
+ its('hours') { should cmp '0' }
55
+ its('minutes') { should cmp '0' }
56
+ its('days') { should cmp '1' }
57
+ its('months') { should cmp '1' }
58
+ end
59
+
60
+ ### Test @reboot case
61
+
62
+ describe crontab.commands('/root/reboot.sh') do
63
+ its('hours') { should cmp '-1' }
64
+ its('minutes') { should cmp '-1' }
65
+ end
66
+
67
+ <br>
68
+
69
+ ## Property Examples
70
+
71
+
72
+ ### Test a special time string
73
+
74
+ describe crontab do
75
+ its('minutes') { should cmp '0' }
76
+ its('hours') { should cmp '0' }
77
+ its('days') { should cmp '1' }
78
+ its('weekdays') { should cmp '1' }
79
+ its('user') { should include 'username'}
80
+ its('commands') { should include '/some/scheduled/task.sh' }
81
+ end
82
+
83
+ InSpec will automatically interpret crontab-supported special time strings. For example, a crontab entry set to run `@yearly` can be tested as if the entry was manually configured to run on January 1, 12 AM.
84
+
85
+ <br>
86
+
87
+ ## Matchers
88
+
89
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: About the csv Resource
3
+ platform: os
4
+ ---
5
+
6
+ # csv
7
+
8
+ Use the `csv` InSpec audit resource to test configuration data in a CSV file.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `csv` resource block declares the configuration data to be tested:
15
+
16
+ describe csv('file') do
17
+ its('name') { should cmp 'foo' }
18
+ end
19
+
20
+ where
21
+
22
+ * `'file'` is the path to a CSV file
23
+ * `name` is a configuration setting in a CSV file
24
+ * `should eq 'foo'` tests a value of `name` as read from a CSV file versus the value declared in the test
25
+
26
+ <br>
27
+
28
+ ## Examples
29
+
30
+ The following examples show how to use this InSpec audit resource.
31
+
32
+ ### Test a CSV file
33
+
34
+ describe csv('some_file.csv') do
35
+ its('setting') { should eq 1 }
36
+ end
37
+
38
+ <br>
39
+
40
+ ## Property Examples
41
+
42
+ ### name
43
+
44
+ The `name` property tests the value of `name` as read from a CSV file compared to the value declared in the test.
45
+
46
+ its('name') { should cmp 'foo' }
47
+
48
+ <br>
49
+
50
+ ## Matchers
51
+
52
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
53
+
54
+
@@ -0,0 +1,205 @@
1
+ ---
2
+ title: The dh_params Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # dh_params
7
+
8
+ Use the `dh_params` InSpec audit resource to test Diffie-Hellman (DH) parameters.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `dh_params` resource block declares a parameter file to be tested.
15
+
16
+ describe dh_params('/path/to/file.dh_pem') do
17
+ it { should be_dh_params }
18
+ it { should be_valid }
19
+ its('generator') { should eq 2 }
20
+ its('modulus') { should eq '00:91:a0:15:89:e5:bc:38:93:12:02:fc:...' }
21
+ its('prime_length') { should eq 2048 }
22
+ its('pem') { should eq '-----BEGIN DH PARAMETERS...' }
23
+ its('text') { should eq 'PKCS#3 DH Parameters: (2048 bit)...' }
24
+ end
25
+
26
+ <br>
27
+
28
+ ## Properties
29
+
30
+ * `generator`, `modulus`, `prime_length`, `pem`, `text`
31
+
32
+ <br>
33
+
34
+ ## Property Examples
35
+
36
+ ### generator (Integer)
37
+
38
+ Verify generator used for the Diffie-Hellman operation:
39
+
40
+ describe dh_params('/path/to/file.dh_pem') do
41
+ its('generator') { should eq 2 }
42
+ end
43
+
44
+ ### modulus (String)
45
+
46
+ Verify prime modulus used for the Diffie-Hellman operation:
47
+
48
+ describe dh_params('/path/to/file.dh_pem') do
49
+ its('modulus') { should eq '00:91:a0:15:89:e5:bc:38:93:12:02:fc:...' }
50
+ end
51
+
52
+ Example using multi-line string:
53
+
54
+ describe dh_params('/path/to/file.dh_pem') do
55
+ its('modulus') do
56
+ # regex removes all whitespace
57
+ should eq <<-EOF.gsub(/[[:space:]]+/, '')
58
+ 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
59
+ f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
60
+ 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
61
+ 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
62
+ 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
63
+ ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
64
+ 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
65
+ 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
66
+ 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
67
+ 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
68
+ 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
69
+ e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
70
+ 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
71
+ 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
72
+ 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
73
+ 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
74
+ 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
75
+ cd:13
76
+ EOF
77
+ end
78
+ end
79
+
80
+ ### prime_length (Integer)
81
+
82
+ Verify length of prime modulus used for the Diffie-Hellman operation:
83
+
84
+ describe dh_params('/path/to/file.dh_pem') do
85
+ its('prime_length') { should eq 2048 }
86
+ end
87
+
88
+ ### pem (String)
89
+
90
+ Verify `pem` output of DH parameters:
91
+
92
+ describe dh_params('/path/to/file.dh_pem') do
93
+ its('pem') { should eq '-----BEGIN DH PARAMETERS...' }
94
+ end
95
+
96
+ Example using multi-line string:
97
+
98
+ its('pem') do
99
+ # regex removes all leading spaces
100
+ should eq <<-EOF.gsub(/^[[:blank:]]+/, '')
101
+ -----BEGIN DH PARAMETERS-----
102
+ MIIBCAKCAQEAkaAVieW8OJMSAvyRooX39yljLtNOeob37oT+QtBIvJyR1VT4eB3A
103
+ QXiixKwaJIudiFWYC6ynI+vCqisuqfmv1I5OEbx/NaKs2jrv8CVsmqT9ACh2hixX
104
+ h2cwXbHWWyKPcqHq3ovvnjMaQJJohQJUAgn6wGDBPE4oJtvtJY44IVZA3MDAZh8r
105
+ MsO0eKkmlOr3QSiy9VsBOAxGCYUmTWkSjZUPNeLmTkc6ht2Ksv5FFSfYWcI89GL/
106
+ X3Tpd5JQRzYrBVdg7nuhYMwceit3GIo398cxPhXLFX97Zpb7xr591gNeDWB1K1ti
107
+ KqM3tjT5/pZM9sXjoVKvAcFPx0Kgvu3NEwIBAg==
108
+ -----END DH PARAMETERS-----
109
+ EOF
110
+ end
111
+
112
+ Verify via `openssl dhparam` command:
113
+
114
+ $ openssl dhparam -in /path/to/file.dh_pem
115
+ -----BEGIN DH PARAMETERS-----
116
+ MIIBCAKCAQEAkaAVieW8OJMSAvyRooX39yljLtNOeob37oT+QtBIvJyR1VT4eB3A
117
+ QXiixKwaJIudiFWYC6ynI+vCqisuqfmv1I5OEbx/NaKs2jrv8CVsmqT9ACh2hixX
118
+ h2cwXbHWWyKPcqHq3ovvnjMaQJJohQJUAgn6wGDBPE4oJtvtJY44IVZA3MDAZh8r
119
+ MsO0eKkmlOr3QSiy9VsBOAxGCYUmTWkSjZUPNeLmTkc6ht2Ksv5FFSfYWcI89GL/
120
+ X3Tpd5JQRzYrBVdg7nuhYMwceit3GIo398cxPhXLFX97Zpb7xr591gNeDWB1K1ti
121
+ KqM3tjT5/pZM9sXjoVKvAcFPx0Kgvu3NEwIBAg==
122
+ -----END DH PARAMETERS-----
123
+
124
+ ### text (String)
125
+
126
+ Verify human-readable text output of DH parameters:
127
+
128
+ describe dh_params('/path/to/file.dh_pem') do
129
+ its('text') { should eq 'PKCS#3 DH Parameters: (2048 bit)...' }
130
+ end
131
+
132
+ Example using multi-line string:
133
+
134
+ its('text') do
135
+ # regex removes 2 leading spaces
136
+ should eq <<-EOF.gsub(/^[[:blank:]]{2}/, '')
137
+ PKCS#3 DH Parameters: (2048 bit)
138
+ prime:
139
+ 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
140
+ f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
141
+ 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
142
+ 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
143
+ 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
144
+ ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
145
+ 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
146
+ 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
147
+ 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
148
+ 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
149
+ 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
150
+ e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
151
+ 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
152
+ 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
153
+ 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
154
+ 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
155
+ 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
156
+ cd:13
157
+ generator: 2 (0x2)
158
+ EOF
159
+ end
160
+
161
+ Verify via `openssl dhparam` command:
162
+
163
+ $ openssl dhparam -in /path/to/file.dh_pem -noout -text
164
+ PKCS#3 DH Parameters: (2048 bit)
165
+ prime:
166
+ 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
167
+ f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
168
+ 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
169
+ 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
170
+ 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
171
+ ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
172
+ 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
173
+ 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
174
+ 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
175
+ 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
176
+ 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
177
+ e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
178
+ 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
179
+ 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
180
+ 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
181
+ 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
182
+ 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
183
+ cd:13
184
+ generator: 2 (0x2)
185
+
186
+ <br>
187
+
188
+ ## Matchers
189
+
190
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
191
+
192
+ ### valid?
193
+
194
+ Verify whether DH parameters are valid:
195
+
196
+ describe dh_params('/path/to/file.dh_pem') do
197
+ it { should be_valid }
198
+ end
199
+
200
+ ### be\_dh\_params
201
+
202
+ describe dh_params('/path/to/file.dh_pem') do
203
+ it { should be_dh_params}
204
+ end
205
+