inspec-core 2.3.10 → 2.3.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -13
  3. data/etc/plugin_filters.json +25 -0
  4. data/inspec-core.gemspec +1 -1
  5. data/lib/bundles/inspec-compliance/api.rb +3 -0
  6. data/lib/bundles/inspec-compliance/configuration.rb +3 -0
  7. data/lib/bundles/inspec-compliance/http.rb +3 -0
  8. data/lib/bundles/inspec-compliance/support.rb +3 -0
  9. data/lib/bundles/inspec-compliance/target.rb +3 -0
  10. data/lib/inspec/objects/attribute.rb +3 -0
  11. data/lib/inspec/plugin/v2.rb +3 -0
  12. data/lib/inspec/plugin/v2/filter.rb +62 -0
  13. data/lib/inspec/plugin/v2/installer.rb +21 -1
  14. data/lib/inspec/plugin/v2/loader.rb +4 -0
  15. data/lib/inspec/profile.rb +3 -1
  16. data/lib/inspec/version.rb +1 -1
  17. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +25 -3
  18. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +65 -11
  19. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +5 -1
  20. data/lib/resources/package.rb +1 -1
  21. metadata +4 -197
  22. data/docs/.gitignore +0 -2
  23. data/docs/README.md +0 -41
  24. data/docs/dev/control-eval.md +0 -62
  25. data/docs/dev/filtertable-internals.md +0 -353
  26. data/docs/dev/filtertable-usage.md +0 -533
  27. data/docs/dev/integration-testing.md +0 -31
  28. data/docs/dev/plugins.md +0 -323
  29. data/docs/dsl_inspec.md +0 -354
  30. data/docs/dsl_resource.md +0 -100
  31. data/docs/glossary.md +0 -381
  32. data/docs/habitat.md +0 -193
  33. data/docs/inspec_and_friends.md +0 -114
  34. data/docs/matchers.md +0 -161
  35. data/docs/migration.md +0 -293
  36. data/docs/platforms.md +0 -119
  37. data/docs/plugin_kitchen_inspec.md +0 -60
  38. data/docs/plugins.md +0 -57
  39. data/docs/profiles.md +0 -576
  40. data/docs/reporters.md +0 -170
  41. data/docs/resources/aide_conf.md.erb +0 -86
  42. data/docs/resources/apache.md.erb +0 -77
  43. data/docs/resources/apache_conf.md.erb +0 -78
  44. data/docs/resources/apt.md.erb +0 -81
  45. data/docs/resources/audit_policy.md.erb +0 -57
  46. data/docs/resources/auditd.md.erb +0 -89
  47. data/docs/resources/auditd_conf.md.erb +0 -78
  48. data/docs/resources/bash.md.erb +0 -85
  49. data/docs/resources/bond.md.erb +0 -100
  50. data/docs/resources/bridge.md.erb +0 -67
  51. data/docs/resources/bsd_service.md.erb +0 -77
  52. data/docs/resources/chocolatey_package.md.erb +0 -68
  53. data/docs/resources/command.md.erb +0 -176
  54. data/docs/resources/cpan.md.erb +0 -89
  55. data/docs/resources/cran.md.erb +0 -74
  56. data/docs/resources/crontab.md.erb +0 -103
  57. data/docs/resources/csv.md.erb +0 -64
  58. data/docs/resources/dh_params.md.erb +0 -221
  59. data/docs/resources/directory.md.erb +0 -40
  60. data/docs/resources/docker.md.erb +0 -240
  61. data/docs/resources/docker_container.md.erb +0 -113
  62. data/docs/resources/docker_image.md.erb +0 -104
  63. data/docs/resources/docker_plugin.md.erb +0 -80
  64. data/docs/resources/docker_service.md.erb +0 -124
  65. data/docs/resources/elasticsearch.md.erb +0 -252
  66. data/docs/resources/etc_fstab.md.erb +0 -135
  67. data/docs/resources/etc_group.md.erb +0 -85
  68. data/docs/resources/etc_hosts.md.erb +0 -88
  69. data/docs/resources/etc_hosts_allow.md.erb +0 -84
  70. data/docs/resources/etc_hosts_deny.md.erb +0 -84
  71. data/docs/resources/file.md.erb +0 -543
  72. data/docs/resources/filesystem.md.erb +0 -51
  73. data/docs/resources/firewalld.md.erb +0 -117
  74. data/docs/resources/gem.md.erb +0 -108
  75. data/docs/resources/group.md.erb +0 -71
  76. data/docs/resources/grub_conf.md.erb +0 -111
  77. data/docs/resources/host.md.erb +0 -96
  78. data/docs/resources/http.md.erb +0 -207
  79. data/docs/resources/iis_app.md.erb +0 -132
  80. data/docs/resources/iis_site.md.erb +0 -145
  81. data/docs/resources/inetd_conf.md.erb +0 -104
  82. data/docs/resources/ini.md.erb +0 -86
  83. data/docs/resources/interface.md.erb +0 -68
  84. data/docs/resources/iptables.md.erb +0 -74
  85. data/docs/resources/json.md.erb +0 -73
  86. data/docs/resources/kernel_module.md.erb +0 -130
  87. data/docs/resources/kernel_parameter.md.erb +0 -63
  88. data/docs/resources/key_rsa.md.erb +0 -95
  89. data/docs/resources/launchd_service.md.erb +0 -67
  90. data/docs/resources/limits_conf.md.erb +0 -85
  91. data/docs/resources/login_defs.md.erb +0 -81
  92. data/docs/resources/mount.md.erb +0 -79
  93. data/docs/resources/mssql_session.md.erb +0 -78
  94. data/docs/resources/mysql_conf.md.erb +0 -109
  95. data/docs/resources/mysql_session.md.erb +0 -84
  96. data/docs/resources/nginx.md.erb +0 -89
  97. data/docs/resources/nginx_conf.md.erb +0 -148
  98. data/docs/resources/npm.md.erb +0 -78
  99. data/docs/resources/ntp_conf.md.erb +0 -70
  100. data/docs/resources/oneget.md.erb +0 -63
  101. data/docs/resources/oracledb_session.md.erb +0 -103
  102. data/docs/resources/os.md.erb +0 -153
  103. data/docs/resources/os_env.md.erb +0 -101
  104. data/docs/resources/package.md.erb +0 -130
  105. data/docs/resources/packages.md.erb +0 -77
  106. data/docs/resources/parse_config.md.erb +0 -113
  107. data/docs/resources/parse_config_file.md.erb +0 -148
  108. data/docs/resources/passwd.md.erb +0 -151
  109. data/docs/resources/pip.md.erb +0 -77
  110. data/docs/resources/port.md.erb +0 -147
  111. data/docs/resources/postgres_conf.md.erb +0 -89
  112. data/docs/resources/postgres_hba_conf.md.erb +0 -103
  113. data/docs/resources/postgres_ident_conf.md.erb +0 -86
  114. data/docs/resources/postgres_session.md.erb +0 -79
  115. data/docs/resources/powershell.md.erb +0 -112
  116. data/docs/resources/processes.md.erb +0 -119
  117. data/docs/resources/rabbitmq_config.md.erb +0 -51
  118. data/docs/resources/registry_key.md.erb +0 -197
  119. data/docs/resources/runit_service.md.erb +0 -67
  120. data/docs/resources/security_policy.md.erb +0 -57
  121. data/docs/resources/service.md.erb +0 -131
  122. data/docs/resources/shadow.md.erb +0 -267
  123. data/docs/resources/ssh_config.md.erb +0 -83
  124. data/docs/resources/sshd_config.md.erb +0 -93
  125. data/docs/resources/ssl.md.erb +0 -129
  126. data/docs/resources/sys_info.md.erb +0 -52
  127. data/docs/resources/systemd_service.md.erb +0 -67
  128. data/docs/resources/sysv_service.md.erb +0 -67
  129. data/docs/resources/upstart_service.md.erb +0 -67
  130. data/docs/resources/user.md.erb +0 -150
  131. data/docs/resources/users.md.erb +0 -137
  132. data/docs/resources/vbscript.md.erb +0 -65
  133. data/docs/resources/virtualization.md.erb +0 -67
  134. data/docs/resources/windows_feature.md.erb +0 -69
  135. data/docs/resources/windows_hotfix.md.erb +0 -63
  136. data/docs/resources/windows_task.md.erb +0 -95
  137. data/docs/resources/wmi.md.erb +0 -91
  138. data/docs/resources/x509_certificate.md.erb +0 -161
  139. data/docs/resources/xinetd_conf.md.erb +0 -166
  140. data/docs/resources/xml.md.erb +0 -95
  141. data/docs/resources/yaml.md.erb +0 -79
  142. data/docs/resources/yum.md.erb +0 -108
  143. data/docs/resources/zfs_dataset.md.erb +0 -63
  144. data/docs/resources/zfs_pool.md.erb +0 -57
  145. data/docs/shared/matcher_be.md.erb +0 -1
  146. data/docs/shared/matcher_cmp.md.erb +0 -43
  147. data/docs/shared/matcher_eq.md.erb +0 -3
  148. data/docs/shared/matcher_include.md.erb +0 -1
  149. data/docs/shared/matcher_match.md.erb +0 -1
  150. data/docs/shell.md +0 -217
  151. data/docs/style.md +0 -178
  152. data/examples/README.md +0 -8
  153. data/examples/custom-resource/README.md +0 -3
  154. data/examples/custom-resource/controls/example.rb +0 -7
  155. data/examples/custom-resource/inspec.yml +0 -8
  156. data/examples/custom-resource/libraries/batsignal.rb +0 -20
  157. data/examples/custom-resource/libraries/gordon.rb +0 -21
  158. data/examples/inheritance/README.md +0 -65
  159. data/examples/inheritance/controls/example.rb +0 -14
  160. data/examples/inheritance/inspec.yml +0 -16
  161. data/examples/kitchen-ansible/.kitchen.yml +0 -25
  162. data/examples/kitchen-ansible/Gemfile +0 -19
  163. data/examples/kitchen-ansible/README.md +0 -53
  164. data/examples/kitchen-ansible/files/nginx.repo +0 -6
  165. data/examples/kitchen-ansible/tasks/main.yml +0 -16
  166. data/examples/kitchen-ansible/test/integration/default/default.yml +0 -5
  167. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +0 -28
  168. data/examples/kitchen-chef/.kitchen.yml +0 -20
  169. data/examples/kitchen-chef/Berksfile +0 -3
  170. data/examples/kitchen-chef/Gemfile +0 -19
  171. data/examples/kitchen-chef/README.md +0 -27
  172. data/examples/kitchen-chef/metadata.rb +0 -7
  173. data/examples/kitchen-chef/recipes/default.rb +0 -6
  174. data/examples/kitchen-chef/recipes/nginx.rb +0 -30
  175. data/examples/kitchen-chef/test/integration/default/web_spec.rb +0 -28
  176. data/examples/kitchen-puppet/.kitchen.yml +0 -23
  177. data/examples/kitchen-puppet/Gemfile +0 -20
  178. data/examples/kitchen-puppet/Puppetfile +0 -25
  179. data/examples/kitchen-puppet/README.md +0 -53
  180. data/examples/kitchen-puppet/manifests/site.pp +0 -33
  181. data/examples/kitchen-puppet/metadata.json +0 -11
  182. data/examples/kitchen-puppet/modules/.gitkeep +0 -0
  183. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +0 -28
  184. data/examples/meta-profile/README.md +0 -37
  185. data/examples/meta-profile/controls/example.rb +0 -13
  186. data/examples/meta-profile/inspec.yml +0 -13
  187. data/examples/plugins/inspec-resource-lister/Gemfile +0 -12
  188. data/examples/plugins/inspec-resource-lister/LICENSE +0 -13
  189. data/examples/plugins/inspec-resource-lister/README.md +0 -62
  190. data/examples/plugins/inspec-resource-lister/Rakefile +0 -40
  191. data/examples/plugins/inspec-resource-lister/inspec-resource-lister.gemspec +0 -45
  192. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister.rb +0 -16
  193. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/cli_command.rb +0 -70
  194. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/plugin.rb +0 -55
  195. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/version.rb +0 -10
  196. data/examples/plugins/inspec-resource-lister/test/fixtures/README.md +0 -24
  197. data/examples/plugins/inspec-resource-lister/test/functional/README.md +0 -18
  198. data/examples/plugins/inspec-resource-lister/test/functional/inspec_resource_lister_test.rb +0 -110
  199. data/examples/plugins/inspec-resource-lister/test/helper.rb +0 -26
  200. data/examples/plugins/inspec-resource-lister/test/unit/README.md +0 -17
  201. data/examples/plugins/inspec-resource-lister/test/unit/cli_args_test.rb +0 -64
  202. data/examples/plugins/inspec-resource-lister/test/unit/plugin_def_test.rb +0 -51
  203. data/examples/profile-attribute.yml +0 -2
  204. data/examples/profile-attribute/README.md +0 -14
  205. data/examples/profile-attribute/controls/example.rb +0 -11
  206. data/examples/profile-attribute/inspec.yml +0 -8
  207. data/examples/profile-sensitive/README.md +0 -29
  208. data/examples/profile-sensitive/controls/sensitive-failures.rb +0 -9
  209. data/examples/profile-sensitive/controls/sensitive.rb +0 -9
  210. data/examples/profile-sensitive/inspec.yml +0 -8
  211. data/examples/profile/README.md +0 -48
  212. data/examples/profile/controls/example.rb +0 -24
  213. data/examples/profile/controls/gordon.rb +0 -36
  214. data/examples/profile/controls/meta.rb +0 -36
  215. data/examples/profile/inspec.yml +0 -11
  216. data/examples/profile/libraries/gordon_config.rb +0 -59
data/docs/migration.md DELETED
@@ -1,293 +0,0 @@
1
- ---
2
- title: InSpec Migration Guide
3
- ---
4
-
5
- # Migrate from Serverspec to InSpec
6
-
7
- ## How is InSpec different from Serverspec
8
-
9
- We've written a complete blog post about that topic: [The Road to InSpec](https://blog.chef.io/2015/11/04/the-road-to-inspec/)
10
-
11
- ## Is InSpec suitable for infrastructure testing?
12
-
13
- InSpec is a framework that allows you to run infrastructure testing as well as compliance testing. The compliance features are always optional and provide customers a way to use InSpec for both use-cases. To ensure we build the best infrastructure testing, we migrate our cookbooks [chef-cookbooks](https://github.com/chef-cookbooks) to InSpec.
14
-
15
- ## Which Serverspec resources are available in InSpec?
16
-
17
- The following resources are available in InSpec:
18
-
19
- | Serverspec | InSpec |
20
- |:------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------:|
21
- | [`bond`](http://serverspec.org/resource_types.html#bond) | [`bond`](https://www.inspec.io/docs/reference/resources/bond/) |
22
- | [`bridge`](http://serverspec.org/resource_types.html#bridge) | [`bridge`](https://www.inspec.io/docs/reference/resources/bridge/) |
23
- | [`command`](http://serverspec.org/resource_types.html#command) | [`command`](https://www.inspec.io/docs/reference/resources/command/) |
24
- | [`cron`](http://serverspec.org/resource_types.html#cron) | [`crontab`](https://www.inspec.io/docs/reference/resources/crontab/) |
25
- | [`docker_container`](http://serverspec.org/resource_types.html#docker_container) | [`docker_container`](https://www.inspec.io/docs/reference/resources/docker_container/) |
26
- | [`docker_image`](http://serverspec.org/resource_types.html#docker_image) | [`docker_image`](https://www.inspec.io/docs/reference/resources/docker_image/) |
27
- | [`file`](http://serverspec.org/resource_types.html#file) | [`file`](https://www.inspec.io/docs/reference/resources/file/) |
28
- | [`group`](http://serverspec.org/resource_types.html#group) | [`group`](https://www.inspec.io/docs/reference/resources/group/) |
29
- | [`host`](http://serverspec.org/resource_types.html#host) | [`host`](https://www.inspec.io/docs/reference/resources/host/) |
30
- | [`interface`](http://serverspec.org/resource_types.html#interface) | [`interface`](https://www.inspec.io/docs/reference/resources/interface/) |
31
- | [`iis_website`](http://serverspec.org/resource_types.html#iis_website) | [`iis_website`](https://www.inspec.io/docs/reference/resources/iis_website/) |
32
- | [`iis_app_pool`](http://serverspec.org/resource_types.html#iis_app_pool) | [`iis_website`](https://www.inspec.io/docs/reference/resources/iis_website/) |
33
- | [`iptables`](http://serverspec.org/resource_types.html#iptables) | [`iptables`](https://www.inspec.io/docs/reference/resources/iptables/) |
34
- | [`kernel_module`](http://serverspec.org/resource_types.html#kernel_module) | [`kernel_module`](https://www.inspec.io/docs/reference/resources/kernel_module/) |
35
- | [`linux_kernel_parameter`](http://serverspec.org/resource_types.html#linux_kernel_parameter) | [`kernel_parameter`](https://www.inspec.io/docs/reference/resources/kernel_parameter/) |
36
- | [`mysql_config`](http://serverspec.org/resource_types.html#mysql_config) | [`mysql_conf`](https://www.inspec.io/docs/reference/resources/mysql_conf/) |
37
- | [`package`](http://serverspec.org/resource_types.html#package) | [`package`](https://www.inspec.io/docs/reference/resources/package/) |
38
- | [`port`](http://serverspec.org/resource_types.html#port) | [`port`](https://www.inspec.io/docs/reference/resources/port/) |
39
- | [`ppa`](http://serverspec.org/resource_types.html#ppa) | [`apt`](https://www.inspec.io/docs/reference/resources/apt/) |
40
- | [`process`](http://serverspec.org/resource_types.html#process) | [`processes`](https://www.inspec.io/docs/reference/resources/processes/) |
41
- | [`service`](http://serverspec.org/resource_types.html#service) | [`service`](https://www.inspec.io/docs/reference/resources/service/) |
42
- | [`user`](http://serverspec.org/resource_types.html#user) | [`user`](https://www.inspec.io/docs/reference/resources/user/) |
43
- | [`windows_feature`](http://serverspec.org/resource_types.html#windows_feature) | [`windows_feature`](https://www.inspec.io/docs/reference/resources/windows_feature/) |
44
- | [`windows_registry_key`](http://serverspec.org/resource_types.html#windows_registry_key) | [`registry_key`](https://www.inspec.io/docs/reference/resources/registry_key/) |
45
- | [`x509_certificate`](http://serverspec.org/resource_types.html#x509_certificate) | [`x509_certificate`](https://www.inspec.io/docs/reference/resources/x509_certificate/) |
46
- | [`yumrepo`](http://serverspec.org/resource_types.html#yumrepo) | [`yum`](https://www.inspec.io/docs/reference/resources/yum/) |
47
- | [`zfs`](http://serverspec.org/resource_types.html#zfs) | [`zfs_pool`](https://www.inspec.io/docs/reference/resources/zfs_pool/) |
48
-
49
- Some Serverspec resources are not available yet. We will implement those resources based on user feedback. If you need a resource that is not available in InSpec, please open an [Github issue](https://github.com/chef/inspec/issues). The list of resources that are not available in InSpec:
50
-
51
- * [`cgroup`](http://serverspec.org/resource_types.html#cgroup)
52
- * [`default_gateway`](http://serverspec.org/resource_types.html#default_gateway)
53
- * [`ip6tables`](http://serverspec.org/resource_types.html#ip6tables)
54
- * [`ipfilter`](http://serverspec.org/resource_types.html#ipfilter)
55
- * [`ipnat`](http://serverspec.org/resource_types.html#ipnat)
56
- * [`linux_audit_system`](http://serverspec.org/resource_types.html#linux_audit_system)
57
- * [`lxc`](http://serverspec.org/resource_types.html#lxc)
58
- * [`mail_alias`](http://serverspec.org/resource_types.html#mail_alias)
59
- * [`php_config`](http://serverspec.org/resource_types.html#php_config)
60
- * [`routing_table`](http://serverspec.org/resource_types.html#routing_table)
61
- * [`selinux`](http://serverspec.org/resource_types.html#selinux)
62
- * [`selinux_module`](http://serverspec.org/resource_types.html#selinux_module)
63
- * [`x509_private_key`](http://serverspec.org/resource_types.html#x509_private_key)
64
-
65
- In addition InSpec provides additional [resources](https://www.inspec.io/docs/reference/resources/) that are not available in Serverspec:
66
-
67
- * [`apache_conf`](https://www.inspec.io/docs/reference/resources/apache_conf/)
68
- * [`apt`](https://www.inspec.io/docs/reference/resources/apt/)
69
- * [`audit_policy`](https://www.inspec.io/docs/reference/resources/audit_policy/)
70
- * [`auditd_conf`](https://www.inspec.io/docs/reference/resources/auditd_conf/)
71
- * [`bash`](https://www.inspec.io/docs/reference/resources/bash/)
72
- * [`csv`](https://www.inspec.io/docs/reference/resources/csv/)
73
- * [`etc_shadow`](https://www.inspec.io/docs/reference/resources/etc_shadow/)
74
- * [`gem`](https://www.inspec.io/docs/reference/resources/gem/)
75
- * [`grub_conf`](https://www.inspec.io/docs/reference/resources/grub_conf/)
76
- * [`inetd_conf`](https://www.inspec.io/docs/reference/resources/inetd_conf/)
77
- * [`ini`](https://www.inspec.io/docs/reference/resources/ini/)
78
- * [`json`](https://www.inspec.io/docs/reference/resources/json/)
79
- * [`npm`](https://www.inspec.io/docs/reference/resources/npm/)
80
- * [`ntp_conf`](https://www.inspec.io/docs/reference/resources/ntp_conf/)
81
- * [`oneget`](https://www.inspec.io/docs/reference/resources/oneget/)
82
- * [`pip`](https://www.inspec.io/docs/reference/resources/pip/)
83
- * [`powershell`](https://www.inspec.io/docs/reference/resources/powershell/)
84
- * [`security_policy`](https://www.inspec.io/docs/reference/resources/security_policy/)
85
- * [`ssh_config`](https://www.inspec.io/docs/reference/resources/ssh_config/)
86
- * [`sshd_config`](https://www.inspec.io/docs/reference/resources/sshd_config/)
87
- * [`sys_info`](https://www.inspec.io/docs/reference/resources/sys_info/)
88
-
89
- ## How do I migrate my Serverspec tests to InSpec
90
-
91
- For most cases, the migration to InSpec is pretty straight forward. First, replace the current verifier in `kitchen.yml` configuration with:
92
-
93
- ```
94
- verifier:
95
- name: inspec
96
- ```
97
-
98
- Second, rename the directory `test/integration/default/serverspec` to
99
- `test/integration/default/inspec`
100
-
101
- Third, remove the Serverspec-specific code from the test files.
102
-
103
- ```
104
- require 'serverspec'
105
-
106
- # Required by serverspec
107
- set :backend, :exec
108
- ```
109
-
110
- InSpec is now configured with Test-Kitchen:
111
-
112
- ```
113
- kitchen verify package-install-centos-72
114
- -----> Starting Kitchen (v1.14.2)
115
- -----> Verifying <package-install-centos-72>...
116
- Detected alternative framework tests for `inspec`
117
- Loaded
118
-
119
- Target: ssh://vagrant@127.0.0.1:2200
120
-
121
-
122
- PHP has
123
- ✔ php
124
- ✔ the pear.php.net channel
125
- ✔ the pecl.php.net channel
126
-
127
- Test Summary: 3 successful, 0 failures, 0 skipped
128
- Finished verifying <package-install-centos-72> (0m0.40s).
129
- -----> Kitchen is finished. (0m3.31s)
130
- ```
131
-
132
- Some real-world migrations are available:
133
-
134
- * [docker](https://github.com/chef-cookbooks/docker)
135
- * [nginx](https://github.com/chef-cookbooks/chef_nginx/pull/5/files)
136
- * [mysql](https://github.com/chef-cookbooks/mysql/pull/430/files)
137
- * [php](https://github.com/chef-cookbooks/php/pull/189/files)
138
-
139
- Some general recommendations:
140
-
141
- * use test-kitchen 1.14+
142
- * in case of errors, increase the log level `kitchen verify package-install-centos-72 -l debug`
143
-
144
- ## Do I still need the backend configuration?
145
-
146
- InSpec does not attach backend information to test files. All tests are defined independently of any backend. Therefore a Serverspec test file:
147
-
148
- ```
149
- require 'serverspec'
150
-
151
- # Required by serverspec
152
- set :backend, :exec
153
-
154
- describe 'PHP' do
155
- it 'has php' do
156
- expect(command('php -v').exit_status).to eq(0)
157
- end
158
-
159
- it 'has the pear.php.net channel' do
160
- expect(command('pear list-channels').stdout).to include('pear.php.net')
161
- end
162
-
163
- it 'has the pecl.php.net channel' do
164
- expect(command('pear list-channels').stdout).to include('pecl.php.net')
165
- end
166
- end
167
- ```
168
-
169
- will become the following InSpec test file:
170
-
171
- ```
172
- describe 'PHP' do
173
- it 'has php' do
174
- expect(command('php -v').exit_status).to eq(0)
175
- end
176
-
177
- it 'has the pear.php.net channel' do
178
- expect(command('pear list-channels').stdout).to include('pear.php.net')
179
- end
180
-
181
- it 'has the pecl.php.net channel' do
182
- expect(command('pear list-channels').stdout).to include('pecl.php.net')
183
- end
184
- end
185
- ```
186
-
187
- As you can see, the InSpec test files just focuses on tests and tries to avoid all clutter.
188
-
189
- ## Nested describe blocks
190
-
191
- Serverspec and RSpec allow you to define nested describe blocks. We did a survey and found out that most users use nested describe blocks only to improve their output report. We believe the code structure should not change to improve the output of a report. Nevertheless we understand that nested describe blocks help you to structure test code. A sample code block looks like:
192
-
193
- ```
194
- describe 'chef-server-directories' do
195
- describe file('/etc/opscode') do
196
- it { should be_directory }
197
- it { should be_owned_by 'root' }
198
- end
199
-
200
- describe file('/etc/opscode-analytics') do
201
- it { should be_directory }
202
- it { should be_owned_by 'opscode' }
203
- it { should be_grouped_into 'opscode' }
204
- end
205
-
206
- describe file('/var/log/opscode') do
207
- it { should be_directory }
208
- it { should be_owned_by 'opscode' }
209
- it { should be_grouped_into 'opscode' }
210
- end
211
-
212
- describe file('/var/opt/opscode') do
213
- it { should be_directory }
214
- it { should be_owned_by 'root' }
215
- end
216
- end
217
- ```
218
-
219
- In InSpec you would split up groups into files.
220
-
221
- ```
222
- tests
223
- ├── server-directories.rb
224
- ├── other-tests.rb
225
- └── further-tests.rb
226
- ```
227
-
228
- Each file can have a top-level description of its content:
229
-
230
- ```
231
- title "Chef Server Directories"
232
-
233
- describe file('/etc/opscode') do
234
- it { should be_directory }
235
- it { should be_owned_by 'root' }
236
- end
237
-
238
- describe file('/etc/opscode-analytics') do
239
- it { should be_directory }
240
- it { should be_owned_by 'opscode' }
241
- it { should be_grouped_into 'opscode' }
242
- end
243
-
244
- describe file('/var/log/opscode') do
245
- it { should be_directory }
246
- it { should be_owned_by 'opscode' }
247
- it { should be_grouped_into 'opscode' }
248
- end
249
-
250
- describe file('/var/opt/opscode') do
251
- it { should be_directory }
252
- it { should be_owned_by 'root' }
253
- end
254
-
255
- ```
256
-
257
- ## Are you supporting the `expect` syntax?
258
-
259
- Of course. We still prefer the `should` syntax for UX reasons. We did surveys with various types of customers like devops engineers, auditors, managers. All participants who preferred the `expect` syntax have been Ruby experts. All non-Ruby developers found it easier to understand the `should` syntax.
260
-
261
- ### `should` syntax with InSpec
262
-
263
- ```
264
- describe command('php -v') do
265
- its('exit_status') { should eq 0 }
266
- end
267
-
268
- describe command('pear list-channels') do
269
- its('stdout') { should include('pear.php.net')}
270
- end
271
-
272
- describe command('pear list-channels') do
273
- its('stdout') { should include('pecl.php.net')}
274
- end
275
- ```
276
-
277
- ### `expect` syntax with InSpec
278
-
279
- ```
280
- describe 'PHP' do
281
- it 'has php' do
282
- expect(command('php -v').exit_status).to eq(0)
283
- end
284
-
285
- it 'has the pear.php.net channel' do
286
- expect(command('pear list-channels').stdout).to include('pear.php.net')
287
- end
288
-
289
- it 'has the pecl.php.net channel' do
290
- expect(command('pear list-channels').stdout).to include('pecl.php.net')
291
- end
292
- end
293
- ```
data/docs/platforms.md DELETED
@@ -1,119 +0,0 @@
1
- # Using InSpec 2.0 on Cloud Platforms
2
-
3
- We are pleased to announce that with this release of InSpec 2.0, we have expanded our platform support beyond individual machines and now include support for select AWS and Azure resources.
4
-
5
- With InSpec 2.0, you may now use several InSpec resources to audit properties of your cloud infrastructure - for example, an Amazon Web Services S3 bucket.
6
-
7
- <br>
8
-
9
- ## AWS Platform Support in InSpec 2.0
10
-
11
- ### Setting up AWS credentials for InSpec
12
-
13
- InSpec uses the standard AWS authentication mechanisms. Typically, you will create an IAM user specifically for auditing activities.
14
-
15
- * 1 Create an IAM user in the AWS console, with your choice of username. Check the box marked "Programmatic Access."
16
- * 2 On the Permissions screen, choose Direct Attach. Select the AWS-managed IAM Profile named "ReadOnlyAccess." If you wish to restrict the user further, you may do so; see individual InSpec resources to identify which permissions are required.
17
- * 3 After generating the key, record the Access Key ID and Secret Key.
18
-
19
- #### Using Environment Variables to provide credentials
20
-
21
- You may provide the credentials to InSpec by setting the following environment variables: `AWS_REGION`, `AWS_ACCESS_KEY_ID`, and `AWS_SECRET_KEY_ID`. You may also use `AWS_PROFILE`, or if you are using MFA, `AWS_SESSION_TOKEN`. See the [AWS Command Line Interface Docs](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) for details.
22
-
23
- Once you have your environment variables set, you can verify your credentials by running:
24
-
25
- ```bash
26
- you$ inspec detect -t aws://
27
-
28
- == Platform Details
29
- Name: aws
30
- Families: cloud, api
31
- Release: aws-sdk-v2.10.125
32
- ```
33
-
34
- #### Using the InSpec target option to provide credentials on AWS
35
-
36
- Look for a file in your home directory named `~/.aws/credentials`. If it does not exist, create it. Choose a name for your profile; here, we're using the name 'auditing'. Add your credentials as a new profile, in INI format:
37
-
38
- ```bash
39
- [auditing]
40
- aws_access_key_id = AKIA....
41
- aws_secret_access_key = 1234....abcd
42
- ```
43
-
44
- You may now run InSpec using the `--target` / `-t` option, using the format `-t aws://region/profile`. For example, to connect to the Ohio region using a profile named 'auditing', use `-t aws://us-east-2/auditing`.
45
-
46
- To verify your credentials,
47
-
48
- ```bash
49
- you$ inspec detect -t aws://
50
-
51
- == Platform Details
52
- Name: aws
53
- Families: cloud, api
54
- Release: aws-sdk-v2.10.125
55
- ```
56
-
57
- <br>
58
-
59
- ## Azure Platform Support in InSpec 2.0
60
-
61
- ### Setting up Azure credentials for InSpec
62
-
63
- To use InSpec Azure resources, you will need to create a Service Principal Name (SPN) for auditing an Azure subscription.
64
-
65
- This can be done on the command line or from the Azure Portal:
66
-
67
- * [Azure CLI](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal-cli)
68
- * [PowerShell](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authenticate-service-principal)
69
- * [Azure Portal](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal)
70
-
71
- The information from the SPN can be specified either in the file `~/.azure/credentials`, as environment variables, or by using InSpec target URIs.
72
-
73
- #### Setting up the Azure Credentials File
74
-
75
- By default InSpec is configured to look at ~/.azure/credentials, and it should contain:
76
-
77
- ```powershell
78
- [<SUBSCRIPTION_ID>]
79
- client_id = "<CLIENT_ID>"
80
- client_secret = "<CLIENT_SECRET>"
81
- tenant_id = "<TENANT_ID>"
82
- ```
83
-
84
- NOTE: In the Azure web portal, these values are labeled differently:
85
- * The client_id is referred to as the 'Application ID'
86
- * The client_secret is referred to as the 'Key (Password Type)'
87
- * The tenant_id is referred to as the 'Directory ID'
88
-
89
- With the credentials are in place you may now execute InSpec:
90
-
91
- ```bash
92
- inspec exec my-inspec-profile -t azure://
93
- ```
94
-
95
- #### Using Environment variables to provide credentials
96
-
97
- You may also set the Azure credentials via environment variables:
98
-
99
- * `AZURE_SUBSCRIPTION_ID`
100
- * `AZURE_CLIENT_ID`
101
- * `AZURE_CLIENT_SECRET`
102
- * `AZURE_TENANT_ID`
103
-
104
- For example:
105
-
106
- ```bash
107
- AZURE_SUBSCRIPTION_ID="2fbdbb02-df2e-11e6-bf01-fe55135034f3" \
108
- AZURE_CLIENT_ID="58dc4f6c-df2e-11e6-bf01-fe55135034f3" \
109
- AZURE_CLIENT_SECRET="Jibr4iwwaaZwBb6W" \
110
- AZURE_TENANT_ID="6ad89b58-df2e-11e6-bf01-fe55135034f3" inspec exec my-profile -t azure://
111
- ```
112
-
113
- #### Using the InSpec target option to provide credentials on Azure
114
-
115
- If you have created a `~/.azure/credentials` file as above, you may also use the InSpec command line `--target` / `-t` option to select a subscription ID. For example:
116
-
117
- ```bash
118
- inspec exec my-profile -t azure://2fbdbb02-df2e-11e6-bf01-fe55135034f3
119
- ```
@@ -1,60 +0,0 @@
1
- ---
2
- title: About kitchen-inspec
3
- ---
4
-
5
- # kitchen-inspec
6
-
7
- Use InSpec as a Kitchen verifier with `kitchen-inspec`.
8
-
9
- Add the InSpec verifier to the `.kitchen.yml` file:
10
-
11
- ```YML
12
- verifier:
13
- name: inspec
14
- ```
15
-
16
- Use a compliance profile from the Chef Compliance server:
17
-
18
- ```YML
19
- suites:
20
- - name: compliance
21
- run_list:
22
- - recipe[ssh-hardening::default]
23
- verifier:
24
- inspec_tests:
25
- - compliance://base/ssh
26
- ```
27
-
28
- and then run the following command:
29
-
30
- ```bash
31
- $ inspec compliance login https://compliance.test --user admin --insecure --token ''
32
- ```
33
-
34
- where `--insecure` is required when using self-signed certificates.
35
-
36
- Use a compliance profile from the Chef Supermarket:
37
-
38
- ```YML
39
- suites:
40
- - name: supermarket
41
- run_list:
42
- - recipe[ssh-hardening::default]
43
- verifier:
44
- inspec_tests:
45
- - supermarket://dev-sec/ssh-baseline
46
- ```
47
-
48
- Use InSpec tests from the local file system:
49
-
50
- ```YML
51
- suites:
52
- - name: local
53
- run_list:
54
- - recipe[my_cookbook::default]
55
- verifier:
56
- inspec_tests:
57
- - test/integration/default
58
- ```
59
-
60
- Check out [Detect and correct with Test Kitchen](https://learn.chef.io/modules/detect-correct-kitchen#/) on Learn Chef Rally for a hands-on look at how to use Test Kitchen to run InSpec profiles.