inspec 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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' }