Class: DLMLifecyclePolicyCrossRegionCopyEncryptionRule

Inherits:
BaseRule show all
Defined in:
lib/cfn-nag/custom_rules/DLMLifecyclePolicyCrossRegionCopyEncryptionRule.rb

Instance Method Summary collapse

Methods inherited from BaseRule

#audit

Instance Method Details

#audit_impl(cfn_model) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/cfn-nag/custom_rules/DLMLifecyclePolicyCrossRegionCopyEncryptionRule.rb', line 20

def audit_impl(cfn_model)
  violating_policies = cfn_model.resources_by_type('AWS::DLM::LifecyclePolicy').select do |policy|
    if policy.policyDetails['Actions'].nil?
      false
    else
      violating_actions = policy.policyDetails['Actions'].select do |action|
        violating_copies = action['CrossRegionCopy'].select do |copy|
          !truthy?(copy['EncryptionConfiguration']['Encrypted'].to_s)
        end
        !violating_copies.empty?
      end
      !violating_actions.empty?
    end
  end

  violating_policies.map(&:logical_resource_id)
end

#rule_idObject



16
17
18
# File 'lib/cfn-nag/custom_rules/DLMLifecyclePolicyCrossRegionCopyEncryptionRule.rb', line 16

def rule_id
  'W81'
end

#rule_textObject



8
9
10
# File 'lib/cfn-nag/custom_rules/DLMLifecyclePolicyCrossRegionCopyEncryptionRule.rb', line 8

def rule_text
  'DLM LifecyclePolicy PolicyDetails Actions CrossRegionCopy EncryptionConfiguration should enable Encryption'
end

#rule_typeObject



12
13
14
# File 'lib/cfn-nag/custom_rules/DLMLifecyclePolicyCrossRegionCopyEncryptionRule.rb', line 12

def rule_type
  Violation::WARNING
end