module Metadata
Mix-in with metadata handling routines for the CustomRuleLoader
Public Instance Methods
cfn_model_with_suppressed_resources_removed(cfn_model:, rule_id:, allow_suppression:, print_suppression:)
click to toggle source
# File lib/cfn-nag/metadata.rb, line 20 def cfn_model_with_suppressed_resources_removed(cfn_model:, rule_id:, allow_suppression:, print_suppression:) return cfn_model unless allow_suppression cfn_model = cfn_model.copy cfn_model.resources.delete_if do |logical_resource_id, resource| rules_to_suppress = rules_to_suppress resource if rules_to_suppress.nil? false else suppress_resource?(rules_to_suppress, rule_id, logical_resource_id, print_suppression) end end cfn_model end
validate_cfn_nag_metadata(cfn_model)
click to toggle source
XXX given mangled_metadatas is never used or returned, STDERR emit can be moved to unless block
# File lib/cfn-nag/metadata.rb, line 10 def validate_cfn_nag_metadata(cfn_model) mangled_metadatas = collect_mangled_metadata(cfn_model) mangled_metadatas.each do |mangled_metadata| logical_resource_id = mangled_metadata.first mangled_rules = mangled_metadata[1] $stderr.puts "#{logical_resource_id} has missing cfn_nag suppression rule id: #{mangled_rules}" end end
Private Instance Methods
collect_mangled_metadata(cfn_model)
click to toggle source
# File lib/cfn-nag/metadata.rb, line 63 def collect_mangled_metadata(cfn_model) mangled_metadatas = [] cfn_model.resources.each do |logical_resource_id, resource| resource_rules_to_suppress = rules_to_suppress resource next if resource_rules_to_suppress.nil? mangled_rules = resource_rules_to_suppress.select do |rule_to_suppress| rule_to_suppress['id'].nil? end unless mangled_rules.empty? mangled_metadatas << [logical_resource_id, mangled_rules] end end mangled_metadatas end
rules_to_suppress(resource)
click to toggle source
# File lib/cfn-nag/metadata.rb, line 54 def rules_to_suppress(resource) if resource.metadata && resource.metadata['cfn_nag'] && resource.metadata['cfn_nag']['rules_to_suppress'] resource.metadata['cfn_nag']['rules_to_suppress'] end end
suppress_resource?(rules_to_suppress, rule_id, logical_resource_id, print_suppression)
click to toggle source
# File lib/cfn-nag/metadata.rb, line 41 def suppress_resource?(rules_to_suppress, rule_id, logical_resource_id, print_suppression) found_suppression_rule = rules_to_suppress.find do |rule_to_suppress| next if rule_to_suppress['id'].nil? rule_to_suppress['id'] == rule_id end if found_suppression_rule && print_suppression message = "Suppressing #{rule_id} on #{logical_resource_id} for reason: #{found_suppression_rule['reason']}" $stderr.puts message end !found_suppression_rule.nil? end