cfn-nag 0.7.0 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cfn-nag/custom_rules/ApiGatewayCacheEncryptedRule.rb +34 -0
- data/lib/cfn-nag/custom_rules/CloudfrontMinimumProtocolVersionRule.rb +4 -3
- data/lib/cfn-nag/custom_rules/ECRRepositoryScanOnPushRule.rb +2 -2
- data/lib/cfn-nag/custom_rules/KinesisFirehoseDeliveryStreamEncryptionRule.rb +39 -0
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5366924d809c99ac47a2bcdfe2d2188dc6956069c80646d3ebd65ca938a0096
|
4
|
+
data.tar.gz: 9c6c6a9f5b149351db5ceb54002c7556ebfff9625a40f4e3ca0abee490f5717d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bed1dc0021b7f0af96d5b4a76769c29e0e7313f1fceda215dee60bf521434103714961084b14bb4dbdb73b3cf1cadd6381c123dd641f262f7974d0bc9414e379
|
7
|
+
data.tar.gz: f9f450d52f0bc51f2691b6497548e00eb0db8aa69c3416c7294bb55988fc005d855272351f154a721e2a4807556c1a34929dea2086da7f2741e4b37872dd8dd5
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cfn-nag/violation'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
class ApiGatewayCacheEncryptedRule < BaseRule
|
7
|
+
def rule_text
|
8
|
+
'ApiGateway Deployment should have cache data encryption enabled when caching is enabled' \
|
9
|
+
' in StageDescription properties'
|
10
|
+
end
|
11
|
+
|
12
|
+
def rule_type
|
13
|
+
Violation::WARNING
|
14
|
+
end
|
15
|
+
|
16
|
+
def rule_id
|
17
|
+
'W87'
|
18
|
+
end
|
19
|
+
|
20
|
+
def audit_impl(cfn_model)
|
21
|
+
violating_deployments = cfn_model.resources_by_type('AWS::ApiGateway::Deployment').select do |deployment|
|
22
|
+
violating_deployment?(deployment)
|
23
|
+
end
|
24
|
+
|
25
|
+
violating_deployments.map(&:logical_resource_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def violating_deployment?(deployment)
|
31
|
+
!deployment.stageDescription.nil? && truthy?(deployment.stageDescription['CachingEnabled']) \
|
32
|
+
&& !truthy?(deployment.stageDescription['CacheDataEncrypted'])
|
33
|
+
end
|
34
|
+
end
|
@@ -28,11 +28,12 @@ class CloudfrontMinimumProtocolVersionRule < BaseRule
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def tls_version?(viewer_certificate)
|
31
|
-
cert_has_bad_tls_version?(viewer_certificate) || override_tls_config?(viewer_certificate)
|
31
|
+
cert_has_bad_tls_version?(viewer_certificate['MinimumProtocolVersion']) || override_tls_config?(viewer_certificate)
|
32
32
|
end
|
33
33
|
|
34
|
-
def cert_has_bad_tls_version?(
|
35
|
-
|
34
|
+
def cert_has_bad_tls_version?(min_protocol_version)
|
35
|
+
min_protocol_version.nil? ||
|
36
|
+
(min_protocol_version.is_a?(String) && !min_protocol_version.start_with?('TLSv1.2'))
|
36
37
|
end
|
37
38
|
|
38
39
|
def override_tls_config?(viewer_certificate)
|
@@ -6,7 +6,7 @@ require_relative 'base'
|
|
6
6
|
|
7
7
|
class ECRRepositoryScanOnPushRule < BaseRule
|
8
8
|
def rule_text
|
9
|
-
'ECR Repository should have
|
9
|
+
'ECR Repository should have ScanOnPush enabled'
|
10
10
|
end
|
11
11
|
|
12
12
|
def rule_type
|
@@ -20,7 +20,7 @@ class ECRRepositoryScanOnPushRule < BaseRule
|
|
20
20
|
def audit_impl(cfn_model)
|
21
21
|
violating_ecr_registries = cfn_model.resources_by_type('AWS::ECR::Repository').select do |registry|
|
22
22
|
registry.imageScanningConfiguration.nil? ||
|
23
|
-
!truthy?(registry.imageScanningConfiguration['
|
23
|
+
!truthy?(registry.imageScanningConfiguration['ScanOnPush'].to_s)
|
24
24
|
end
|
25
25
|
|
26
26
|
violating_ecr_registries.map(&:logical_resource_id)
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cfn-nag/violation'
|
4
|
+
require_relative 'base'
|
5
|
+
|
6
|
+
class KinesisFirehoseDeliveryStreamEncryptionRule < BaseRule
|
7
|
+
def rule_text
|
8
|
+
'Kinesis Firehose DeliveryStream of type DirectPut should specify SSE.'
|
9
|
+
end
|
10
|
+
|
11
|
+
def rule_type
|
12
|
+
Violation::WARNING
|
13
|
+
end
|
14
|
+
|
15
|
+
def rule_id
|
16
|
+
'W88'
|
17
|
+
end
|
18
|
+
|
19
|
+
def audit_impl(cfn_model)
|
20
|
+
violating_delivery_streams =
|
21
|
+
cfn_model.resources_by_type('AWS::KinesisFirehose::DeliveryStream').select do |delivery_stream|
|
22
|
+
violating_delivery_stream?(delivery_stream)
|
23
|
+
end
|
24
|
+
|
25
|
+
violating_delivery_streams.map(&:logical_resource_id)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def violating_delivery_stream?(delivery_stream)
|
31
|
+
if delivery_stream.deliveryStreamType == 'KinesisStreamAsSource'
|
32
|
+
false
|
33
|
+
elsif delivery_stream.deliveryStreamEncryptionConfigurationInput.nil?
|
34
|
+
true
|
35
|
+
else
|
36
|
+
delivery_stream.deliveryStreamEncryptionConfigurationInput['KeyType'].nil?
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-nag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Kascic
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -150,8 +150,22 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.3.2
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rexml
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
153
167
|
description: Auditing tool for CloudFormation templates
|
154
|
-
email:
|
168
|
+
email:
|
155
169
|
executables:
|
156
170
|
- cfn_nag
|
157
171
|
- cfn_nag_rules
|
@@ -183,6 +197,7 @@ files:
|
|
183
197
|
- lib/cfn-nag/custom_rules/AmplifyAppOauthTokenRule.rb
|
184
198
|
- lib/cfn-nag/custom_rules/AmplifyBranchBasicAuthConfigPasswordRule.rb
|
185
199
|
- lib/cfn-nag/custom_rules/ApiGatewayAccessLoggingRule.rb
|
200
|
+
- lib/cfn-nag/custom_rules/ApiGatewayCacheEncryptedRule.rb
|
186
201
|
- lib/cfn-nag/custom_rules/ApiGatewayDeploymentUsagePlanRule.rb
|
187
202
|
- lib/cfn-nag/custom_rules/ApiGatewayMethodAuthorizationTypeRule.rb
|
188
203
|
- lib/cfn-nag/custom_rules/ApiGatewaySecurityPolicyRule.rb
|
@@ -261,6 +276,7 @@ files:
|
|
261
276
|
- lib/cfn-nag/custom_rules/KMSKeyRotationRule.rb
|
262
277
|
- lib/cfn-nag/custom_rules/KMSKeyWildcardPrincipalRule.rb
|
263
278
|
- lib/cfn-nag/custom_rules/KendraIndexServerSideEncryptionConfigurationKmsKeyIdRule.rb
|
279
|
+
- lib/cfn-nag/custom_rules/KinesisFirehoseDeliveryStreamEncryptionRule.rb
|
264
280
|
- lib/cfn-nag/custom_rules/KinesisFirehoseDeliveryStreamRedshiftDestinationConfigurationPasswordRule.rb
|
265
281
|
- lib/cfn-nag/custom_rules/KinesisFirehoseDeliveryStreamSplunkDestinationConfigurationHECTokenRule.rb
|
266
282
|
- lib/cfn-nag/custom_rules/KinesisStreamStreamEncryptionRule.rb
|
@@ -374,7 +390,7 @@ homepage: https://github.com/stelligent/cfn_nag
|
|
374
390
|
licenses:
|
375
391
|
- MIT
|
376
392
|
metadata: {}
|
377
|
-
post_install_message:
|
393
|
+
post_install_message:
|
378
394
|
rdoc_options: []
|
379
395
|
require_paths:
|
380
396
|
- lib
|
@@ -390,9 +406,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
406
|
- !ruby/object:Gem::Version
|
391
407
|
version: '0'
|
392
408
|
requirements: []
|
393
|
-
|
394
|
-
|
395
|
-
signing_key:
|
409
|
+
rubygems_version: 3.1.2
|
410
|
+
signing_key:
|
396
411
|
specification_version: 4
|
397
412
|
summary: cfn-nag
|
398
413
|
test_files: []
|