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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About the processes Resource
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# processes
|
|
6
|
+
|
|
7
|
+
Use the `processes` InSpec audit resource to test properties for programs that are running on the system.
|
|
8
|
+
|
|
9
|
+
## Syntax
|
|
10
|
+
|
|
11
|
+
A `processes` resource block declares the name of the process to be tested, and then declares one (or more) property/value pairs:
|
|
12
|
+
|
|
13
|
+
describe processes('process_name') do
|
|
14
|
+
its('property_name') { should eq ['property_value'] }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
where
|
|
18
|
+
|
|
19
|
+
* `processes('process_name')` specifies the name of a process to check. If this is a string, it will be converted to a Regexp. For more specificity, pass a Regexp directly.
|
|
20
|
+
* `property_name` may be used to test user (`its('users')`) and state properties (`its('states')`)
|
|
21
|
+
|
|
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
|
+
### property_name
|
|
48
|
+
|
|
49
|
+
The `property_name` matcher tests the named property for the specified value:
|
|
50
|
+
|
|
51
|
+
its('property_name') { should eq ['property_value'] }
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
|
|
55
|
+
The following examples show how to use this InSpec audit resource.
|
|
56
|
+
|
|
57
|
+
### Test if the list length for the mysqld process is 1
|
|
58
|
+
|
|
59
|
+
describe processes('mysqld') do
|
|
60
|
+
its('list.length') { should eq 1 }
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
### Test if the process is owned by a specifc user
|
|
64
|
+
|
|
65
|
+
describe processes('init') do
|
|
66
|
+
its('users') { should eq ['root'] }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe processes('winlogon') do
|
|
70
|
+
its('users') { should cmp "NT AUTHORITY\\SYSTEM" }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Test if a high-priority process is running
|
|
75
|
+
|
|
76
|
+
describe processes('linux_process') do
|
|
77
|
+
its('states') { should eq ['R<'] }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe processes('windows_process') do
|
|
81
|
+
its('labels') { should cmp "High" }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
### Test if a process exists on the system
|
|
85
|
+
|
|
86
|
+
describe processes('some_process') do
|
|
87
|
+
it { should exist }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
### Test for a process using a specific Regexp
|
|
91
|
+
|
|
92
|
+
If the process name is too common for a string to uniquely find it,
|
|
93
|
+
you may use a regexp. Inclusion of whitespace characters may be
|
|
94
|
+
needed.
|
|
95
|
+
|
|
96
|
+
describe processes(Regexp.new("/usr/local/bin/swap -d")) do
|
|
97
|
+
its('list.length') { should eq 1 }
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
### Notes for auditing Windows systems
|
|
101
|
+
|
|
102
|
+
Sometimes with system properties there isn't a direct comparison between different operating systems.
|
|
103
|
+
Most of the `property_name`'s do align between the different OS's.
|
|
104
|
+
|
|
105
|
+
There are however some exception's, for example, within linux `states` offers multiple properties.
|
|
106
|
+
Windows doesn't have direct comparison that is a single property so instead `states` is mapped to the property of `Responding`, This is a boolean true/false flag to help determine if the process is hung.
|
|
107
|
+
|
|
108
|
+
Below is a mapping table to help you understand what property the unix field maps to the windows `Get-Process` Property
|
|
109
|
+
|
|
110
|
+
| *unix ps field* | *windows PowerShell Property* |
|
|
111
|
+
|:---------------:|:-----------------------------:|
|
|
112
|
+
|labels |PriorityClass|
|
|
113
|
+
|pids |Id|
|
|
114
|
+
|cpus |CPU|
|
|
115
|
+
|mem |PM|
|
|
116
|
+
|vsz |VirtualMemorySize|
|
|
117
|
+
|rss |NPM|
|
|
118
|
+
|tty |SessionId|
|
|
119
|
+
|states |Responding|
|
|
120
|
+
|start |StartTime|
|
|
121
|
+
|time |TotalProcessorTime|
|
|
122
|
+
|users |UserName|
|
|
123
|
+
|commands |Path|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About the rabbitmq_config Resource
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# rabbitmq_config
|
|
6
|
+
|
|
7
|
+
Use the `rabbitmq_config` InSpec audit resource to test configuration data for the RabbitMQ daemon located at `/etc/rabbitmq/rabbitmq.config` on Linux and Unix platforms.
|
|
8
|
+
|
|
9
|
+
## Syntax
|
|
10
|
+
|
|
11
|
+
A `rabbitmq_config` resource block declares the RabbitMQ configuration data to be tested:
|
|
12
|
+
|
|
13
|
+
describe rabbitmq_config.params('rabbit', 'ssl_listeners') do
|
|
14
|
+
it { should cmp 5671 }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
where
|
|
18
|
+
|
|
19
|
+
* `params` is the list of parameters configured in the RabbitMQ config file
|
|
20
|
+
* `{ should cmp 5671 }` tests the value of `rabbit.ssl_listeners` as read from `rabbitmq.config` versus the value declared in the test
|
|
21
|
+
|
|
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 the list of TCP listeners
|
|
52
|
+
|
|
53
|
+
describe rabbitmq_config.params('rabbit', 'tcp_listeners') do
|
|
54
|
+
it { should eq [5672] }
|
|
55
|
+
end
|
|
@@ -6,7 +6,7 @@ title: About the registry_key Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `registry_key` InSpec audit resource to test key values in the Windows registry.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `registry_key` resource block declares the item in the Windows registry, the path to a setting under that item, and then one (or more) name/value pairs to be tested.
|
|
12
12
|
|
|
@@ -27,13 +27,13 @@ Or use a Ruby Hash:
|
|
|
27
27
|
describe registry_key({
|
|
28
28
|
name: 'Task Scheduler',
|
|
29
29
|
hive: 'HKEY_LOCAL_MACHINE',
|
|
30
|
-
key: '
|
|
30
|
+
key: '\SYSTEM\CurrentControlSet\services\Schedule'
|
|
31
31
|
}) do
|
|
32
32
|
its('Start') { should eq 2 }
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
### Registry Key Path Separators
|
|
37
37
|
|
|
38
38
|
A Windows registry key can be used as a string in Ruby code, such as when a registry key is used as the name of a recipe. In Ruby, when a registry key is enclosed in a double-quoted string (`" "`), the same backslash character (`\`) that is used to define the registry key path separator is also used in Ruby to define an escape character. Therefore, the registry key path separators must be escaped when they are enclosed in a double-quoted string. For example, the following registry key:
|
|
39
39
|
|
|
@@ -48,15 +48,28 @@ or may be enclosed in a double-quoted string with an extra backslash as an escap
|
|
|
48
48
|
"HKCU\\SOFTWARE\\path\\to\\key\\Themes"
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
<p class="warning">
|
|
52
|
+
Please make sure that you use backslashes instead of forward slashes. Forward slashes will not work for registry keys.
|
|
53
|
+
</p>
|
|
54
|
+
|
|
55
|
+
# The following will not work:
|
|
56
|
+
# describe registry_key('HKLM/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Full/1033') do
|
|
57
|
+
# its('Release') { should eq 378675 }
|
|
58
|
+
# end
|
|
59
|
+
# You should use:
|
|
60
|
+
describe registry_key('HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1033') do
|
|
61
|
+
its('Release') { should eq 378675 }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
## Matchers
|
|
52
65
|
|
|
53
66
|
This InSpec audit resource has the following matchers:
|
|
54
67
|
|
|
55
|
-
|
|
68
|
+
### be
|
|
56
69
|
|
|
57
70
|
<%= partial "/shared/matcher_be" %>
|
|
58
71
|
|
|
59
|
-
|
|
72
|
+
### children
|
|
60
73
|
|
|
61
74
|
The `children` matcher return all of the child items of a registry key. A regular expression may be used to filter child items:
|
|
62
75
|
|
|
@@ -73,65 +86,75 @@ For example, to get all child items for a registry key:
|
|
|
73
86
|
The following example shows how find a property that may exist against multiple registry keys, and then test that property for every registry key in which that property is located:
|
|
74
87
|
|
|
75
88
|
describe registry_key({
|
|
76
|
-
hive: HKEY_USERS
|
|
77
|
-
}).children(/^S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]{3,}\\Software\\Policies\\Microsoft\\Windows\\Installer/).each
|
|
78
|
-
{ |key|
|
|
89
|
+
hive: 'HKEY_USERS'
|
|
90
|
+
}).children(/^S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]{3,}\\Software\\Policies\\Microsoft\\Windows\\Installer/).each { |key|
|
|
79
91
|
describe registry_key(key) do
|
|
80
92
|
its('AlwaysInstallElevated') { should eq 'value' }
|
|
81
93
|
end
|
|
82
94
|
}
|
|
83
95
|
|
|
84
|
-
|
|
96
|
+
### cmp
|
|
85
97
|
|
|
86
98
|
<%= partial "/shared/matcher_cmp" %>
|
|
87
99
|
|
|
88
|
-
|
|
100
|
+
### eq
|
|
89
101
|
|
|
90
102
|
<%= partial "/shared/matcher_eq" %>
|
|
91
103
|
|
|
92
|
-
|
|
104
|
+
### exist
|
|
93
105
|
|
|
94
106
|
The `exist` matcher tests if the registry key is present:
|
|
95
107
|
|
|
96
108
|
it { should exist }
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
### have_property
|
|
99
111
|
|
|
100
112
|
The `have_property` matcher tests if a property exists for a registry key:
|
|
101
113
|
|
|
102
114
|
it { should have_property 'value' }
|
|
103
115
|
|
|
104
|
-
|
|
116
|
+
### have\_property\_value
|
|
105
117
|
|
|
106
118
|
The `have_property_value` matcher tests if a property value exists for a registry key:
|
|
107
119
|
|
|
108
120
|
it { should have_property_value 'value' }
|
|
109
121
|
|
|
110
|
-
|
|
122
|
+
### have_value
|
|
111
123
|
|
|
112
124
|
The `have_value` matcher tests if a value exists for a registry key:
|
|
113
125
|
|
|
114
126
|
it { should have_value 'value' }
|
|
115
127
|
|
|
116
|
-
|
|
128
|
+
### include
|
|
117
129
|
|
|
118
130
|
<%= partial "/shared/matcher_include" %>
|
|
119
131
|
|
|
120
|
-
|
|
132
|
+
### match
|
|
121
133
|
|
|
122
134
|
<%= partial "/shared/matcher_match" %>
|
|
123
135
|
|
|
124
|
-
|
|
136
|
+
### name
|
|
125
137
|
|
|
126
138
|
The `name` matcher tests the value for the specified registry setting:
|
|
127
139
|
|
|
128
140
|
its('name') { should eq 'value' }
|
|
129
141
|
|
|
130
|
-
|
|
142
|
+
|
|
143
|
+
<p class="warning">
|
|
144
|
+
Any name with a dot will not work as expected: <code>its('explorer.exe') { should eq 'test' }</code>. This issue is tracked in <a href="https://github.com/chef/inspec/issues/1281">https://github.com/chef/inspec/issues/1281</a>
|
|
145
|
+
</p>
|
|
146
|
+
|
|
147
|
+
# instead of:
|
|
148
|
+
# its('explorer.exe') { should eq 'test' }
|
|
149
|
+
# use the following solution:
|
|
150
|
+
it { should have_property_value('explorer.exe', :string, 'test') }
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
## Examples
|
|
131
154
|
|
|
132
155
|
The following examples show how to use this InSpec audit resource.
|
|
133
156
|
|
|
134
|
-
|
|
157
|
+
### Test the start time for the Schedule service
|
|
135
158
|
|
|
136
159
|
describe registry_key('Task Scheduler','HKEY_LOCAL_MACHINE\...\Schedule') do
|
|
137
160
|
its('Start') { should eq 2 }
|
|
@@ -139,7 +162,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
139
162
|
|
|
140
163
|
where `'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule'` is the full path to the setting.
|
|
141
164
|
|
|
142
|
-
|
|
165
|
+
### Use a regular expression in responses
|
|
143
166
|
|
|
144
167
|
describe registry_key({
|
|
145
168
|
hive: 'HKEY_LOCAL_MACHINE',
|
|
@@ -6,7 +6,7 @@ title: About the runit_service Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `runit_service` InSpec audit resource to test a service using runit.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `runit_service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
12
12
|
|
|
@@ -29,48 +29,48 @@ The path to the service manager's control may be specified for situations where
|
|
|
29
29
|
it { should be_running }
|
|
30
30
|
end
|
|
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
|
+
### be_enabled
|
|
41
41
|
|
|
42
42
|
The `be_enabled` matcher tests if the named service is enabled:
|
|
43
43
|
|
|
44
44
|
it { should be_enabled }
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
### be_installed
|
|
47
47
|
|
|
48
48
|
The `be_installed` matcher tests if the named service is installed:
|
|
49
49
|
|
|
50
50
|
it { should be_installed }
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
### be_running
|
|
53
53
|
|
|
54
54
|
The `be_running` matcher tests if the named service is running:
|
|
55
55
|
|
|
56
56
|
it { should be_running }
|
|
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
|
None.
|
|
@@ -6,7 +6,7 @@ title: About the security_policy Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `security_policy` InSpec audit resource to test security policies on the Windows platform.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Syntax
|
|
10
10
|
|
|
11
11
|
A `security_policy` resource block declares the name of a security policy and the value to be tested:
|
|
12
12
|
|
|
@@ -20,41 +20,41 @@ where
|
|
|
20
20
|
* `{ should eq 'value' }` tests the value of `policy_name` against the value declared in the test
|
|
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
|
+
### policy_name
|
|
48
48
|
|
|
49
49
|
The `policy_name` matcher must be the name of a security policy:
|
|
50
50
|
|
|
51
51
|
its('SeNetworkLogonRight') { should eq '*S-1-5-11' }
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
## Examples
|
|
54
54
|
|
|
55
55
|
The following examples show how to use this InSpec audit resource.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
### Verify that only the Administrators group has remote access
|
|
58
58
|
|
|
59
59
|
describe security_policy do
|
|
60
60
|
its('SeRemoteInteractiveLogonRight') { should eq '*S-1-5-32-544' }
|
|
@@ -6,9 +6,9 @@ title: About the service Resource
|
|
|
6
6
|
|
|
7
7
|
Use the `service` InSpec audit resource to test if the named service is installed, running and/or enabled.
|
|
8
8
|
|
|
9
|
-
Under some circumstances, it may be necessary to specify the service manager by using one of the following service manager-specific resources: `bsd_service`, `launchd_service`, `runit_service`, `systemd_service`, `sysv_service`,
|
|
9
|
+
Under some circumstances, it may be necessary to specify the service manager by using one of the following service manager-specific resources: `bsd_service`, `launchd_service`, `runit_service`, `systemd_service`, `sysv_service`, or `upstart_service`. These resources are based on the `service` resource.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Syntax
|
|
12
12
|
|
|
13
13
|
A `service` resource block declares the name of a service and then one (or more) matchers to test the state of the service:
|
|
14
14
|
|
|
@@ -24,67 +24,67 @@ where
|
|
|
24
24
|
* `be_installed`, `be_enabled`, and `be_running` are valid matchers for this resource
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
## Matchers
|
|
28
28
|
|
|
29
29
|
This InSpec audit resource has the following matchers:
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
### be
|
|
32
32
|
|
|
33
33
|
<%= partial "/shared/matcher_be" %>
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
### be_enabled
|
|
36
36
|
|
|
37
37
|
The `be_enabled` matcher tests if the named service is enabled:
|
|
38
38
|
|
|
39
39
|
it { should be_enabled }
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
### be_installed
|
|
42
42
|
|
|
43
43
|
The `be_installed` matcher tests if the named service is installed:
|
|
44
44
|
|
|
45
45
|
it { should be_installed }
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
### be_running
|
|
48
48
|
|
|
49
49
|
The `be_running` matcher tests if the named service is running:
|
|
50
50
|
|
|
51
51
|
it { should be_running }
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
### cmp
|
|
54
54
|
|
|
55
55
|
<%= partial "/shared/matcher_cmp" %>
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
### eq
|
|
58
58
|
|
|
59
59
|
<%= partial "/shared/matcher_eq" %>
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
### include
|
|
62
62
|
|
|
63
63
|
<%= partial "/shared/matcher_include" %>
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
### match
|
|
66
66
|
|
|
67
67
|
<%= partial "/shared/matcher_match" %>
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
## Examples
|
|
70
70
|
|
|
71
71
|
The following examples show how to use this InSpec audit resource.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
### Test if the postgresql service is both running and enabled
|
|
74
74
|
|
|
75
75
|
describe service('postgresql') do
|
|
76
76
|
it { should be_enabled }
|
|
77
77
|
it { should be_running }
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
### Test if the mysql service is both running and enabled
|
|
81
81
|
|
|
82
82
|
describe service('mysqld') do
|
|
83
83
|
it { should be_enabled }
|
|
84
84
|
it { should be_running }
|
|
85
85
|
end
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
### Test if ClamAV (an antivirus engine) is installed and running
|
|
88
88
|
|
|
89
89
|
describe package('clamav') do
|
|
90
90
|
it { should be_installed }
|
|
@@ -97,7 +97,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
97
97
|
it { should_not be_running }
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
### Test Unix System V run levels
|
|
101
101
|
|
|
102
102
|
On targets that are using SystemV services, the existing run levels can also be checked:
|
|
103
103
|
|
|
@@ -109,7 +109,7 @@ On targets that are using SystemV services, the existing run levels can also be
|
|
|
109
109
|
it { should be_enabled }
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
### Override the service manager
|
|
113
113
|
|
|
114
114
|
Under some circumstances, it may be required to override the logic in place to select the right service manager. For example, to check a service managed by Upstart:
|
|
115
115
|
|
|
@@ -127,7 +127,7 @@ This is also possible with `systemd_service`, `runit_service`, `sysv_service`, `
|
|
|
127
127
|
it { should be_running }
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
### Verify that IIS is running
|
|
131
131
|
|
|
132
132
|
describe service('W3SVC') do
|
|
133
133
|
it { should be_installed }
|