inspec 2.3.10 → 2.3.23

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 (271) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -13
  3. data/etc/plugin_filters.json +25 -0
  4. data/inspec.gemspec +3 -3
  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 +5 -253
  22. data/MAINTAINERS.toml +0 -52
  23. data/docs/.gitignore +0 -2
  24. data/docs/README.md +0 -41
  25. data/docs/dev/control-eval.md +0 -62
  26. data/docs/dev/filtertable-internals.md +0 -353
  27. data/docs/dev/filtertable-usage.md +0 -533
  28. data/docs/dev/integration-testing.md +0 -31
  29. data/docs/dev/plugins.md +0 -323
  30. data/docs/dsl_inspec.md +0 -354
  31. data/docs/dsl_resource.md +0 -100
  32. data/docs/glossary.md +0 -381
  33. data/docs/habitat.md +0 -193
  34. data/docs/inspec_and_friends.md +0 -114
  35. data/docs/matchers.md +0 -161
  36. data/docs/migration.md +0 -293
  37. data/docs/platforms.md +0 -119
  38. data/docs/plugin_kitchen_inspec.md +0 -60
  39. data/docs/plugins.md +0 -57
  40. data/docs/profiles.md +0 -576
  41. data/docs/reporters.md +0 -170
  42. data/docs/resources/aide_conf.md.erb +0 -86
  43. data/docs/resources/apache.md.erb +0 -77
  44. data/docs/resources/apache_conf.md.erb +0 -78
  45. data/docs/resources/apt.md.erb +0 -81
  46. data/docs/resources/audit_policy.md.erb +0 -57
  47. data/docs/resources/auditd.md.erb +0 -89
  48. data/docs/resources/auditd_conf.md.erb +0 -78
  49. data/docs/resources/aws_cloudtrail_trail.md.erb +0 -165
  50. data/docs/resources/aws_cloudtrail_trails.md.erb +0 -96
  51. data/docs/resources/aws_cloudwatch_alarm.md.erb +0 -101
  52. data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +0 -164
  53. data/docs/resources/aws_config_delivery_channel.md.erb +0 -111
  54. data/docs/resources/aws_config_recorder.md.erb +0 -96
  55. data/docs/resources/aws_ebs_volume.md.erb +0 -76
  56. data/docs/resources/aws_ebs_volumes.md.erb +0 -86
  57. data/docs/resources/aws_ec2_instance.md.erb +0 -122
  58. data/docs/resources/aws_ec2_instances.md.erb +0 -89
  59. data/docs/resources/aws_elb.md.erb +0 -154
  60. data/docs/resources/aws_elbs.md.erb +0 -252
  61. data/docs/resources/aws_flow_log.md.erb +0 -128
  62. data/docs/resources/aws_iam_access_key.md.erb +0 -139
  63. data/docs/resources/aws_iam_access_keys.md.erb +0 -214
  64. data/docs/resources/aws_iam_group.md.erb +0 -74
  65. data/docs/resources/aws_iam_groups.md.erb +0 -92
  66. data/docs/resources/aws_iam_password_policy.md.erb +0 -92
  67. data/docs/resources/aws_iam_policies.md.erb +0 -97
  68. data/docs/resources/aws_iam_policy.md.erb +0 -264
  69. data/docs/resources/aws_iam_role.md.erb +0 -79
  70. data/docs/resources/aws_iam_root_user.md.erb +0 -86
  71. data/docs/resources/aws_iam_user.md.erb +0 -130
  72. data/docs/resources/aws_iam_users.md.erb +0 -289
  73. data/docs/resources/aws_kms_key.md.erb +0 -187
  74. data/docs/resources/aws_kms_keys.md.erb +0 -99
  75. data/docs/resources/aws_rds_instance.md.erb +0 -76
  76. data/docs/resources/aws_route_table.md.erb +0 -63
  77. data/docs/resources/aws_route_tables.md.erb +0 -65
  78. data/docs/resources/aws_s3_bucket.md.erb +0 -156
  79. data/docs/resources/aws_s3_bucket_object.md.erb +0 -99
  80. data/docs/resources/aws_s3_buckets.md.erb +0 -69
  81. data/docs/resources/aws_security_group.md.erb +0 -323
  82. data/docs/resources/aws_security_groups.md.erb +0 -107
  83. data/docs/resources/aws_sns_subscription.md.erb +0 -140
  84. data/docs/resources/aws_sns_topic.md.erb +0 -79
  85. data/docs/resources/aws_sns_topics.md.erb +0 -68
  86. data/docs/resources/aws_subnet.md.erb +0 -150
  87. data/docs/resources/aws_subnets.md.erb +0 -142
  88. data/docs/resources/aws_vpc.md.erb +0 -135
  89. data/docs/resources/aws_vpcs.md.erb +0 -135
  90. data/docs/resources/azure_generic_resource.md.erb +0 -183
  91. data/docs/resources/azure_resource_group.md.erb +0 -294
  92. data/docs/resources/azure_virtual_machine.md.erb +0 -357
  93. data/docs/resources/azure_virtual_machine_data_disk.md.erb +0 -234
  94. data/docs/resources/bash.md.erb +0 -85
  95. data/docs/resources/bond.md.erb +0 -100
  96. data/docs/resources/bridge.md.erb +0 -67
  97. data/docs/resources/bsd_service.md.erb +0 -77
  98. data/docs/resources/chocolatey_package.md.erb +0 -68
  99. data/docs/resources/command.md.erb +0 -176
  100. data/docs/resources/cpan.md.erb +0 -89
  101. data/docs/resources/cran.md.erb +0 -74
  102. data/docs/resources/crontab.md.erb +0 -103
  103. data/docs/resources/csv.md.erb +0 -64
  104. data/docs/resources/dh_params.md.erb +0 -221
  105. data/docs/resources/directory.md.erb +0 -40
  106. data/docs/resources/docker.md.erb +0 -240
  107. data/docs/resources/docker_container.md.erb +0 -113
  108. data/docs/resources/docker_image.md.erb +0 -104
  109. data/docs/resources/docker_plugin.md.erb +0 -80
  110. data/docs/resources/docker_service.md.erb +0 -124
  111. data/docs/resources/elasticsearch.md.erb +0 -252
  112. data/docs/resources/etc_fstab.md.erb +0 -135
  113. data/docs/resources/etc_group.md.erb +0 -85
  114. data/docs/resources/etc_hosts.md.erb +0 -88
  115. data/docs/resources/etc_hosts_allow.md.erb +0 -84
  116. data/docs/resources/etc_hosts_deny.md.erb +0 -84
  117. data/docs/resources/file.md.erb +0 -543
  118. data/docs/resources/filesystem.md.erb +0 -51
  119. data/docs/resources/firewalld.md.erb +0 -117
  120. data/docs/resources/gem.md.erb +0 -108
  121. data/docs/resources/group.md.erb +0 -71
  122. data/docs/resources/grub_conf.md.erb +0 -111
  123. data/docs/resources/host.md.erb +0 -96
  124. data/docs/resources/http.md.erb +0 -207
  125. data/docs/resources/iis_app.md.erb +0 -132
  126. data/docs/resources/iis_site.md.erb +0 -145
  127. data/docs/resources/inetd_conf.md.erb +0 -104
  128. data/docs/resources/ini.md.erb +0 -86
  129. data/docs/resources/interface.md.erb +0 -68
  130. data/docs/resources/iptables.md.erb +0 -74
  131. data/docs/resources/json.md.erb +0 -73
  132. data/docs/resources/kernel_module.md.erb +0 -130
  133. data/docs/resources/kernel_parameter.md.erb +0 -63
  134. data/docs/resources/key_rsa.md.erb +0 -95
  135. data/docs/resources/launchd_service.md.erb +0 -67
  136. data/docs/resources/limits_conf.md.erb +0 -85
  137. data/docs/resources/login_defs.md.erb +0 -81
  138. data/docs/resources/mount.md.erb +0 -79
  139. data/docs/resources/mssql_session.md.erb +0 -78
  140. data/docs/resources/mysql_conf.md.erb +0 -109
  141. data/docs/resources/mysql_session.md.erb +0 -84
  142. data/docs/resources/nginx.md.erb +0 -89
  143. data/docs/resources/nginx_conf.md.erb +0 -148
  144. data/docs/resources/npm.md.erb +0 -78
  145. data/docs/resources/ntp_conf.md.erb +0 -70
  146. data/docs/resources/oneget.md.erb +0 -63
  147. data/docs/resources/oracledb_session.md.erb +0 -103
  148. data/docs/resources/os.md.erb +0 -153
  149. data/docs/resources/os_env.md.erb +0 -101
  150. data/docs/resources/package.md.erb +0 -130
  151. data/docs/resources/packages.md.erb +0 -77
  152. data/docs/resources/parse_config.md.erb +0 -113
  153. data/docs/resources/parse_config_file.md.erb +0 -148
  154. data/docs/resources/passwd.md.erb +0 -151
  155. data/docs/resources/pip.md.erb +0 -77
  156. data/docs/resources/port.md.erb +0 -147
  157. data/docs/resources/postgres_conf.md.erb +0 -89
  158. data/docs/resources/postgres_hba_conf.md.erb +0 -103
  159. data/docs/resources/postgres_ident_conf.md.erb +0 -86
  160. data/docs/resources/postgres_session.md.erb +0 -79
  161. data/docs/resources/powershell.md.erb +0 -112
  162. data/docs/resources/processes.md.erb +0 -119
  163. data/docs/resources/rabbitmq_config.md.erb +0 -51
  164. data/docs/resources/registry_key.md.erb +0 -197
  165. data/docs/resources/runit_service.md.erb +0 -67
  166. data/docs/resources/security_policy.md.erb +0 -57
  167. data/docs/resources/service.md.erb +0 -131
  168. data/docs/resources/shadow.md.erb +0 -267
  169. data/docs/resources/ssh_config.md.erb +0 -83
  170. data/docs/resources/sshd_config.md.erb +0 -93
  171. data/docs/resources/ssl.md.erb +0 -129
  172. data/docs/resources/sys_info.md.erb +0 -52
  173. data/docs/resources/systemd_service.md.erb +0 -67
  174. data/docs/resources/sysv_service.md.erb +0 -67
  175. data/docs/resources/upstart_service.md.erb +0 -67
  176. data/docs/resources/user.md.erb +0 -150
  177. data/docs/resources/users.md.erb +0 -137
  178. data/docs/resources/vbscript.md.erb +0 -65
  179. data/docs/resources/virtualization.md.erb +0 -67
  180. data/docs/resources/windows_feature.md.erb +0 -69
  181. data/docs/resources/windows_hotfix.md.erb +0 -63
  182. data/docs/resources/windows_task.md.erb +0 -95
  183. data/docs/resources/wmi.md.erb +0 -91
  184. data/docs/resources/x509_certificate.md.erb +0 -161
  185. data/docs/resources/xinetd_conf.md.erb +0 -166
  186. data/docs/resources/xml.md.erb +0 -95
  187. data/docs/resources/yaml.md.erb +0 -79
  188. data/docs/resources/yum.md.erb +0 -108
  189. data/docs/resources/zfs_dataset.md.erb +0 -63
  190. data/docs/resources/zfs_pool.md.erb +0 -57
  191. data/docs/shared/matcher_be.md.erb +0 -1
  192. data/docs/shared/matcher_cmp.md.erb +0 -43
  193. data/docs/shared/matcher_eq.md.erb +0 -3
  194. data/docs/shared/matcher_include.md.erb +0 -1
  195. data/docs/shared/matcher_match.md.erb +0 -1
  196. data/docs/shell.md +0 -217
  197. data/docs/style.md +0 -178
  198. data/examples/README.md +0 -8
  199. data/examples/custom-resource/README.md +0 -3
  200. data/examples/custom-resource/controls/example.rb +0 -7
  201. data/examples/custom-resource/inspec.yml +0 -8
  202. data/examples/custom-resource/libraries/batsignal.rb +0 -20
  203. data/examples/custom-resource/libraries/gordon.rb +0 -21
  204. data/examples/inheritance/README.md +0 -65
  205. data/examples/inheritance/controls/example.rb +0 -14
  206. data/examples/inheritance/inspec.yml +0 -16
  207. data/examples/kitchen-ansible/.kitchen.yml +0 -25
  208. data/examples/kitchen-ansible/Gemfile +0 -19
  209. data/examples/kitchen-ansible/README.md +0 -53
  210. data/examples/kitchen-ansible/files/nginx.repo +0 -6
  211. data/examples/kitchen-ansible/tasks/main.yml +0 -16
  212. data/examples/kitchen-ansible/test/integration/default/default.yml +0 -5
  213. data/examples/kitchen-ansible/test/integration/default/web_spec.rb +0 -28
  214. data/examples/kitchen-chef/.kitchen.yml +0 -20
  215. data/examples/kitchen-chef/Berksfile +0 -3
  216. data/examples/kitchen-chef/Gemfile +0 -19
  217. data/examples/kitchen-chef/README.md +0 -27
  218. data/examples/kitchen-chef/metadata.rb +0 -7
  219. data/examples/kitchen-chef/recipes/default.rb +0 -6
  220. data/examples/kitchen-chef/recipes/nginx.rb +0 -30
  221. data/examples/kitchen-chef/test/integration/default/web_spec.rb +0 -28
  222. data/examples/kitchen-puppet/.kitchen.yml +0 -23
  223. data/examples/kitchen-puppet/Gemfile +0 -20
  224. data/examples/kitchen-puppet/Puppetfile +0 -25
  225. data/examples/kitchen-puppet/README.md +0 -53
  226. data/examples/kitchen-puppet/manifests/site.pp +0 -33
  227. data/examples/kitchen-puppet/metadata.json +0 -11
  228. data/examples/kitchen-puppet/modules/.gitkeep +0 -0
  229. data/examples/kitchen-puppet/test/integration/default/web_spec.rb +0 -28
  230. data/examples/meta-profile/README.md +0 -37
  231. data/examples/meta-profile/controls/example.rb +0 -13
  232. data/examples/meta-profile/inspec.yml +0 -13
  233. data/examples/plugins/inspec-resource-lister/Gemfile +0 -12
  234. data/examples/plugins/inspec-resource-lister/LICENSE +0 -13
  235. data/examples/plugins/inspec-resource-lister/README.md +0 -62
  236. data/examples/plugins/inspec-resource-lister/Rakefile +0 -40
  237. data/examples/plugins/inspec-resource-lister/inspec-resource-lister.gemspec +0 -45
  238. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister.rb +0 -16
  239. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/cli_command.rb +0 -70
  240. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/plugin.rb +0 -55
  241. data/examples/plugins/inspec-resource-lister/lib/inspec-resource-lister/version.rb +0 -10
  242. data/examples/plugins/inspec-resource-lister/test/fixtures/README.md +0 -24
  243. data/examples/plugins/inspec-resource-lister/test/functional/README.md +0 -18
  244. data/examples/plugins/inspec-resource-lister/test/functional/inspec_resource_lister_test.rb +0 -110
  245. data/examples/plugins/inspec-resource-lister/test/helper.rb +0 -26
  246. data/examples/plugins/inspec-resource-lister/test/unit/README.md +0 -17
  247. data/examples/plugins/inspec-resource-lister/test/unit/cli_args_test.rb +0 -64
  248. data/examples/plugins/inspec-resource-lister/test/unit/plugin_def_test.rb +0 -51
  249. data/examples/profile-attribute.yml +0 -2
  250. data/examples/profile-attribute/README.md +0 -14
  251. data/examples/profile-attribute/controls/example.rb +0 -11
  252. data/examples/profile-attribute/inspec.yml +0 -8
  253. data/examples/profile-aws/controls/iam_password_policy_expiration.rb +0 -8
  254. data/examples/profile-aws/controls/iam_password_policy_max_age.rb +0 -8
  255. data/examples/profile-aws/controls/iam_root_user_mfa.rb +0 -8
  256. data/examples/profile-aws/controls/iam_users_access_key_age.rb +0 -8
  257. data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +0 -8
  258. data/examples/profile-aws/inspec.yml +0 -11
  259. data/examples/profile-azure/controls/azure_resource_group_example.rb +0 -24
  260. data/examples/profile-azure/controls/azure_vm_example.rb +0 -29
  261. data/examples/profile-azure/inspec.yml +0 -11
  262. data/examples/profile-sensitive/README.md +0 -29
  263. data/examples/profile-sensitive/controls/sensitive-failures.rb +0 -9
  264. data/examples/profile-sensitive/controls/sensitive.rb +0 -9
  265. data/examples/profile-sensitive/inspec.yml +0 -8
  266. data/examples/profile/README.md +0 -48
  267. data/examples/profile/controls/example.rb +0 -24
  268. data/examples/profile/controls/gordon.rb +0 -36
  269. data/examples/profile/controls/meta.rb +0 -36
  270. data/examples/profile/inspec.yml +0 -11
  271. data/examples/profile/libraries/gordon_config.rb +0 -59
@@ -1,103 +0,0 @@
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
- ## Availability
13
-
14
- ### Installation
15
-
16
- This resource is distributed along with InSpec itself. You can use it automatically.
17
-
18
- ### Version
19
-
20
- This resource first became available in v1.15.0 of InSpec.
21
-
22
- ## Syntax
23
-
24
- 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:
25
-
26
- describe crontab do
27
- its('commands') { should include '/some/scheduled/task.sh' }
28
- end
29
-
30
- <br>
31
-
32
- ## Examples
33
-
34
- The following examples show how to use this InSpec audit resource.
35
-
36
- ### Test that root's crontab has a particular command
37
-
38
- describe crontab('root') do
39
- its('commands') { should include '/path/to/some/script' }
40
- end
41
-
42
- ### Test that myuser's crontab entry for command '/home/myuser/build.sh' runs every minute
43
-
44
- describe crontab('myuser').commands('/home/myuser/build.sh') do
45
- its('hours') { should cmp '*' }
46
- its('minutes') { should cmp '*' }
47
- end
48
-
49
- ### Test that the logged-in user's crontab has no tasks set to run on every hour and every minute
50
-
51
- ```ruby
52
- describe crontab.where({'hour' => '*', 'minute' => '*'}) do
53
- its('entries.length') { should cmp '0' }
54
- end
55
- ```
56
-
57
- ### Test that the logged-in user's crontab contains a single command that matches a pattern
58
-
59
- ```ruby
60
- describe crontab.where { command =~ /a partial command string/ } do
61
- its('entries.length') { should cmp 1 }
62
- end
63
- ```
64
-
65
- ### Test a special time string (i.e., @yearly /root/annual_report.sh)
66
-
67
- describe crontab.commands('/root/annual_report.sh') do
68
- its('hours') { should cmp '0' }
69
- its('minutes') { should cmp '0' }
70
- its('days') { should cmp '1' }
71
- its('months') { should cmp '1' }
72
- end
73
-
74
- ### Test @reboot case
75
-
76
- describe crontab.commands('/root/reboot.sh') do
77
- its('hours') { should cmp '-1' }
78
- its('minutes') { should cmp '-1' }
79
- end
80
-
81
- <br>
82
-
83
- ## Property Examples
84
-
85
-
86
- ### Test a special time string
87
-
88
- describe crontab do
89
- its('minutes') { should cmp '0' }
90
- its('hours') { should cmp '0' }
91
- its('days') { should cmp '1' }
92
- its('weekdays') { should cmp '1' }
93
- its('user') { should include 'username'}
94
- its('commands') { should include '/some/scheduled/task.sh' }
95
- end
96
-
97
- 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.
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/).
@@ -1,64 +0,0 @@
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
- ## Availability
13
-
14
- ### Installation
15
-
16
- This resource is distributed along with InSpec itself. You can use it automatically.
17
-
18
- ### Version
19
-
20
- This resource first became available in v1.0.0 of InSpec.
21
-
22
- ## Syntax
23
-
24
- A `csv` resource block declares the configuration data to be tested:
25
-
26
- describe csv('file') do
27
- its('name') { should cmp 'foo' }
28
- end
29
-
30
- where
31
-
32
- * `'file'` is the path to a CSV file
33
- * `name` is a configuration setting in a CSV file
34
- * `should eq 'foo'` tests a value of `name` as read from a CSV file versus the value declared in the test
35
-
36
- <br>
37
-
38
- ## Examples
39
-
40
- The following examples show how to use this InSpec audit resource.
41
-
42
- ### Test a CSV file
43
-
44
- describe csv('some_file.csv') do
45
- its('setting') { should eq 1 }
46
- end
47
-
48
- <br>
49
-
50
- ## Property Examples
51
-
52
- ### name
53
-
54
- The `name` property tests the value of `name` as read from a CSV file compared to the value declared in the test.
55
-
56
- its('name') { should cmp 'foo' }
57
-
58
- <br>
59
-
60
- ## Matchers
61
-
62
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
63
-
64
-
@@ -1,221 +0,0 @@
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
- ## Availability
13
-
14
- ### Installation
15
-
16
- This resource is distributed along with InSpec itself. You can use it automatically.
17
-
18
- ### Version
19
-
20
- This resource first became available in v1.19.0 of InSpec.
21
-
22
- ## Syntax
23
-
24
- A `dh_params` resource block declares a parameter file to be tested.
25
-
26
- describe dh_params('/path/to/file.dh_pem') do
27
- it { should be_dh_params }
28
- it { should be_valid }
29
- its('generator') { should eq 2 }
30
- its('modulus') { should eq '00:91:a0:15:89:e5:bc:38:93:12:02:fc:...' }
31
- its('prime_length') { should eq 2048 }
32
- its('pem') { should eq '-----BEGIN DH PARAMETERS...' }
33
- its('text') { should eq 'PKCS#3 DH Parameters: (2048 bit)...' }
34
- end
35
-
36
- <br>
37
-
38
- ## Properties
39
-
40
- * `generator`, `modulus`, `prime_length`, `pem`, `text`
41
-
42
- <br>
43
-
44
- ## Property Examples
45
-
46
- ### generator (Integer)
47
-
48
- Verify generator used for the Diffie-Hellman operation:
49
-
50
- describe dh_params('/path/to/file.dh_pem') do
51
- its('generator') { should eq 2 }
52
- end
53
-
54
- ### modulus (String)
55
-
56
- Verify prime modulus used for the Diffie-Hellman operation:
57
-
58
- describe dh_params('/path/to/file.dh_pem') do
59
- its('modulus') { should eq '00:91:a0:15:89:e5:bc:38:93:12:02:fc:...' }
60
- end
61
-
62
- Example using multi-line string:
63
-
64
- ```ruby
65
- describe dh_params('/path/to/file.dh_pem') do
66
- its('modulus') do
67
- # regex removes all whitespace
68
- should eq <<-EOF.gsub(/[[:space:]]+/, '')
69
- 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
70
- f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
71
- 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
72
- 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
73
- 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
74
- ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
75
- 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
76
- 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
77
- 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
78
- 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
79
- 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
80
- e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
81
- 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
82
- 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
83
- 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
84
- 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
85
- 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
86
- cd:13
87
- EOF
88
- end
89
- end
90
- ```
91
-
92
- ### prime_length (Integer)
93
-
94
- Verify length of prime modulus used for the Diffie-Hellman operation:
95
-
96
- describe dh_params('/path/to/file.dh_pem') do
97
- its('prime_length') { should eq 2048 }
98
- end
99
-
100
- ### pem (String)
101
-
102
- Verify `pem` output of DH parameters:
103
-
104
- describe dh_params('/path/to/file.dh_pem') do
105
- its('pem') { should eq '-----BEGIN DH PARAMETERS...' }
106
- end
107
-
108
- Example using multi-line string:
109
-
110
- ```ruby
111
- its('pem') do
112
- # regex removes all leading spaces
113
- should eq <<-EOF.gsub(/^[[:blank:]]+/, '')
114
- -----BEGIN DH PARAMETERS-----
115
- MIIBCAKCAQEAkaAVieW8OJMSAvyRooX39yljLtNOeob37oT+QtBIvJyR1VT4eB3A
116
- QXiixKwaJIudiFWYC6ynI+vCqisuqfmv1I5OEbx/NaKs2jrv8CVsmqT9ACh2hixX
117
- h2cwXbHWWyKPcqHq3ovvnjMaQJJohQJUAgn6wGDBPE4oJtvtJY44IVZA3MDAZh8r
118
- MsO0eKkmlOr3QSiy9VsBOAxGCYUmTWkSjZUPNeLmTkc6ht2Ksv5FFSfYWcI89GL/
119
- X3Tpd5JQRzYrBVdg7nuhYMwceit3GIo398cxPhXLFX97Zpb7xr591gNeDWB1K1ti
120
- KqM3tjT5/pZM9sXjoVKvAcFPx0Kgvu3NEwIBAg==
121
- -----END DH PARAMETERS-----
122
- EOF
123
- end
124
- ```
125
-
126
- Verify via `openssl dhparam` command:
127
-
128
- $ openssl dhparam -in /path/to/file.dh_pem
129
- -----BEGIN DH PARAMETERS-----
130
- MIIBCAKCAQEAkaAVieW8OJMSAvyRooX39yljLtNOeob37oT+QtBIvJyR1VT4eB3A
131
- QXiixKwaJIudiFWYC6ynI+vCqisuqfmv1I5OEbx/NaKs2jrv8CVsmqT9ACh2hixX
132
- h2cwXbHWWyKPcqHq3ovvnjMaQJJohQJUAgn6wGDBPE4oJtvtJY44IVZA3MDAZh8r
133
- MsO0eKkmlOr3QSiy9VsBOAxGCYUmTWkSjZUPNeLmTkc6ht2Ksv5FFSfYWcI89GL/
134
- X3Tpd5JQRzYrBVdg7nuhYMwceit3GIo398cxPhXLFX97Zpb7xr591gNeDWB1K1ti
135
- KqM3tjT5/pZM9sXjoVKvAcFPx0Kgvu3NEwIBAg==
136
- -----END DH PARAMETERS-----
137
-
138
- ### text (String)
139
-
140
- Verify human-readable text output of DH parameters:
141
-
142
- describe dh_params('/path/to/file.dh_pem') do
143
- its('text') { should eq 'PKCS#3 DH Parameters: (2048 bit)...' }
144
- end
145
-
146
- Example using multi-line string:
147
-
148
- ```ruby
149
- its('text') do
150
- # regex removes 2 leading spaces
151
- should eq <<-EOF.gsub(/^[[:blank:]]{2}/, '')
152
- PKCS#3 DH Parameters: (2048 bit)
153
- prime:
154
- 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
155
- f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
156
- 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
157
- 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
158
- 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
159
- ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
160
- 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
161
- 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
162
- 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
163
- 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
164
- 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
165
- e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
166
- 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
167
- 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
168
- 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
169
- 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
170
- 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
171
- cd:13
172
- generator: 2 (0x2)
173
- EOF
174
- end
175
- ```
176
-
177
- Verify via `openssl dhparam` command:
178
-
179
- $ openssl dhparam -in /path/to/file.dh_pem -noout -text
180
- PKCS#3 DH Parameters: (2048 bit)
181
- prime:
182
- 00:91:a0:15:89:e5:bc:38:93:12:02:fc:91:a2:85:
183
- f7:f7:29:63:2e:d3:4e:7a:86:f7:ee:84:fe:42:d0:
184
- 48:bc:9c:91:d5:54:f8:78:1d:c0:41:78:a2:c4:ac:
185
- 1a:24:8b:9d:88:55:98:0b:ac:a7:23:eb:c2:aa:2b:
186
- 2e:a9:f9:af:d4:8e:4e:11:bc:7f:35:a2:ac:da:3a:
187
- ef:f0:25:6c:9a:a4:fd:00:28:76:86:2c:57:87:67:
188
- 30:5d:b1:d6:5b:22:8f:72:a1:ea:de:8b:ef:9e:33:
189
- 1a:40:92:68:85:02:54:02:09:fa:c0:60:c1:3c:4e:
190
- 28:26:db:ed:25:8e:38:21:56:40:dc:c0:c0:66:1f:
191
- 2b:32:c3:b4:78:a9:26:94:ea:f7:41:28:b2:f5:5b:
192
- 01:38:0c:46:09:85:26:4d:69:12:8d:95:0f:35:e2:
193
- e6:4e:47:3a:86:dd:8a:b2:fe:45:15:27:d8:59:c2:
194
- 3c:f4:62:ff:5f:74:e9:77:92:50:47:36:2b:05:57:
195
- 60:ee:7b:a1:60:cc:1c:7a:2b:77:18:8a:37:f7:c7:
196
- 31:3e:15:cb:15:7f:7b:66:96:fb:c6:be:7d:d6:03:
197
- 5e:0d:60:75:2b:5b:62:2a:a3:37:b6:34:f9:fe:96:
198
- 4c:f6:c5:e3:a1:52:af:01:c1:4f:c7:42:a0:be:ed:
199
- cd:13
200
- generator: 2 (0x2)
201
-
202
- <br>
203
-
204
- ## Matchers
205
-
206
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
207
-
208
- ### be_valid
209
-
210
- Verify whether DH parameters are valid:
211
-
212
- describe dh_params('/path/to/file.dh_pem') do
213
- it { should be_valid }
214
- end
215
-
216
- ### be\_dh\_params
217
-
218
- describe dh_params('/path/to/file.dh_pem') do
219
- it { should be_dh_params}
220
- end
221
-
@@ -1,40 +0,0 @@
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
- ## Availability
13
-
14
- ### Installation
15
-
16
- This resource is distributed along with InSpec itself. You can use it automatically.
17
-
18
- ### Version
19
-
20
- This resource first became available in v1.0.0 of InSpec.
21
-
22
- ## Syntax
23
-
24
- A `directory` resource block declares the location of the directory to be tested, and then one (or more) matchers.
25
-
26
- describe directory('path') do
27
- its('property') { should cmp 'value' }
28
- end
29
-
30
- <br>
31
-
32
- ## Properties
33
-
34
- All of the properties available to `file` may be used with `directory`.
35
-
36
- <br>
37
-
38
- ## Matchers
39
-
40
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
@@ -1,240 +0,0 @@
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
- ## Availability
13
-
14
- ### Installation
15
-
16
- This resource is distributed along with InSpec itself. You can use it automatically.
17
-
18
- ### Version
19
-
20
- This resource first became available in v1.21.0 of InSpec.
21
-
22
- ## Syntax
23
-
24
- A `docker` resource block declares allows you to write test for many containers:
25
-
26
- describe docker.containers do
27
- its('images') { should_not include 'u12:latest' }
28
- end
29
-
30
- or:
31
-
32
- describe docker.containers.where { names == 'flamboyant_colden' } do
33
- it { should be_running }
34
- end
35
-
36
- where
37
-
38
- * `.where()` may specify a specific item and value, to which the resource parameters are compared
39
- * `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
40
-
41
- The `docker` resource block also declares allows you to write test for many images:
42
-
43
- describe docker.images do
44
- its('repositories') { should_not include 'inssecure_image' }
45
- end
46
-
47
- or if you want to query specific images:
48
-
49
- describe docker.images.where { repository == 'ubuntu' && tag == '12.04' } do
50
- it { should_not exist }
51
- end
52
-
53
- where
54
-
55
- * `.where()` may specify a specific filter and expected value, against which parameters are compared
56
-
57
- <br>
58
-
59
- ## Examples
60
-
61
- The following examples show how to use this InSpec audit resource.
62
-
63
- ### Return all running containers
64
-
65
- docker.containers.running?.ids.each do |id|
66
- describe docker.object(id) do
67
- its('State.Health.Status') { should eq 'healthy' }
68
- end
69
- end
70
-
71
- ### Verify a Docker Server and Client version
72
-
73
- describe docker.version do
74
- its('Server.Version') { should cmp >= '1.12'}
75
- its('Client.Version') { should cmp >= '1.12'}
76
- end
77
-
78
- ### Iterate over all containers to verify host coniguration
79
-
80
- docker.containers.ids.each do |id|
81
- # call Docker inspect for a specific container id
82
- describe docker.object(id) do
83
- its(%w(HostConfig Privileged)) { should cmp false }
84
- its(%w(HostConfig Privileged)) { should_not cmp true }
85
- end
86
- end
87
-
88
- ### Iterate over all images to verify the container was built without ADD instruction
89
-
90
- docker.images.ids.each do |id|
91
- describe command("docker history #{id}| grep 'ADD'") do
92
- its('stdout') { should eq '' }
93
- end
94
- end
95
-
96
- ### Verify that health-checks are enabled for a container
97
-
98
- describe docker.object('71b5df59442b') do
99
- its(%w(Config Healthcheck)) { should_not eq nil }
100
- end
101
-
102
- <br>
103
-
104
- ## How to run the DevSec Docker baseline profile
105
-
106
- There are two ways to run the `docker-baseline` profile to test Docker via the `docker` resource.
107
-
108
- Clone the profile:
109
-
110
- $ git clone https://github.com/dev-sec/cis-docker-benchmark.git
111
-
112
- and then run:
113
-
114
- $ inspec exec cis-docker-benchmark
115
-
116
- Or execute the profile directly via URL:
117
-
118
- $ inspec exec https://github.com/dev-sec/cis-docker-benchmark
119
-
120
- <br>
121
-
122
- ## Resource Parameters
123
-
124
- * `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
125
-
126
- <br>
127
-
128
- ## Resource Parameter Examples
129
-
130
- ### containers
131
-
132
- `containers` returns information about containers as returned by [docker ps -a](https://docs.docker.com/engine/reference/commandline/ps/).
133
-
134
- describe docker.containers do
135
- its('ids') { should include 'sha:71b5df59...442b' }
136
- its('commands') { should_not include '/bin/sh' }
137
- its('images') { should_not include 'u12:latest' }
138
- its('ports') { should include '0.0.0.0:1234->1234/tcp' }
139
- its('labels') { should include 'License=GPLv2,Vendor=CentOS' }
140
- end
141
-
142
- ### object('id')
143
-
144
- `object` returns low-level information about Docker objects. It is calling [docker inspect](https://docs.docker.com/engine/reference/commandline/info/) under the hood.
145
-
146
- describe docker.object(id) do
147
- its('Configuration.Path') { should eq 'value' }
148
- end
149
-
150
- ### images
151
-
152
- `images` returns information about a Docker image as returned by [docker images](https://docs.docker.com/engine/reference/commandline/images/).
153
-
154
- describe docker.images do
155
- its('ids') { should include 'sha:12b5df59...442b' }
156
- its('repositories') { should_not include 'my_image' }
157
- its('tags') { should_not include 'unwanted_tag' }
158
- its('sizes') { should_not include "1.41 GB" }
159
- end
160
-
161
- ### plugins
162
-
163
- `plugins` returns information about Docker plugins as returned by [docker plugin ls](https://docs.docker.com/engine/reference/commandline/plugin/).
164
-
165
- describe docker.plugins do
166
- its('names') { should include ["store/weaveworks/net-plugin", "docker4x/cloudstor"] }
167
- its('ids') { should cmp ["6ea8176de74b", "771d3ee7c7ea"] }
168
- its('versions') { should cmp ["2.3.0", "18.03.1-ce-aws1"] }
169
- its('enabled') { should cmp [true, false] }
170
- end
171
-
172
- ### info
173
-
174
- `info` returns the parsed result of [docker info](https://docs.docker.com/engine/reference/commandline/info/)
175
-
176
- describe docker.info do
177
- its('Configuration.Path') { should eq 'value' }
178
- end
179
-
180
- ### version
181
-
182
- `info` returns the parsed result of [docker version](https://docs.docker.com/engine/reference/commandline/version/)
183
-
184
- describe docker.version do
185
- its('Server.Version') { should cmp >= '1.12'}
186
- its('Client.Version') { should cmp >= '1.12'}
187
- end
188
-
189
- <br>
190
-
191
- ## Properties
192
-
193
- * `id`, `image`, `repo`, `tag`, `ports`, `command`
194
-
195
- <br>
196
-
197
- ## Property Examples
198
-
199
- ### id
200
-
201
- describe docker_container(name: 'an-echo-server') do
202
- its('id') { should_not eq '' }
203
- end
204
-
205
- ### image
206
-
207
- describe docker_container(name: 'an-echo-server') do
208
- its('image') { should eq 'busybox:latest' }
209
- end
210
-
211
- ### repo
212
-
213
- describe docker_container(name: 'an-echo-server') do
214
- its('repo') { should eq 'busybox' }
215
- end
216
-
217
- ### tag
218
-
219
- describe docker_container(name: 'an-echo-server') do
220
- its('tag') { should eq 'latest' }
221
- end
222
-
223
- ### ports
224
-
225
- describe docker_container(name: 'an-echo-server') do
226
- its('ports') { should eq "0.0.0.0:1234->1234/tcp" }
227
- end
228
-
229
- ### command
230
-
231
- describe docker_container(name: 'an-echo-server') do
232
- its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
233
- end
234
-
235
- <br>
236
-
237
- ## Matchers
238
-
239
- For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
240
-