inspec 0.15.0 → 0.16.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +40 -2
- data/Gemfile +2 -3
- data/README.md +2 -0
- data/Rakefile +8 -0
- data/bin/inspec +1 -157
- data/docs/resources.rst +79 -78
- data/examples/profile/controls/example.rb +3 -1
- data/lib/fetchers/mock.rb +27 -0
- data/lib/fetchers/tar.rb +3 -2
- data/lib/fetchers/zip.rb +3 -1
- data/lib/inspec/cli.rb +164 -0
- data/lib/inspec/plugins/resource.rb +6 -2
- data/lib/inspec/profile.rb +28 -17
- data/lib/inspec/resource.rb +5 -1
- data/lib/inspec/rspec_json_formatter.rb +42 -0
- data/lib/inspec/rule.rb +24 -1
- data/lib/inspec/runner.rb +15 -7
- data/lib/inspec/runner_mock.rb +6 -1
- data/lib/inspec/runner_rspec.rb +29 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/resources/{script.rb → powershell.rb} +19 -5
- data/lib/resources/registry_key.rb +1 -1
- data/test/{integration/cookbooks → cookbooks}/os_prepare/files/empty.iso +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/files/example.csv +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/files/example.ini +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/files/example.json +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/files/example.yml +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/metadata.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/_runit_service_centos.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/_upstart_service_centos.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/apache.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/apt.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/auditctl.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/default.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/file.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/iptables.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/json_yaml_csv_ini.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/mount.rb +2 -2
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/package.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/postgres.rb +6 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/registry_key.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/recipes/service.rb +0 -0
- data/test/{integration/cookbooks → cookbooks}/os_prepare/templates/default/sv-default-svlog-run.erb +0 -0
- data/test/functional/command_test.rb +390 -0
- data/test/helper.rb +6 -0
- data/test/integration/{test/integration/default → default}/_debug_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/apache_conf_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/apt_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/auditd_rules_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/compare_matcher_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/csv_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/etc_group_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/file_spec.rb +3 -2
- data/test/integration/{test/integration/default → default}/group_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/ini_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/iptables_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/json_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/kernel_module_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/kernel_parameter_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/mount_spec.rb +1 -1
- data/test/integration/{test/integration/default → default}/os_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/package_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/port_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/postgres_session_spec.rb +0 -0
- data/test/integration/default/powershell_spec.rb +13 -0
- data/test/integration/{test/integration/default → default}/registry_key_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/secpol_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/service_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/user_spec.rb +0 -0
- data/test/integration/{test/integration/default → default}/yaml_spec.rb +0 -0
- data/test/unit/control_test.rb +58 -0
- data/test/unit/fetchers/mock_test.rb +43 -0
- data/test/unit/plugins/resource_test.rb +60 -0
- data/test/unit/resources/{script_test.rb → powershell_test.rb} +10 -1
- metadata +107 -101
- data/test/integration/.kitchen.ec2.yml +0 -75
- data/test/integration/.kitchen.yml +0 -45
- data/test/integration/Berksfile +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 243a577f37796094ac8a136876c11d14ded819c2
|
|
4
|
+
data.tar.gz: 7a95c3d207666f7d91c7ccb10316432d1ba70dd6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4d66e309baed6ba892f9b5fc4c03f488afc7886dc67c88bcf4a9d97e32e2a5cdbbb4e475e792e3f6d4199ea034177fd8a3698063a0d8b4d36d60b626eecfa993
|
|
7
|
+
data.tar.gz: 03d6a852e3d9e3d629e1e1d44555973ea69f66d78d630ebd80bbdcddcff6035a96a03416a58c02fcc757cbc01f838ef36e6b44ef17a41692204d6120d17426e8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,44 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## [0.
|
|
4
|
-
[Full Changelog](https://github.com/chef/inspec/compare/v0.
|
|
3
|
+
## [0.16.0](https://github.com/chef/inspec/tree/0.16.0) (2016-03-19)
|
|
4
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v0.15.0...0.16.0)
|
|
5
|
+
|
|
6
|
+
**Implemented enhancements:**
|
|
7
|
+
|
|
8
|
+
- Read Chef attributes within the tests ? [\#541](https://github.com/chef/inspec/issues/541)
|
|
9
|
+
- A resource to test http GET calls [\#538](https://github.com/chef/inspec/issues/538)
|
|
10
|
+
- rename `script` resource to `powershell` resource [\#553](https://github.com/chef/inspec/pull/553) ([chris-rock](https://github.com/chris-rock))
|
|
11
|
+
- add fulljson formatter [\#552](https://github.com/chef/inspec/pull/552) ([arlimus](https://github.com/arlimus))
|
|
12
|
+
- feature: add tags and refs [\#551](https://github.com/chef/inspec/pull/551) ([arlimus](https://github.com/arlimus))
|
|
13
|
+
- fix detect + add output option to archive command [\#546](https://github.com/chef/inspec/pull/546) ([arlimus](https://github.com/arlimus))
|
|
14
|
+
- adding named resource registry classes [\#540](https://github.com/chef/inspec/pull/540) ([adamleff](https://github.com/adamleff))
|
|
15
|
+
- add output stream to rspec configuration [\#529](https://github.com/chef/inspec/pull/529) ([vjeffrey](https://github.com/vjeffrey))
|
|
16
|
+
- Move integration tests to test/integration [\#468](https://github.com/chef/inspec/pull/468) ([chris-rock](https://github.com/chris-rock))
|
|
17
|
+
|
|
18
|
+
**Fixed bugs:**
|
|
19
|
+
|
|
20
|
+
- fix inspec shell and continuously test it [\#556](https://github.com/chef/inspec/pull/556) ([arlimus](https://github.com/arlimus))
|
|
21
|
+
- bugfix: prevent duplicate loading of library files [\#547](https://github.com/chef/inspec/pull/547) ([arlimus](https://github.com/arlimus))
|
|
22
|
+
- fix detect + add output option to archive command [\#546](https://github.com/chef/inspec/pull/546) ([arlimus](https://github.com/arlimus))
|
|
23
|
+
- bugfix: archive command with inheritance-based profiles [\#545](https://github.com/chef/inspec/pull/545) ([arlimus](https://github.com/arlimus))
|
|
24
|
+
|
|
25
|
+
**Closed issues:**
|
|
26
|
+
|
|
27
|
+
- Add additional metadata to the control definition to allow for more complete mapping to security guidance documents [\#536](https://github.com/chef/inspec/issues/536)
|
|
28
|
+
- CLI: Specifying --profiles-path on check succeeds but displays usage error on archive [\#535](https://github.com/chef/inspec/issues/535)
|
|
29
|
+
- inspec failing to connect to Compliance \(SSL certificate error\) [\#531](https://github.com/chef/inspec/issues/531)
|
|
30
|
+
|
|
31
|
+
**Merged pull requests:**
|
|
32
|
+
|
|
33
|
+
- mock fetcher [\#550](https://github.com/chef/inspec/pull/550) ([arlimus](https://github.com/arlimus))
|
|
34
|
+
- testing: add inspec exec tests with json formatter [\#549](https://github.com/chef/inspec/pull/549) ([arlimus](https://github.com/arlimus))
|
|
35
|
+
- dont generate pretty json by default [\#548](https://github.com/chef/inspec/pull/548) ([arlimus](https://github.com/arlimus))
|
|
36
|
+
- Add title, description, code, and source\_location to example metadata [\#543](https://github.com/chef/inspec/pull/543) ([vjeffrey](https://github.com/vjeffrey))
|
|
37
|
+
- add functional tests for cli [\#542](https://github.com/chef/inspec/pull/542) ([arlimus](https://github.com/arlimus))
|
|
38
|
+
- Add a Gitter chat badge to README.md [\#530](https://github.com/chef/inspec/pull/530) ([gitter-badger](https://github.com/gitter-badger))
|
|
39
|
+
|
|
40
|
+
## [v0.15.0](https://github.com/chef/inspec/tree/v0.15.0) (2016-03-09)
|
|
41
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v0.14.8...v0.15.0)
|
|
5
42
|
|
|
6
43
|
**Implemented enhancements:**
|
|
7
44
|
|
|
@@ -20,6 +57,7 @@
|
|
|
20
57
|
|
|
21
58
|
**Merged pull requests:**
|
|
22
59
|
|
|
60
|
+
- 0.15.0 [\#528](https://github.com/chef/inspec/pull/528) ([arlimus](https://github.com/arlimus))
|
|
23
61
|
- 0.14.9 [\#525](https://github.com/chef/inspec/pull/525) ([arlimus](https://github.com/arlimus))
|
|
24
62
|
|
|
25
63
|
## [v0.14.8](https://github.com/chef/inspec/tree/v0.14.8) (2016-03-04)
|
data/Gemfile
CHANGED
|
@@ -19,10 +19,9 @@ end
|
|
|
19
19
|
|
|
20
20
|
group :integration do
|
|
21
21
|
gem 'berkshelf', '~> 4.0'
|
|
22
|
-
gem 'test-kitchen'
|
|
22
|
+
gem 'test-kitchen', '~> 1.6'
|
|
23
23
|
gem 'kitchen-vagrant'
|
|
24
|
-
gem 'kitchen-inspec'
|
|
25
|
-
gem 'winrm-transport', '~> 1.0'
|
|
24
|
+
gem 'kitchen-inspec', '0.12.5'
|
|
26
25
|
gem 'kitchen-ec2'
|
|
27
26
|
end
|
|
28
27
|
|
data/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# InSpec: Inspect Your Infrastructure
|
|
2
2
|
|
|
3
|
+
[](https://gitter.im/chef/inspec?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
4
|
+
|
|
3
5
|
InSpec is an open-source testing framework for infrastructure with a human- and machine-readable language for specifying compliance, security and policy requirements.
|
|
4
6
|
|
|
5
7
|
```ruby
|
data/Rakefile
CHANGED
|
@@ -35,6 +35,14 @@ namespace :test do
|
|
|
35
35
|
end or fail 'Failures'
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
Rake::TestTask.new(:functional) do |t|
|
|
39
|
+
t.libs << 'test'
|
|
40
|
+
t.pattern = 'test/functional/**/*_test.rb'
|
|
41
|
+
t.warning = true
|
|
42
|
+
t.verbose = true
|
|
43
|
+
t.ruby_opts = ['--dev'] if defined?(JRUBY_VERSION)
|
|
44
|
+
end
|
|
45
|
+
|
|
38
46
|
task :resources do
|
|
39
47
|
tests = Dir['test/resource/*_test.rb']
|
|
40
48
|
return if tests.empty?
|
data/bin/inspec
CHANGED
|
@@ -4,162 +4,6 @@
|
|
|
4
4
|
# author: Dominik Richter
|
|
5
5
|
# author: Christoph Hartmann
|
|
6
6
|
|
|
7
|
-
require 'thor'
|
|
8
|
-
require 'json'
|
|
9
|
-
require 'pp'
|
|
10
|
-
require_relative '../lib/utils/base_cli'
|
|
11
7
|
require_relative '../lib/inspec'
|
|
12
|
-
require_relative '../lib/
|
|
13
|
-
|
|
14
|
-
class Inspec::InspecCLI < Inspec::BaseCLI # rubocop:disable Metrics/ClassLength
|
|
15
|
-
class_option :diagnose, type: :boolean,
|
|
16
|
-
desc: 'Show diagnostics (versions, configurations)'
|
|
17
|
-
|
|
18
|
-
desc 'json PATH', 'read all tests in PATH and generate a JSON summary'
|
|
19
|
-
option :id, type: :string,
|
|
20
|
-
desc: 'Attach a profile ID to all test results'
|
|
21
|
-
option :output, aliases: :o, type: :string,
|
|
22
|
-
desc: 'Save the created profile to a path'
|
|
23
|
-
profile_options
|
|
24
|
-
def json(target)
|
|
25
|
-
diagnose
|
|
26
|
-
o = opts.dup
|
|
27
|
-
o[:ignore_supports] = true
|
|
28
|
-
|
|
29
|
-
profile = Inspec::Profile.for_target(target, o)
|
|
30
|
-
dst = o[:output].to_s
|
|
31
|
-
if dst.empty?
|
|
32
|
-
puts JSON.pretty_generate(profile.info)
|
|
33
|
-
else
|
|
34
|
-
if File.exist? dst
|
|
35
|
-
puts "----> updating #{dst}"
|
|
36
|
-
else
|
|
37
|
-
puts "----> creating #{dst}"
|
|
38
|
-
end
|
|
39
|
-
fdst = File.expand_path(dst)
|
|
40
|
-
File.write(fdst, JSON.dump(profile.info))
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
desc 'check PATH', 'verify all tests at the specified PATH'
|
|
45
|
-
option :format, type: :string
|
|
46
|
-
profile_options
|
|
47
|
-
def check(path) # rubocop:disable Metrics/AbcSize
|
|
48
|
-
diagnose
|
|
49
|
-
o = opts.dup
|
|
50
|
-
# configure_logger(o) # we do not need a logger for check yet
|
|
51
|
-
o[:ignore_supports] = true # we check for integrity only
|
|
52
|
-
|
|
53
|
-
# run check
|
|
54
|
-
profile = Inspec::Profile.for_target(path, o)
|
|
55
|
-
result = profile.check
|
|
56
|
-
|
|
57
|
-
if opts['format'] == 'json'
|
|
58
|
-
puts JSON.generate(result)
|
|
59
|
-
else
|
|
60
|
-
headline('Summary')
|
|
61
|
-
%w{location profile controls timestamp valid}.each { |item|
|
|
62
|
-
puts "#{mark_text(item.to_s.capitalize + ':')} #{result[:summary][item.to_sym]}"
|
|
63
|
-
}
|
|
64
|
-
puts
|
|
65
|
-
|
|
66
|
-
%w{errors warnings}.each { |list|
|
|
67
|
-
headline(list.to_s.capitalize)
|
|
68
|
-
result[list.to_sym].each { |item|
|
|
69
|
-
puts "#{item[:file]}:#{item[:line]}:#{item[:column]}: #{item[:msg]} "
|
|
70
|
-
}
|
|
71
|
-
puts
|
|
72
|
-
}
|
|
73
|
-
end
|
|
74
|
-
exit 1 unless result[:summary][:valid]
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
desc 'archive PATH', 'archive a profile to tar.gz (default) or zip'
|
|
78
|
-
option :zip, type: :boolean, default: false,
|
|
79
|
-
desc: 'Generates a zip archive.'
|
|
80
|
-
option :tar, type: :boolean, default: false,
|
|
81
|
-
desc: 'Generates a tar.gz archive.'
|
|
82
|
-
option :overwrite, type: :boolean, default: false,
|
|
83
|
-
desc: 'Overwrite existing archive.'
|
|
84
|
-
option :ignore_errors, type: :boolean, default: false,
|
|
85
|
-
desc: 'Ignore profile warnings.'
|
|
86
|
-
def archive(path)
|
|
87
|
-
diagnose
|
|
88
|
-
|
|
89
|
-
o = opts.dup
|
|
90
|
-
o[:logger] = Logger.new(STDOUT)
|
|
91
|
-
o[:logger].level = get_log_level(o.log_level)
|
|
92
|
-
|
|
93
|
-
profile = Inspec::Profile.for_target(path, o)
|
|
94
|
-
result = profile.check
|
|
95
|
-
|
|
96
|
-
if result && !opts[:ignore_errors] == false
|
|
97
|
-
@logger.info 'Profile check failed. Please fix the profile before generating an archive.'
|
|
98
|
-
return exit 1
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# generate archive
|
|
102
|
-
exit 1 unless profile.archive(opts)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
desc 'exec PATHS', 'run all test files at the specified PATH.'
|
|
106
|
-
exec_options
|
|
107
|
-
def exec(*targets)
|
|
108
|
-
diagnose
|
|
109
|
-
run_tests(targets, opts)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
desc 'detect', 'detect the target OS'
|
|
113
|
-
target_options
|
|
114
|
-
def detect
|
|
115
|
-
diagnose
|
|
116
|
-
|
|
117
|
-
rel = File.join(File.dirname(__FILE__), *%w{.. lib utils detect.rb})
|
|
118
|
-
detect_util = File.expand_path(rel)
|
|
119
|
-
# exits on execution:
|
|
120
|
-
runner = Inspec::Runner.new(opts)
|
|
121
|
-
profile = Inspec::Profile.for_target(detect_util, opts)
|
|
122
|
-
runner.add_profile(profile)
|
|
123
|
-
exit runner.run
|
|
124
|
-
rescue RuntimeError => e
|
|
125
|
-
puts e.message
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
desc 'shell', 'open an interactive debugging shell'
|
|
129
|
-
target_options
|
|
130
|
-
option :format, type: :string, default: Inspec::NoSummaryFormatter, hide: true
|
|
131
|
-
def shell_func
|
|
132
|
-
diagnose
|
|
133
|
-
o = opts.dup
|
|
134
|
-
o[:logger] = Logger.new(STDOUT)
|
|
135
|
-
o[:logger].level = get_log_level(o.log_level)
|
|
136
|
-
|
|
137
|
-
runner = Inspec::Runner.new(o)
|
|
138
|
-
Inspec::Shell.new(runner).start
|
|
139
|
-
rescue RuntimeError => e
|
|
140
|
-
puts e.message
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
desc 'version', 'prints the version of this tool'
|
|
144
|
-
def version
|
|
145
|
-
puts Inspec::VERSION
|
|
146
|
-
end
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
# Load all plugins on startup
|
|
150
|
-
ctl = Inspec::PluginCtl.new
|
|
151
|
-
ctl.list.each { |x| ctl.load(x) }
|
|
152
|
-
|
|
153
|
-
# load CLI plugins before the Inspec CLI has been started
|
|
154
|
-
Inspec::Plugins::CLI.subcommands.each { |_subcommand, params|
|
|
155
|
-
Inspec::InspecCLI.register(
|
|
156
|
-
params[:klass],
|
|
157
|
-
params[:subcommand_name],
|
|
158
|
-
params[:usage],
|
|
159
|
-
params[:description],
|
|
160
|
-
params[:options],
|
|
161
|
-
)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
# start the CLI
|
|
8
|
+
require_relative '../lib/inspec/cli'
|
|
165
9
|
Inspec::InspecCLI.start(ARGV)
|
data/docs/resources.rst
CHANGED
|
@@ -42,9 +42,9 @@ The following InSpec audit resources are available:
|
|
|
42
42
|
* `port`_
|
|
43
43
|
* `postgres_conf`_
|
|
44
44
|
* `postgres_session`_
|
|
45
|
+
* `powershell`_
|
|
45
46
|
* `processes`_
|
|
46
47
|
* `registry_key`_
|
|
47
|
-
* `script`_
|
|
48
48
|
* `security_policy`_
|
|
49
49
|
* `service`_
|
|
50
50
|
* `ssh_config`_
|
|
@@ -3525,6 +3525,84 @@ The following examples show how to use this InSpec audit resource.
|
|
|
3525
3525
|
|
|
3526
3526
|
|
|
3527
3527
|
|
|
3528
|
+
powershell
|
|
3529
|
+
=====================================================
|
|
3530
|
+
Use the ``powershell`` |inspec resource| to test a |powershell| script on the |windows| platform.
|
|
3531
|
+
|
|
3532
|
+
**Stability: Experimental**
|
|
3533
|
+
|
|
3534
|
+
Syntax
|
|
3535
|
+
-----------------------------------------------------
|
|
3536
|
+
A ``powershell`` |inspec resource| block declares a script to be tested, and then a command that should be part of that script:
|
|
3537
|
+
|
|
3538
|
+
.. code-block:: ruby
|
|
3539
|
+
|
|
3540
|
+
script = <<-EOH
|
|
3541
|
+
# you powershell script
|
|
3542
|
+
EOH
|
|
3543
|
+
|
|
3544
|
+
describe powershell(script) do
|
|
3545
|
+
its('matcher') { should eq 'output' }
|
|
3546
|
+
end
|
|
3547
|
+
|
|
3548
|
+
|
|
3549
|
+
where
|
|
3550
|
+
|
|
3551
|
+
* ``'script'`` must specify a Powershell script to be run
|
|
3552
|
+
* ``'matcher'`` is one of ``exit_status``, ``stderr``, or ``stdout``
|
|
3553
|
+
* ``'output'`` tests the output of the command run on the system versus the output value stated in the test
|
|
3554
|
+
|
|
3555
|
+
|
|
3556
|
+
Matchers
|
|
3557
|
+
-----------------------------------------------------
|
|
3558
|
+
This InSpec audit resource has the following matchers.
|
|
3559
|
+
|
|
3560
|
+
exit_status
|
|
3561
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3562
|
+
The ``exit_status`` matcher tests the exit status for the command:
|
|
3563
|
+
|
|
3564
|
+
.. code-block:: ruby
|
|
3565
|
+
|
|
3566
|
+
its('exit_status') { should eq 123 }
|
|
3567
|
+
|
|
3568
|
+
stderr
|
|
3569
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3570
|
+
The ``stderr`` matcher tests results of the command as returned in standard error (stderr):
|
|
3571
|
+
|
|
3572
|
+
.. code-block:: ruby
|
|
3573
|
+
|
|
3574
|
+
its('stderr') { should eq 'error' }
|
|
3575
|
+
|
|
3576
|
+
stdout
|
|
3577
|
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3578
|
+
The ``stdout`` matcher tests results of the command as returned in standard output (stdout):
|
|
3579
|
+
|
|
3580
|
+
.. code-block:: ruby
|
|
3581
|
+
|
|
3582
|
+
its('stdout') { should eq '/^1$/' }
|
|
3583
|
+
|
|
3584
|
+
Examples
|
|
3585
|
+
-----------------------------------------------------
|
|
3586
|
+
The following examples show how to use this InSpec audit resource.
|
|
3587
|
+
|
|
3588
|
+
**Get all groups of Administrator user**
|
|
3589
|
+
|
|
3590
|
+
.. code-block:: ruby
|
|
3591
|
+
|
|
3592
|
+
myscript = <<-EOH
|
|
3593
|
+
# find user
|
|
3594
|
+
$user = Get-WmiObject Win32_UserAccount -filter "Name = 'Administrator'"
|
|
3595
|
+
# get related groups
|
|
3596
|
+
$groups = $user.GetRelated('Win32_Group') | Select-Object -Property Caption, Domain, Name, LocalAccount, SID, SIDType, Status
|
|
3597
|
+
$groups | ConvertTo-Json
|
|
3598
|
+
EOH
|
|
3599
|
+
|
|
3600
|
+
describe script(myscript) do
|
|
3601
|
+
its('stdout') { should_not eq '' }
|
|
3602
|
+
end
|
|
3603
|
+
|
|
3604
|
+
|
|
3605
|
+
|
|
3528
3606
|
processes
|
|
3529
3607
|
=====================================================
|
|
3530
3608
|
Use the ``processes`` |inspec resource| to test properties for programs that are running on the system.
|
|
@@ -3651,83 +3729,6 @@ The following examples show how to use this InSpec audit resource.
|
|
|
3651
3729
|
where ``'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule'`` is the full path to the setting.
|
|
3652
3730
|
|
|
3653
3731
|
|
|
3654
|
-
script
|
|
3655
|
-
=====================================================
|
|
3656
|
-
Use the ``script`` |inspec resource| to test a |powershell| script on the |windows| platform.
|
|
3657
|
-
|
|
3658
|
-
**Stability: Experimental**
|
|
3659
|
-
|
|
3660
|
-
Syntax
|
|
3661
|
-
-----------------------------------------------------
|
|
3662
|
-
A ``script`` |inspec resource| block declares a script to be tested, and then a command that should be part of that script:
|
|
3663
|
-
|
|
3664
|
-
.. code-block:: ruby
|
|
3665
|
-
|
|
3666
|
-
script = <<-EOH
|
|
3667
|
-
# you powershell script
|
|
3668
|
-
EOH
|
|
3669
|
-
|
|
3670
|
-
describe script(script) do
|
|
3671
|
-
its('matcher') { should eq 'output' }
|
|
3672
|
-
end
|
|
3673
|
-
|
|
3674
|
-
|
|
3675
|
-
where
|
|
3676
|
-
|
|
3677
|
-
* ``'script'`` must specify a Powershell script to be run
|
|
3678
|
-
* ``'matcher'`` is one of ``exit_status``, ``stderr``, or ``stdout``
|
|
3679
|
-
* ``'output'`` tests the output of the command run on the system versus the output value stated in the test
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
Matchers
|
|
3683
|
-
-----------------------------------------------------
|
|
3684
|
-
This InSpec audit resource has the following matchers.
|
|
3685
|
-
|
|
3686
|
-
exit_status
|
|
3687
|
-
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3688
|
-
The ``exit_status`` matcher tests the exit status for the command:
|
|
3689
|
-
|
|
3690
|
-
.. code-block:: ruby
|
|
3691
|
-
|
|
3692
|
-
its('exit_status') { should eq 123 }
|
|
3693
|
-
|
|
3694
|
-
stderr
|
|
3695
|
-
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3696
|
-
The ``stderr`` matcher tests results of the command as returned in standard error (stderr):
|
|
3697
|
-
|
|
3698
|
-
.. code-block:: ruby
|
|
3699
|
-
|
|
3700
|
-
its('stderr') { should eq 'error' }
|
|
3701
|
-
|
|
3702
|
-
stdout
|
|
3703
|
-
+++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
3704
|
-
The ``stdout`` matcher tests results of the command as returned in standard output (stdout):
|
|
3705
|
-
|
|
3706
|
-
.. code-block:: ruby
|
|
3707
|
-
|
|
3708
|
-
its('stdout') { should eq '/^1$/' }
|
|
3709
|
-
|
|
3710
|
-
Examples
|
|
3711
|
-
-----------------------------------------------------
|
|
3712
|
-
The following examples show how to use this InSpec audit resource.
|
|
3713
|
-
|
|
3714
|
-
**Get all groups of Administrator user**
|
|
3715
|
-
|
|
3716
|
-
.. code-block:: ruby
|
|
3717
|
-
|
|
3718
|
-
myscript = <<-EOH
|
|
3719
|
-
# find user
|
|
3720
|
-
$user = Get-WmiObject Win32_UserAccount -filter "Name = 'Administrator'"
|
|
3721
|
-
# get related groups
|
|
3722
|
-
$groups = $user.GetRelated('Win32_Group') | Select-Object -Property Caption, Domain, Name, LocalAccount, SID, SIDType, Status
|
|
3723
|
-
$groups | ConvertTo-Json
|
|
3724
|
-
EOH
|
|
3725
|
-
|
|
3726
|
-
describe script(myscript) do
|
|
3727
|
-
its('stdout') { should_not eq '' }
|
|
3728
|
-
end
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
3732
|
security_policy
|
|
3732
3733
|
=====================================================
|
|
3733
3734
|
Use the ``security_policy`` |inspec resource| to test security policies on the |windows| platform.
|