inspec 1.9.0 → 1.10.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 +29 -95
- data/Gemfile +1 -0
- data/docs/resources/command.md.erb +2 -2
- data/docs/resources/http.md.erb +97 -0
- data/docs/resources/os.md.erb +4 -4
- data/docs/resources/{process.md.erb → processes.md.erb} +0 -0
- data/docs/resources/sshd_config.md.erb +1 -1
- data/examples/meta-profile/controls/example.rb +1 -1
- data/examples/meta-profile/inspec.yml +1 -1
- data/inspec.gemspec +1 -0
- data/lib/bundles/inspec-compliance/api.rb +11 -4
- data/lib/bundles/inspec-compliance/cli.rb +4 -6
- data/lib/bundles/inspec-compliance/target.rb +5 -2
- data/lib/inspec/resource.rb +1 -0
- data/lib/inspec/version.rb +1 -1
- data/lib/resources/http.rb +60 -0
- data/lib/resources/ssh_conf.rb +1 -1
- metadata +19 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f9d96ad2cb03fa0071dad1bfb2c2409af0555584
|
|
4
|
+
data.tar.gz: 9e4f11747702ebad75c867b4bea1befa2f9c611a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9823737855e6322463707930f5dc977a4cbd44373c765e336ef2690fa49077197670aea0f1a4d31bc8e0bbfccb90788a55e0833a8843ae5b4a33622292c163e0
|
|
7
|
+
data.tar.gz: 918ecce5051aa29d57aa6b158bacc20fd3c47f41af6389a14c4c1f3d300f03f0e95b82538647074cf6a0cbd9e7943d81500965a040f107789199e9aa7218ee6c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## [1.
|
|
4
|
-
[Full Changelog](https://github.com/chef/inspec/compare/v1.
|
|
3
|
+
## [1.10.0](https://github.com/chef/inspec/tree/1.10.0) (2017-01-26)
|
|
4
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v1.9.0...1.10.0)
|
|
5
|
+
|
|
6
|
+
**Implemented enhancements:**
|
|
7
|
+
|
|
8
|
+
- HTTP request resource [\#336](https://github.com/chef/inspec/issues/336)
|
|
9
|
+
|
|
10
|
+
**Closed issues:**
|
|
11
|
+
|
|
12
|
+
- fix functional tests [\#1429](https://github.com/chef/inspec/issues/1429)
|
|
13
|
+
|
|
14
|
+
**Merged pull requests:**
|
|
15
|
+
|
|
16
|
+
- improve http header handling [\#1432](https://github.com/chef/inspec/pull/1432) ([chris-rock](https://github.com/chris-rock))
|
|
17
|
+
- use new devsec baseline [\#1431](https://github.com/chef/inspec/pull/1431) ([chris-rock](https://github.com/chris-rock))
|
|
18
|
+
- 'execution' is spelled correctly [\#1428](https://github.com/chef/inspec/pull/1428) ([nathenharvey](https://github.com/nathenharvey))
|
|
19
|
+
- Bug fixes + New Elements [\#1426](https://github.com/chef/inspec/pull/1426) ([hannah-radish](https://github.com/hannah-radish))
|
|
20
|
+
- Docs: fix resource name \('processes' instead of 'process'\) [\#1423](https://github.com/chef/inspec/pull/1423) ([techraf](https://github.com/techraf))
|
|
21
|
+
- update copyright of the year [\#1422](https://github.com/chef/inspec/pull/1422) ([chris-rock](https://github.com/chris-rock))
|
|
22
|
+
- Link to the 1.0 release webinar [\#1419](https://github.com/chef/inspec/pull/1419) ([nathenharvey](https://github.com/nathenharvey))
|
|
23
|
+
- Updated compliance api requests to actually use refresh token correctly [\#1416](https://github.com/chef/inspec/pull/1416) ([brentm5](https://github.com/brentm5))
|
|
24
|
+
- Docs examples: use double quotes to prevent escaping backslash in the expected string [\#1413](https://github.com/chef/inspec/pull/1413) ([techraf](https://github.com/techraf))
|
|
25
|
+
- Fixed error in OS docs, added CentOS to redhat family docs. [\#1407](https://github.com/chef/inspec/pull/1407) ([gscho](https://github.com/gscho))
|
|
26
|
+
- Solicit talks for ChefConf [\#1405](https://github.com/chef/inspec/pull/1405) ([nathenharvey](https://github.com/nathenharvey))
|
|
27
|
+
- Add an http test method [\#1403](https://github.com/chef/inspec/pull/1403) ([guilhem](https://github.com/guilhem))
|
|
28
|
+
- new inspec.io frontpage [\#1362](https://github.com/chef/inspec/pull/1362) ([hannah-radish](https://github.com/hannah-radish))
|
|
29
|
+
|
|
30
|
+
## [v1.9.0](https://github.com/chef/inspec/tree/v1.9.0) (2017-01-06)
|
|
31
|
+
[Full Changelog](https://github.com/chef/inspec/compare/v1.8.0...v1.9.0)
|
|
5
32
|
|
|
6
33
|
**Implemented enhancements:**
|
|
7
34
|
|
|
@@ -2001,19 +2028,10 @@
|
|
|
2001
2028
|
|
|
2002
2029
|
**Implemented enhancements:**
|
|
2003
2030
|
|
|
2004
|
-
- pretty-print resources [\#78](https://github.com/chef/inspec/issues/78)
|
|
2005
|
-
- Add networking resources [\#68](https://github.com/chef/inspec/issues/68)
|
|
2006
2031
|
- Add WinRM transport layer [\#64](https://github.com/chef/inspec/issues/64)
|
|
2007
2032
|
|
|
2008
|
-
**Fixed bugs:**
|
|
2009
|
-
|
|
2010
|
-
- expose all necessary methods in OS resource [\#79](https://github.com/chef/inspec/issues/79)
|
|
2011
|
-
|
|
2012
2033
|
**Closed issues:**
|
|
2013
2034
|
|
|
2014
|
-
- script resource [\#74](https://github.com/chef/inspec/issues/74)
|
|
2015
|
-
- add project docs [\#72](https://github.com/chef/inspec/issues/72)
|
|
2016
|
-
- OS detection on debian does not detect versions [\#39](https://github.com/chef/inspec/issues/39)
|
|
2017
2035
|
- ensure all resources have a proper to\_s method [\#98](https://github.com/chef/inspec/issues/98)
|
|
2018
2036
|
- Escape commands before we execute them [\#70](https://github.com/chef/inspec/issues/70)
|
|
2019
2037
|
|
|
@@ -2040,90 +2058,6 @@
|
|
|
2040
2058
|
- Improve unit tests [\#106](https://github.com/chef/inspec/pull/106) ([chris-rock](https://github.com/chris-rock))
|
|
2041
2059
|
- add to\_s methods to resources, fixes \#98 [\#105](https://github.com/chef/inspec/pull/105) ([chris-rock](https://github.com/chris-rock))
|
|
2042
2060
|
- 0.7.0 release [\#104](https://github.com/chef/inspec/pull/104) ([chris-rock](https://github.com/chris-rock))
|
|
2043
|
-
- implement iptables resource [\#103](https://github.com/chef/inspec/pull/103) ([chris-rock](https://github.com/chris-rock))
|
|
2044
|
-
- bugfix: return function if data is already cached [\#102](https://github.com/chef/inspec/pull/102) ([chris-rock](https://github.com/chris-rock))
|
|
2045
|
-
- implement apt resource [\#101](https://github.com/chef/inspec/pull/101) ([chris-rock](https://github.com/chris-rock))
|
|
2046
|
-
- improve shell [\#100](https://github.com/chef/inspec/pull/100) ([chris-rock](https://github.com/chris-rock))
|
|
2047
|
-
- implement host resource [\#99](https://github.com/chef/inspec/pull/99) ([chris-rock](https://github.com/chris-rock))
|
|
2048
|
-
- implement bridge resource [\#97](https://github.com/chef/inspec/pull/97) ([chris-rock](https://github.com/chris-rock))
|
|
2049
|
-
- interactive shell [\#95](https://github.com/chef/inspec/pull/95) ([arlimus](https://github.com/arlimus))
|
|
2050
|
-
- interface resource [\#94](https://github.com/chef/inspec/pull/94) ([chris-rock](https://github.com/chris-rock))
|
|
2051
|
-
- lint: dont use undefined vars [\#93](https://github.com/chef/inspec/pull/93) ([arlimus](https://github.com/arlimus))
|
|
2052
|
-
- fix delivery dependencies [\#92](https://github.com/chef/inspec/pull/92) ([arlimus](https://github.com/arlimus))
|
|
2053
|
-
- improvement: add default print method to resources [\#91](https://github.com/chef/inspec/pull/91) ([arlimus](https://github.com/arlimus))
|
|
2054
|
-
- extend os backend helper [\#90](https://github.com/chef/inspec/pull/90) ([chris-rock](https://github.com/chris-rock))
|
|
2055
|
-
- integrate docs [\#89](https://github.com/chef/inspec/pull/89) ([chris-rock](https://github.com/chris-rock))
|
|
2056
|
-
- integrate docs [\#88](https://github.com/chef/inspec/pull/88) ([chris-rock](https://github.com/chris-rock))
|
|
2057
|
-
- script resource [\#87](https://github.com/chef/inspec/pull/87) ([chris-rock](https://github.com/chris-rock))
|
|
2058
|
-
- implement group resource [\#85](https://github.com/chef/inspec/pull/85) ([chris-rock](https://github.com/chris-rock))
|
|
2059
|
-
- add author header [\#84](https://github.com/chef/inspec/pull/84) ([chris-rock](https://github.com/chris-rock))
|
|
2060
|
-
- Resource bugfix [\#83](https://github.com/chef/inspec/pull/83) ([arlimus](https://github.com/arlimus))
|
|
2061
|
-
- Resource in resource [\#80](https://github.com/chef/inspec/pull/80) ([arlimus](https://github.com/arlimus))
|
|
2062
|
-
- ignore local delivery config [\#77](https://github.com/chef/inspec/pull/77) ([arlimus](https://github.com/arlimus))
|
|
2063
|
-
- bugfix user resource for windows [\#76](https://github.com/chef/inspec/pull/76) ([chris-rock](https://github.com/chris-rock))
|
|
2064
|
-
- activate lint in travis [\#75](https://github.com/chef/inspec/pull/75) ([arlimus](https://github.com/arlimus))
|
|
2065
|
-
- Simplify SSL configuration [\#69](https://github.com/chef/inspec/pull/69) ([arlimus](https://github.com/arlimus))
|
|
2066
|
-
- implement user resource [\#67](https://github.com/chef/inspec/pull/67) ([chris-rock](https://github.com/chris-rock))
|
|
2067
|
-
- switch from open4 -\> mixlib-shellout [\#66](https://github.com/chef/inspec/pull/66) ([arlimus](https://github.com/arlimus))
|
|
2068
|
-
- WinRM path [\#63](https://github.com/chef/inspec/pull/63) ([arlimus](https://github.com/arlimus))
|
|
2069
|
-
- bugfix: catch cases where oneget returns an array [\#62](https://github.com/chef/inspec/pull/62) ([chris-rock](https://github.com/chris-rock))
|
|
2070
|
-
- extend delivery tests to extra docker images [\#61](https://github.com/chef/inspec/pull/61) ([arlimus](https://github.com/arlimus))
|
|
2071
|
-
- rename --key-file to --key on cli [\#60](https://github.com/chef/inspec/pull/60) ([arlimus](https://github.com/arlimus))
|
|
2072
|
-
- Simpleconfig groups [\#57](https://github.com/chef/inspec/pull/57) ([arlimus](https://github.com/arlimus))
|
|
2073
|
-
- OS detection tests [\#56](https://github.com/chef/inspec/pull/56) ([arlimus](https://github.com/arlimus))
|
|
2074
|
-
- Start Linting remaining resources [\#55](https://github.com/chef/inspec/pull/55) ([arlimus](https://github.com/arlimus))
|
|
2075
|
-
- fix various robocop lint issues [\#54](https://github.com/chef/inspec/pull/54) ([chris-rock](https://github.com/chris-rock))
|
|
2076
|
-
- overhaul rule structure [\#53](https://github.com/chef/inspec/pull/53) ([arlimus](https://github.com/arlimus))
|
|
2077
|
-
- Verify ssh transport backend [\#51](https://github.com/chef/inspec/pull/51) ([arlimus](https://github.com/arlimus))
|
|
2078
|
-
- Unit test for service resource [\#50](https://github.com/chef/inspec/pull/50) ([chris-rock](https://github.com/chris-rock))
|
|
2079
|
-
- Ssh backend tests [\#49](https://github.com/chef/inspec/pull/49) ([arlimus](https://github.com/arlimus))
|
|
2080
|
-
- Docker concurrency [\#48](https://github.com/chef/inspec/pull/48) ([arlimus](https://github.com/arlimus))
|
|
2081
|
-
- unit tests for package resource [\#47](https://github.com/chef/inspec/pull/47) ([chris-rock](https://github.com/chris-rock))
|
|
2082
|
-
- Docker runner test [\#46](https://github.com/chef/inspec/pull/46) ([arlimus](https://github.com/arlimus))
|
|
2083
|
-
- add port resource [\#45](https://github.com/chef/inspec/pull/45) ([chris-rock](https://github.com/chris-rock))
|
|
2084
|
-
- bugfix: windows server 2008 detection [\#44](https://github.com/chef/inspec/pull/44) ([arlimus](https://github.com/arlimus))
|
|
2085
|
-
- Add detect command [\#43](https://github.com/chef/inspec/pull/43) ([arlimus](https://github.com/arlimus))
|
|
2086
|
-
- unit test mock os [\#42](https://github.com/chef/inspec/pull/42) ([chris-rock](https://github.com/chris-rock))
|
|
2087
|
-
- let travis do dockerized resource tests [\#41](https://github.com/chef/inspec/pull/41) ([arlimus](https://github.com/arlimus))
|
|
2088
|
-
- docker test run [\#40](https://github.com/chef/inspec/pull/40) ([arlimus](https://github.com/arlimus))
|
|
2089
|
-
- bugfix: detect os via unames [\#38](https://github.com/chef/inspec/pull/38) ([arlimus](https://github.com/arlimus))
|
|
2090
|
-
- run kitchen test instead of converge [\#37](https://github.com/chef/inspec/pull/37) ([arlimus](https://github.com/arlimus))
|
|
2091
|
-
- bugfix: local file owner [\#36](https://github.com/chef/inspec/pull/36) ([arlimus](https://github.com/arlimus))
|
|
2092
|
-
- bugfix: backend description for local + docker [\#35](https://github.com/chef/inspec/pull/35) ([arlimus](https://github.com/arlimus))
|
|
2093
|
-
- implement fake os method for mock backend \(for now\) [\#34](https://github.com/chef/inspec/pull/34) ([chris-rock](https://github.com/chris-rock))
|
|
2094
|
-
- add Windows feature resource [\#33](https://github.com/chef/inspec/pull/33) ([chris-rock](https://github.com/chris-rock))
|
|
2095
|
-
- add linux kernel resources [\#32](https://github.com/chef/inspec/pull/32) ([chris-rock](https://github.com/chris-rock))
|
|
2096
|
-
- Exist vs exists [\#31](https://github.com/chef/inspec/pull/31) ([arlimus](https://github.com/arlimus))
|
|
2097
|
-
- File formats [\#30](https://github.com/chef/inspec/pull/30) ([chris-rock](https://github.com/chris-rock))
|
|
2098
|
-
- OS detection and resource [\#29](https://github.com/chef/inspec/pull/29) ([arlimus](https://github.com/arlimus))
|
|
2099
|
-
- bugfix: fix simplified runner configuration [\#28](https://github.com/chef/inspec/pull/28) ([chris-rock](https://github.com/chris-rock))
|
|
2100
|
-
- improvement: simplify runner configuration [\#27](https://github.com/chef/inspec/pull/27) ([arlimus](https://github.com/arlimus))
|
|
2101
|
-
- bugfix: catch cases, where no service is available [\#26](https://github.com/chef/inspec/pull/26) ([chris-rock](https://github.com/chris-rock))
|
|
2102
|
-
- support package for windows [\#25](https://github.com/chef/inspec/pull/25) ([chris-rock](https://github.com/chris-rock))
|
|
2103
|
-
- implement service for FreeBSD [\#24](https://github.com/chef/inspec/pull/24) ([chris-rock](https://github.com/chris-rock))
|
|
2104
|
-
- move integration dependencies to Gemfile [\#23](https://github.com/chef/inspec/pull/23) ([chris-rock](https://github.com/chris-rock))
|
|
2105
|
-
- add oracle linux docker tests [\#22](https://github.com/chef/inspec/pull/22) ([arlimus](https://github.com/arlimus))
|
|
2106
|
-
- Support FreeBSD [\#21](https://github.com/chef/inspec/pull/21) ([arlimus](https://github.com/arlimus))
|
|
2107
|
-
- Service resource [\#20](https://github.com/chef/inspec/pull/20) ([chris-rock](https://github.com/chris-rock))
|
|
2108
|
-
- Improvements [\#19](https://github.com/chef/inspec/pull/19) ([chris-rock](https://github.com/chris-rock))
|
|
2109
|
-
- bugfix: set host for ssh config in specinfra [\#18](https://github.com/chef/inspec/pull/18) ([chris-rock](https://github.com/chris-rock))
|
|
2110
|
-
- improve readme [\#17](https://github.com/chef/inspec/pull/17) ([chris-rock](https://github.com/chris-rock))
|
|
2111
|
-
- Integration tests for the backend runner [\#16](https://github.com/chef/inspec/pull/16) ([arlimus](https://github.com/arlimus))
|
|
2112
|
-
- Fix specinfra OS detection [\#15](https://github.com/chef/inspec/pull/15) ([arlimus](https://github.com/arlimus))
|
|
2113
|
-
- Os detection [\#14](https://github.com/chef/inspec/pull/14) ([chris-rock](https://github.com/chris-rock))
|
|
2114
|
-
- bugfix: require specinfra backend [\#13](https://github.com/chef/inspec/pull/13) ([chris-rock](https://github.com/chris-rock))
|
|
2115
|
-
- improve docker test runner structure [\#12](https://github.com/chef/inspec/pull/12) ([arlimus](https://github.com/arlimus))
|
|
2116
|
-
- Concurrent integrationtest [\#11](https://github.com/chef/inspec/pull/11) ([arlimus](https://github.com/arlimus))
|
|
2117
|
-
- add oneget resource [\#10](https://github.com/chef/inspec/pull/10) ([chris-rock](https://github.com/chris-rock))
|
|
2118
|
-
- Winrm [\#9](https://github.com/chef/inspec/pull/9) ([chris-rock](https://github.com/chris-rock))
|
|
2119
|
-
- bugfix: linux file stat parameters and mount [\#8](https://github.com/chef/inspec/pull/8) ([arlimus](https://github.com/arlimus))
|
|
2120
|
-
- Mysql conf [\#7](https://github.com/chef/inspec/pull/7) ([arlimus](https://github.com/arlimus))
|
|
2121
|
-
- Lint update [\#6](https://github.com/chef/inspec/pull/6) ([arlimus](https://github.com/arlimus))
|
|
2122
|
-
- SSH PTY [\#5](https://github.com/chef/inspec/pull/5) ([arlimus](https://github.com/arlimus))
|
|
2123
|
-
- Start Docker + SSH backends [\#4](https://github.com/chef/inspec/pull/4) ([arlimus](https://github.com/arlimus))
|
|
2124
|
-
- travis checks [\#3](https://github.com/chef/inspec/pull/3) ([chris-rock](https://github.com/chris-rock))
|
|
2125
|
-
- Package [\#2](https://github.com/chef/inspec/pull/2) ([chris-rock](https://github.com/chris-rock))
|
|
2126
|
-
- shared linux file handling + specinfra config + cleanup [\#1](https://github.com/chef/inspec/pull/1) ([arlimus](https://github.com/arlimus))
|
|
2127
2061
|
|
|
2128
2062
|
|
|
2129
2063
|
|
data/Gemfile
CHANGED
|
@@ -87,7 +87,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
87
87
|
### Test standard output (stdout)
|
|
88
88
|
|
|
89
89
|
describe command('echo hello') do
|
|
90
|
-
its('stdout') { should eq
|
|
90
|
+
its('stdout') { should eq "hello\n" }
|
|
91
91
|
its('stderr') { should eq '' }
|
|
92
92
|
its('exit_status') { should eq 0 }
|
|
93
93
|
end
|
|
@@ -96,7 +96,7 @@ The following examples show how to use this InSpec audit resource.
|
|
|
96
96
|
|
|
97
97
|
describe command('>&2 echo error') do
|
|
98
98
|
its('stdout') { should eq '' }
|
|
99
|
-
its('stderr') { should eq
|
|
99
|
+
its('stderr') { should eq "error\n" }
|
|
100
100
|
its('exit_status') { should eq 0 }
|
|
101
101
|
end
|
|
102
102
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: About the http Resource
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# http
|
|
6
|
+
|
|
7
|
+
Use the `http` InSpec audit resource to test an http endpoint.
|
|
8
|
+
|
|
9
|
+
## Syntax
|
|
10
|
+
|
|
11
|
+
An `http` resource block declares the configuration settings to be tested:
|
|
12
|
+
|
|
13
|
+
describe http('url', auth: {user: 'user', pass: 'test'}, params: {params}, method: 'method', headers: {headers}, body: body) do
|
|
14
|
+
its('status') { should eq number }
|
|
15
|
+
its('body') { should eq 'body' }
|
|
16
|
+
its('headers.name') { should eq 'header' }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
where
|
|
20
|
+
|
|
21
|
+
* `('url')` is the url to test
|
|
22
|
+
* `{user: 'user', pass: 'test'}` may be specified for basic auth request
|
|
23
|
+
* `{params}` may be specified for http request parameters
|
|
24
|
+
* `'method'` may be specified for http request method (default to 'GET')
|
|
25
|
+
* `{headers}` may be specified for http request headers
|
|
26
|
+
* `body` may be specified for http request body
|
|
27
|
+
|
|
28
|
+
## Matchers
|
|
29
|
+
|
|
30
|
+
This InSpec audit resource has the following matchers:
|
|
31
|
+
|
|
32
|
+
### be
|
|
33
|
+
|
|
34
|
+
<%= partial "/shared/matcher_be" %>
|
|
35
|
+
|
|
36
|
+
### body
|
|
37
|
+
|
|
38
|
+
The `body` matcher tests body content of http response:
|
|
39
|
+
|
|
40
|
+
its('body') { should eq 'hello\n' }
|
|
41
|
+
|
|
42
|
+
### cmp
|
|
43
|
+
|
|
44
|
+
<%= partial "/shared/matcher_cmp" %>
|
|
45
|
+
|
|
46
|
+
### eq
|
|
47
|
+
|
|
48
|
+
<%= partial "/shared/matcher_eq" %>
|
|
49
|
+
|
|
50
|
+
### headers
|
|
51
|
+
|
|
52
|
+
The `headers` matcher returns an hash of all http headers:
|
|
53
|
+
|
|
54
|
+
its('headers') { should eq {} }
|
|
55
|
+
|
|
56
|
+
Individual headers can be tested via:
|
|
57
|
+
|
|
58
|
+
its('headers.Content-Type') { should cmp 'text/html' }
|
|
59
|
+
|
|
60
|
+
### include
|
|
61
|
+
|
|
62
|
+
<%= partial "/shared/matcher_include" %>
|
|
63
|
+
|
|
64
|
+
### match
|
|
65
|
+
|
|
66
|
+
<%= partial "/shared/matcher_match" %>
|
|
67
|
+
|
|
68
|
+
### status
|
|
69
|
+
|
|
70
|
+
The `status` matcher tests status of the http response:
|
|
71
|
+
|
|
72
|
+
its('status') { should eq 200 }
|
|
73
|
+
|
|
74
|
+
## Examples
|
|
75
|
+
|
|
76
|
+
The following examples show how to use this InSpec audit resource.
|
|
77
|
+
|
|
78
|
+
### Simple http test
|
|
79
|
+
|
|
80
|
+
For example, a service is listening on default http port can be tested like this:
|
|
81
|
+
|
|
82
|
+
describe http('http://localhost') do
|
|
83
|
+
its('status') { should cmp 200 }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
### Complex http test
|
|
87
|
+
|
|
88
|
+
describe http('http://localhost:8080/ping',
|
|
89
|
+
auth: {user: 'user', pass: 'test'},
|
|
90
|
+
params: {format: 'html'},
|
|
91
|
+
method: 'POST',
|
|
92
|
+
headers: {'Content-Type' => 'application/json'},
|
|
93
|
+
data: '{"data":{"a":"1","b":"five"}}') do
|
|
94
|
+
its('status') { should cmp 200 }
|
|
95
|
+
its('body') { should cmp 'pong' }
|
|
96
|
+
its('headers.Content-Type') { should cmp 'text/html' }
|
|
97
|
+
end
|
data/docs/resources/os.md.erb
CHANGED
|
@@ -56,7 +56,7 @@ The `os` audit resource includes a collection of helpers that enable more granul
|
|
|
56
56
|
* `debian?`
|
|
57
57
|
* `hpux?`
|
|
58
58
|
* `linux?` (including Alpine Linux, Amazon Linux, ArchLinux, CoreOS, Exherbo, Fedora, Gentoo, and Slackware)
|
|
59
|
-
* `redhat?`
|
|
59
|
+
* `redhat?` (including CentOS)
|
|
60
60
|
* `solaris?` (including Nexenta Core, OmniOS, Open Indiana, Solaris Open, and SmartOS)
|
|
61
61
|
* `suse?`
|
|
62
62
|
* `unix?`
|
|
@@ -103,7 +103,7 @@ Use `os[:family]` to enable more granular testing of platforms, platform names,
|
|
|
103
103
|
* `:debian`
|
|
104
104
|
* `:hpux`
|
|
105
105
|
* `:linux`. For platforms that are part of the Linux family: `:alpine`, `:amazon`, `:arch`, `:coreos`, `:exherbo`, `:fedora`, `:gentoo`, and `:slackware`.
|
|
106
|
-
* `:redhat
|
|
106
|
+
* `:redhat`. For platforms that are part of the Redhat family: `:centos`.
|
|
107
107
|
* `:solaris`. For platforms that are part of the Solaris family: `:nexentacore`, `:omnios`, `:openindiana`, `:opensolaris`, and `:smartos`.
|
|
108
108
|
* `:suse`
|
|
109
109
|
* `:unix`
|
|
@@ -115,7 +115,7 @@ For example, both of the following tests should have the same result:
|
|
|
115
115
|
describe port(69) do
|
|
116
116
|
its('processes') { should include 'in.tftpd' }
|
|
117
117
|
end
|
|
118
|
-
elsif os[:family] == '
|
|
118
|
+
elsif os[:family] == 'redhat'
|
|
119
119
|
describe port(69) do
|
|
120
120
|
its('processes') { should include 'xinetd' }
|
|
121
121
|
end
|
|
@@ -125,7 +125,7 @@ For example, both of the following tests should have the same result:
|
|
|
125
125
|
describe port(69) do
|
|
126
126
|
its('processes') { should include 'in.tftpd' }
|
|
127
127
|
end
|
|
128
|
-
elsif os[:
|
|
128
|
+
elsif os[:redhat]
|
|
129
129
|
describe port(69) do
|
|
130
130
|
its('processes') { should include 'xinetd' }
|
|
131
131
|
end
|
|
File without changes
|
|
@@ -4,7 +4,7 @@ title: About the sshd_config Resource
|
|
|
4
4
|
|
|
5
5
|
# sshd_config
|
|
6
6
|
|
|
7
|
-
Use the `sshd_config` InSpec audit resource to test configuration data for the OpenSSH daemon located at `/etc/ssh/sshd_config` on Linux and Unix platforms. sshd---the OpenSSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command
|
|
7
|
+
Use the `sshd_config` InSpec audit resource to test configuration data for the OpenSSH daemon located at `/etc/ssh/sshd_config` on Linux and Unix platforms. sshd---the OpenSSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command execution, and data exchanges.
|
|
8
8
|
|
|
9
9
|
## Syntax
|
|
10
10
|
|
|
@@ -7,7 +7,7 @@ license: Apache 2
|
|
|
7
7
|
summary: InSpec Profile that is only consuming dependencies
|
|
8
8
|
version: 0.2.0
|
|
9
9
|
depends:
|
|
10
|
-
- name:
|
|
10
|
+
- name: dev-sec/ssh-baseline # defaults to supermarket
|
|
11
11
|
- url: https://github.com/dev-sec/ssl-benchmark
|
|
12
12
|
- name: windows-patch-benchmark
|
|
13
13
|
url: https://github.com/chris-rock/windows-patch-benchmark
|
data/inspec.gemspec
CHANGED
|
@@ -81,7 +81,7 @@ Please login using `inspec compliance login https://compliance.test --user admin
|
|
|
81
81
|
[res.is_a?(Net::HTTPSuccess), res.body]
|
|
82
82
|
end
|
|
83
83
|
|
|
84
|
-
# Use username and
|
|
84
|
+
# Use username and refresh_token to get an API access token
|
|
85
85
|
def self.get_token_via_refresh_token(url, refresh_token, insecure)
|
|
86
86
|
uri = URI.parse("#{url}/login")
|
|
87
87
|
req = Net::HTTP::Post.new(uri.path)
|
|
@@ -130,20 +130,27 @@ Please login using `inspec compliance login https://compliance.test --user admin
|
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
def self.get_headers(config)
|
|
133
|
+
token = get_token(config)
|
|
133
134
|
if config['server_type'] == 'automate'
|
|
134
135
|
headers = { 'chef-delivery-enterprise' => config['automate']['ent'] }
|
|
135
136
|
if config['automate']['token_type'] == 'dctoken'
|
|
136
|
-
headers['x-data-collector-token'] =
|
|
137
|
+
headers['x-data-collector-token'] = token
|
|
137
138
|
else
|
|
138
139
|
headers['chef-delivery-user'] = config['user']
|
|
139
|
-
headers['chef-delivery-token'] =
|
|
140
|
+
headers['chef-delivery-token'] = token
|
|
140
141
|
end
|
|
141
142
|
else
|
|
142
|
-
headers = { 'Authorization' => "Bearer #{
|
|
143
|
+
headers = { 'Authorization' => "Bearer #{token}" }
|
|
143
144
|
end
|
|
144
145
|
headers
|
|
145
146
|
end
|
|
146
147
|
|
|
148
|
+
def self.get_token(config)
|
|
149
|
+
return config['token'] unless config['refresh_token']
|
|
150
|
+
_success, _msg, token = get_token_via_refresh_token(config['server'], config['refresh_token'], config['insecure'])
|
|
151
|
+
token
|
|
152
|
+
end
|
|
153
|
+
|
|
147
154
|
def self.target_url(config, profile)
|
|
148
155
|
if config['server_type'] == 'automate'
|
|
149
156
|
target = "#{config['server']}/#{profile}/tar"
|
|
@@ -179,7 +179,7 @@ module Compliance
|
|
|
179
179
|
end
|
|
180
180
|
|
|
181
181
|
# determine user information
|
|
182
|
-
if config['token'].nil? || config['user'].nil?
|
|
182
|
+
if (config['token'].nil? && config['refresh_token'].nil?) || config['user'].nil?
|
|
183
183
|
error.call('Please login via `inspec compliance login`')
|
|
184
184
|
end
|
|
185
185
|
|
|
@@ -287,11 +287,10 @@ module Compliance
|
|
|
287
287
|
end
|
|
288
288
|
|
|
289
289
|
def login_refreshtoken(url, options)
|
|
290
|
-
success, msg,
|
|
290
|
+
success, msg, _access_token = Compliance::API.get_token_via_refresh_token(url, options['refresh_token'], options['insecure'])
|
|
291
291
|
if success
|
|
292
292
|
config = Compliance::Configuration.new
|
|
293
293
|
config['server'] = url
|
|
294
|
-
config['token'] = access_token
|
|
295
294
|
config['insecure'] = options['insecure']
|
|
296
295
|
config['version'] = Compliance::API.version(url, options['insecure'])
|
|
297
296
|
config['server_type'] = 'compliance'
|
|
@@ -344,11 +343,10 @@ module Compliance
|
|
|
344
343
|
success = true
|
|
345
344
|
msg = 'API refresh token stored'
|
|
346
345
|
else
|
|
347
|
-
success, msg,
|
|
346
|
+
success, msg, _access_token= Compliance::API.get_token_via_refresh_token(url, refresh_token, insecure)
|
|
348
347
|
if success
|
|
349
|
-
config['token'] = access_token
|
|
350
348
|
config.store
|
|
351
|
-
msg = 'API access token verified
|
|
349
|
+
msg = 'API access token verified'
|
|
352
350
|
end
|
|
353
351
|
end
|
|
354
352
|
|
|
@@ -13,7 +13,7 @@ module Compliance
|
|
|
13
13
|
class Fetcher < Fetchers::Url
|
|
14
14
|
name 'compliance'
|
|
15
15
|
priority 500
|
|
16
|
-
def self.resolve(target) # rubocop:disable PerceivedComplexity, Metrics/CyclomaticComplexity
|
|
16
|
+
def self.resolve(target) # rubocop:disable PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize
|
|
17
17
|
uri = if target.is_a?(String) && URI(target).scheme == 'compliance'
|
|
18
18
|
URI(target)
|
|
19
19
|
elsif target.respond_to?(:key?) && target.key?(:compliance)
|
|
@@ -29,7 +29,7 @@ module Compliance
|
|
|
29
29
|
else
|
|
30
30
|
# check if we have a compliance token
|
|
31
31
|
config = Compliance::Configuration.new
|
|
32
|
-
if config['token'].nil?
|
|
32
|
+
if config['token'].nil? && config['refresh_token'].nil?
|
|
33
33
|
if config['server_type'] == 'automate'
|
|
34
34
|
server = 'automate'
|
|
35
35
|
msg = 'inspec compliance login_automate https://your_automate_server --user USER --ent ENT --dctoken DCTOKEN or --usertoken USERTOKEN'
|
|
@@ -55,6 +55,9 @@ EOF
|
|
|
55
55
|
end
|
|
56
56
|
profile_fetch_url = Compliance::API.target_url(config, profile)
|
|
57
57
|
end
|
|
58
|
+
# We need to pass the token to the fetcher
|
|
59
|
+
config['token'] = Compliance::API.get_token(config)
|
|
60
|
+
|
|
58
61
|
new(profile_fetch_url, config)
|
|
59
62
|
rescue URI::Error => _e
|
|
60
63
|
nil
|
data/lib/inspec/resource.rb
CHANGED
data/lib/inspec/version.rb
CHANGED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
# copyright: 2017, Criteo
|
|
3
|
+
# author: Guilhem Lettron
|
|
4
|
+
# license: Apache v2
|
|
5
|
+
|
|
6
|
+
require 'http'
|
|
7
|
+
require 'hashie'
|
|
8
|
+
|
|
9
|
+
module Inspec::Resources
|
|
10
|
+
class Http < Inspec.resource(1)
|
|
11
|
+
name 'http'
|
|
12
|
+
desc 'Use the http InSpec audit resource to test http call.'
|
|
13
|
+
example "
|
|
14
|
+
describe http('http://localhost:8080/ping', auth: {user: 'user', pass: 'test'}, params: {format: 'html'}) do
|
|
15
|
+
its('status') { should cmp 200 }
|
|
16
|
+
its('body') { should cmp 'pong' }
|
|
17
|
+
its('headers.Content-Type') { should cmp 'text/html' }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe http('http://example.com/ping').headers do
|
|
21
|
+
its('Content-Length') { should cmp 258 }
|
|
22
|
+
its('Content-Type') { should cmp 'text/html; charset=UTF-8' }
|
|
23
|
+
end
|
|
24
|
+
"
|
|
25
|
+
|
|
26
|
+
# rubocop:disable ParameterLists
|
|
27
|
+
def initialize(url, method: 'GET', params: nil, auth: {}, headers: {}, data: nil)
|
|
28
|
+
@url = url
|
|
29
|
+
@method = method
|
|
30
|
+
@params = params
|
|
31
|
+
@auth = auth
|
|
32
|
+
@headers = headers
|
|
33
|
+
@data = data
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def status
|
|
37
|
+
response.status
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def body
|
|
41
|
+
response.to_s
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def headers
|
|
45
|
+
Hashie::Mash.new(response.headers.to_h)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def to_s
|
|
49
|
+
"http #{@method} on #{@url}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def response
|
|
55
|
+
http = HTTP.headers(@headers)
|
|
56
|
+
http = http.basic_auth(@auth) unless @auth.empty?
|
|
57
|
+
@response ||= http.request(@method, @url, { body: @data, params: @params })
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/lib/resources/ssh_conf.rb
CHANGED
|
@@ -9,7 +9,7 @@ require 'utils/simpleconfig'
|
|
|
9
9
|
module Inspec::Resources
|
|
10
10
|
class SshConf < Inspec.resource(1)
|
|
11
11
|
name 'ssh_config'
|
|
12
|
-
desc 'Use the sshd_config InSpec audit resource to test configuration data for the Open SSH daemon located at /etc/ssh/sshd_config on Linux and UNIX platforms. sshd---the Open SSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command
|
|
12
|
+
desc 'Use the sshd_config InSpec audit resource to test configuration data for the Open SSH daemon located at /etc/ssh/sshd_config on Linux and UNIX platforms. sshd---the Open SSH daemon---listens on dedicated ports, starts a daemon for each incoming connection, and then handles encryption, authentication, key exchanges, command execution, and data exchanges.'
|
|
13
13
|
example "
|
|
14
14
|
describe sshd_config do
|
|
15
15
|
its('Protocol') { should eq '2' }
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: inspec
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dominik Richter
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: train
|
|
@@ -218,6 +218,20 @@ dependencies:
|
|
|
218
218
|
- - "~>"
|
|
219
219
|
- !ruby/object:Gem::Version
|
|
220
220
|
version: 0.2.3
|
|
221
|
+
- !ruby/object:Gem::Dependency
|
|
222
|
+
name: http
|
|
223
|
+
requirement: !ruby/object:Gem::Requirement
|
|
224
|
+
requirements:
|
|
225
|
+
- - "~>"
|
|
226
|
+
- !ruby/object:Gem::Version
|
|
227
|
+
version: 2.1.0
|
|
228
|
+
type: :runtime
|
|
229
|
+
prerelease: false
|
|
230
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
231
|
+
requirements:
|
|
232
|
+
- - "~>"
|
|
233
|
+
- !ruby/object:Gem::Version
|
|
234
|
+
version: 2.1.0
|
|
221
235
|
description: InSpec provides a framework for creating end-to-end infrastructure tests.
|
|
222
236
|
You can use it for integration or even compliance testing. Create fully portable
|
|
223
237
|
test profiles and use them in your workflow to ensure stability and security. Integrate
|
|
@@ -268,6 +282,7 @@ files:
|
|
|
268
282
|
- docs/resources/group.md.erb
|
|
269
283
|
- docs/resources/grub_conf.md.erb
|
|
270
284
|
- docs/resources/host.md.erb
|
|
285
|
+
- docs/resources/http.md.erb
|
|
271
286
|
- docs/resources/iis_site.md.erb
|
|
272
287
|
- docs/resources/inetd_conf.md.erb
|
|
273
288
|
- docs/resources/ini.md.erb
|
|
@@ -295,7 +310,7 @@ files:
|
|
|
295
310
|
- docs/resources/postgres_conf.md.erb
|
|
296
311
|
- docs/resources/postgres_session.md.erb
|
|
297
312
|
- docs/resources/powershell.md.erb
|
|
298
|
-
- docs/resources/
|
|
313
|
+
- docs/resources/processes.md.erb
|
|
299
314
|
- docs/resources/registry_key.md.erb
|
|
300
315
|
- docs/resources/runit_service.md.erb
|
|
301
316
|
- docs/resources/security_policy.md.erb
|
|
@@ -471,6 +486,7 @@ files:
|
|
|
471
486
|
- lib/resources/groups.rb
|
|
472
487
|
- lib/resources/grub_conf.rb
|
|
473
488
|
- lib/resources/host.rb
|
|
489
|
+
- lib/resources/http.rb
|
|
474
490
|
- lib/resources/iis_site.rb
|
|
475
491
|
- lib/resources/inetd_conf.rb
|
|
476
492
|
- lib/resources/ini.rb
|