inspec 1.0.0 → 1.1.0

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -3
  3. data/Gemfile +4 -1
  4. data/README.md +3 -0
  5. data/docs/dsl_inspec.md +3 -3
  6. data/docs/profiles.md +17 -0
  7. data/docs/resources/apache_conf.md.erb +10 -10
  8. data/docs/resources/apt.md.erb +13 -13
  9. data/docs/resources/audit_policy.md.erb +10 -10
  10. data/docs/resources/auditd_conf.md.erb +10 -10
  11. data/docs/resources/auditd_rules.md.erb +11 -11
  12. data/docs/resources/bash.md.erb +12 -12
  13. data/docs/resources/bond.md.erb +15 -15
  14. data/docs/resources/bridge.md.erb +11 -11
  15. data/docs/resources/bsd_service.md.erb +11 -11
  16. data/docs/resources/command.md.erb +21 -21
  17. data/docs/resources/csv.md.erb +10 -10
  18. data/docs/resources/directory.md.erb +8 -8
  19. data/docs/resources/etc_group.md.erb +16 -16
  20. data/docs/resources/etc_passwd.md.erb +17 -17
  21. data/docs/resources/etc_shadow.md.erb +19 -19
  22. data/docs/resources/file.md.erb +58 -58
  23. data/docs/resources/gem.md.erb +12 -12
  24. data/docs/resources/group.md.erb +12 -12
  25. data/docs/resources/grub_conf.md.erb +11 -11
  26. data/docs/resources/host.md.erb +13 -13
  27. data/docs/resources/iis_site.md.erb +16 -16
  28. data/docs/resources/inetd_conf.md.erb +10 -10
  29. data/docs/resources/ini.md.erb +9 -9
  30. data/docs/resources/interface.md.erb +11 -11
  31. data/docs/resources/iptables.md.erb +11 -11
  32. data/docs/resources/json.md.erb +10 -10
  33. data/docs/resources/kernel_module.md.erb +10 -10
  34. data/docs/resources/kernel_parameter.md.erb +12 -12
  35. data/docs/resources/launchd_service.md.erb +11 -11
  36. data/docs/resources/limits_conf.md.erb +10 -10
  37. data/docs/resources/login_def.md.erb +12 -12
  38. data/docs/resources/mount.md.erb +13 -13
  39. data/docs/resources/mysql_conf.md.erb +14 -14
  40. data/docs/resources/mysql_session.md.erb +10 -10
  41. data/docs/resources/npm.md.erb +12 -12
  42. data/docs/resources/ntp_conf.md.erb +9 -9
  43. data/docs/resources/oneget.md.erb +11 -11
  44. data/docs/resources/os.md.erb +13 -13
  45. data/docs/resources/os_env.md.erb +12 -12
  46. data/docs/resources/package.md.erb +15 -15
  47. data/docs/resources/parse_config.md.erb +13 -13
  48. data/docs/resources/parse_config_file.md.erb +22 -16
  49. data/docs/resources/pip.md.erb +12 -12
  50. data/docs/resources/port.md.erb +18 -18
  51. data/docs/resources/postgres_conf.md.erb +13 -13
  52. data/docs/resources/postgres_session.md.erb +11 -11
  53. data/docs/resources/powershell.md.erb +13 -13
  54. data/docs/resources/process.md.erb +12 -12
  55. data/docs/resources/registry_key.md.erb +17 -17
  56. data/docs/resources/runit_service.md.erb +11 -11
  57. data/docs/resources/security_policy.md.erb +10 -10
  58. data/docs/resources/service.md.erb +17 -17
  59. data/docs/resources/ssh_config.md.erb +13 -13
  60. data/docs/resources/sshd_config.md.erb +14 -14
  61. data/docs/resources/ssl.md.erb +12 -12
  62. data/docs/resources/sys_info.md.erb +10 -10
  63. data/docs/resources/systemd_service.md.erb +11 -11
  64. data/docs/resources/sysv_service.md.erb +11 -11
  65. data/docs/resources/upstart_service.md.erb +11 -11
  66. data/docs/resources/user.md.erb +20 -20
  67. data/docs/resources/users.md.erb +19 -19
  68. data/docs/resources/vbscript.md.erb +9 -9
  69. data/docs/resources/windows_feature.md.erb +10 -10
  70. data/docs/resources/wmi.md.erb +10 -10
  71. data/docs/resources/xinetd_conf.md.erb +17 -17
  72. data/docs/resources/yaml.md.erb +10 -10
  73. data/docs/resources/yum.md.erb +16 -16
  74. data/examples/meta-profile/README.md +0 -5
  75. data/lib/inspec/base_cli.rb +6 -0
  76. data/lib/inspec/cli.rb +10 -3
  77. data/lib/inspec/profile.rb +3 -3
  78. data/lib/inspec/rspec_json_formatter.rb +24 -15
  79. data/lib/inspec/version.rb +1 -1
  80. data/lib/resources/registry_key.rb +15 -5
  81. data/lib/utils/filter.rb +1 -0
  82. metadata +3 -4
@@ -6,7 +6,7 @@ title: About the csv Resource
6
6
 
7
7
  Use the `csv` InSpec audit resource to test configuration data in a CSV file.
8
8
 
9
- # Syntax
9
+ ## Syntax
10
10
 
11
11
  A `csv` resource block declares the configuration data to be tested:
12
12
 
@@ -21,41 +21,41 @@ where
21
21
  * `should eq 'foo'` tests a value of `name` as read from a CSV file versus the value declared in the test
22
22
 
23
23
 
24
- # Matchers
24
+ ## Matchers
25
25
 
26
26
  This InSpec audit resource has the following matchers:
27
27
 
28
- ## be
28
+ ### be
29
29
 
30
30
  <%= partial "/shared/matcher_be" %>
31
31
 
32
- ## cmp
32
+ ### cmp
33
33
 
34
34
  <%= partial "/shared/matcher_cmp" %>
35
35
 
36
- ## eq
36
+ ### eq
37
37
 
38
38
  <%= partial "/shared/matcher_eq" %>
39
39
 
40
- ## include
40
+ ### include
41
41
 
42
42
  <%= partial "/shared/matcher_include" %>
43
43
 
44
- ## match
44
+ ### match
45
45
 
46
46
  <%= partial "/shared/matcher_match" %>
47
47
 
48
- ## name
48
+ ### name
49
49
 
50
50
  The `name` matcher tests the value of `name` as read from a CSV file versus the value declared in the test:
51
51
 
52
52
  its('name') { should eq 'foo' }
53
53
 
54
- # Examples
54
+ ## Examples
55
55
 
56
56
  The following examples show how to use this InSpec audit resource.
57
57
 
58
- ## Test a CSV file
58
+ ### Test a CSV file
59
59
 
60
60
  describe csv('some_file.csv') do
61
61
  its('setting') { should eq 1 }
@@ -6,7 +6,7 @@ title: About the directory Resource
6
6
 
7
7
  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. All of the matchers available to `file` may be used with `directory`.
8
8
 
9
- # Syntax
9
+ ## Syntax
10
10
 
11
11
  A `directory` resource block declares the location of the directory to be tested, and then one (or more) matchers:
12
12
 
@@ -14,30 +14,30 @@ A `directory` resource block declares the location of the directory to be tested
14
14
  it { should MATCHER 'value' }
15
15
  end
16
16
 
17
- # Matchers
17
+ ## Matchers
18
18
 
19
19
  This resource may use any of the matchers available to the `file` resource that may be useful when testing a directory.
20
20
 
21
- ## be
21
+ ### be
22
22
 
23
23
  <%= partial "/shared/matcher_be" %>
24
24
 
25
- ## cmp
25
+ ### cmp
26
26
 
27
27
  <%= partial "/shared/matcher_cmp" %>
28
28
 
29
- ## eq
29
+ ### eq
30
30
 
31
31
  <%= partial "/shared/matcher_eq" %>
32
32
 
33
- ## include
33
+ ### include
34
34
 
35
35
  <%= partial "/shared/matcher_include" %>
36
36
 
37
- ## match
37
+ ### match
38
38
 
39
39
  <%= partial "/shared/matcher_match" %>
40
40
 
41
- # Examples
41
+ ## Examples
42
42
 
43
43
  None.
@@ -6,7 +6,7 @@ title: About the etc_group Resource
6
6
 
7
7
  Use the `etc_group` InSpec audit resource to test groups that are defined on Linux and Unix platforms. The `/etc/group` file stores details about each group---group name, password, group identifier, along with a comma-separate list of users that belong to the group.
8
8
 
9
- # Syntax
9
+ ## Syntax
10
10
 
11
11
  A `etc_group` resource block declares a collection of properties to be tested:
12
12
 
@@ -28,49 +28,49 @@ where
28
28
  * `.where()` may specify a specific item and value, to which the matchers are compared
29
29
  * `'gids'`, `'groups'`, and `'users'` are valid matchers for this resource
30
30
 
31
- # Matchers
31
+ ## Matchers
32
32
 
33
33
  This InSpec audit resource has the following matchers:
34
34
 
35
- ## be
35
+ ### be
36
36
 
37
37
  <%= partial "/shared/matcher_be" %>
38
38
 
39
- ## cmp
39
+ ### cmp
40
40
 
41
41
  <%= partial "/shared/matcher_cmp" %>
42
42
 
43
- ## eq
43
+ ### eq
44
44
 
45
45
  <%= partial "/shared/matcher_eq" %>
46
46
 
47
- ## gids
47
+ ### gids
48
48
 
49
49
  The `gids` matcher tests if the named group identifier is present or if it contains duplicates:
50
50
 
51
51
  its('gids') { should_not contain_duplicates }
52
52
 
53
- ## groups
53
+ ### groups
54
54
 
55
55
  The `groups` matcher tests all groups for the named user:
56
56
 
57
57
  its('groups') { should include 'my_group' }
58
58
 
59
- ## include
59
+ ### include
60
60
 
61
61
  <%= partial "/shared/matcher_include" %>
62
62
 
63
- ## match
63
+ ### match
64
64
 
65
65
  <%= partial "/shared/matcher_match" %>
66
66
 
67
- ## users
67
+ ### users
68
68
 
69
69
  The `users` matcher tests all groups for the named user:
70
70
 
71
71
  its('users') { should include 'my_user' }
72
72
 
73
- ## where
73
+ ### where
74
74
 
75
75
  The `where` matcher allows the test to be focused to one (or more) specific items:
76
76
 
@@ -87,29 +87,29 @@ where `item` may be one (or more) of:
87
87
  * `members: 'member_name'`
88
88
 
89
89
 
90
- # Examples
90
+ ## Examples
91
91
 
92
92
  The following examples show how to use this InSpec audit resource.
93
93
 
94
- ## Test group identifiers (GIDs) for duplicates
94
+ ### Test group identifiers (GIDs) for duplicates
95
95
 
96
96
  describe etc_group do
97
97
  its('gids') { should_not contain_duplicates }
98
98
  end
99
99
 
100
- ## Test all groups to see if a specific user belongs to one (or more) groups
100
+ ### Test all groups to see if a specific user belongs to one (or more) groups
101
101
 
102
102
  describe etc_group do
103
103
  its('groups') { should include 'my_group' }
104
104
  end
105
105
 
106
- ## Test all groups for a specific user name
106
+ ### Test all groups for a specific user name
107
107
 
108
108
  describe etc_group do
109
109
  its('users') { should include 'my_user' }
110
110
  end
111
111
 
112
- ## Filter a list of groups for a specific user
112
+ ### Filter a list of groups for a specific user
113
113
 
114
114
  describe etc_group.where(name: 'my_group') do
115
115
  its('users') { should include 'my_user' }
@@ -18,7 +18,7 @@ These entries are defined as a colon-delimited row in the file, one row per user
18
18
 
19
19
  root:x:1234:5678:additional_info:/home/dir/:/bin/bash
20
20
 
21
- # Syntax
21
+ ## Syntax
22
22
 
23
23
  A `passwd` resource block declares one (or more) users and associated user information to be tested:
24
24
 
@@ -38,40 +38,40 @@ where
38
38
  * `filter` may take any of the following arguments: `count` (retrieves the number of entries), `lines` (provides raw `passwd` lines), and `params` (returns an array of maps for all entries)
39
39
 
40
40
 
41
- # Matchers
41
+ ## Matchers
42
42
 
43
43
  This InSpec audit resource has the following matchers:
44
44
 
45
- ## be
45
+ ### be
46
46
 
47
47
  <%= partial "/shared/matcher_be" %>
48
48
 
49
- ## cmp
49
+ ### cmp
50
50
 
51
51
  <%= partial "/shared/matcher_cmp" %>
52
52
 
53
- ## eq
53
+ ### eq
54
54
 
55
55
  <%= partial "/shared/matcher_eq" %>
56
56
 
57
- ## gids
57
+ ### gids
58
58
 
59
59
  The `gids` matcher tests if the group indentifiers in the test match group identifiers in `/etc/passwd`:
60
60
 
61
61
  its('gids') { should include 1234 }
62
62
  its('gids') { should cmp 0 }
63
63
 
64
- ## homes
64
+ ### homes
65
65
 
66
66
  The `homes` matcher tests the absolute path to a user's home directory:
67
67
 
68
68
  its('home') { should eq '/' }
69
69
 
70
- ## include
70
+ ### include
71
71
 
72
72
  <%= partial "/shared/matcher_include" %>
73
73
 
74
- ## length
74
+ ### length
75
75
 
76
76
  The `length` matcher tests the length of a password that appears in `/etc/passwd`:
77
77
 
@@ -83,11 +83,11 @@ This matcher is best used in conjunction with filters. For example:
83
83
  its('length') { should_not be < 16 }
84
84
  end
85
85
 
86
- ## match
86
+ ### match
87
87
 
88
88
  <%= partial "/shared/matcher_match" %>
89
89
 
90
- ## passwords
90
+ ### passwords
91
91
 
92
92
  The `passwords` matcher tests if passwords are
93
93
 
@@ -100,7 +100,7 @@ For example:
100
100
  its('passwords') { should eq ['x'] }
101
101
  its('passwords') { should cmp '*' }
102
102
 
103
- ## shells
103
+ ### shells
104
104
 
105
105
  The `shells` matcher tests the absolute path of a shell (or command) to which a user has access:
106
106
 
@@ -112,7 +112,7 @@ or to find all users with the nologin shell:
112
112
  its('users') { should_not include 'my_login_user' }
113
113
  end
114
114
 
115
- ## uids
115
+ ### uids
116
116
 
117
117
  The `uids` matcher tests if the user indentifiers in the test match user identifiers in `/etc/passwd`:
118
118
 
@@ -125,24 +125,24 @@ or:
125
125
  its('count') { should eq 1 }
126
126
  end
127
127
 
128
- ## users
128
+ ### users
129
129
 
130
130
  The `users` matcher tests if the user names in the test match user names in `/etc/passwd`:
131
131
 
132
132
  its('users') { should eq ['root', 'www-data'] }
133
133
 
134
- # Examples
134
+ ## Examples
135
135
 
136
136
  The following examples show how to use this InSpec audit resource.
137
137
 
138
- ## Test usernames and UIDs
138
+ ### Test usernames and UIDs
139
139
 
140
140
  describe passwd do
141
141
  its('users') { should eq ['root', 'www-data'] }
142
142
  its('uids') { should eq [0, 33] }
143
143
  end
144
144
 
145
- ## Select one user and test for multiple occurrences
145
+ ### Select one user and test for multiple occurrences
146
146
 
147
147
  describe passwd.uids(0) do
148
148
  its('users') { should cmp 'root' }
@@ -19,7 +19,7 @@ These entries are defined as a colon-delimited row in the file, one row per user
19
19
 
20
20
  dannos:Gb7crrO5CDF.:10063:0:99999:7:::
21
21
 
22
- # Syntax
22
+ ## Syntax
23
23
 
24
24
  A `shadow` resource block declares one (or more) users and associated user information to be tested:
25
25
 
@@ -40,19 +40,19 @@ where
40
40
  * `filter` one (or more) arguments, for example: `passwd.users(/name/)` used to define filtering; `filter` may take any of the following arguments: `count` (retrieves the number of entries), `lines` (provides raw `passwd` lines), and `params` (returns an array of maps for all entries)
41
41
 
42
42
 
43
- # Matchers
43
+ ## Matchers
44
44
 
45
45
  This InSpec audit resource has the following matchers:
46
46
 
47
- ## be
47
+ ### be
48
48
 
49
49
  <%= partial "/shared/matcher_be" %>
50
50
 
51
- ## cmp
51
+ ### cmp
52
52
 
53
53
  <%= partial "/shared/matcher_cmp" %>
54
54
 
55
- ## count
55
+ ### count
56
56
 
57
57
  The `count` matcher tests the number of times the named user appears in `/etc/shadow`:
58
58
 
@@ -64,49 +64,49 @@ TThis matcher is best used in conjunction with filters. For example:
64
64
  its('count') { should eq 1 }
65
65
  end
66
66
 
67
- ## eq
67
+ ### eq
68
68
 
69
69
  <%= partial "/shared/matcher_eq" %>
70
70
 
71
- ## expiry_dates
71
+ ### expiry_dates
72
72
 
73
73
  The `expiry_dates` matcher tests the number of days a user account has been disabled:
74
74
 
75
75
  its('expiry_dates') { should eq '' }
76
76
 
77
- ## inactive_days
77
+ ### inactive_days
78
78
 
79
79
  The `inactive_days` matcher tests the number of days a user must be inactive before the user account is disabled:
80
80
 
81
81
  its('inactive_days') { should eq '' }
82
82
 
83
- ## include
83
+ ### include
84
84
 
85
85
  <%= partial "/shared/matcher_include" %>
86
86
 
87
- ## last_changes
87
+ ### last_changes
88
88
 
89
89
  The `last_changes` matcher tests the last time a password was changed:
90
90
 
91
91
  its('last_changes') { should eq '' }
92
92
 
93
- ## match
93
+ ### match
94
94
 
95
95
  <%= partial "/shared/matcher_match" %>
96
96
 
97
- ## max_days
97
+ ### max_days
98
98
 
99
99
  The `max_days` matcher tests the maximum number of days after which a password must be changed:
100
100
 
101
101
  its('max_days') { should eq 90 }
102
102
 
103
- ## min_days
103
+ ### min_days
104
104
 
105
105
  The `min_days` matcher tests the minimum number of days a password must exist, before it may be changed:
106
106
 
107
107
  its('min_days') { should eq 0 }
108
108
 
109
- ## passwords
109
+ ### passwords
110
110
 
111
111
  The `passwords` matcher tests if passwords are
112
112
 
@@ -119,29 +119,29 @@ For example:
119
119
  its('passwords') { should eq ['x'] }
120
120
  its('passwords') { should cmp '*' }
121
121
 
122
- ## users
122
+ ### users
123
123
 
124
124
  The `users` matcher tests if the user name exists `/etc/shadow`:
125
125
 
126
126
  its('users') { should eq 'root' }
127
127
 
128
- ## warn_days
128
+ ### warn_days
129
129
 
130
130
  The `warn_days` matcher tests the number of days a user is warned about an expiring password:
131
131
 
132
132
  its('warn_days') { should eq 7 }
133
133
 
134
- # Examples
134
+ ## Examples
135
135
 
136
136
  The following examples show how to use this InSpec audit resource.
137
137
 
138
- ## Test for a forbidden user
138
+ ### Test for a forbidden user
139
139
 
140
140
  describe shadow do
141
141
  its('users') { should_not include 'forbidden_user' }
142
142
  end
143
143
 
144
- ## Test that a user appears one time
144
+ ### Test that a user appears one time
145
145
 
146
146
  describe shadow.users('bin') do
147
147
  its('passwords') { should cmp 'x' }