inspec-core 4.18.51 → 4.18.85
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +61 -0
- data/README.md +3 -3
- data/inspec-core.gemspec +51 -0
- data/lib/bundles/inspec-supermarket/cli.rb +1 -0
- data/lib/inspec/backend.rb +49 -47
- data/lib/inspec/base_cli.rb +2 -2
- data/lib/inspec/cached_fetcher.rb +4 -0
- data/lib/inspec/cli.rb +5 -0
- data/lib/inspec/config.rb +1 -1
- data/lib/inspec/control_eval_context.rb +131 -199
- data/lib/inspec/dependencies/requirement.rb +1 -1
- data/lib/inspec/dependencies/resolver.rb +46 -0
- data/lib/inspec/dsl_shared.rb +25 -3
- data/lib/inspec/fetcher.rb +0 -3
- data/lib/inspec/fetcher/git.rb +4 -0
- data/lib/inspec/fetcher/url.rb +1 -2
- data/lib/inspec/file_provider.rb +4 -2
- data/lib/inspec/library_eval_context.rb +37 -37
- data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +27 -0
- data/lib/inspec/plugin/v1/plugins.rb +0 -1
- data/lib/inspec/profile.rb +8 -6
- data/lib/inspec/profile_context.rb +74 -9
- data/lib/inspec/profile_vendor.rb +48 -3
- data/lib/inspec/resource.rb +192 -41
- data/lib/inspec/resources/aide_conf.rb +1 -1
- data/lib/inspec/resources/apache_conf.rb +15 -31
- data/lib/inspec/resources/command.rb +1 -1
- data/lib/inspec/resources/crontab.rb +56 -56
- data/lib/inspec/resources/etc_fstab.rb +1 -1
- data/lib/inspec/resources/etc_group.rb +1 -1
- data/lib/inspec/resources/etc_hosts.rb +2 -3
- data/lib/inspec/resources/etc_hosts_allow_deny.rb +1 -1
- data/lib/inspec/resources/file.rb +2 -2
- data/lib/inspec/resources/filesystem.rb +4 -4
- data/lib/inspec/resources/groups.rb +16 -2
- data/lib/inspec/resources/iis_app.rb +1 -1
- data/lib/inspec/resources/ini.rb +1 -2
- data/lib/inspec/resources/mount.rb +2 -2
- data/lib/inspec/resources/oracledb_session.rb +1 -1
- data/lib/inspec/resources/package.rb +22 -0
- data/lib/inspec/resources/passwd.rb +1 -1
- data/lib/inspec/resources/platform.rb +36 -36
- data/lib/inspec/resources/port.rb +1 -1
- data/lib/inspec/resources/postfix_conf.rb +1 -1
- data/lib/inspec/resources/service.rb +23 -15
- data/lib/inspec/resources/users.rb +3 -3
- data/lib/inspec/resources/virtualization.rb +15 -11
- data/lib/inspec/resources/x509_certificate.rb +18 -4
- data/lib/inspec/resources/xinetd_conf.rb +1 -1
- data/lib/inspec/resources/xml.rb +1 -2
- data/lib/inspec/rspec_extensions.rb +12 -0
- data/lib/inspec/rule.rb +63 -22
- data/lib/inspec/utils/filter.rb +2 -0
- data/lib/inspec/utils/parser.rb +244 -240
- data/lib/inspec/utils/simpleconfig.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/matchers/matchers.rb +11 -10
- data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +3 -0
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +2 -2
- data/lib/plugins/inspec-init/templates/profiles/aws/README.md +192 -0
- data/lib/plugins/inspec-init/templates/profiles/aws/attributes.yml +2 -0
- data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +39 -0
- data/lib/plugins/inspec-init/templates/profiles/aws/inspec.yml +22 -0
- data/lib/plugins/inspec-init/templates/profiles/azure/README.md +56 -0
- data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +14 -0
- data/lib/plugins/inspec-init/templates/profiles/azure/inspec.yml +14 -0
- data/lib/plugins/inspec-init/templates/profiles/gcp/README.md +66 -0
- data/lib/plugins/inspec-init/templates/profiles/gcp/attributes.yml +2 -0
- data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +27 -0
- data/lib/plugins/inspec-init/templates/profiles/gcp/inspec.yml +19 -0
- data/lib/source_readers/inspec.rb +1 -1
- metadata +87 -74
- data/lib/inspec/plugin/v1/plugin_types/resource.rb +0 -176
- data/lib/plugins/inspec-init/templates/profiles/os/libraries/.gitkeep +0 -0
data/lib/inspec/version.rb
CHANGED
data/lib/matchers/matchers.rb
CHANGED
@@ -221,9 +221,7 @@ RSpec::Matchers.define :cmp do |first_expected| # rubocop:disable Metrics/BlockL
|
|
221
221
|
end
|
222
222
|
|
223
223
|
def octal?(value)
|
224
|
-
|
225
|
-
|
226
|
-
!(value =~ /\A0+[0-7]+\Z/).nil?
|
224
|
+
value.is_a?(String) && (value =~ /\A0+[0-7]+\Z/)
|
227
225
|
end
|
228
226
|
|
229
227
|
def boolean?(value)
|
@@ -288,25 +286,28 @@ RSpec::Matchers.define :cmp do |first_expected| # rubocop:disable Metrics/BlockL
|
|
288
286
|
end
|
289
287
|
end
|
290
288
|
|
289
|
+
def format_actual(actual)
|
290
|
+
actual = "0%o" % actual if octal?(@expected)
|
291
|
+
"\n%s\n got: %s\n\n(compared using `cmp` matcher)\n" % [format_expectation(false), actual]
|
292
|
+
end
|
293
|
+
|
291
294
|
def format_expectation(negate)
|
292
|
-
return "expected: "
|
295
|
+
return "expected: %s" % [@expected] if @operation == :== && !negate
|
293
296
|
|
294
297
|
negate_str = negate ? "not " : ""
|
295
|
-
"expected it
|
298
|
+
"expected it %sto be %s %p" % [negate_str, @operation, @expected]
|
296
299
|
end
|
297
300
|
|
298
301
|
failure_message do |actual|
|
299
|
-
|
300
|
-
"\n" + format_expectation(false) + "\n got: #{actual.inspect}\n\n(compared using `cmp` matcher)\n"
|
302
|
+
format_actual actual
|
301
303
|
end
|
302
304
|
|
303
305
|
failure_message_when_negated do |actual|
|
304
|
-
|
305
|
-
"\n" + format_expectation(true) + "\n got: #{actual.inspect}\n\n(compared using `cmp` matcher)\n"
|
306
|
+
format_actual actual
|
306
307
|
end
|
307
308
|
|
308
309
|
description do
|
309
|
-
"cmp
|
310
|
+
"cmp %s %p" % [@operation, @expected]
|
310
311
|
end
|
311
312
|
end
|
312
313
|
|
@@ -9,7 +9,7 @@ module InspecPlugins
|
|
9
9
|
class Profile
|
10
10
|
include Inspec::Dist
|
11
11
|
|
12
|
-
attr_reader :logger
|
12
|
+
attr_reader :logger, :options
|
13
13
|
def initialize(path, options = {})
|
14
14
|
@path = path
|
15
15
|
@options = options
|
@@ -149,7 +149,7 @@ module InspecPlugins
|
|
149
149
|
"vendor process.")
|
150
150
|
else
|
151
151
|
logger.debug("Vendoring the profile's dependencies...")
|
152
|
-
profile_vendor.vendor!
|
152
|
+
profile_vendor.vendor!(options)
|
153
153
|
|
154
154
|
logger.debug("Ensuring all vendored content has read permissions...")
|
155
155
|
profile_vendor.make_readable
|
@@ -0,0 +1,192 @@
|
|
1
|
+
# Example InSpec Profile For AWS
|
2
|
+
|
3
|
+
This example shows the implementation of an InSpec profile for AWS.
|
4
|
+
|
5
|
+
## Create a profile
|
6
|
+
|
7
|
+
```
|
8
|
+
$ inspec init profile --platform aws my-profile
|
9
|
+
|
10
|
+
─────────────────────────── InSpec Code Generator ───────────────────────────
|
11
|
+
|
12
|
+
Creating new profile at /Users/spaterson/my-profile
|
13
|
+
• Creating directory libraries
|
14
|
+
• Creating file README.md
|
15
|
+
• Creating directory controls
|
16
|
+
• Creating file controls/example.rb
|
17
|
+
• Creating file inspec.yml
|
18
|
+
• Creating file attributes.yml
|
19
|
+
• Creating file libraries/.gitkeep
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
## Optionally update `attributes.yml` to point to your custom VPC
|
24
|
+
|
25
|
+
```
|
26
|
+
aws_vpc_id: 'custom-vpc-id'
|
27
|
+
```
|
28
|
+
|
29
|
+
The related control will simply be skipped if this is not provided. See the [InSpec DSL documentation](https://www.inspec.io/docs/reference/dsl_inspec/) for more details on conditional execution using `only_if`.
|
30
|
+
|
31
|
+
## Run the tests
|
32
|
+
|
33
|
+
### With a VPC Identifier
|
34
|
+
|
35
|
+
With a supplied VPC identifier in `attributes.yml` both of the example controls will run. The 'aws-single-vpc-exists-check' control will only check for a VPC identifier in the currently configured AWS SDK region e.g. `eu-west-2` in the below:
|
36
|
+
|
37
|
+
```
|
38
|
+
$ cd my-profile/
|
39
|
+
$ inspec exec . -t aws:// --attrs attributes.yml
|
40
|
+
|
41
|
+
Profile: AWS InSpec Profile (my-profile)
|
42
|
+
Version: 0.1.0
|
43
|
+
Target: aws://eu-west-2
|
44
|
+
|
45
|
+
✔ aws-single-vpc-exists-check: Check to see if custom VPC exists.
|
46
|
+
✔ VPC vpc-1ea06476 should exist
|
47
|
+
✔ aws-vpcs-check: Check in all the VPCs for default sg not allowing 22 inwards
|
48
|
+
✔ EC2 Security Group sg-067cd21e928c3a2f1 should allow in {:port=>22}
|
49
|
+
✔ EC2 Security Group sg-9bb3b9f3 should allow in {:port=>22}
|
50
|
+
✔ aws-vpcs-multi-region-status-check: Check AWS VPCs in all regions have status "available"
|
51
|
+
✔ VPC vpc-6458b70d in eu-north-1 should exist
|
52
|
+
✔ VPC vpc-6458b70d in eu-north-1 should be available
|
53
|
+
✔ VPC vpc-8d1390e5 in ap-south-1 should exist
|
54
|
+
✔ VPC vpc-8d1390e5 in ap-south-1 should be available
|
55
|
+
✔ VPC vpc-07a71d6e in eu-west-3 should exist
|
56
|
+
✔ VPC vpc-07a71d6e in eu-west-3 should be available
|
57
|
+
✔ VPC vpc-021630e2e767412b5 in eu-west-2 should exist
|
58
|
+
✔ VPC vpc-021630e2e767412b5 in eu-west-2 should be available
|
59
|
+
✔ VPC vpc-1ea06476 in eu-west-2 should exist
|
60
|
+
✔ VPC vpc-1ea06476 in eu-west-2 should be available
|
61
|
+
✔ VPC vpc-169dee70 in eu-west-1 should exist
|
62
|
+
✔ VPC vpc-169dee70 in eu-west-1 should be available
|
63
|
+
✔ VPC vpc-01ac7ba0be447a1c4 in eu-west-1 should exist
|
64
|
+
✔ VPC vpc-01ac7ba0be447a1c4 in eu-west-1 should be available
|
65
|
+
✔ VPC vpc-09ff83d71da9d2b6e in eu-west-1 should exist
|
66
|
+
✔ VPC vpc-09ff83d71da9d2b6e in eu-west-1 should be available
|
67
|
+
✔ VPC vpc-0ebccac2337a90f13 in eu-west-1 should exist
|
68
|
+
✔ VPC vpc-0ebccac2337a90f13 in eu-west-1 should be available
|
69
|
+
✔ VPC vpc-c2a53da4 in eu-west-1 should exist
|
70
|
+
✔ VPC vpc-c2a53da4 in eu-west-1 should be available
|
71
|
+
✔ VPC vpc-4fb3f127 in ap-northeast-2 should exist
|
72
|
+
✔ VPC vpc-4fb3f127 in ap-northeast-2 should be available
|
73
|
+
✔ VPC vpc-0804856f in ap-northeast-1 should exist
|
74
|
+
✔ VPC vpc-0804856f in ap-northeast-1 should be available
|
75
|
+
✔ VPC vpc-ccb917ab in sa-east-1 should exist
|
76
|
+
✔ VPC vpc-ccb917ab in sa-east-1 should be available
|
77
|
+
✔ VPC vpc-0afcc60c70a30a615 in ca-central-1 should exist
|
78
|
+
✔ VPC vpc-0afcc60c70a30a615 in ca-central-1 should be available
|
79
|
+
✔ VPC vpc-20a25048 in ca-central-1 should exist
|
80
|
+
✔ VPC vpc-20a25048 in ca-central-1 should be available
|
81
|
+
✔ VPC vpc-5896143f in ap-southeast-1 should exist
|
82
|
+
✔ VPC vpc-5896143f in ap-southeast-1 should be available
|
83
|
+
✔ VPC vpc-47972220 in ap-southeast-2 should exist
|
84
|
+
✔ VPC vpc-47972220 in ap-southeast-2 should be available
|
85
|
+
✔ VPC vpc-071b6f0c69d1d0311 in eu-central-1 should exist
|
86
|
+
✔ VPC vpc-071b6f0c69d1d0311 in eu-central-1 should be available
|
87
|
+
✔ VPC vpc-807dfdeb in eu-central-1 should exist
|
88
|
+
✔ VPC vpc-807dfdeb in eu-central-1 should be available
|
89
|
+
✔ VPC vpc-0be54a71311bc362d in eu-central-1 should exist
|
90
|
+
✔ VPC vpc-0be54a71311bc362d in eu-central-1 should be available
|
91
|
+
✔ VPC vpc-f060cd8b in us-east-1 should exist
|
92
|
+
✔ VPC vpc-f060cd8b in us-east-1 should be available
|
93
|
+
✔ VPC vpc-0c3a7e116c58d714b in us-east-1 should exist
|
94
|
+
✔ VPC vpc-0c3a7e116c58d714b in us-east-1 should be available
|
95
|
+
✔ VPC vpc-047bff6c in us-east-2 should exist
|
96
|
+
✔ VPC vpc-047bff6c in us-east-2 should be available
|
97
|
+
✔ VPC vpc-93dd6ef4 in us-west-1 should exist
|
98
|
+
✔ VPC vpc-93dd6ef4 in us-west-1 should be available
|
99
|
+
✔ VPC vpc-2c0a6a55 in us-west-2 should exist
|
100
|
+
✔ VPC vpc-2c0a6a55 in us-west-2 should be available
|
101
|
+
|
102
|
+
|
103
|
+
Profile: Amazon Web Services Resource Pack (inspec-aws)
|
104
|
+
Version: 0.1.0
|
105
|
+
Target: aws://eu-west-2
|
106
|
+
|
107
|
+
No tests executed.
|
108
|
+
|
109
|
+
Profile Summary: 3 successful controls, 0 control failures, 0 controls skipped
|
110
|
+
Test Summary: 53 successful, 0 failures, 0 skipped
|
111
|
+
```
|
112
|
+
|
113
|
+
|
114
|
+
### Without Supplying a VPC Identifier
|
115
|
+
|
116
|
+
If no VPC identifier is supplied, the 'aws-single-vpc-exists-check' control is skipped and the other control runs. The `attributes.yml` file does not have to be specified to InSpec in this case.
|
117
|
+
|
118
|
+
```
|
119
|
+
$ cd my-profile/
|
120
|
+
$ inspec exec . -t aws://
|
121
|
+
|
122
|
+
Profile: AWS InSpec Profile (my-profile)
|
123
|
+
Version: 0.1.0
|
124
|
+
Target: aws://eu-west-2
|
125
|
+
|
126
|
+
↺ aws-single-vpc-exists-check: Check to see if custom VPC exists.
|
127
|
+
↺ Skipped control due to only_if condition.
|
128
|
+
✔ aws-vpcs-check: Check in all the VPCs for default sg not allowing 22 inwards
|
129
|
+
✔ EC2 Security Group sg-067cd21e928c3a2f1 should allow in {:port=>22}
|
130
|
+
✔ EC2 Security Group sg-9bb3b9f3 should allow in {:port=>22}
|
131
|
+
✔ aws-vpcs-multi-region-status-check: Check AWS VPCs in all regions have status "available"
|
132
|
+
✔ VPC vpc-6458b70d in eu-north-1 should exist
|
133
|
+
✔ VPC vpc-6458b70d in eu-north-1 should be available
|
134
|
+
✔ VPC vpc-8d1390e5 in ap-south-1 should exist
|
135
|
+
✔ VPC vpc-8d1390e5 in ap-south-1 should be available
|
136
|
+
✔ VPC vpc-07a71d6e in eu-west-3 should exist
|
137
|
+
✔ VPC vpc-07a71d6e in eu-west-3 should be available
|
138
|
+
✔ VPC vpc-021630e2e767412b5 in eu-west-2 should exist
|
139
|
+
✔ VPC vpc-021630e2e767412b5 in eu-west-2 should be available
|
140
|
+
✔ VPC vpc-1ea06476 in eu-west-2 should exist
|
141
|
+
✔ VPC vpc-1ea06476 in eu-west-2 should be available
|
142
|
+
✔ VPC vpc-169dee70 in eu-west-1 should exist
|
143
|
+
✔ VPC vpc-169dee70 in eu-west-1 should be available
|
144
|
+
✔ VPC vpc-01ac7ba0be447a1c4 in eu-west-1 should exist
|
145
|
+
✔ VPC vpc-01ac7ba0be447a1c4 in eu-west-1 should be available
|
146
|
+
✔ VPC vpc-09ff83d71da9d2b6e in eu-west-1 should exist
|
147
|
+
✔ VPC vpc-09ff83d71da9d2b6e in eu-west-1 should be available
|
148
|
+
✔ VPC vpc-0ebccac2337a90f13 in eu-west-1 should exist
|
149
|
+
✔ VPC vpc-0ebccac2337a90f13 in eu-west-1 should be available
|
150
|
+
✔ VPC vpc-c2a53da4 in eu-west-1 should exist
|
151
|
+
✔ VPC vpc-c2a53da4 in eu-west-1 should be available
|
152
|
+
✔ VPC vpc-4fb3f127 in ap-northeast-2 should exist
|
153
|
+
✔ VPC vpc-4fb3f127 in ap-northeast-2 should be available
|
154
|
+
✔ VPC vpc-0804856f in ap-northeast-1 should exist
|
155
|
+
✔ VPC vpc-0804856f in ap-northeast-1 should be available
|
156
|
+
✔ VPC vpc-ccb917ab in sa-east-1 should exist
|
157
|
+
✔ VPC vpc-ccb917ab in sa-east-1 should be available
|
158
|
+
✔ VPC vpc-0afcc60c70a30a615 in ca-central-1 should exist
|
159
|
+
✔ VPC vpc-0afcc60c70a30a615 in ca-central-1 should be available
|
160
|
+
✔ VPC vpc-20a25048 in ca-central-1 should exist
|
161
|
+
✔ VPC vpc-20a25048 in ca-central-1 should be available
|
162
|
+
✔ VPC vpc-5896143f in ap-southeast-1 should exist
|
163
|
+
✔ VPC vpc-5896143f in ap-southeast-1 should be available
|
164
|
+
✔ VPC vpc-47972220 in ap-southeast-2 should exist
|
165
|
+
✔ VPC vpc-47972220 in ap-southeast-2 should be available
|
166
|
+
✔ VPC vpc-071b6f0c69d1d0311 in eu-central-1 should exist
|
167
|
+
✔ VPC vpc-071b6f0c69d1d0311 in eu-central-1 should be available
|
168
|
+
✔ VPC vpc-807dfdeb in eu-central-1 should exist
|
169
|
+
✔ VPC vpc-807dfdeb in eu-central-1 should be available
|
170
|
+
✔ VPC vpc-0be54a71311bc362d in eu-central-1 should exist
|
171
|
+
✔ VPC vpc-0be54a71311bc362d in eu-central-1 should be available
|
172
|
+
✔ VPC vpc-f060cd8b in us-east-1 should exist
|
173
|
+
✔ VPC vpc-f060cd8b in us-east-1 should be available
|
174
|
+
✔ VPC vpc-0c3a7e116c58d714b in us-east-1 should exist
|
175
|
+
✔ VPC vpc-0c3a7e116c58d714b in us-east-1 should be available
|
176
|
+
✔ VPC vpc-047bff6c in us-east-2 should exist
|
177
|
+
✔ VPC vpc-047bff6c in us-east-2 should be available
|
178
|
+
✔ VPC vpc-93dd6ef4 in us-west-1 should exist
|
179
|
+
✔ VPC vpc-93dd6ef4 in us-west-1 should be available
|
180
|
+
✔ VPC vpc-2c0a6a55 in us-west-2 should exist
|
181
|
+
✔ VPC vpc-2c0a6a55 in us-west-2 should be available
|
182
|
+
|
183
|
+
|
184
|
+
Profile: Amazon Web Services Resource Pack (inspec-aws)
|
185
|
+
Version: 0.1.0
|
186
|
+
Target: aws://eu-west-2
|
187
|
+
|
188
|
+
No tests executed.
|
189
|
+
|
190
|
+
Profile Summary: 2 successful controls, 0 control failures, 1 control skipped
|
191
|
+
Test Summary: 52 successful, 0 failures, 1 skipped
|
192
|
+
```
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# copyright: 2018, The Authors
|
2
|
+
|
3
|
+
title "Sample Section"
|
4
|
+
|
5
|
+
aws_vpc_id = attribute("aws_vpc_id", default: "", description: "Optional AWS VPC identifier.")
|
6
|
+
|
7
|
+
# You add controls here
|
8
|
+
control "aws-single-vpc-exists-check" do # A unique ID for this control.
|
9
|
+
only_if { aws_vpc_id != "" } # Only run this control if the `aws_vpc_id` attribute is provided.
|
10
|
+
impact 1.0 # The criticality, if this control fails.
|
11
|
+
title "Check to see if custom VPC exists." # A human-readable title.
|
12
|
+
describe aws_vpc(aws_vpc_id) do # The test itself.
|
13
|
+
it { should exist }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Plural resources can be inspected to check for specific resource details.
|
18
|
+
control "aws-vpcs-check" do
|
19
|
+
impact 1.0
|
20
|
+
title "Check in all the VPCs for default sg not allowing 22 inwards"
|
21
|
+
aws_vpcs.vpc_ids.each do |vpc_id|
|
22
|
+
describe aws_security_group(vpc_id: vpc_id, group_name: "default") do
|
23
|
+
it { should allow_in(port: 22) }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
control "aws-vpcs-multi-region-status-check" do # A unique ID for this control.
|
29
|
+
impact 1.0 # The criticality, if this control fails.
|
30
|
+
title 'Check AWS VPCs in all regions have status "available"' # A human-readable title.
|
31
|
+
aws_regions.region_names.each do |region| # Loop over all available AWS regions
|
32
|
+
aws_vpcs(aws_region: region).vpc_ids.each do |vpc| # Find all VPCs in a single AWS region
|
33
|
+
describe aws_vpc(aws_region: region, vpc_id: vpc) do # The test itself.
|
34
|
+
it { should exist } # Confirms AWS VPC exists
|
35
|
+
it { should be_available } # Confirms AWS VPC has status "available"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
name: <%= name %>
|
2
|
+
title: AWS InSpec Profile
|
3
|
+
maintainer: The Authors
|
4
|
+
copyright: The Authors
|
5
|
+
copyright_email: you@example.com
|
6
|
+
license: Apache-2.0
|
7
|
+
summary: An InSpec Compliance Profile For AWS
|
8
|
+
version: 0.1.0
|
9
|
+
inspec_version: '~> 4'
|
10
|
+
attributes:
|
11
|
+
- name: aws_vpc_id
|
12
|
+
required: false
|
13
|
+
# Below is deliberately left as a default empty string to allow the profile to run when this is not provided.
|
14
|
+
# Please see the README for more details.
|
15
|
+
default: ''
|
16
|
+
description: 'Optional Custom AWS VPC Id'
|
17
|
+
type: string
|
18
|
+
depends:
|
19
|
+
- name: inspec-aws
|
20
|
+
url: https://github.com/inspec/inspec-aws/archive/master.tar.gz
|
21
|
+
supports:
|
22
|
+
- platform: aws
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Example InSpec Profile For Azure
|
2
|
+
|
3
|
+
This example shows the implementation of an InSpec profile for Azure. See [https://github.com/inspec/inspec-azure](https://github.com/inspec/inspec-azure) for details on how to configure credentials for your subscription.
|
4
|
+
|
5
|
+
## Create a profile
|
6
|
+
|
7
|
+
```
|
8
|
+
$ inspec init profile --platform azure my-profile
|
9
|
+
|
10
|
+
─────────────────────────── InSpec Code Generator ───────────────────────────
|
11
|
+
|
12
|
+
Creating new profile at /Users/spaterson/my-profile
|
13
|
+
• Creating directory libraries
|
14
|
+
• Creating file README.md
|
15
|
+
• Creating directory controls
|
16
|
+
• Creating file controls/example.rb
|
17
|
+
• Creating file inspec.yml
|
18
|
+
• Creating file libraries/.gitkeep
|
19
|
+
|
20
|
+
```
|
21
|
+
|
22
|
+
## Run the tests
|
23
|
+
|
24
|
+
```
|
25
|
+
$ cd my-profile/
|
26
|
+
$ inspec exec . -t azure://
|
27
|
+
|
28
|
+
|
29
|
+
Profile: Azure InSpec Profile (my-profile)
|
30
|
+
Version: 0.1.0
|
31
|
+
Target: azure://12345abc-987d-654e-fg21-abcdef23324r
|
32
|
+
|
33
|
+
× azure-virtual-machines-exist-check: Check resource groups to see if any VMs exist. (4 failed)
|
34
|
+
× Azure Virtual Machines should exist
|
35
|
+
expected Azure Virtual Machines to exist
|
36
|
+
× Azure Virtual Machines should exist
|
37
|
+
expected Azure Virtual Machines to exist
|
38
|
+
× Azure Virtual Machines should exist
|
39
|
+
expected Azure Virtual Machines to exist
|
40
|
+
× Azure Virtual Machines should exist
|
41
|
+
expected Azure Virtual Machines to exist
|
42
|
+
✔ Azure Virtual Machines should exist
|
43
|
+
✔ Azure Virtual Machines should exist
|
44
|
+
✔ Azure Virtual Machines should exist
|
45
|
+
|
46
|
+
|
47
|
+
Profile: Azure Resource Pack (inspec-azure)
|
48
|
+
Version: 1.2.0
|
49
|
+
Target: azure://12345abc-987d-654e-fg21-abcdef23324r
|
50
|
+
|
51
|
+
No tests executed.
|
52
|
+
|
53
|
+
Profile Summary: 0 successful controls, 1 control failure, 0 controls skipped
|
54
|
+
Test Summary: 3 successful, 4 failures, 0 skipped
|
55
|
+
|
56
|
+
```
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# copyright: 2018, The Authors
|
2
|
+
|
3
|
+
title "Sample Section"
|
4
|
+
|
5
|
+
# you add controls here
|
6
|
+
control "azure-virtual-machines-exist-check" do # A unique ID for this control.
|
7
|
+
impact 1.0 # The criticality, if this control fails.
|
8
|
+
title "Check resource groups to see if any VMs exist." # A human-readable title
|
9
|
+
azurerm_resource_groups.names.each do |resource_group_name| # Plural resources can be leveraged to loop across many resources
|
10
|
+
describe azurerm_virtual_machines(resource_group: resource_group_name) do
|
11
|
+
it { should exist } # The test itself.
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
name: <%= name %>
|
2
|
+
title: Azure InSpec Profile
|
3
|
+
maintainer: The Authors
|
4
|
+
copyright: The Authors
|
5
|
+
copyright_email: you@example.com
|
6
|
+
license: Apache-2.0
|
7
|
+
summary: An InSpec Compliance Profile For Azure
|
8
|
+
version: 0.1.0
|
9
|
+
inspec_version: '>= 2.2.7'
|
10
|
+
depends:
|
11
|
+
- name: inspec-azure
|
12
|
+
url: https://github.com/inspec/inspec-azure/archive/master.tar.gz
|
13
|
+
supports:
|
14
|
+
- platform: azure
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# Example InSpec Profile For GCP
|
2
|
+
|
3
|
+
This example shows the implementation of an InSpec profile for GCP that depends on the [InSpec GCP Resource Pack](https://github.com/inspec/inspec-gcp). See the [README](https://github.com/inspec/inspec-gcp) for instructions on setting up appropriate GCP credentials.
|
4
|
+
|
5
|
+
## Create a profile
|
6
|
+
|
7
|
+
```
|
8
|
+
$ inspec init profile --platform gcp my-profile
|
9
|
+
Create new profile at /Users/spaterson/my-profile
|
10
|
+
* Create directory libraries
|
11
|
+
* Create file README.md
|
12
|
+
* Create directory controls
|
13
|
+
* Create file controls/example.rb
|
14
|
+
* Create file inspec.yml
|
15
|
+
* Create file attributes.yml
|
16
|
+
* Create file libraries/.gitkeep
|
17
|
+
|
18
|
+
```
|
19
|
+
|
20
|
+
## Update `attributes.yml` to point to your project
|
21
|
+
|
22
|
+
```
|
23
|
+
gcp_project_id: 'my-gcp-project'
|
24
|
+
```
|
25
|
+
|
26
|
+
## Run the tests
|
27
|
+
|
28
|
+
```
|
29
|
+
$ cd gcp-profile/
|
30
|
+
$ inspec exec . -t gcp:// --attrs attributes.yml
|
31
|
+
|
32
|
+
Profile: GCP InSpec Profile (my-profile)
|
33
|
+
Version: 0.1.0
|
34
|
+
Target: gcp://local-service-account@my-gcp-project.iam.gserviceaccount.com
|
35
|
+
|
36
|
+
✔ gcp-single-region-1.0: Ensure single region has the correct properties.
|
37
|
+
✔ Region europe-west2 zone_names should include "europe-west2-a"
|
38
|
+
✔ gcp-regions-loop-1.0: Ensure regions have the correct properties in bulk.
|
39
|
+
✔ Region asia-east1 should be up
|
40
|
+
✔ Region asia-northeast1 should be up
|
41
|
+
✔ Region asia-south1 should be up
|
42
|
+
✔ Region asia-southeast1 should be up
|
43
|
+
✔ Region australia-southeast1 should be up
|
44
|
+
✔ Region europe-north1 should be up
|
45
|
+
✔ Region europe-west1 should be up
|
46
|
+
✔ Region europe-west2 should be up
|
47
|
+
✔ Region europe-west3 should be up
|
48
|
+
✔ Region europe-west4 should be up
|
49
|
+
✔ Region northamerica-northeast1 should be up
|
50
|
+
✔ Region southamerica-east1 should be up
|
51
|
+
✔ Region us-central1 should be up
|
52
|
+
✔ Region us-east1 should be up
|
53
|
+
✔ Region us-east4 should be up
|
54
|
+
✔ Region us-west1 should be up
|
55
|
+
✔ Region us-west2 should be up
|
56
|
+
|
57
|
+
|
58
|
+
Profile: Google Cloud Platform Resource Pack (inspec-gcp)
|
59
|
+
Version: 0.5.0
|
60
|
+
Target: gcp://local-service-account@my-gcp-project.iam.gserviceaccount.com
|
61
|
+
|
62
|
+
No tests executed.
|
63
|
+
|
64
|
+
Profile Summary: 2 successful controls, 0 control failures, 0 controls skipped
|
65
|
+
Test Summary: 18 successful, 0 failures, 0 skipped
|
66
|
+
```
|