inspec 1.0.0 → 1.35.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +933 -101
- data/Gemfile +8 -17
- data/MAINTAINERS.md +2 -1
- data/MAINTAINERS.toml +9 -4
- data/README.md +49 -28
- data/Rakefile +54 -39
- data/bin/inspec +1 -1
- data/docs/dsl_inspec.md +17 -4
- data/docs/dsl_resource.md +1 -1
- data/docs/habitat.md +192 -0
- data/docs/inspec_and_friends.md +4 -2
- data/docs/matchers.md +11 -0
- data/docs/migration.md +293 -0
- data/docs/profiles.md +124 -76
- data/docs/resources/aide_conf.md.erb +81 -0
- data/docs/resources/apache_conf.md.erb +10 -10
- data/docs/resources/apt.md.erb +13 -13
- data/docs/resources/audit_policy.md.erb +10 -10
- data/docs/resources/auditd_conf.md.erb +10 -10
- data/docs/resources/auditd_rules.md.erb +11 -11
- data/docs/resources/bash.md.erb +12 -12
- data/docs/resources/bond.md.erb +15 -15
- data/docs/resources/bridge.md.erb +11 -11
- data/docs/resources/bsd_service.md.erb +11 -11
- data/docs/resources/command.md.erb +23 -23
- data/docs/resources/crontab.md.erb +84 -0
- data/docs/resources/csv.md.erb +10 -10
- data/docs/resources/dh_params.md +191 -0
- data/docs/resources/directory.md.erb +8 -8
- data/docs/resources/docker.md.erb +160 -0
- data/docs/resources/docker_container.md.erb +89 -0
- data/docs/resources/docker_image.md.erb +86 -0
- data/docs/resources/etc_group.md.erb +16 -16
- data/docs/resources/etc_hosts.md.erb +62 -0
- data/docs/resources/file.md.erb +80 -58
- data/docs/resources/gem.md.erb +32 -13
- data/docs/resources/group.md.erb +12 -12
- data/docs/resources/grub_conf.md.erb +11 -11
- data/docs/resources/host.md.erb +27 -18
- data/docs/resources/http.md.erb +104 -0
- data/docs/resources/iis_app.md.erb +126 -0
- data/docs/resources/iis_site.md.erb +17 -17
- data/docs/resources/inetd_conf.md.erb +10 -10
- data/docs/resources/ini.md.erb +9 -9
- data/docs/resources/interface.md.erb +13 -13
- data/docs/resources/iptables.md.erb +21 -14
- data/docs/resources/json.md.erb +11 -11
- data/docs/resources/kernel_module.md.erb +73 -12
- data/docs/resources/kernel_parameter.md.erb +12 -12
- data/docs/resources/key_rsa.md.erb +70 -0
- data/docs/resources/launchd_service.md.erb +11 -11
- data/docs/resources/limits_conf.md.erb +10 -10
- data/docs/resources/login_def.md.erb +12 -12
- data/docs/resources/mount.md.erb +14 -14
- data/docs/resources/mssql_session.md.erb +62 -0
- data/docs/resources/mysql_conf.md.erb +14 -14
- data/docs/resources/mysql_session.md.erb +22 -10
- data/docs/resources/npm.md.erb +13 -13
- data/docs/resources/ntp_conf.md.erb +9 -9
- data/docs/resources/oneget.md.erb +11 -11
- data/docs/resources/oracledb_session.md.erb +53 -0
- data/docs/resources/os.md.erb +17 -17
- data/docs/resources/os_env.md.erb +12 -12
- data/docs/resources/package.md.erb +29 -16
- data/docs/resources/parse_config.md.erb +18 -18
- data/docs/resources/parse_config_file.md.erb +29 -23
- data/docs/resources/{etc_passwd.md.erb → passwd.md.erb} +17 -17
- data/docs/resources/pip.md.erb +15 -15
- data/docs/resources/port.md.erb +23 -23
- data/docs/resources/postgres_conf.md.erb +15 -13
- data/docs/resources/postgres_hba_conf.md.erb +104 -0
- data/docs/resources/postgres_ident_conf.md.erb +87 -0
- data/docs/resources/postgres_session.md.erb +28 -21
- data/docs/resources/powershell.md.erb +14 -14
- data/docs/resources/processes.md.erb +123 -0
- data/docs/resources/rabbitmq_config.md.erb +55 -0
- data/docs/resources/registry_key.md.erb +44 -21
- data/docs/resources/runit_service.md.erb +11 -11
- data/docs/resources/security_policy.md.erb +10 -10
- data/docs/resources/service.md.erb +18 -18
- data/docs/resources/{etc_shadow.md.erb → shadow.md.erb} +19 -19
- data/docs/resources/ssh_config.md.erb +13 -13
- data/docs/resources/sshd_config.md.erb +15 -15
- data/docs/resources/ssl.md.erb +13 -13
- data/docs/resources/sys_info.md.erb +10 -10
- data/docs/resources/systemd_service.md.erb +11 -11
- data/docs/resources/sysv_service.md.erb +11 -11
- data/docs/resources/upstart_service.md.erb +11 -11
- data/docs/resources/user.md.erb +20 -20
- data/docs/resources/users.md.erb +19 -19
- data/docs/resources/vbscript.md.erb +13 -13
- data/docs/resources/virtualization.md.erb +71 -0
- data/docs/resources/windows_feature.md.erb +10 -10
- data/docs/resources/windows_task.md.erb +103 -0
- data/docs/resources/wmi.md.erb +10 -10
- data/docs/resources/x509_certificate.md.erb +146 -0
- data/docs/resources/xinetd_conf.md.erb +17 -17
- data/docs/resources/xml.md.erb +75 -0
- data/docs/resources/yaml.md.erb +25 -11
- data/docs/resources/yum.md.erb +24 -16
- data/docs/resources/zfs_dataset.md.erb +63 -0
- data/docs/resources/zfs_pool.md.erb +57 -0
- data/docs/ruby_usage.md +50 -0
- data/docs/shared/matcher_cmp.md.erb +4 -6
- data/examples/inheritance/README.md +49 -3
- data/examples/inheritance/controls/example.rb +4 -1
- data/examples/inheritance/inspec.yml +3 -1
- data/examples/meta-profile/README.md +29 -3
- data/examples/meta-profile/controls/example.rb +10 -5
- data/examples/meta-profile/inspec.yml +4 -8
- data/examples/profile/README.md +1 -1
- data/examples/profile/controls/example.rb +0 -1
- data/examples/profile/controls/gordon.rb +0 -1
- data/examples/profile/inspec.yml +1 -1
- data/examples/profile-attribute/inspec.yml +1 -1
- data/examples/profile-sensitive/README.md +29 -0
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -0
- data/examples/profile-sensitive/controls/sensitive.rb +9 -0
- data/examples/profile-sensitive/inspec.yml +8 -0
- data/inspec.gemspec +10 -2
- data/lib/bundles/inspec-artifact/README.md +1 -0
- data/lib/bundles/inspec-artifact/cli.rb +284 -0
- data/lib/bundles/inspec-artifact.rb +7 -0
- data/lib/bundles/inspec-compliance/README.md +44 -15
- data/lib/bundles/inspec-compliance/api.rb +135 -29
- data/lib/bundles/inspec-compliance/cli.rb +128 -21
- data/lib/bundles/inspec-compliance/configuration.rb +8 -0
- data/lib/bundles/inspec-compliance/http.rb +26 -19
- data/lib/bundles/inspec-compliance/target.rb +50 -25
- data/lib/bundles/inspec-habitat/cli.rb +31 -0
- data/lib/bundles/inspec-habitat/log.rb +10 -0
- data/lib/bundles/inspec-habitat/profile.rb +372 -0
- data/lib/bundles/inspec-habitat.rb +12 -0
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +0 -1
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +1 -1
- data/lib/bundles/inspec-supermarket/api.rb +7 -5
- data/lib/bundles/inspec-supermarket/cli.rb +2 -2
- data/lib/fetchers/git.rb +4 -2
- data/lib/fetchers/local.rb +4 -1
- data/lib/fetchers/url.rb +64 -10
- data/lib/inspec/archive/tar.rb +1 -1
- data/lib/inspec/backend.rb +26 -3
- data/lib/inspec/base_cli.rb +44 -7
- data/lib/inspec/cached_fetcher.rb +2 -2
- data/lib/inspec/cli.rb +34 -12
- data/lib/inspec/completions/fish.sh.erb +34 -0
- data/lib/inspec/control_eval_context.rb +0 -2
- data/lib/inspec/dependencies/cache.rb +0 -1
- data/lib/inspec/dependencies/dependency_set.rb +2 -2
- data/lib/inspec/dependencies/lockfile.rb +13 -6
- data/lib/inspec/dependencies/requirement.rb +6 -6
- data/lib/inspec/dependencies/resolver.rb +4 -4
- data/lib/inspec/dsl.rb +3 -5
- data/lib/inspec/env_printer.rb +9 -1
- data/lib/inspec/exceptions.rb +8 -0
- data/lib/inspec/fetcher.rb +1 -1
- data/lib/inspec/file_provider.rb +47 -11
- data/lib/inspec/library_eval_context.rb +1 -1
- data/lib/inspec/metadata.rb +62 -18
- data/lib/inspec/method_source.rb +24 -0
- data/lib/inspec/objects/attribute.rb +21 -0
- data/lib/inspec/objects/control.rb +21 -3
- data/lib/inspec/objects/each_loop.rb +2 -1
- data/lib/inspec/objects/list.rb +1 -1
- data/lib/inspec/objects/or_test.rb +17 -2
- data/lib/inspec/objects/tag.rb +27 -0
- data/lib/inspec/objects/test.rb +9 -8
- data/lib/inspec/objects.rb +1 -0
- data/lib/inspec/plugins/fetcher.rb +4 -5
- data/lib/inspec/plugins/resource.rb +1 -2
- data/lib/inspec/plugins/source_reader.rb +3 -3
- data/lib/inspec/plugins.rb +1 -1
- data/lib/inspec/polyfill.rb +0 -1
- data/lib/inspec/profile.rb +92 -23
- data/lib/inspec/profile_context.rb +1 -1
- data/lib/inspec/profile_vendor.rb +66 -0
- data/lib/inspec/resource.rb +29 -3
- data/lib/inspec/rspec_json_formatter.rb +672 -285
- data/lib/inspec/rule.rb +12 -16
- data/lib/inspec/runner.rb +26 -15
- data/lib/inspec/runner_rspec.rb +1 -0
- data/lib/inspec/runtime_profile.rb +26 -0
- data/lib/inspec/schema.rb +185 -0
- data/lib/inspec/secrets/yaml.rb +8 -1
- data/lib/inspec/secrets.rb +1 -1
- data/lib/inspec/shell.rb +92 -22
- data/lib/inspec/source_reader.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/inspec.rb +1 -1
- data/lib/matchers/matchers.rb +67 -17
- data/lib/resources/aide_conf.rb +162 -0
- data/lib/resources/apache.rb +0 -1
- data/lib/resources/apache_conf.rb +3 -3
- data/lib/resources/apt.rb +2 -1
- data/lib/resources/audit_policy.rb +0 -1
- data/lib/resources/auditd_conf.rb +1 -2
- data/lib/resources/auditd_rules.rb +5 -5
- data/lib/resources/bond.rb +1 -1
- data/lib/resources/bridge.rb +1 -1
- data/lib/resources/command.rb +5 -3
- data/lib/resources/crontab.rb +102 -0
- data/lib/resources/csv.rb +18 -1
- data/lib/resources/dh_params.rb +84 -0
- data/lib/resources/directory.rb +7 -3
- data/lib/resources/docker.rb +198 -0
- data/lib/resources/docker_container.rb +114 -0
- data/lib/resources/docker_image.rb +96 -0
- data/lib/resources/etc_group.rb +2 -3
- data/lib/resources/etc_hosts.rb +81 -0
- data/lib/resources/file.rb +88 -30
- data/lib/resources/gem.rb +26 -6
- data/lib/resources/groups.rb +4 -5
- data/lib/resources/grub_conf.rb +3 -4
- data/lib/resources/host.rb +175 -35
- data/lib/resources/http.rb +73 -0
- data/lib/resources/iis_app.rb +103 -0
- data/lib/resources/iis_site.rb +23 -0
- data/lib/resources/inetd_conf.rb +9 -4
- data/lib/resources/interface.rb +4 -3
- data/lib/resources/json.rb +37 -14
- data/lib/resources/kernel_module.rb +77 -10
- data/lib/resources/kernel_parameter.rb +0 -1
- data/lib/resources/key_rsa.rb +67 -0
- data/lib/resources/limits_conf.rb +3 -4
- data/lib/resources/login_def.rb +2 -3
- data/lib/resources/mount.rb +34 -4
- data/lib/resources/mssql_session.rb +81 -12
- data/lib/resources/mysql.rb +0 -1
- data/lib/resources/mysql_conf.rb +1 -2
- data/lib/resources/mysql_session.rb +18 -7
- data/lib/resources/nginx_conf.rb +95 -0
- data/lib/resources/ntp_conf.rb +2 -3
- data/lib/resources/oracledb_session.rb +138 -0
- data/lib/resources/os_env.rb +7 -5
- data/lib/resources/package.rb +70 -13
- data/lib/resources/packages.rb +111 -0
- data/lib/resources/parse_config.rb +3 -4
- data/lib/resources/passwd.rb +4 -5
- data/lib/resources/pip.rb +29 -21
- data/lib/resources/port.rb +133 -14
- data/lib/resources/postgres.rb +53 -43
- data/lib/resources/postgres_conf.rb +40 -13
- data/lib/resources/postgres_hba_conf.rb +101 -0
- data/lib/resources/postgres_ident_conf.rb +79 -0
- data/lib/resources/postgres_session.rb +28 -20
- data/lib/resources/powershell.rb +2 -2
- data/lib/resources/processes.rb +61 -26
- data/lib/resources/rabbitmq_conf.rb +53 -0
- data/lib/resources/registry_key.rb +34 -11
- data/lib/resources/security_policy.rb +2 -2
- data/lib/resources/service.rb +17 -7
- data/lib/resources/ssh_conf.rb +17 -6
- data/lib/resources/ssl.rb +3 -4
- data/lib/resources/sys_info.rb +1 -1
- data/lib/resources/toml.rb +26 -0
- data/lib/resources/users.rb +41 -41
- data/lib/resources/virtualization.rb +252 -0
- data/lib/resources/windows_task.rb +106 -0
- data/lib/resources/x509_certificate.rb +143 -0
- data/lib/resources/xinetd.rb +18 -2
- data/lib/resources/xml.rb +27 -0
- data/lib/resources/yaml.rb +10 -2
- data/lib/resources/yum.rb +25 -7
- data/lib/resources/zfs_dataset.rb +60 -0
- data/lib/resources/zfs_pool.rb +49 -0
- data/lib/source_readers/flat.rb +2 -1
- data/lib/source_readers/inspec.rb +30 -11
- data/lib/utils/command_wrapper.rb +3 -3
- data/lib/utils/database_helpers.rb +77 -0
- data/lib/utils/erlang_parser.rb +192 -0
- data/lib/utils/filter.rb +2 -1
- data/lib/utils/filter_array.rb +0 -1
- data/lib/utils/find_files.rb +1 -2
- data/lib/utils/latest_version.rb +21 -0
- data/lib/utils/nginx_parser.rb +76 -0
- data/lib/utils/object_traversal.rb +5 -4
- data/lib/utils/parser.rb +23 -4
- data/lib/utils/plugin_registry.rb +3 -3
- data/lib/utils/simpleconfig.rb +25 -8
- data/lib/utils/spdx.rb +13 -0
- data/lib/utils/spdx.txt +344 -0
- metadata +168 -22
- data/docs/cli.md +0 -342
- data/docs/resources/process.md.erb +0 -73
- /data/docs/{plugin_kitchen_inspec.html.md → plugin_kitchen_inspec.md} +0 -0
data/docs/resources/user.md.erb
CHANGED
|
@@ -6,7 +6,7 @@ title: About the user Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `user` InSpec audit resource to test user profiles for a single, known/expected local user, including the groups to which that user belongs, the frequency of required password changes, and the directory paths to home and shell.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `user` resource block declares a user name, and then one (or more) matchers:
|
|
12
12
|
|
|
@@ -29,29 +29,29 @@ where
|
|
|
29
29
|
* `it { should exist }` tests if the user exists
|
|
30
30
|
* `gid`, `group`, `groups`, `home`, `maxdays`, `mindays`, `shell`, `uid`, and `warndays` are valid matchers for this resource
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
## Matchers
|
|
33
33
|
|
|
34
34
|
This InSpec audit resource has the following matchers:
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### be
|
|
37
37
|
|
|
38
38
|
<%= partial "/shared/matcher_be" %>
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### cmp
|
|
41
41
|
|
|
42
42
|
<%= partial "/shared/matcher_cmp" %>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
### eq
|
|
45
45
|
|
|
46
46
|
<%= partial "/shared/matcher_eq" %>
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
### exist
|
|
49
49
|
|
|
50
50
|
The `exist` matcher tests if the named user exists:
|
|
51
51
|
|
|
52
52
|
it { should exist }
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
### gid
|
|
55
55
|
|
|
56
56
|
The `gid` matcher tests the group identifier:
|
|
57
57
|
|
|
@@ -59,7 +59,7 @@ The `gid` matcher tests the group identifier:
|
|
|
59
59
|
|
|
60
60
|
where `1234` represents the user identifier.
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### group
|
|
63
63
|
|
|
64
64
|
The `group` matcher tests the group to which the user belongs:
|
|
65
65
|
|
|
@@ -67,27 +67,27 @@ The `group` matcher tests the group to which the user belongs:
|
|
|
67
67
|
|
|
68
68
|
where `root` represents the group.
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### groups
|
|
71
71
|
|
|
72
72
|
The `groups` matcher tests two (or more) groups to which the user belongs:
|
|
73
73
|
|
|
74
74
|
its('groups') { should eq ['root', 'other']}
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
### home
|
|
77
77
|
|
|
78
78
|
The `home` matcher tests the home directory path for the user:
|
|
79
79
|
|
|
80
80
|
its('home') { should eq '/root' }
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
### include
|
|
83
83
|
|
|
84
84
|
<%= partial "/shared/matcher_include" %>
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
### match
|
|
87
87
|
|
|
88
88
|
<%= partial "/shared/matcher_match" %>
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
### maxdays
|
|
91
91
|
|
|
92
92
|
The `maxdays` matcher tests the maximum number of days between password changes:
|
|
93
93
|
|
|
@@ -95,7 +95,7 @@ The `maxdays` matcher tests the maximum number of days between password changes:
|
|
|
95
95
|
|
|
96
96
|
where `99` represents the maximum number of days.
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
### mindays
|
|
99
99
|
|
|
100
100
|
The `mindays` matcher tests the minimum number of days between password changes:
|
|
101
101
|
|
|
@@ -103,13 +103,13 @@ The `mindays` matcher tests the minimum number of days between password changes:
|
|
|
103
103
|
|
|
104
104
|
where `0` represents the maximum number of days.
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
### shell
|
|
107
107
|
|
|
108
108
|
The `shell` matcher tests the path to the default shell for the user:
|
|
109
109
|
|
|
110
110
|
its('shell') { should eq '/bin/bash' }
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
### uid
|
|
113
113
|
|
|
114
114
|
The `uid` matcher tests the user identifier:
|
|
115
115
|
|
|
@@ -117,7 +117,7 @@ The `uid` matcher tests the user identifier:
|
|
|
117
117
|
|
|
118
118
|
where `1234` represents the user identifier.
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
### warndays
|
|
121
121
|
|
|
122
122
|
The `warndays` matcher tests the number of days a user is warned before a password must be changed:
|
|
123
123
|
|
|
@@ -125,11 +125,11 @@ The `warndays` matcher tests the number of days a user is warned before a passwo
|
|
|
125
125
|
|
|
126
126
|
where `5` represents the number of days a user is warned.
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
## Examples
|
|
129
129
|
|
|
130
130
|
The following examples show how to use this InSpec audit resource.
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
### Verify available users for the MySQL server
|
|
133
133
|
|
|
134
134
|
describe user('root') do
|
|
135
135
|
it { should exist }
|
|
@@ -142,7 +142,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
142
142
|
it { should_not exist }
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
### Test users on multiple platforms
|
|
146
146
|
|
|
147
147
|
The `nginx` user is typically `www-data`, but on CentOS it's `nginx`. The following example shows how to test for the `nginx` user with a single test, but accounting for all platforms:
|
|
148
148
|
|
data/docs/resources/users.md.erb
CHANGED
|
@@ -6,7 +6,7 @@ title: About the users Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `users` InSpec audit resource to look up all local users available on the system, and then test specific properties of those users. This resource does not return information about users that may be located on other systems, such as LDAP or Active Directory.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `users` resource block declares a user name, and then one (or more) matchers:
|
|
12
12
|
|
|
@@ -33,29 +33,29 @@ or:
|
|
|
33
33
|
it { should exist }
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
## Matchers
|
|
37
37
|
|
|
38
38
|
This InSpec audit resource has the following matchers:
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
### be
|
|
41
41
|
|
|
42
42
|
<%= partial "/shared/matcher_be" %>
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
### cmp
|
|
45
45
|
|
|
46
46
|
<%= partial "/shared/matcher_cmp" %>
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
### eq
|
|
49
49
|
|
|
50
50
|
<%= partial "/shared/matcher_eq" %>
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
### exist
|
|
53
53
|
|
|
54
54
|
The `exist` matcher tests if the named user exists:
|
|
55
55
|
|
|
56
56
|
it { should exist }
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
### gid
|
|
59
59
|
|
|
60
60
|
The `gid` matcher tests the group identifier:
|
|
61
61
|
|
|
@@ -63,7 +63,7 @@ The `gid` matcher tests the group identifier:
|
|
|
63
63
|
|
|
64
64
|
where `1234` represents the user identifier.
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
### group
|
|
67
67
|
|
|
68
68
|
The `group` matcher tests the group to which the user belongs:
|
|
69
69
|
|
|
@@ -71,27 +71,27 @@ The `group` matcher tests the group to which the user belongs:
|
|
|
71
71
|
|
|
72
72
|
where `root` represents the group.
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
### groups
|
|
75
75
|
|
|
76
76
|
The `groups` matcher tests two (or more) groups to which the user belongs:
|
|
77
77
|
|
|
78
78
|
its('groups') { should eq ['root', 'other']}
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
### home
|
|
81
81
|
|
|
82
82
|
The `home` matcher tests the home directory path for the user:
|
|
83
83
|
|
|
84
84
|
its('home') { should eq '/root' }
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
### include
|
|
87
87
|
|
|
88
88
|
<%= partial "/shared/matcher_include" %>
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
### match
|
|
91
91
|
|
|
92
92
|
<%= partial "/shared/matcher_match" %>
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
### maxdays
|
|
95
95
|
|
|
96
96
|
The `maxdays` matcher tests the maximum number of days between password changes:
|
|
97
97
|
|
|
@@ -99,7 +99,7 @@ The `maxdays` matcher tests the maximum number of days between password changes:
|
|
|
99
99
|
|
|
100
100
|
where `99` represents the maximum number of days.
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
### mindays
|
|
103
103
|
|
|
104
104
|
The `mindays` matcher tests the minimum number of days between password changes:
|
|
105
105
|
|
|
@@ -107,13 +107,13 @@ The `mindays` matcher tests the minimum number of days between password changes:
|
|
|
107
107
|
|
|
108
108
|
where `0` represents the maximum number of days.
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
### shell
|
|
111
111
|
|
|
112
112
|
The `shell` matcher tests the path to the default shell for the user:
|
|
113
113
|
|
|
114
114
|
its('shell') { should eq '/bin/bash' }
|
|
115
115
|
|
|
116
|
-
|
|
116
|
+
### uid
|
|
117
117
|
|
|
118
118
|
The `uid` matcher tests the user identifier:
|
|
119
119
|
|
|
@@ -121,7 +121,7 @@ The `uid` matcher tests the user identifier:
|
|
|
121
121
|
|
|
122
122
|
where `1234` represents the user identifier.
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
### warndays
|
|
125
125
|
|
|
126
126
|
The `warndays` matcher tests the number of days a user is warned before a password must be changed:
|
|
127
127
|
|
|
@@ -129,11 +129,11 @@ The `warndays` matcher tests the number of days a user is warned before a passwo
|
|
|
129
129
|
|
|
130
130
|
where `5` represents the number of days a user is warned.
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
## Examples
|
|
133
133
|
|
|
134
134
|
The following examples show how to use this InSpec audit resource.
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
### Use a regular expression to find users
|
|
137
137
|
|
|
138
138
|
describe users.where { uid =~ /S\-1\-5\-21\-\d+\-\d+\-\d+\-500/ } do
|
|
139
139
|
it { should exist }
|
|
@@ -6,11 +6,11 @@ title: About the vbscript Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `vbscript` InSpec audit resource to test a VBScript on the Windows platform.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `vbscript` resource block tests the output of a VBScript on the Windows platform:
|
|
12
12
|
|
|
13
|
-
describe vbscript('
|
|
13
|
+
describe vbscript('script contents') do
|
|
14
14
|
its('stdout') { should eq 'output' }
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -20,50 +20,50 @@ where
|
|
|
20
20
|
* `('output')` is the expected output of the VBScript
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
## Matchers
|
|
24
24
|
|
|
25
25
|
This InSpec audit resource has the following matchers:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
### be
|
|
28
28
|
|
|
29
29
|
<%= partial "/shared/matcher_be" %>
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
### cmp
|
|
32
32
|
|
|
33
33
|
<%= partial "/shared/matcher_cmp" %>
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
### eq
|
|
36
36
|
|
|
37
37
|
<%= partial "/shared/matcher_eq" %>
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
### include
|
|
40
40
|
|
|
41
41
|
<%= partial "/shared/matcher_include" %>
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
### match
|
|
44
44
|
|
|
45
45
|
<%= partial "/shared/matcher_match" %>
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
## Examples
|
|
48
48
|
|
|
49
49
|
The following examples show how to use this InSpec audit resource.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
### Test a VBScript
|
|
52
52
|
|
|
53
53
|
A VBScript file similar to:
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
script = <<-EOH
|
|
56
56
|
WScript.Echo "hello"
|
|
57
57
|
EOH
|
|
58
58
|
|
|
59
59
|
may be tested for multiple lines:
|
|
60
60
|
|
|
61
|
-
describe vbscript(
|
|
61
|
+
describe vbscript(script) do
|
|
62
62
|
its('stdout') { should eq "hello\r\n" }
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
and tested for whitespace removal from standard output:
|
|
66
66
|
|
|
67
|
-
describe vbscript(
|
|
67
|
+
describe vbscript(script) do
|
|
68
68
|
its('strip') { should eq "hello" }
|
|
69
69
|
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About the virtualization Resource
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# virtualization
|
|
6
|
+
|
|
7
|
+
Use the `virtualization` InSpec audit resource to test the virtualization platform on which the system is running.
|
|
8
|
+
|
|
9
|
+
## Syntax
|
|
10
|
+
|
|
11
|
+
An `virtualization` resource block declares the virtualization platform that should be tested:
|
|
12
|
+
|
|
13
|
+
describe virtualization do
|
|
14
|
+
its('system') { should MATCHER 'value' }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
where
|
|
18
|
+
|
|
19
|
+
* `('system')` is the name of the system information of the virtualization platform (e.g. docker, lxc, vbox, kvm, etc)
|
|
20
|
+
* `MATCHER` is a valid matcher for this resource
|
|
21
|
+
* `'value'` is the value to be tested
|
|
22
|
+
|
|
23
|
+
## Matchers
|
|
24
|
+
|
|
25
|
+
This InSpec audit resource has the following matchers:
|
|
26
|
+
|
|
27
|
+
### be
|
|
28
|
+
|
|
29
|
+
<%= partial "/shared/matcher_be" %>
|
|
30
|
+
|
|
31
|
+
### cmp
|
|
32
|
+
|
|
33
|
+
<%= partial "/shared/matcher_cmp" %>
|
|
34
|
+
|
|
35
|
+
### eq
|
|
36
|
+
|
|
37
|
+
<%= partial "/shared/matcher_eq" %>
|
|
38
|
+
|
|
39
|
+
### include
|
|
40
|
+
|
|
41
|
+
<%= partial "/shared/matcher_include" %>
|
|
42
|
+
|
|
43
|
+
### match
|
|
44
|
+
|
|
45
|
+
<%= partial "/shared/matcher_match" %>
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
The following examples show how to use this InSpec audit resource.
|
|
50
|
+
|
|
51
|
+
### Test for Docker
|
|
52
|
+
|
|
53
|
+
describe virtualization do
|
|
54
|
+
its('system') { should eq 'docker' }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
### Test for VirtualBox
|
|
58
|
+
|
|
59
|
+
describe virtualization do
|
|
60
|
+
its('system') { should eq 'vbox' }
|
|
61
|
+
its('role') { should eq 'guest' }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
### Detect the virtualization platform
|
|
65
|
+
|
|
66
|
+
if virtualization.system == 'vbox'
|
|
67
|
+
describe package('name') do
|
|
68
|
+
it { should be_installed }
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
@@ -6,7 +6,7 @@ title: About the windows_feature Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `windows_feature` InSpec audit resource to test features on Windows via the `Get-WindowsFeature` cmdlet.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `windows_feature` resource block declares the name of the Windows feature, tests if that feature is installed, and then returns information about that feature:
|
|
12
12
|
|
|
@@ -20,41 +20,41 @@ where
|
|
|
20
20
|
* `be_installed` is a valid matcher for this resource
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
## Matchers
|
|
24
24
|
|
|
25
25
|
This InSpec audit resource has the following matchers:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
### be
|
|
28
28
|
|
|
29
29
|
<%= partial "/shared/matcher_be" %>
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
### be_installed
|
|
32
32
|
|
|
33
33
|
The `be_installed` matcher tests if the named Windows feature is installed:
|
|
34
34
|
|
|
35
35
|
it { should be_installed }
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
### cmp
|
|
38
38
|
|
|
39
39
|
<%= partial "/shared/matcher_cmp" %>
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
### eq
|
|
42
42
|
|
|
43
43
|
<%= partial "/shared/matcher_eq" %>
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
### include
|
|
46
46
|
|
|
47
47
|
<%= partial "/shared/matcher_include" %>
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
### match
|
|
50
50
|
|
|
51
51
|
<%= partial "/shared/matcher_match" %>
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
## Examples
|
|
54
54
|
|
|
55
55
|
The following examples show how to use this InSpec audit resource.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
### Test the DHCP Server feature
|
|
58
58
|
|
|
59
59
|
describe windows_feature('DHCP Server') do
|
|
60
60
|
it{ should be_installed }
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About the windows_task Resource
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# windows_task
|
|
6
|
+
|
|
7
|
+
Use the `windows_task` Inspec audit resource to test a scheduled tasks configuration on a Windows platform.
|
|
8
|
+
Microsoft and application vendors use scheduled tasks to perform a variety of system maintaince tasks but system administrators can schedule their own.
|
|
9
|
+
|
|
10
|
+
## Syntax
|
|
11
|
+
|
|
12
|
+
A `windows_task` resource block declares the name of the task (as its full path) and tests its configuration:
|
|
13
|
+
|
|
14
|
+
describe windows_task('task name uri') do
|
|
15
|
+
its('parameter') { should eq 'value' }
|
|
16
|
+
it { should be_enabled }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
where
|
|
20
|
+
|
|
21
|
+
* `'parameter'` must be a valid parameter defined within this resource ie `logon_mode`, `last_result`, `task_to_run`, `run_as_user`
|
|
22
|
+
* `'value'` will be used to compare the value gather from your chosen parameter
|
|
23
|
+
* `'be_enabled'` is an example of a valid matcher that checks the state of a task, other examples are `exist` or `be_disabled`
|
|
24
|
+
|
|
25
|
+
## Matchers
|
|
26
|
+
|
|
27
|
+
This InSpec audit resource has the following matchers:
|
|
28
|
+
|
|
29
|
+
### be
|
|
30
|
+
|
|
31
|
+
<%= partial "/shared/matcher_be" %>
|
|
32
|
+
|
|
33
|
+
### cmp
|
|
34
|
+
|
|
35
|
+
<%= partial "/shared/matcher_cmp" %>
|
|
36
|
+
|
|
37
|
+
### eq
|
|
38
|
+
|
|
39
|
+
<%= partial "/shared/matcher_eq" %>
|
|
40
|
+
|
|
41
|
+
### include
|
|
42
|
+
|
|
43
|
+
<%= partial "/shared/matcher_include" %>
|
|
44
|
+
|
|
45
|
+
### match
|
|
46
|
+
|
|
47
|
+
<%= partial "/shared/matcher_match" %>
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
The following examples show how to use this InSpec resource.
|
|
52
|
+
|
|
53
|
+
### Test's that a task is enabled
|
|
54
|
+
```
|
|
55
|
+
describe windows_task('\Microsoft\Windows\Time Synchronization\SynchronizeTime') do
|
|
56
|
+
it { should be_enabled }
|
|
57
|
+
end
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Test's that a task is disabled
|
|
61
|
+
```
|
|
62
|
+
describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
|
|
63
|
+
it { should be_disabled }
|
|
64
|
+
end
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Test's the configuration parameters of a task
|
|
68
|
+
```
|
|
69
|
+
describe windows_task('\Microsoft\Windows\AppID\PolicyConverter') do
|
|
70
|
+
its('logon_mode') { should eq 'Interactive/Background' }
|
|
71
|
+
its('last_result') { should eq '1' }
|
|
72
|
+
its('task_to_run') { should cmp '%Windir%\system32\appidpolicyconverter.exe' }
|
|
73
|
+
its('run_as_user') { should eq 'LOCAL SERVICE' }
|
|
74
|
+
end
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Test's that a task is defined
|
|
78
|
+
```
|
|
79
|
+
describe windows_task('\Microsoft\Windows\Defrag\ScheduledDefrag') do
|
|
80
|
+
it { should exist }
|
|
81
|
+
end
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Gathering Tasknames
|
|
85
|
+
Rather then use the GUI you can use the `schtasks.exe` to output a full list of tasks available on the system
|
|
86
|
+
|
|
87
|
+
`schtasks /query /FO list`
|
|
88
|
+
|
|
89
|
+
rather than use the `list` output you can use `CSV` if it is easier.
|
|
90
|
+
|
|
91
|
+
Please make sure you use the full TaskName (include the prefix `\`) within your control
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
C:\>schtasks /query /FO list
|
|
95
|
+
...
|
|
96
|
+
Folder: \Microsoft\Windows\Diagnosis
|
|
97
|
+
HostName: XPS15
|
|
98
|
+
TaskName: \Microsoft\Windows\Diagnosis\Scheduled
|
|
99
|
+
Next Run Time: N/A
|
|
100
|
+
Status: Ready
|
|
101
|
+
Logon Mode: Interactive/Background
|
|
102
|
+
...
|
|
103
|
+
```
|
data/docs/resources/wmi.md.erb
CHANGED
|
@@ -6,7 +6,7 @@ title: About the wmi Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `wmi` InSpec audit resource to test WMI settings on the Windows platform.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `wmi` resource block tests WMI settings on the Windows platform:
|
|
12
12
|
|
|
@@ -47,35 +47,35 @@ and the second uses a filter in the Ruby Hash to first identify WinRM, and then
|
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
## Matchers
|
|
51
51
|
|
|
52
52
|
This InSpec audit resource has the following matchers:
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
### be
|
|
55
55
|
|
|
56
56
|
<%= partial "/shared/matcher_be" %>
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
### cmp
|
|
59
59
|
|
|
60
60
|
<%= partial "/shared/matcher_cmp" %>
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
### eq
|
|
63
63
|
|
|
64
64
|
<%= partial "/shared/matcher_eq" %>
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
### include
|
|
67
67
|
|
|
68
68
|
<%= partial "/shared/matcher_include" %>
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
### match
|
|
71
71
|
|
|
72
72
|
<%= partial "/shared/matcher_match" %>
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
## Examples
|
|
75
75
|
|
|
76
76
|
The following examples show how to use this InSpec audit resource.
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
### Test a password expiration policy
|
|
79
79
|
|
|
80
80
|
describe wmi({
|
|
81
81
|
class: 'RSOP_SecuritySettingNumeric',
|
|
@@ -85,7 +85,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
85
85
|
its('Setting') { should eq 1 }
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
### Test if an anonymous user can query the Local Security Authority (LSA)
|
|
89
89
|
|
|
90
90
|
describe wmi({
|
|
91
91
|
namespace: 'root\rsop\computer',
|