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,30 @@
1
+ ---
2
+ title: About the directory Resource
3
+ platform: os
4
+ ---
5
+
6
+ # directory
7
+
8
+ Use the `directory` InSpec audit resource to test if the file type is a directory. This is equivalent to using the `file` resource and the `be_directory` matcher, but provides a simpler and more direct way to test directories.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `directory` resource block declares the location of the directory to be tested, and then one (or more) matchers.
15
+
16
+ describe directory('path') do
17
+ its('property') { should cmp 'value' }
18
+ end
19
+
20
+ <br>
21
+
22
+ ## Properties
23
+
24
+ All of the properties available to `file` may be used with `directory`.
25
+
26
+ <br>
27
+
28
+ ## Matchers
29
+
30
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,219 @@
1
+ ---
2
+ title: About the docker Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # docker
7
+
8
+ Use the `docker` InSpec audit resource to test configuration data for the Docker daemon. It is a very comprehensive resource. See also: [docker_container](https://www.inspec.io/docs/reference/resources/docker_container/) and [docker_image](https://www.inspec.io/docs/reference/resources/docker_image/), too.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `docker` resource block declares allows you to write test for many containers:
15
+
16
+ describe docker.containers do
17
+ its('images') { should_not include 'u12:latest' }
18
+ end
19
+
20
+ or:
21
+
22
+ describe docker.containers.where { names == 'flamboyant_colden' } do
23
+ it { should be_running }
24
+ end
25
+
26
+ where
27
+
28
+ * `.where()` may specify a specific item and value, to which the resource parameters are compared
29
+ * `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
30
+
31
+ The `docker` resource block also declares allows you to write test for many images:
32
+
33
+ describe docker.images do
34
+ its('repositories') { should_not include 'inssecure_image' }
35
+ end
36
+
37
+ or if you want to query specific images:
38
+
39
+ describe docker.images.where { repository == 'ubuntu' && tag == '12.04' } do
40
+ it { should_not exist }
41
+ end
42
+
43
+ where
44
+
45
+ * `.where()` may specify a specific filter and expected value, against which parameters are compared
46
+
47
+ <br>
48
+
49
+ ## Examples
50
+
51
+ The following examples show how to use this InSpec audit resource.
52
+
53
+ ### Return all running containers
54
+
55
+ docker.containers.running?.ids.each do |id|
56
+ describe docker.object(id) do
57
+ its('State.Health.Status') { should eq 'healthy' }
58
+ end
59
+ end
60
+
61
+ ### Verify a Docker Server and Client version
62
+
63
+ describe docker.version do
64
+ its('Server.Version') { should cmp >= '1.12'}
65
+ its('Client.Version') { should cmp >= '1.12'}
66
+ end
67
+
68
+ ### Iterate over all containers to verify host coniguration
69
+
70
+ docker.containers.ids.each do |id|
71
+ # call Docker inspect for a specific container id
72
+ describe docker.object(id) do
73
+ its(%w(HostConfig Privileged)) { should cmp false }
74
+ its(%w(HostConfig Privileged)) { should_not cmp true }
75
+ end
76
+ end
77
+
78
+ ### Iterate over all images to verify the container was built without ADD instruction
79
+
80
+ docker.images.ids.each do |id|
81
+ describe command("docker history #{id}| grep 'ADD'") do
82
+ its('stdout') { should eq '' }
83
+ end
84
+ end
85
+
86
+ ### Verify that health-checks are enabled for a container
87
+
88
+ describe docker.object('71b5df59442b') do
89
+ its(%w(Config Healthcheck)) { should_not eq nil }
90
+ end
91
+
92
+ <br>
93
+
94
+ ## How to run the DevSec Docker baseline profile
95
+
96
+ There are two ways to run the `docker-baseline` profile to test Docker via the `docker` resource.
97
+
98
+ Clone the profile:
99
+
100
+ $ git clone https://github.com/dev-sec/cis-docker-benchmark.git
101
+
102
+ and then run:
103
+
104
+ $ inspec exec cis-docker-benchmark
105
+
106
+ Or execute the profile directly via URL:
107
+
108
+ $ inspec exec https://github.com/dev-sec/cis-docker-benchmark
109
+
110
+ <br>
111
+
112
+ ## Resource Parameters
113
+
114
+ * `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
115
+
116
+ <br>
117
+
118
+ ## Resource Parameter Examples
119
+
120
+ ### containers
121
+
122
+ `containers` returns information about containers as returned by [docker ps -a](https://docs.docker.com/engine/reference/commandline/ps/).
123
+
124
+ describe docker.containers do
125
+ its('ids') { should include 'sha:71b5df59...442b' }
126
+ its('commands') { should_not include '/bin/sh' }
127
+ its('images') { should_not include 'u12:latest' }
128
+ its('ports') { should include '0.0.0.0:1234->1234/tcp' }
129
+ its('labels') { should include 'License=GPLv2,Vendor=CentOS' }
130
+ end
131
+
132
+ ### object('id')
133
+
134
+ `object` returns low-level information about Docker objects. It is calling [docker inspect](https://docs.docker.com/engine/reference/commandline/info/) under the hood.
135
+
136
+ describe docker.object(id) do
137
+ its('Configuration.Path') { should eq 'value' }
138
+ end
139
+
140
+ ### images
141
+
142
+ `images` returns information about a Docker image as returned by [docker images](https://docs.docker.com/engine/reference/commandline/images/).
143
+
144
+ describe docker.images do
145
+ its('ids') { should include 'sha:12b5df59...442b' }
146
+ its('repositories') { should_not include 'my_image' }
147
+ its('tags') { should_not include 'unwanted_tag' }
148
+ its('sizes') { should_not include "1.41 GB" }
149
+ end
150
+
151
+ ### info
152
+
153
+ `info` returns the parsed result of [docker info](https://docs.docker.com/engine/reference/commandline/info/)
154
+
155
+ describe docker.info do
156
+ its('Configuration.Path') { should eq 'value' }
157
+ end
158
+
159
+ ### version
160
+
161
+ `info` returns the parsed result of [docker version](https://docs.docker.com/engine/reference/commandline/version/)
162
+
163
+ describe docker.version do
164
+ its('Server.Version') { should cmp >= '1.12'}
165
+ its('Client.Version') { should cmp >= '1.12'}
166
+ end
167
+
168
+ <br>
169
+
170
+ ## Properties
171
+
172
+ * `id`, `image`, `repo`, `tag`, `ports`, `command`
173
+
174
+ <br>
175
+
176
+ ## Property Examples
177
+
178
+ ### id
179
+
180
+ describe docker_container(name: 'an-echo-server') do
181
+ its('id') { should_not eq '' }
182
+ end
183
+
184
+ ### image
185
+
186
+ describe docker_container(name: 'an-echo-server') do
187
+ its('image') { should eq 'busybox:latest' }
188
+ end
189
+
190
+ ### repo
191
+
192
+ describe docker_container(name: 'an-echo-server') do
193
+ its('repo') { should eq 'busybox' }
194
+ end
195
+
196
+ ### tag
197
+
198
+ describe docker_container(name: 'an-echo-server') do
199
+ its('tag') { should eq 'latest' }
200
+ end
201
+
202
+ ### ports
203
+
204
+ describe docker_container(name: 'an-echo-server') do
205
+ its('ports') { should eq "0.0.0.0:1234->1234/tcp" }
206
+ end
207
+
208
+ ### command
209
+
210
+ describe docker_container(name: 'an-echo-server') do
211
+ its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
212
+ end
213
+
214
+ <br>
215
+
216
+ ## Matchers
217
+
218
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
219
+
@@ -0,0 +1,103 @@
1
+ ---
2
+ title: About the docker_container Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # docker_container
7
+
8
+ Use the `docker_container` InSpec audit resource to test a Docker container.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `docker_container` resource block declares the configuration data to be tested:
15
+
16
+ describe docker_container('container') do
17
+ it { should exist }
18
+ it { should be_running }
19
+ its('id') { should_not eq '' }
20
+ its('image') { should eq 'busybox:latest' }
21
+ its('repo') { should eq 'busybox' }
22
+ its('tag') { should eq 'latest' }
23
+ its('ports') { should eq [] }
24
+ its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
25
+ end
26
+
27
+ <br>
28
+
29
+ ## Resource Parameter Examples
30
+
31
+ ### name
32
+
33
+ The container name can also be passed with the `name` resource parameter:
34
+
35
+ describe docker_container(name: 'an-echo-server') do
36
+ it { should exist }
37
+ it { should be_running }
38
+ end
39
+
40
+ ### id
41
+
42
+ Alternatively, you can pass in the container id:
43
+
44
+ describe docker_container(id: '71b5df59442b') do
45
+ it { should exist }
46
+ it { should be_running }
47
+ end
48
+
49
+ <br>
50
+
51
+ ## Property Examples
52
+
53
+ The following examples show how to use this InSpec resource.
54
+
55
+ ### id
56
+
57
+ The `id` property tests the container id:
58
+
59
+ its('id') { should eq 'sha:71b5df59...442b' }
60
+
61
+ ### repo
62
+
63
+ The `repo` property tests the value of the image repository:
64
+
65
+ its('repo') { should eq 'busybox' }
66
+
67
+ ### tag
68
+
69
+ The `tag` property tests the value of the image tag:
70
+
71
+ its('tag') { should eq 'latest' }
72
+
73
+ ### ports
74
+
75
+ The `ports` property tests the value the Docker ports:
76
+
77
+ its('ports') { should eq '0.0.0.0:1234->1234/tcp' }
78
+
79
+ ### command
80
+
81
+ The `command` property tests the value of the container run command:
82
+
83
+ its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
84
+
85
+
86
+ ### Verify a running container:
87
+
88
+ describe docker_container('an-echo-server') do
89
+ it { should exist }
90
+ it { should be_running }
91
+ its('id') { should_not eq '' }
92
+ its('image') { should eq 'busybox:latest' }
93
+ its('repo') { should eq 'busybox' }
94
+ its('tag') { should eq 'latest' }
95
+ its('ports') { should eq [] }
96
+ its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
97
+ end
98
+
99
+ <br>
100
+
101
+ ## Matchers
102
+
103
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -0,0 +1,94 @@
1
+ ---
2
+ title: About the docker_image Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # docker_image
7
+
8
+ Use the `docker_image` InSpec audit resource to verify a Docker image.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `docker_image` resource block declares the image:
15
+
16
+ describe docker_image('alpine:latest') do
17
+ it { should exist }
18
+ its('id') { should eq 'sha256:4a415e...a526' }
19
+ its('repo') { should eq 'alpine' }
20
+ its('tag') { should eq 'latest' }
21
+ end
22
+
23
+ <br>
24
+
25
+ ## Resource Parameter Examples
26
+
27
+ The resource allows you to pass in an image id:
28
+
29
+ describe docker_image(id: alpine_id) do
30
+ ...
31
+ end
32
+
33
+ If the tag is missing for an image, `latest` is assumed as default:
34
+
35
+ describe docker_image('alpine') do
36
+ ...
37
+ end
38
+
39
+ You can also pass in repository and tag as separate values
40
+
41
+ describe docker_image(repo: 'alpine', tag: 'latest') do
42
+ ...
43
+ end
44
+
45
+ <br>
46
+
47
+ ## Property Examples
48
+
49
+ ### id
50
+
51
+ The `id` property returns the full image id:
52
+
53
+ its('id') { should eq 'sha256:4a415e3663882fbc554ee830889c68a33b3585503892cc718a4698e91ef2a526' }
54
+
55
+ ### image
56
+
57
+ The `image` property tests the value of the image. It is a combination of `repository/tag`:
58
+
59
+ its('image') { should eq 'alpine:latest' }
60
+
61
+ ### repo
62
+
63
+ The `repo` property tests the value of the repository name:
64
+
65
+ its('repo') { should eq 'alpine' }
66
+
67
+ ### tag
68
+
69
+ The `tag` property tests the value of image tag:
70
+
71
+ its('tag') { should eq 'latest' }
72
+
73
+ ### Test a Docker image
74
+
75
+ describe docker_image('alpine:latest') do
76
+ it { should exist }
77
+ its('id') { should eq 'sha256:4a415e...a526' }
78
+ its('image') { should eq 'alpine:latest' }
79
+ its('repo') { should eq 'alpine' }
80
+ its('tag') { should eq 'latest' }
81
+ end
82
+
83
+ <br>
84
+
85
+ ## Matchers
86
+
87
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
88
+
89
+ ### exist
90
+
91
+ The `exist` matcher tests if the image is available on the node:
92
+
93
+ it { should exist }
94
+
@@ -0,0 +1,114 @@
1
+ ---
2
+ title: About the docker_service Resource
3
+ platform: linux
4
+ ---
5
+
6
+ # docker_service
7
+
8
+ Use the `docker_service` InSpec audit resource to verify a docker swarm service.
9
+
10
+ <br>
11
+
12
+ ## Syntax
13
+
14
+ A `docker_service` resource block declares the service by name:
15
+
16
+ describe docker_service('foo') do
17
+ it { should exist }
18
+ its('id') { should eq '2ghswegspre1' }
19
+ its('repo') { should eq 'alpine' }
20
+ its('tag') { should eq 'latest' }
21
+ end
22
+
23
+ <br>
24
+
25
+ ## Resource Parameter Examples
26
+
27
+ The resource allows you to pass in a service id:
28
+
29
+ describe docker_service(id: '2ghswegspre1') do
30
+ ...
31
+ end
32
+
33
+ You can also pass in the fully-qualified image:
34
+
35
+ describe docker_service(image: 'localhost:5000/alpine:latest') do
36
+ ...
37
+ end
38
+
39
+ <br>
40
+
41
+ ## Property Examples
42
+
43
+ The following examples show how to use InSpec `docker_service` resource.
44
+
45
+ ### id
46
+
47
+ The `id` property returns the service id:
48
+
49
+ its('id') { should eq '2ghswegspre1' }
50
+
51
+ ### image
52
+
53
+ The `image` property tests the value of the image. It is a combination of `repository:tag`:
54
+
55
+ its('image') { should eq 'alpine:latest' }
56
+
57
+ ### mode
58
+
59
+ The `mode` property tests the value of the service mode:
60
+
61
+ its('mode') { should eq 'replicated' }
62
+
63
+ ### name
64
+
65
+ The `name` property tests the value of the service name:
66
+
67
+ its('name') { should eq 'foo' }
68
+
69
+ ### ports
70
+
71
+ The `ports` property tests the value of the service's published ports:
72
+
73
+ its('ports') { should include '*:8000->8000/tcp' }
74
+
75
+ ### repo
76
+
77
+ The `repo` property tests the value of the repository name:
78
+
79
+ its('repo') { should eq 'alpine' }
80
+
81
+ ### replicas
82
+
83
+ The `replicas` property tests the value of the service's replica count:
84
+
85
+ its('replicas') { should eq '3/3' }
86
+
87
+ ### tag
88
+
89
+ The `tag` property tests the value of image tag:
90
+
91
+ its('tag') { should eq 'latest' }
92
+
93
+ ### Test a docker service
94
+
95
+ describe docker_service('foo') do
96
+ it { should exist }
97
+ its('id') { should eq '2ghswegspre1' }
98
+ its('repo') { should eq 'alpine' }
99
+ its('tag') { should eq 'latest' }
100
+ end
101
+
102
+ <br>
103
+
104
+ ## Matchers
105
+
106
+ For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
107
+
108
+ ### exist
109
+
110
+ The `exist` matcher tests if the image is available on the node:
111
+
112
+ it { should exist }
113
+
114
+